From f5fec3e27510969ee9f2fc89d2e1e2868d25f1f1 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 22 四月 2026 09:36:14 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New_pro' into dev_New_pro

---
 src/main/java/com/ruoyi/safe/controller/SafeTrainingDetailsController.java                                     |    2 
 src/main/java/com/ruoyi/stock/service/StockInventoryService.java                                               |    2 
 src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java                                 |    2 
 src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java                                               |    2 
 src/main/java/com/ruoyi/common/utils/http/HttpUtils.java                                                       |   24 
 src/main/java/com/ruoyi/common/utils/ServletUtils.java                                                         |    8 
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java                                       |    2 
 src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java                            |    8 
 src/main/java/com/ruoyi/framework/security/service/TokenService.java                                           |  187 ++--
 src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java                                          |    2 
 src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java                                       |    2 
 src/main/java/com/ruoyi/account/controller/AccountFileController.java                                          |    2 
 src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java                                  |    2 
 src/main/java/com/ruoyi/safe/controller/SafeCertificationFileController.java                                   |    2 
 src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java                                     |    2 
 src/main/java/com/ruoyi/project/common/CaptchaController.java                                                  |    4 
 src/main/java/com/ruoyi/quality/pojo/QualityUnqualified.java                                                   |    2 
 src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java                                         |    2 
 src/main/java/com/ruoyi/project/system/domain/SysConfig.java                                                   |    4 
 src/main/java/com/ruoyi/collaborativeApproval/service/DutyPlanService.java                                     |    2 
 src/main/java/com/ruoyi/projectManagement/vo/SaveInfoVo.java                                                   |    2 
 src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java                                |    2 
 src/main/java/com/ruoyi/quality/controller/QualityUnqualifiedController.java                                   |    4 
 src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java                                |    2 
 src/main/java/com/ruoyi/stock/service/StockOutRecordService.java                                               |    2 
 src/main/java/com/ruoyi/account/controller/AccountExpenseController.java                                       |    7 
 src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java                                |   47 
 src/main/java/com/ruoyi/account/controller/BorrowInfoController.java                                           |    2 
 src/main/java/com/ruoyi/project/system/domain/SysDictType.java                                                 |    6 
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPlanController.java                            |    2 
 src/main/java/com/ruoyi/project/system/controller/SysConfigController.java                                     |    2 
 src/main/java/com/ruoyi/oA/service/OaProjectService.java                                                       |    4 
 src/main/java/com/ruoyi/basic/controller/CustomerPrivatePoolController.java                                    |    2 
 src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java                             |   39 
 src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java                                            |    5 
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java                             |    2 
 pom.xml                                                                                                        |   68 +
 src/main/java/com/ruoyi/common/xss/XssValidator.java                                                           |    4 
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java                          |    2 
 src/main/java/com/ruoyi/projectManagement/controller/PlanController.java                                       |    2 
 src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java                                          |    6 
 src/main/java/com/ruoyi/common/vo/SimpleFileVo.java                                                            |    2 
 src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java                                           |    2 
 src/main/java/com/ruoyi/projectManagement/controller/InfoController.java                                       |    2 
 src/main/java/com/ruoyi/collaborativeApproval/controller/SealApplicationManagementController.java              |    2 
 src/main/java/com/ruoyi/staff/dto/PerformanceShiftAddDto.java                                                  |    2 
 src/main/java/com/ruoyi/common/filter/XssFilter.java                                                           |   16 
 src/main/java/com/ruoyi/framework/config/ServerConfig.java                                                     |    2 
 src/main/java/com/ruoyi/procurementrecord/controller/GasTankWarningController.java                             |    2 
 src/main/java/com/ruoyi/basic/constant/fileType/FileTypeApplication.java                                       |   11 
 src/main/java/com/ruoyi/equipmentenergyconsumption/controller/ElectricityConsumptionAreaController.java        |    2 
 src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java                                        |    2 
 src/main/java/com/ruoyi/project/system/controller/SysRoleController.java                                       |    2 
 src/main/java/com/ruoyi/safe/service/impl/SafeTrainingDetailsServiceImpl.java                                  |    2 
 src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java                                                     |    2 
 src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java                                    |    2 
 src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java                                  |    2 
 src/main/java/com/ruoyi/quality/controller/QualityInspectFileController.java                                   |    4 
 src/main/java/com/ruoyi/quality/controller/QualityInspectController.java                                       |    4 
 src/main/java/com/ruoyi/safe/pojo/SafeCertificationFile.java                                                   |    2 
 src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerService.java                |    2 
 src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerRecordServiceImpl.java |    2 
 src/main/java/com/ruoyi/basic/pojo/SupplierManageFile.java                                                     |    2 
 src/main/java/com/ruoyi/common/utils/http/HttpHelper.java                                                      |    2 
 src/main/java/com/ruoyi/inspectiontask/controller/TimingTaskController.java                                    |    2 
 src/main/java/com/ruoyi/project/system/domain/SysPost.java                                                     |    6 
 src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java                                      |    2 
 src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java                                       |    2 
 src/main/java/com/ruoyi/framework/config/ScheduleConfig.java                                                   |    2 
 src/main/java/com/ruoyi/common/utils/MinioUtils.java                                                           |    4 
 src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java                           |    2 
 src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java                                          |    2 
 src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java                                   |    2 
 src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java                                        |    2 
 src/main/java/com/ruoyi/project/system/domain/SysDept.java                                                     |   16 
 src/main/java/com/ruoyi/basic/dto/StorageBlobVO.java                                                           |   17 
 src/main/java/com/ruoyi/project/system/domain/SysRole.java                                                     |    6 
 src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java                                        |    8 
 src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java                                  |    2 
 src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java                                        |    2 
 src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java                            |    4 
 src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java                                   |    2 
 src/main/java/com/ruoyi/stock/service/StockUninventoryService.java                                             |    2 
 src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrderProductsMapper.java                                 |    2 
 src/main/java/com/ruoyi/basic/service/StorageBlobService.java                                                  |   21 
 src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java                                            |    2 
 src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java                                                  |    2 
 src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java       |    2 
 src/main/java/com/ruoyi/quality/service/IQualityInspectService.java                                            |    2 
 src/main/java/com/ruoyi/projectManagement/dto/UpdateStateInfo.java                                             |    2 
 src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java                                       |    2 
 src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java                                      |    2 
 src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java                                  |    2 
 src/main/java/com/ruoyi/basic/controller/CustomerPrivateController.java                                        |    2 
 src/main/java/com/ruoyi/project/tool/gen/domain/GenTableColumn.java                                            |    2 
 src/main/java/com/ruoyi/technology/controller/TechnologyBomController.java                                     |    2 
 src/main/java/com/ruoyi/inspectiontask/dto/QrCodeScanRecordDto.java                                            |    4 
 src/main/java/com/ruoyi/project/monitor/domain/SysJob.java                                                     |    4 
 src/main/java/com/ruoyi/collaborativeApproval/service/impl/RulesRegulationsManagementFileServiceImpl.java      |    2 
 src/main/java/com/ruoyi/project/system/domain/SysMenu.java                                                     |    6 
 src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java                          |    2 
 src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoStageHandleService.java                      |    2 
 src/main/java/com/ruoyi/safe/service/SafeTrainingService.java                                                  |    2 
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java                                |    2 
 src/main/java/com/ruoyi/framework/security/service/SysLoginService.java                                        |    2 
 src/main/java/com/ruoyi/quality/pojo/QualityInspectParam.java                                                  |    2 
 src/main/java/com/ruoyi/safe/pojo/SafeTraining.java                                                            |    2 
 src/main/java/com/ruoyi/project/system/service/impl/UnipushService.java                                        |    2 
 src/main/java/com/ruoyi/account/service/AccountIncomeService.java                                              |    2 
 src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java              |    2 
 src/main/java/com/ruoyi/framework/config/FilterConfig.java                                                     |    2 
 src/main/java/com/ruoyi/project/system/domain/SysNotice.java                                                   |    4 
 src/main/java/com/ruoyi/account/pojo/AccountExpense.java                                                       |    2 
 src/main/java/com/ruoyi/projectManagement/service/impl/handle/ContractInfoHandleService.java                   |    4 
 src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java                                          |    2 
 src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java                                |    6 
 src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerRecordController.java    |    2 
 src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerRecordService.java          |    2 
 src/main/java/com/ruoyi/quality/controller/QualityInspectParamController.java                                  |    4 
 src/main/java/com/ruoyi/stock/controller/StockInRecordController.java                                          |    2 
 src/main/java/com/ruoyi/device/service/IDeviceRepairService.java                                               |    2 
 src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java                                      |    2 
 src/main/java/com/ruoyi/RuoYiServletInitializer.java                                                           |    8 
 src/main/java/com/ruoyi/project/monitor/service/impl/SysJobServiceImpl.java                                    |   19 
 src/main/java/com/ruoyi/framework/config/DruidConfig.java                                                      |   33 
 src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java                          |    2 
 src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java                                                       |    2 
 src/main/java/com/ruoyi/common/utils/excel/ExcelUtils.java                                                     |    4 
 src/main/java/com/ruoyi/account/controller/AccountIncomeController.java                                        |    4 
 src/main/java/com/ruoyi/basic/pojo/StorageAttachment.java                                                      |   34 
 src/main/java/com/ruoyi/device/controller/DeviceMaintenanceFileController.java                                 |    2 
 src/main/java/com/ruoyi/project/system/domain/SysUser.java                                                     |   14 
 src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java                                                 |    4 
 src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java        |    2 
 src/main/java/com/ruoyi/stock/controller/StockInventoryController.java                                         |    2 
 src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java                                 |    2 
 src/main/java/com/ruoyi/safe/controller/SafeTrainingFileController.java                                        |    2 
 src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java                                    |    2 
 src/main/java/com/ruoyi/purchase/controller/ProcurementBusinessSummaryController.java                          |    2 
 src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java                                    |    2 
 src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java                   |    2 
 src/main/java/com/ruoyi/account/dto/AccountDto.java                                                            |    2 
 src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java                            |    2 
 src/main/java/com/ruoyi/basic/controller/CustomerController.java                                               |    2 
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementPlanService.java                                  |    2 
 src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java                                     |    2 
 src/main/java/com/ruoyi/stock/pojo/StockInventory.java                                                         |    2 
 src/main/java/com/ruoyi/projectManagement/service/impl/handle/ShippingAddressHandleService.java                |    4 
 src/main/java/com/ruoyi/basic/dto/StorageAttachmentDTO.java                                                    |   14 
 src/main/java/com/ruoyi/quality/pojo/QualityInspectFile.java                                                   |    2 
 src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java                                         |    2 
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java                 |    2 
 src/main/java/com/ruoyi/safe/service/impl/SafeTrainingServiceImpl.java                                         |    2 
 src/main/java/com/ruoyi/framework/aspectj/LogAspect.java                                                       |    4 
 src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java                                              |    2 
 src/main/java/com/ruoyi/project/monitor/controller/SysJobController.java                                       |    2 
 src/main/java/com/ruoyi/stock/service/StockInRecordService.java                                                |    2 
 src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EnergyPeriodController.java                      |    2 
 src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java                           |   57 
 src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java                                                  |    2 
 src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java                                |    2 
 src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java                                                        |    2 
 src/main/java/com/ruoyi/project/common/CommonController.java                                                   |  319 +++---
 src/main/java/com/ruoyi/staff/service/StaffLeaveService.java                                                   |    2 
 src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java                                                |    2 
 src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java                                 |    2 
 src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java                                         |  237 ++---
 src/main/java/com/ruoyi/device/controller/DeviceRepairController.java                                          |    2 
 src/main/java/com/ruoyi/basic/controller/ProductController.java                                                |    2 
 src/main/java/com/ruoyi/quality/controller/QualityTestStandardController.java                                  |    4 
 src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java          |    2 
 src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java                                                  |    2 
 src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java                                  |    2 
 src/main/java/com/ruoyi/common/filter/RepeatableFilter.java                                                    |   14 
 src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java                                         |    2 
 src/main/java/com/ruoyi/projectManagement/service/InfoService.java                                             |    2 
 src/main/java/com/ruoyi/common/config/FileProperties.java                                                      |   24 
 src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java                                   |    2 
 src/main/java/com/ruoyi/basic/constant/fileType/ApplicationTypeImage.java                                      |   10 
 src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java                                                  |    6 
 src/main/java/com/ruoyi/common/constant/Constants.java                                                         |    2 
 src/main/java/com/ruoyi/safe/controller/SafeTrainingController.java                                            |    2 
 src/main/java/com/ruoyi/basic/controller/SupplierManageFileController.java                                     |    2 
 src/main/java/com/ruoyi/framework/manager/ShutdownManager.java                                                 |    2 
 src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementFileController.java         |    2 
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java                             |    2 
 src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java                                     |    2 
 src/main/java/com/ruoyi/account/dto/DeviceTypeDistributionVO.java                                              |    1 
 src/main/java/com/ruoyi/quality/dto/QualityInspectDto.java                                                     |    2 
 src/main/java/com/ruoyi/common/xss/Xss.java                                                                    |    4 
 src/main/java/com/ruoyi/safe/pojo/SafeHidden.java                                                              |   15 
 src/main/java/com/ruoyi/safe/controller/SafeHiddenFileController.java                                          |    2 
 src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java                                    |    2 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java                       |    2 
 src/main/resources/application-dev-pro.yml                                                                     |   13 
 src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java                                 |    2 
 src/main/resources/vm/java/controller.java.vm                                                                  |    2 
 src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java                                       |    2 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java              |    2 
 src/main/java/com/ruoyi/safe/pojo/SafeTrainingDetails.java                                                     |   16 
 src/main/java/com/ruoyi/framework/config/SecurityConfig.java                                                   |   52 
 src/main/java/com/ruoyi/basic/utils/FileUtil.java                                                              |  494 ++++++++++
 src/main/java/com/ruoyi/account/pojo/AccountFile.java                                                          |    2 
 src/main/java/com/ruoyi/basic/service/ISupplierService.java                                                    |    2 
 src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java                                                |    5 
 src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java                      |    2 
 src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java                              |    4 
 src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java                                    |    2 
 src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java                                   |   93 +-
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPriceManagementController.java                 |    2 
 src/main/java/com/ruoyi/account/pojo/AccountIncome.java                                                        |    2 
 src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java                                     |    4 
 src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java                                    |    2 
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementPriceManagementService.java                       |    2 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java                         |    2 
 src/main/java/com/ruoyi/projectManagement/service/PlanService.java                                             |    6 
 src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java                                |    2 
 src/main/java/com/ruoyi/basic/pojo/StorageBlob.java                                                            |   55 -
 src/main/java/com/ruoyi/staff/controller/StaffContractController.java                                          |    2 
 src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java                                    |    2 
 src/main/java/com/ruoyi/project/tool/gen/domain/GenTable.java                                                  |    4 
 src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java                                          |    2 
 src/main/java/com/ruoyi/common/utils/file/FileUtils.java                                                       |    4 
 src/main/java/com/ruoyi/project/system/controller/SysUserController.java                                       |    2 
 src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java                                          |    2 
 src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java                               |    1 
 src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java                              |    2 
 src/main/java/com/ruoyi/common/aop/DataScopeAop.java                                                           |    6 
 src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java                                      |    2 
 src/main/java/com/ruoyi/basic/controller/SupplierManageController.java                                         |    2 
 src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementController.java             |    2 
 src/main/java/com/ruoyi/oA/controller/OaProjectController.java                                                 |    5 
 src/main/java/com/ruoyi/collaborativeApproval/service/impl/DutyPlanServiceImpl.java                            |    2 
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java                       |    2 
 src/main/java/com/ruoyi/device/service/IDeviceMaintenanceService.java                                          |    2 
 src/main/java/com/ruoyi/project/monitor/controller/SysOperlogController.java                                   |    2 
 src/main/java/com/ruoyi/basic/constant/RecordType.java                                                         |   15 
 src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java                                      |    2 
 src/main/java/com/ruoyi/projectManagement/vo/SavePlanVo.java                                                   |    4 
 src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java                                             |    6 
 src/main/java/com/ruoyi/collaborativeApproval/controller/DutyPlanController.java                               |    2 
 src/main/java/com/ruoyi/quality/pojo/QualityInspect.java                                                       |    2 
 src/main/java/com/ruoyi/projectManagement/vo/SavePlanNodeVo.java                                               |    4 
 src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java                                         |    6 
 src/main/java/com/ruoyi/common/utils/ip/IpUtils.java                                                           |    2 
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java                    |    2 
 src/main/java/com/ruoyi/project/system/domain/SysDictData.java                                                 |    4 
 src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java                                     |    2 
 src/main/java/com/ruoyi/projectManagement/dto/SaveInfoDto.java                                                 |    4 
 src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java                                     |    2 
 src/main/java/com/ruoyi/project/monitor/controller/SysJobLogController.java                                    |    2 
 src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java                                                  |    2 
 src/main/java/com/ruoyi/account/service/AccountExpenseService.java                                             |    2 
 src/main/java/com/ruoyi/quality/service/IQualityUnqualifiedService.java                                        |    2 
 src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java                           |    2 
 src/main/java/com/ruoyi/basic/constant/ApplicationType.java                                                    |   15 
 src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java                                               |    2 
 src/main/java/com/ruoyi/warehouse/service/DocumentationService.java                                            |    2 
 src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java                                             |    4 
 src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java                                            |   10 
 src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java                                |    2 
 src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java                                            |    2 
 src/main/java/com/ruoyi/project/monitor/controller/SysLogininforController.java                                |    2 
 src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java                                         |    2 
 src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java                                                   |    1 
 src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java                                    |    2 
 src/main/java/com/ruoyi/waterrecord/controller/WaterRecordController.java                                      |    2 
 src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java                                       |    2 
 src/main/java/com/ruoyi/technology/service/TechnologyBomService.java                                           |    2 
 src/main/java/com/ruoyi/inspectiontask/service/impl/QuartzConfig.java                                          |    1 
 src/main/java/com/ruoyi/project/system/controller/SysPostController.java                                       |    2 
 src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java                                      |    2 
 src/main/java/com/ruoyi/oA/service/impl/OaProjectServiceImpl.java                                              |    5 
 src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java                                              |    2 
 src/main/java/com/ruoyi/procurementrecord/service/GasTankWarningService.java                                   |    2 
 src/main/java/com/ruoyi/staff/controller/AnalyticsController.java                                              |    2 
 src/main/java/com/ruoyi/safe/service/SafeTrainingDetailsService.java                                           |    2 
 src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java                                       |    4 
 src/main/java/com/ruoyi/projectManagement/dto/InfoStageDto.java                                                |    2 
 /dev/null                                                                                                      |   11 
 src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java                                     |    2 
 281 files changed, 1,606 insertions(+), 1,045 deletions(-)

diff --git a/pom.xml b/pom.xml
index e58f96b..b96426c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,36 +15,37 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.5.15</version>
+        <version>3.5.13</version>
         <relativePath/>
     </parent>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <java.version>1.8</java.version>
+        <java.version>25.0.2</java.version>
         <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
-        <pagehelper.spring.boot.starter.version>1.4.7</pagehelper.spring.boot.starter.version>
+        <pagehelper.spring.boot.starter.version>2.1.1</pagehelper.spring.boot.starter.version>
         <fastjson.version>2.0.53</fastjson.version>
         <druid.version>1.2.23</druid.version>
         <commons.io.version>2.13.0</commons.io.version>
         <bitwalker.version>1.21</bitwalker.version>
-        <jwt.version>0.9.1</jwt.version>
+        <jwt.version>0.13.0</jwt.version>
         <kaptcha.version>2.3.3</kaptcha.version>
         <swagger.version>3.0.0</swagger.version>
         <poi.version>5.2.3</poi.version>
         <oshi.version>6.6.5</oshi.version>
         <velocity.version>2.3</velocity.version>
         <!-- override dependency version -->
-        <tomcat.version>9.0.102</tomcat.version>
+        <!--        <tomcat.version>9.0.102</tomcat.version>-->
         <minio.version>8.4.3</minio.version>
         <okhttp.version>4.9.0</okhttp.version>
         <hutool.version>5.8.43</hutool.version>
-        <logback.version>1.2.13</logback.version>
-        <spring-security.version>5.7.12</spring-security.version>
-        <spring-framework.version>5.3.39</spring-framework.version>
-        <mybatis-plus.version>3.5.3.1</mybatis-plus.version>
+        <!--        <logback.version>1.2.13</logback.version>-->
+        <!--        <spring-security.version>5.7.12</spring-security.version>-->
+        <!--        <spring-framework.version>5.3.39</spring-framework.version>-->
+        <mybatis-plus.version>3.5.16</mybatis-plus.version>
         <getui-sdk.version>1.0.7.0</getui-sdk.version>
+        <jsqlparser.version>4.9</jsqlparser.version>
     </properties>
 
     <dependencies>
@@ -110,13 +111,14 @@
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <scope>runtime</scope>
+            <version>8.0.33</version>
         </dependency>
 
         <!-- FreeMarker 妯℃澘寮曟搸锛氬鐞嗗彉閲忓崰浣嶇 -->
         <dependency>
             <groupId>org.freemarker</groupId>
             <artifactId>freemarker</artifactId>
-            <version>2.3.32</version>
+            <version>2.3.33</version>
         </dependency>
 
         <!-- pagehelper 鍒嗛〉鎻掍欢 -->
@@ -129,14 +131,26 @@
         <!-- 闃块噷鏁版嵁搴撹繛鎺ユ睜 -->
         <dependency>
             <groupId>com.alibaba</groupId>
-            <artifactId>druid-spring-boot-starter</artifactId>
+            <artifactId>druid-spring-boot-3-starter</artifactId>
             <version>${druid.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mybatis</groupId>
+            <artifactId>mybatis</artifactId>
+            <version>${mybatis-plus.version}</version>
         </dependency>
 
         <!--mybatis-plus-->
         <dependency>
             <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
+            <version>${mybatis-plus.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-jsqlparser</artifactId>
             <version>${mybatis-plus.version}</version>
         </dependency>
 
@@ -145,6 +159,12 @@
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-generator</artifactId>
             <version>${mybatis-plus.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.jsqlparser</groupId>
+            <artifactId>jsqlparser</artifactId>
+            <version>${jsqlparser.version}</version>
         </dependency>
 
         <!-- 鑷畾涔夐獙璇佹敞瑙� -->
@@ -189,14 +209,27 @@
         <!-- Token鐢熸垚涓庤В鏋�-->
         <dependency>
             <groupId>io.jsonwebtoken</groupId>
-            <artifactId>jjwt</artifactId>
+            <artifactId>jjwt-api</artifactId>
             <version>${jwt.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-impl</artifactId>
+            <version>${jwt.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-jackson</artifactId>
+            <version>${jwt.version}</version>
+            <scope>runtime</scope>
         </dependency>
 
         <!-- Jaxb -->
         <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
+            <groupId>jakarta.xml.bind</groupId>
+            <artifactId>jakarta.xml.bind-api</artifactId>
         </dependency>
 
         <!-- Swagger3渚濊禆 -->
@@ -315,7 +348,7 @@
             <version>${getui-sdk.version}</version>
             <scope>compile</scope>
         </dependency>
-    
+
         <!--hutool宸ュ叿鍖�-->
         <dependency>
             <groupId>cn.hutool</groupId>
@@ -335,9 +368,6 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
-                <configuration>
-                    <fork>true</fork> <!-- 濡傛灉娌℃湁璇ラ厤缃紝devtools涓嶄細鐢熸晥 -->
-                </configuration>
             </plugin>
         </plugins>
     </build>
diff --git a/src/main/java/com/ruoyi/RuoYiServletInitializer.java b/src/main/java/com/ruoyi/RuoYiServletInitializer.java
index 9d82a23..709d23b 100644
--- a/src/main/java/com/ruoyi/RuoYiServletInitializer.java
+++ b/src/main/java/com/ruoyi/RuoYiServletInitializer.java
@@ -3,6 +3,9 @@
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+
 /**
  * web瀹瑰櫒涓繘琛岄儴缃�
  * 
@@ -15,4 +18,9 @@
     {
         return application.sources(RuoYiApplication.class);
     }
+
+    @Override
+    public void onStartup(ServletContext servletContext) throws ServletException {
+
+    }
 }
diff --git a/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java b/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java
index 23e2508..795b46d 100644
--- a/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java
+++ b/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java
@@ -2,11 +2,8 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.account.dto.ReportDateDto;
-import com.ruoyi.account.mapper.AccountIncomeMapper;
 import com.ruoyi.account.pojo.AccountExpense;
-import com.ruoyi.account.pojo.AccountIncome;
 import com.ruoyi.account.service.AccountExpenseService;
-import com.ruoyi.account.service.AccountFileService;
 import com.ruoyi.account.service.AccountIncomeService;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.dto.DateQueryDto;
@@ -14,11 +11,11 @@
 import com.ruoyi.framework.web.domain.AjaxResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import jakarta.annotation.Resource;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/account/controller/AccountFileController.java b/src/main/java/com/ruoyi/account/controller/AccountFileController.java
index 130e7c8..0ffa1e7 100644
--- a/src/main/java/com/ruoyi/account/controller/AccountFileController.java
+++ b/src/main/java/com/ruoyi/account/controller/AccountFileController.java
@@ -11,7 +11,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/account/controller/AccountIncomeController.java b/src/main/java/com/ruoyi/account/controller/AccountIncomeController.java
index c6a24d7..8db2730 100644
--- a/src/main/java/com/ruoyi/account/controller/AccountIncomeController.java
+++ b/src/main/java/com/ruoyi/account/controller/AccountIncomeController.java
@@ -19,8 +19,8 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/account/controller/BorrowInfoController.java b/src/main/java/com/ruoyi/account/controller/BorrowInfoController.java
index b9fe0a1..81436e1 100644
--- a/src/main/java/com/ruoyi/account/controller/BorrowInfoController.java
+++ b/src/main/java/com/ruoyi/account/controller/BorrowInfoController.java
@@ -13,7 +13,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/account/dto/AccountDto.java b/src/main/java/com/ruoyi/account/dto/AccountDto.java
index c8e0d06..6da7b3a 100644
--- a/src/main/java/com/ruoyi/account/dto/AccountDto.java
+++ b/src/main/java/com/ruoyi/account/dto/AccountDto.java
@@ -10,7 +10,7 @@
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
diff --git a/src/main/java/com/ruoyi/account/dto/DeviceTypeDistributionVO.java b/src/main/java/com/ruoyi/account/dto/DeviceTypeDistributionVO.java
index f4c487b..1c294bd 100644
--- a/src/main/java/com/ruoyi/account/dto/DeviceTypeDistributionVO.java
+++ b/src/main/java/com/ruoyi/account/dto/DeviceTypeDistributionVO.java
@@ -1,6 +1,5 @@
 package com.ruoyi.account.dto;
 
-import com.mchange.v1.util.ListUtils;
 import lombok.Data;
 
 import java.math.BigDecimal;
diff --git a/src/main/java/com/ruoyi/account/pojo/AccountExpense.java b/src/main/java/com/ruoyi/account/pojo/AccountExpense.java
index 9eb5863..82b35f7 100644
--- a/src/main/java/com/ruoyi/account/pojo/AccountExpense.java
+++ b/src/main/java/com/ruoyi/account/pojo/AccountExpense.java
@@ -8,7 +8,7 @@
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
diff --git a/src/main/java/com/ruoyi/account/pojo/AccountFile.java b/src/main/java/com/ruoyi/account/pojo/AccountFile.java
index 7c4d353..c765a45 100644
--- a/src/main/java/com/ruoyi/account/pojo/AccountFile.java
+++ b/src/main/java/com/ruoyi/account/pojo/AccountFile.java
@@ -5,7 +5,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
diff --git a/src/main/java/com/ruoyi/account/pojo/AccountIncome.java b/src/main/java/com/ruoyi/account/pojo/AccountIncome.java
index 7f5e317..a1b3e35 100644
--- a/src/main/java/com/ruoyi/account/pojo/AccountIncome.java
+++ b/src/main/java/com/ruoyi/account/pojo/AccountIncome.java
@@ -8,7 +8,7 @@
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
diff --git a/src/main/java/com/ruoyi/account/service/AccountExpenseService.java b/src/main/java/com/ruoyi/account/service/AccountExpenseService.java
index ac3e0b2..4997c23 100644
--- a/src/main/java/com/ruoyi/account/service/AccountExpenseService.java
+++ b/src/main/java/com/ruoyi/account/service/AccountExpenseService.java
@@ -11,7 +11,7 @@
 import com.ruoyi.account.pojo.AccountIncome;
 import com.ruoyi.dto.DateQueryDto;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
diff --git a/src/main/java/com/ruoyi/account/service/AccountIncomeService.java b/src/main/java/com/ruoyi/account/service/AccountIncomeService.java
index 1004f28..33bb02f 100644
--- a/src/main/java/com/ruoyi/account/service/AccountIncomeService.java
+++ b/src/main/java/com/ruoyi/account/service/AccountIncomeService.java
@@ -8,7 +8,7 @@
 import com.ruoyi.account.dto.ReportDateDto;
 import com.ruoyi.account.pojo.AccountIncome;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 public interface AccountIncomeService extends IService<AccountIncome> {
diff --git a/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java b/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java
index b7791a9..40b1f31 100644
--- a/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java
+++ b/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java
@@ -21,7 +21,7 @@
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.time.DayOfWeek;
 import java.time.LocalDate;
diff --git a/src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java b/src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java
index 4a83ecb..772ef96 100644
--- a/src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java
@@ -19,7 +19,7 @@
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
diff --git a/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java b/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java
index 95e9999..fdbc447 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java
@@ -22,7 +22,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java b/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
index 7554ff4..bccc689 100644
--- a/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
+++ b/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
@@ -18,7 +18,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.text.ParseException;
 import java.util.List;
diff --git a/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java b/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java
index b6ede4a..b19c897 100644
--- a/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java
+++ b/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java
@@ -14,7 +14,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java b/src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java
index e8c35f9..f43fbfe 100644
--- a/src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java
+++ b/src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java
@@ -17,7 +17,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java b/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
index f1348db..0d4a3b4 100644
--- a/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
+++ b/src/main/java/com/ruoyi/approve/utils/DailyRedisCounter.java
@@ -8,7 +8,6 @@
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java b/src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java
index db45394..0f8f941 100644
--- a/src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java
+++ b/src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java
@@ -7,7 +7,7 @@
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
index bf8edae..08a5339 100644
--- a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
+++ b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
@@ -7,7 +7,7 @@
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
diff --git a/src/main/java/com/ruoyi/basic/constant/ApplicationType.java b/src/main/java/com/ruoyi/basic/constant/ApplicationType.java
new file mode 100644
index 0000000..4c95616
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/constant/ApplicationType.java
@@ -0,0 +1,15 @@
+package com.ruoyi.basic.constant;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+
+public interface ApplicationType {
+    String getType();
+    /**
+     * 楠岃瘉鏂囦欢鐢ㄩ�旀槸鍚︽湁鏁�
+     *
+     * @return true:鏈夋晥, false:鏃犳晥
+     */
+    default Boolean isValid() {
+        return !StringUtils.isEmpty(getType());
+    }
+}
diff --git a/src/main/java/com/ruoyi/basic/constant/RecordType.java b/src/main/java/com/ruoyi/basic/constant/RecordType.java
new file mode 100644
index 0000000..273efd0
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/constant/RecordType.java
@@ -0,0 +1,15 @@
+package com.ruoyi.basic.constant;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+
+public interface RecordType {
+    String getType();
+    /**
+     * 楠岃瘉鍏宠仈绫诲瀷鏄惁鏈夋晥
+     *
+     * @return true:鏈夋晥, false:鏃犳晥
+     */
+    default Boolean isValid() {
+        return !StringUtils.isEmpty(getType());
+    }
+}
diff --git a/src/main/java/com/ruoyi/basic/constant/fileType/ApplicationTypeImage.java b/src/main/java/com/ruoyi/basic/constant/fileType/ApplicationTypeImage.java
new file mode 100644
index 0000000..34784b9
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/constant/fileType/ApplicationTypeImage.java
@@ -0,0 +1,10 @@
+package com.ruoyi.basic.constant.fileType;
+
+import com.ruoyi.basic.constant.ApplicationType;
+
+public class ApplicationTypeImage implements ApplicationType {
+    @Override
+    public String getType() {
+        return "image";
+    }
+}
diff --git a/src/main/java/com/ruoyi/basic/constant/fileType/FileTypeApplication.java b/src/main/java/com/ruoyi/basic/constant/fileType/FileTypeApplication.java
new file mode 100644
index 0000000..23e9884
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/constant/fileType/FileTypeApplication.java
@@ -0,0 +1,11 @@
+package com.ruoyi.basic.constant.fileType;
+
+
+import com.ruoyi.basic.constant.ApplicationType;
+
+public class FileTypeApplication implements ApplicationType {
+    @Override
+    public String getType() {
+        return "file";
+    }
+}
diff --git a/src/main/java/com/ruoyi/basic/controller/CustomerController.java b/src/main/java/com/ruoyi/basic/controller/CustomerController.java
index 7e931da..9aa6570 100644
--- a/src/main/java/com/ruoyi/basic/controller/CustomerController.java
+++ b/src/main/java/com/ruoyi/basic/controller/CustomerController.java
@@ -15,7 +15,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/basic/controller/CustomerPrivateController.java b/src/main/java/com/ruoyi/basic/controller/CustomerPrivateController.java
index 1807ce7..8079ae0 100644
--- a/src/main/java/com/ruoyi/basic/controller/CustomerPrivateController.java
+++ b/src/main/java/com/ruoyi/basic/controller/CustomerPrivateController.java
@@ -19,7 +19,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 import static com.ruoyi.framework.web.domain.AjaxResult.success;
diff --git a/src/main/java/com/ruoyi/basic/controller/CustomerPrivatePoolController.java b/src/main/java/com/ruoyi/basic/controller/CustomerPrivatePoolController.java
index 8b8edf7..b28a96a 100644
--- a/src/main/java/com/ruoyi/basic/controller/CustomerPrivatePoolController.java
+++ b/src/main/java/com/ruoyi/basic/controller/CustomerPrivatePoolController.java
@@ -16,7 +16,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/basic/controller/ProductController.java b/src/main/java/com/ruoyi/basic/controller/ProductController.java
index 252ab4d..65a5301 100644
--- a/src/main/java/com/ruoyi/basic/controller/ProductController.java
+++ b/src/main/java/com/ruoyi/basic/controller/ProductController.java
@@ -25,7 +25,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/basic/controller/SupplierManageController.java b/src/main/java/com/ruoyi/basic/controller/SupplierManageController.java
index 32cad29..4867595 100644
--- a/src/main/java/com/ruoyi/basic/controller/SupplierManageController.java
+++ b/src/main/java/com/ruoyi/basic/controller/SupplierManageController.java
@@ -14,7 +14,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/basic/controller/SupplierManageFileController.java b/src/main/java/com/ruoyi/basic/controller/SupplierManageFileController.java
index ff54830..2d43f65 100644
--- a/src/main/java/com/ruoyi/basic/controller/SupplierManageFileController.java
+++ b/src/main/java/com/ruoyi/basic/controller/SupplierManageFileController.java
@@ -7,7 +7,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/basic/dto/StorageAttachmentDTO.java b/src/main/java/com/ruoyi/basic/dto/StorageAttachmentDTO.java
new file mode 100644
index 0000000..685e29e
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/dto/StorageAttachmentDTO.java
@@ -0,0 +1,14 @@
+package com.ruoyi.basic.dto;
+
+import com.ruoyi.basic.pojo.StorageAttachment;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class StorageAttachmentDTO extends StorageAttachment {
+    /**
+     * 瀛樺偍鏂囦欢鍒楄〃
+     */
+    private List<StorageBlobVO> storageBlobVOS;
+}
diff --git a/src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java b/src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java
deleted file mode 100644
index 17a7d71..0000000
--- a/src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.ruoyi.basic.dto;
-
-import com.ruoyi.basic.pojo.StorageBlob;
-import lombok.Data;
-
-@Data
-public class StorageBlobDTO extends StorageBlob {
-    private String url;
-
-    private String downloadUrl;
-}
diff --git a/src/main/java/com/ruoyi/basic/dto/StorageBlobVO.java b/src/main/java/com/ruoyi/basic/dto/StorageBlobVO.java
new file mode 100644
index 0000000..88fa3a2
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/dto/StorageBlobVO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.basic.dto;
+
+import com.ruoyi.basic.pojo.StorageBlob;
+import lombok.Data;
+
+@Data
+public class StorageBlobVO extends StorageBlob {
+    /**
+     * 棰勮鍦板潃
+     */
+    private String previewURL;
+
+    /**
+     * 涓嬭浇鍦板潃
+     */
+    private String downloadURL;
+}
diff --git a/src/main/java/com/ruoyi/basic/pojo/StorageAttachment.java b/src/main/java/com/ruoyi/basic/pojo/StorageAttachment.java
index 87f1ac5..cf44612 100644
--- a/src/main/java/com/ruoyi/basic/pojo/StorageAttachment.java
+++ b/src/main/java/com/ruoyi/basic/pojo/StorageAttachment.java
@@ -1,9 +1,7 @@
 package com.ruoyi.basic.pojo;
 
-import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.basic.dto.StorageBlobDTO;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -12,8 +10,6 @@
 /**
  * 閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭� 瀹炰綋绫�
  *
- * @author ruoyi
- * @date 2025-05-29
  */
 @Data
 @TableName("storage_attachment")
@@ -21,9 +17,6 @@
 
     private static final long serialVersionUID = 1L;
 
-    /**
-     *
-     */
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
@@ -37,9 +30,6 @@
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Date updateTime;
 
-    @TableField(fill = FieldFill.INSERT)
-    private Long tenantId;
-
     /**
      * 閫昏緫鍒犻櫎
      */
@@ -49,36 +39,20 @@
      * 鍏宠仈鐨勮褰曠被鍨�
      */
     @TableField(value = "record_type")
-    private Long recordType;
+    private String  recordType;
     /**
      * 鍏宠仈鐨勮褰昳d
      */
     @TableField(value = "record_id")
     private Long recordId;
     /**
-     * 绫诲瀷鍚嶇О, 濡�: file, avatar (鍖哄垎鍚屼竴鏉¤褰曚笉鍚岀被鍨嬬殑闄勪欢)
+     * 鏂囦欢鐢ㄩ��, 濡�: file, avatar (鍖哄垎鍚屼竴鏉¤褰曚笉鍚岀被鍨嬬殑闄勪欢)
      */
-    @TableField(value = "name")
-    private String name;
+    @TableField(value = "application")
+    private String application;
     /**
      * 鍏宠仈storage_blob璁板綍id
      */
     @TableField(value = "storage_blob_id")
     private Long storageBlobId;
-
-    @TableField(exist = false)
-    private StorageBlobDTO storageBlobDTO;
-
-    public StorageAttachment(String fileType, Long recordType, Long recordId) {
-        this.name = fileType;
-        this.recordType = recordType;
-        this.recordId = recordId;
-    }
-    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
-    @TableField(fill = FieldFill.INSERT)
-    private Integer createUser;
-
-    @TableField(fill = FieldFill.INSERT)
-    private Long deptId;
-
 }
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/basic/pojo/StorageBlob.java b/src/main/java/com/ruoyi/basic/pojo/StorageBlob.java
index 49a258d..7f7e961 100644
--- a/src/main/java/com/ruoyi/basic/pojo/StorageBlob.java
+++ b/src/main/java/com/ruoyi/basic/pojo/StorageBlob.java
@@ -1,20 +1,13 @@
 package com.ruoyi.basic.pojo;
 
 import com.baomidou.mybatisplus.annotation.*;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
-import java.util.Date;
 
 /**
  * 閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭� 瀹炰綋绫�
  *
- * @author ruoyi
- * @date 2025-05-29
  */
 @Data
 @TableName("storage_blob")
@@ -22,9 +15,6 @@
 
     private static final long serialVersionUID = 1L;
 
-    /**
-     *
-     */
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
@@ -45,15 +35,11 @@
     private String originalFilename;
 
     /**
-     * 瀛樺偍妗朵腑
+     * 鍞竴鏂囦欢鍚嶇О
      */
-    @TableField(value = "bucket_filename")
-    private String bucketFilename;
-    /**
-     * 瀛樺偍妗跺悕
-     */
-    @TableField(value = "bucket_name")
-    private String bucketName;
+    @TableField(value = "uid_filename")
+    private String uidFilename;
+
     /**
      * 璧勬簮灏哄(瀛楄妭)
      */
@@ -61,35 +47,8 @@
     private Long byteSize;
 
     /**
-     * 0鐢熶骇鍓� 1鐢熶骇鍚� 2鐢熶骇闂
+     * 鏂囦欢璺緞
      */
-    @TableField(value = "type")
-    private Long type;
-
-    /**
-     * 绉熸埛ID
-     */
-    @TableField(fill = FieldFill.INSERT)
-    private Long tenantId;
-
-    @ApiModelProperty(value = "鍒涘缓璇ヨ褰曠殑鐢ㄦ埛")
-    @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT)
-    private Integer createUser;
-
-    @ApiModelProperty(value = "璁板綍鍒涘缓鏃堕棿")
-    @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT)
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime createTime;
-
-    @ApiModelProperty(value = "鏈�鍚庝慨鏀硅璁板綍鐨勭敤鎴�")
-    @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT_UPDATE)
-    private Integer updateUser;
-
-    @ApiModelProperty(value = "璁板綍鏈�鍚庢洿鏂版椂闂�")
-    @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
-
-    @TableField(fill = FieldFill.INSERT)
-    private Long deptId;
+    @TableField(value = "path")
+    private String path;
 }
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/basic/pojo/SupplierManageFile.java b/src/main/java/com/ruoyi/basic/pojo/SupplierManageFile.java
index 16a24d8..f8e79fa 100644
--- a/src/main/java/com/ruoyi/basic/pojo/SupplierManageFile.java
+++ b/src/main/java/com/ruoyi/basic/pojo/SupplierManageFile.java
@@ -4,7 +4,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
diff --git a/src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java b/src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java
index 968ddba..60f3572 100644
--- a/src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java
+++ b/src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java
@@ -4,9 +4,9 @@
 import com.ruoyi.basic.pojo.CustomerFollowUpFile;
 import com.ruoyi.common.vo.SimpleFileVo;
 
-import javax.annotation.Nullable;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Null;
+import jakarta.annotation.Nullable;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Null;
 import java.util.List;
 import java.util.function.BiConsumer;
 import java.util.function.Function;
diff --git a/src/main/java/com/ruoyi/basic/service/ISupplierService.java b/src/main/java/com/ruoyi/basic/service/ISupplierService.java
index f3e46c2..b54c2ad 100644
--- a/src/main/java/com/ruoyi/basic/service/ISupplierService.java
+++ b/src/main/java/com/ruoyi/basic/service/ISupplierService.java
@@ -8,7 +8,7 @@
 import com.ruoyi.framework.web.domain.AjaxResult;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 public interface ISupplierService extends IService<SupplierManage> {
diff --git a/src/main/java/com/ruoyi/basic/service/StorageBlobService.java b/src/main/java/com/ruoyi/basic/service/StorageBlobService.java
index 962437d..1f09e2e 100644
--- a/src/main/java/com/ruoyi/basic/service/StorageBlobService.java
+++ b/src/main/java/com/ruoyi/basic/service/StorageBlobService.java
@@ -1,11 +1,11 @@
 package com.ruoyi.basic.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.basic.dto.StorageBlobDTO;
-import com.ruoyi.basic.pojo.StorageAttachment;
+import com.ruoyi.basic.dto.StorageBlobVO;
 import com.ruoyi.basic.pojo.StorageBlob;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
 import java.util.List;
 
 /**
@@ -19,20 +19,13 @@
 public interface StorageBlobService extends IService<StorageBlob> {
 
     /**
-     * 鏂囦欢涓婁紶鎺ュ彛
-     * @param files 鏂囦欢淇℃伅
-     * @param bucketName 瀛樺偍妗跺悕绉�
+     * 涓婁紶鏂囦欢
+     * @param files 鏂囦欢鍒楄〃
      * @return 涓婁紶缁撴灉
      */
-    List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName);
+    List<StorageBlobVO> upload(List<MultipartFile> files);
 
-    List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName,Long type);
+    File getFileByToken(String fileName, String token);
 
-
-    /**
-     * 鎵归噺鍒犻櫎鏂囦欢
-     * @param attachment
-     * @return
-     */
-    public int deleteStorageBlobs(StorageAttachment attachment);
+    public String getDownloadFileName(String fileName);
 }
diff --git a/src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java
index 9b1980a..1682d90 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java
@@ -1,19 +1,15 @@
 package com.ruoyi.basic.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.basic.dto.StorageBlobDTO;
-import com.ruoyi.basic.pojo.StorageAttachment;
 import com.ruoyi.basic.mapper.StorageAttachmentMapper;
 import com.ruoyi.basic.mapper.StorageBlobMapper;
-import com.ruoyi.basic.pojo.StorageBlob;
+import com.ruoyi.basic.pojo.StorageAttachment;
 import com.ruoyi.basic.service.StorageAttachmentService;
 import com.ruoyi.basic.service.StorageBlobService;
 import com.ruoyi.common.constant.StorageAttachmentConstants;
 import com.ruoyi.common.enums.StorageAttachmentRecordType;
 import com.ruoyi.common.utils.MinioUtils;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -44,36 +40,39 @@
 
     @Override
     public List<StorageAttachment> selectStorageAttachments(Long recordId, StorageAttachmentRecordType recordType, String fileType) {
-        List<StorageAttachment> storageAttachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>()
-                .eq(StorageAttachment::getRecordId, recordId)
-                .eq(StorageAttachment::getRecordType, recordType.ordinal())
-                .eq(StorageAttachment::getName, fileType));
-        if (storageAttachments != null) {
-            for (StorageAttachment storageAttachment : storageAttachments) {
-                StorageBlob storageBlob = storageBlobMapper.selectById(storageAttachment.getStorageBlobId());
-                StorageBlobDTO storageBlobDTO = new StorageBlobDTO();
-                BeanUtils.copyProperties(storageBlob, storageBlobDTO);
-                storageBlobDTO.setUrl(minioUtils.getPreviewUrl(storageBlob.getBucketName(), storageBlob.getBucketName(), true));
-                storageAttachment.setStorageBlobDTO(storageBlobDTO);
-            }
-        }
+        // todo fileChange
+//        List<StorageAttachment> storageAttachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>()
+//                .eq(StorageAttachment::getRecordId, recordId)
+//                .eq(StorageAttachment::getRecordType, recordType.ordinal())
+//                .eq(StorageAttachment::getName, fileType));
+//        if (storageAttachments != null) {
+//            for (StorageAttachment storageAttachment : storageAttachments) {
+//                StorageBlob storageBlob = storageBlobMapper.selectById(storageAttachment.getStorageBlobId());
+//                StorageBlobDTO storageBlobDTO = new StorageBlobDTO();
+//                BeanUtils.copyProperties(storageBlob, storageBlobDTO);
+//                storageBlobDTO.setUrl(minioUtils.getPreviewUrl(storageBlob.getBucketName(), storageBlob.getBucketName(), true));
+//                storageAttachment.setStorageBlobDTO(storageBlobDTO);
+//            }
+//        }
 
-        return storageAttachments;
+//        return storageAttachments;
+        return null;
     }
 
     @Override
     public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, StorageAttachmentConstants fileType) {
         // 鍒犻櫎鏃у浘
-        deleteStorageAttachment(new StorageAttachment(fileType.toString(), (long) recordType.ordinal(), recordId));
-        for (StorageAttachment attachment : attachments) {
-            // 鑾峰彇鍏宠仈璁板綍
-            StorageBlob storageBlob = attachment.getStorageBlobDTO();
-            attachment.setName(fileType.toString());
-            attachment.setRecordType((long) recordType.ordinal());
-            attachment.setRecordId(recordId);
-            attachment.setStorageBlobId(storageBlob.getId());
-            storageAttachmentMapper.insert(attachment);
-        }
+        // todo fileChange
+//        deleteStorageAttachment(new StorageAttachment(fileType.toString(), (long) recordType.ordinal(), recordId));
+//        for (StorageAttachment attachment : attachments) {
+//            // 鑾峰彇鍏宠仈璁板綍
+//            StorageBlob storageBlob = attachment.getStorageBlobDTO();
+//            attachment.setName(fileType.toString());
+//            attachment.setRecordType((long) recordType.ordinal());
+//            attachment.setRecordId(recordId);
+//            attachment.setStorageBlobId(storageBlob.getId());
+//            storageAttachmentMapper.insert(attachment);
+//        }
 
     }
 
@@ -81,27 +80,31 @@
     public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, String fileType) {
         // 鍒犻櫎鏃у浘
 //        deleteStorageAttachment(new StorageAttachment(fileType, (long) recordType.ordinal(), recordId));
-        for (StorageAttachment attachment : attachments) {
-            // 鑾峰彇鍏宠仈璁板綍
-            StorageBlob storageBlob = attachment.getStorageBlobDTO();
-            attachment.setName(fileType);
-            attachment.setRecordType((long) recordType.ordinal());
-            attachment.setRecordId(recordId);
-            attachment.setStorageBlobId(storageBlob.getId());
-            storageAttachmentMapper.insert(attachment);
-        }
+        // todo fileChange
+//        for (StorageAttachment attachment : attachments) {
+//            // 鑾峰彇鍏宠仈璁板綍
+//            StorageBlob storageBlob = attachment.getStorageBlobDTO();
+//            attachment.setName(fileType);
+//            attachment.setRecordType((long) recordType.ordinal());
+//            attachment.setRecordId(recordId);
+//            attachment.setStorageBlobId(storageBlob.getId());
+//            storageAttachmentMapper.insert(attachment);
+//        }
 
     }
 
     @Override
     public int deleteStorageAttachment(StorageAttachment storageAttachment) {
         // 鍏堝垹闄ゆ槑缁嗚〃
-        storageBlobService.deleteStorageBlobs(storageAttachment);
-
-
-        return storageAttachmentMapper.delete(new LambdaQueryWrapper<StorageAttachment>()
-                .eq(StorageAttachment::getRecordId, storageAttachment.getRecordId())
-                .eq(StorageAttachment::getRecordType, storageAttachment.getRecordType())
-                .eq(StorageAttachment::getName, storageAttachment.getName()));
+        // todo fileChange
+//        storageBlobService.deleteStorageBlobs(storageAttachment);
+//
+//
+//        return storageAttachmentMapper.delete(new LambdaQueryWrapper<StorageAttachment>()
+//                .eq(StorageAttachment::getRecordId, storageAttachment.getRecordId())
+//                .eq(StorageAttachment::getRecordType, storageAttachment.getRecordType())
+//                .eq(StorageAttachment::getName, storageAttachment.getName()));
+//    }
+        return 0;
     }
 }
diff --git a/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
index d85a522..b576d23 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
@@ -1,190 +1,145 @@
 package com.ruoyi.basic.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.basic.dto.StorageBlobDTO;
-import com.ruoyi.basic.mapper.StorageAttachmentMapper;
+import com.ruoyi.basic.dto.StorageBlobVO;
 import com.ruoyi.basic.mapper.StorageBlobMapper;
-import com.ruoyi.basic.pojo.StorageAttachment;
 import com.ruoyi.basic.pojo.StorageBlob;
 import com.ruoyi.basic.service.StorageBlobService;
-import com.ruoyi.common.exception.base.BaseException;
-import com.ruoyi.common.exception.file.InvalidExtensionException;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.MinioUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.framework.web.domain.MinioResult;
+import com.ruoyi.basic.utils.FileUtil;
+import com.ruoyi.common.config.FileProperties;
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.security.Keys;
 import lombok.RequiredArgsConstructor;
-import org.apache.commons.io.FilenameUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.time.LocalDateTime;
+import javax.crypto.SecretKey;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.UUID;
 
 /**
  * <p>
  * 閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭� 鏈嶅姟瀹炵幇绫�
  * </p>
  *
- * @author ruoyi
- * @since 2025-05-29
  */
 @Service
 @RequiredArgsConstructor
 public class StorageBlobServiceImpl extends ServiceImpl<StorageBlobMapper, StorageBlob> implements StorageBlobService {
-    @Autowired
-    private StorageAttachmentMapper storageAttachmentMapper;
-
-    @Autowired
-    private StorageBlobMapper storageBlobMapper;
-
-    @Autowired
-    private MinioUtils minioUtils;
+    private final FileProperties properties;
+    private final StorageBlobMapper storageBlobMapper;
+    private final FileUtil fileUtil;
 
     @Override
-    public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName) {
-
-        // 鑻ユ病浼犲叆bucketName锛屽垯浣跨敤榛樿bucketName
-        if (StringUtils.isEmpty(bucketName)) {
-            bucketName  = minioUtils.getDefaultBucket();
+    public List<StorageBlobVO> upload(List<MultipartFile> files) {
+        if (CollectionUtils.isEmpty(files)) {
+            throw new IllegalArgumentException("鏂囦欢涓嶈兘涓虹┖");
         }
 
-        List<StorageBlobDTO> storageBlobDTOs = new ArrayList<>();
+        List<StorageBlobVO> storageBlobVOS = new ArrayList<>();
+
         for (MultipartFile file : files) {
-            try {
-                MinioResult res = minioUtils.upload(bucketName, file, false);
-                StorageBlobDTO dto = new StorageBlobDTO();
-                dto.setContentType(file.getContentType());
-                dto.setBucketFilename(res.getBucketFileName());
-                dto.setOriginalFilename(res.getOriginalName());
-                dto.setByteSize(file.getSize());
-                dto.setResourceKey(IdUtils.simpleUUID());
-                dto.setBucketName(bucketName);
-                dto.setUrl(minioUtils.getPreviewUrl(res.getBucketFileName(), bucketName, false));
-                // 鎻掑叆鏁版嵁搴�
-                storageBlobMapper.insert(dto);
-
-                storageBlobDTOs.add(dto);
-            } catch (InvalidExtensionException e) {
-                throw new RuntimeException("minio鏂囦欢涓婁紶寮傚父锛�" +  e);
+            if (file == null || file.isEmpty()) {
+                throw new IllegalArgumentException("鏂囦欢涓嶈兘涓虹┖");
             }
+
+            String originalFileName = StringUtils.hasText(file.getOriginalFilename())
+                    ? StringUtils.cleanPath(file.getOriginalFilename())
+                    : UUID.randomUUID().toString();
+            String fileName = UUID.randomUUID() + "_" + originalFileName;
+            String relativePath = fileUtil.buildRelativePath();
+            File targetDirectory = new File(properties.getPath(), relativePath);
+            if (!targetDirectory.exists() && !targetDirectory.mkdirs()) {
+                throw new RuntimeException("鍒涘缓涓婁紶鐩綍澶辫触");
+            }
+            File dest = new File(targetDirectory, fileName);
+
+            StorageBlobVO storageBlob;
+            try {
+                file.transferTo(dest);
+                storageBlob = getStorageBlob(file, originalFileName, fileName, relativePath);
+                if (storageBlob == null || storageBlob.getId() == null) {
+                    throw new RuntimeException("鏂囦欢鍏冩暟鎹繚瀛樺け璐�");
+                }
+            } catch (RuntimeException e) {
+                if (dest.exists()) {
+                    dest.delete();
+                }
+                throw e;
+            } catch (IOException e) {
+                throw new RuntimeException("鏂囦欢淇濆瓨澶辫触", e);
+            }
+
+            storageBlobVOS.add(storageBlob);
         }
-
-
-        return storageBlobDTOs;
+        return storageBlobVOS;
     }
 
     @Override
-    public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName, Long type) {
-
-        // 鑻ユ病浼犲叆bucketName锛屽垯浣跨敤榛樿bucketName
-        if (StringUtils.isEmpty(bucketName)) {
-            bucketName = minioUtils.getDefaultBucket();
+    public File getFileByToken(String fileName, String token) {
+        if (!StringUtils.hasText(token)) {
+            throw new IllegalArgumentException("token涓嶈兘涓虹┖");
         }
-        List<StorageBlobDTO> storageBlobDTOs = new ArrayList<>();
-        for (MultipartFile file : files) {
-            try {
-                validateFileExtension(file);
 
-                MinioResult res = minioUtils.upload(bucketName, file, false);
+        String secretStr = StringUtils.hasText(properties.getJwtSecret())
+                ? properties.getJwtSecret()
+                : "local-file-jwt-secret";
 
-                StorageBlobDTO dto = buildStorageBlobDTO(file, res, bucketName, type);
-
-                storageBlobMapper.insert(dto);
-                storageBlobDTOs.add(dto);
-
-            } catch (InvalidExtensionException e) {
-                throw new RuntimeException("涓嶆敮鎸佺殑鏂囦欢绫诲瀷锛�" + file.getOriginalFilename(), e);
-            } catch (Exception e) {
-                throw new RuntimeException("涓婁紶鏂囦欢澶辫触锛�" + file.getOriginalFilename(), e);
-            }
+        SecretKey key = Keys.hmacShaKeyFor(secretStr.getBytes(StandardCharsets.UTF_8));
+        Claims claims = Jwts.parser()
+                .verifyWith(key)          // 浠f浛鏃х増鐨� setSigningKey
+                .build()                  // 蹇呴』鍏堟瀯寤鸿В鏋愬櫒
+                .parseSignedClaims(token) // 浠f浛鏃х増鐨� parseClaimsJws
+                .getPayload();            // 浠f浛鏃х増鐨� getBody()
+        if (!fileName.equals(claims.getSubject())) {
+            throw new IllegalArgumentException("token涓庢枃浠朵笉鍖归厤");
         }
-        return storageBlobDTOs;
+        fileUtil.validateTokenUsage(token);
+        StorageBlob storageBlob = findStorageBlob(fileName);
+        String path = storageBlob == null ? claims.get("path", String.class) : storageBlob.getPath();
+        if (!StringUtils.hasText(path)) {
+            return new File(properties.getPath(), fileName);
+        }
+        return new File(new File(properties.getPath(), path), fileName);
     }
 
-    private StorageBlobDTO buildStorageBlobDTO(MultipartFile file, MinioResult res, String bucketName, Long type) {
-        StorageBlobDTO dto = new StorageBlobDTO();
-        dto.setContentType(file.getContentType());
-        dto.setBucketFilename(res.getBucketFileName());
-        dto.setOriginalFilename(res.getOriginalName());
-        dto.setByteSize(file.getSize());
-        dto.setResourceKey(IdUtils.simpleUUID());
-        dto.setBucketName(bucketName);
-        dto.setUrl(minioUtils.getPreviewUrl(res.getBucketFileName(), bucketName, false));
-        dto.setDownloadUrl(minioUtils.getDownloadUrl(res.getBucketFileName(), bucketName));
-
-        if (type != null) {
-            dto.setType(type);
-        }
-
-        return dto;
+    private StorageBlob findStorageBlob(String fileName) {
+        return storageBlobMapper.selectOne(new LambdaQueryWrapper<StorageBlob>()
+                .eq(StorageBlob::getUidFilename, fileName)
+                .last("limit 1"));
     }
 
-    private void validateFileExtension(MultipartFile file) throws InvalidExtensionException {
-        String filename = file.getOriginalFilename();
-        String extension = FilenameUtils.getExtension(filename).toLowerCase();
-        List<String> allowedExtensions = Arrays.asList(
-                // 鍥剧墖
-                "jpg", "jpeg", "png", "gif", "bmp", "webp", "tiff", "ico", "svg",
-
-                // 鏂囨。
-                "pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "txt", "rtf", "md", "csv", "odt",
-
-                // 瑙嗛
-                "mp4", "mov", "avi", "wmv", "flv", "mkv", "webm", "mpeg", "3gp", "MOV",
-
-                // 闊抽
-                "mp3", "wav", "ogg", "aac", "flac", "m4a", "wma", "amr",
-
-                // 鍘嬬缉鍖�
-                "zip", "rar", "7z", "tar", "gz", "bz2", "xz",
-
-                // 缂栫▼浠g爜鏂囦欢
-                "java", "py", "js", "ts", "html", "css", "cpp", "c", "cs", "json", "xml", "sql", "yaml", "yml", "sh", "bat",
-
-                // 瀹夎绋嬪簭 & 浜岃繘鍒�
-                "exe", "apk", "dmg", "msi", "bin", "iso",
-
-                // 璁捐绫�
-                "psd", "ai", "xd", "sketch", "fig"
-        );
-
-        if (!allowedExtensions.contains(extension)) {
-            throw new BaseException("鏂囦欢绫诲瀷涓嶈鍏佽锛�" + extension);
+    private StorageBlobVO getStorageBlob(MultipartFile file, String originalFileName, String fileName, String relativePath) {
+        StorageBlobVO storageBlob = new StorageBlobVO();
+        storageBlob.setResourceKey(UUID.randomUUID().toString().replace("-", ""));
+        storageBlob.setContentType(file.getContentType());
+        storageBlob.setOriginalFilename(originalFileName);
+        storageBlob.setUidFilename(fileName);
+        storageBlob.setByteSize(file.getSize());
+        storageBlob.setPath(relativePath);
+        storageBlob.setPreviewURL(fileUtil.buildSignedPreviewUrl(storageBlob));
+        storageBlob.setDownloadURL(fileUtil.buildSignedDownloadUrl(storageBlob));
+        int affectedRows = storageBlobMapper.insert(storageBlob);
+        if (affectedRows <= 0) {
+            throw new RuntimeException("鏂囦欢鍏冩暟鎹繚瀛樺け璐�");
         }
+        return storageBlob;
     }
 
     @Override
-    public int deleteStorageBlobs(StorageAttachment attachment) {
-        List<StorageAttachment> attachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>()
-                .eq(StorageAttachment::getRecordId, attachment.getRecordId())
-                .eq(StorageAttachment::getRecordType, attachment.getRecordType())
-                .eq(StorageAttachment::getName, attachment.getName()));
-        List<Long> ids = attachments.stream().map(StorageAttachment::getStorageBlobId).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty(ids)){
-            return 0;
+    public String getDownloadFileName(String fileName) {
+        StorageBlob storageBlob = findStorageBlob(fileName);
+        if (storageBlob == null || !StringUtils.hasText(storageBlob.getOriginalFilename())) {
+            return fileName;
         }
-        List<StorageBlob> storageBlobs = storageBlobMapper.selectList(new LambdaQueryWrapper<StorageBlob>()
-                .in(StorageBlob::getId, ids));
-        if (!storageBlobs.isEmpty()) {
-            for (StorageBlob storageBlob : storageBlobs) {
-                // 绉婚櫎妗跺唴鏂囦欢
-                minioUtils.removeObjectsResult(storageBlob.getBucketName(), storageBlob.getBucketName());
-            }
-        }
-
-        if (!ids.isEmpty()) {
-            return storageBlobMapper.delete(new QueryWrapper<StorageBlob>().lambda().in(StorageBlob::getId, ids));
-        }
-
-        return 0;
+        return storageBlob.getOriginalFilename();
     }
 }
diff --git a/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
index 020a9cd..d2f4927 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/SupplierServiceImpl.java
@@ -21,7 +21,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/main/java/com/ruoyi/basic/utils/FileUtil.java b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
new file mode 100644
index 0000000..606228c
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
@@ -0,0 +1,494 @@
+package com.ruoyi.basic.utils;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.ruoyi.basic.constant.ApplicationType;
+import com.ruoyi.basic.constant.RecordType;
+import com.ruoyi.basic.dto.StorageAttachmentDTO;
+import com.ruoyi.basic.dto.StorageBlobVO;
+import com.ruoyi.basic.mapper.StorageAttachmentMapper;
+import com.ruoyi.basic.mapper.StorageBlobMapper;
+import com.ruoyi.basic.pojo.StorageAttachment;
+import com.ruoyi.common.config.FileProperties;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+@Component
+@RequiredArgsConstructor
+public class FileUtil {
+    private final FileProperties properties;
+    private final StorageAttachmentMapper storageAttachmentMapper;
+    private final StorageBlobMapper storageBlobMapper;
+    private final StringRedisTemplate stringRedisTemplate;
+
+    private static final String TOKEN_USAGE_KEY_PREFIX = "file:token:usage:";
+    private static final DateTimeFormatter YEAR_PATH_FORMATTER = DateTimeFormatter.ofPattern("yyyy");
+    private static final DateTimeFormatter MONTH_DAY_PATH_FORMATTER = DateTimeFormatter.ofPattern("MMdd");
+
+    /**
+     * 淇濆瓨闄勪欢淇℃伅
+     *
+     * @param application     鏂囦欢鐢ㄩ��
+     * @param recordType      鍏宠仈璁板綍绫诲瀷
+     * @param recordId        鍏宠仈璁板綍id
+     * @param storageBlobVOS 鏂囦欢淇℃伅
+     */
+    public void saveStorageAttachment(ApplicationType application, RecordType recordType, Long recordId, List<StorageBlobVO> storageBlobVOS) {
+        if (CollectionUtils.isEmpty(storageBlobVOS)) {
+            throw new RuntimeException("鏂囦欢淇℃伅涓嶈兘涓虹┖");
+        }
+        if (!application.isValid()) {
+            throw new RuntimeException("鏂囦欢鐢ㄩ�斾笉鑳戒负绌�");
+        }
+        if (!recordType.isValid()) {
+            throw new RuntimeException("鍏宠仈璁板綍绫诲瀷涓嶈兘涓虹┖");
+        }
+        if (recordId == null || recordId <= 0) {
+            throw new RuntimeException("鍏宠仈璁板綍id涓嶈兘涓虹┖");
+        }
+        // 鍒犻櫎鏃ч檮浠朵俊鎭�
+        deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId);
+        List<StorageAttachment> storageAttachments = new ArrayList<>();
+        for (StorageBlobVO storageBlobVO : storageBlobVOS) {
+            StorageAttachment storageAttachment = new StorageAttachment();
+            storageAttachment.setApplication(application.getType());
+            storageAttachment.setRecordType(recordType.getType());
+            storageAttachment.setRecordId(recordId);
+            storageAttachment.setStorageBlobId(storageBlobVO.getId());
+            storageAttachment.setDeleted(0L);
+        }
+        // todo fileChange
+//        storageAttachmentMapper.insert(storageAttachments);
+    }
+
+    /**
+     * 鍒犻櫎鏂囦欢淇℃伅
+     *
+     * @param storageBlobIds 鏂囦欢id
+     */
+    public void deleteStorageBlobs(List<Long> storageBlobIds) {
+        // todo fileChange
+//        storageBlobMapper.deleteByIds(storageBlobIds);
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鍒犻櫎鏂囦欢淇℃伅
+     *
+     * @param storageAttachmentIds 鏂囦欢id
+     */
+    public void deleteStorageBlobsByStorageAttachmentIds(List<Long> storageAttachmentIds) {
+        // todo fileChange
+//        List<StorageAttachment> storageAttachments = storageAttachmentMapper.selectByIds(storageAttachmentIds);
+//        List<Long> storageBlobIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId).collect(Collectors.toList());
+//        deleteStorageBlobs(storageBlobIds);
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鐢ㄩ�斻�佸叧鑱旇褰曠被鍨嬨�佸叧鑱旇褰昳d鍒犻櫎鏂囦欢淇℃伅
+     *
+     * @param application 鏂囦欢鐢ㄩ��
+     * @param recordType  鍏宠仈璁板綍绫诲瀷
+     * @param recordId    鍏宠仈璁板綍id
+     */
+    public void deleteStorageBlobsByApplicationAndRecordTypeAndRecordId(ApplicationType application, RecordType recordType, Long recordId) {
+        if (!application.isValid()) {
+            throw new RuntimeException("鏂囦欢鐢ㄩ�斾笉鑳戒负绌�");
+        }
+        if (!recordType.isValid()) {
+            throw new RuntimeException("鍏宠仈璁板綍绫诲瀷涓嶈兘涓虹┖");
+        }
+        if (recordId == null || recordId <= 0) {
+            throw new RuntimeException("鍏宠仈璁板綍id涓嶈兘涓虹┖");
+        }
+        List<StorageAttachment> storageAttachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>()
+                .eq(StorageAttachment::getRecordType, recordType.getType())
+                .eq(StorageAttachment::getRecordId, recordId)
+                .eq(StorageAttachment::getApplication, application.getType()));
+        if (CollectionUtils.isNotEmpty(storageAttachments)) {
+            List<Long> storageAttachmentIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId)
+                    .collect(Collectors.toList());
+            deleteStorageBlobsByStorageAttachmentIds(storageAttachmentIds);
+        }
+    }
+
+    /**
+     * 鍒犻櫎鏂囦欢鍏宠仈淇℃伅
+     *
+     * @param storageAttachmentIds 鏂囦欢鍏宠仈id
+     */
+    public void deleteStorageAttachmentsByStorageAttachmentIds(List<Long> storageAttachmentIds) {
+        deleteStorageBlobsByStorageAttachmentIds(storageAttachmentIds);
+        // todo fileChange
+//        storageAttachmentMapper.deleteByIds(storageAttachmentIds);
+    }
+
+    public void deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordId(ApplicationType application, RecordType recordType, Long recordId) {
+        if (!application.isValid()) {
+            throw new RuntimeException("鏂囦欢鐢ㄩ�斾笉鑳戒负绌�");
+        }
+        if (!recordType.isValid()) {
+            throw new RuntimeException("鍏宠仈璁板綍绫诲瀷涓嶈兘涓虹┖");
+        }
+        if (recordId == null || recordId <= 0) {
+            throw new RuntimeException("鍏宠仈璁板綍id涓嶈兘涓虹┖");
+        }
+        deleteStorageBlobsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId);
+        storageAttachmentMapper.delete(new LambdaQueryWrapper<StorageAttachment>()
+                .eq(StorageAttachment::getRecordType, recordType.getType())
+                .eq(StorageAttachment::getRecordId, recordId)
+                .eq(StorageAttachment::getApplication, application.getType()));
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢淇℃伅
+     *
+     * @param storageAttachmentIds 鏂囦欢id
+     */
+    public List<StorageAttachment> getStorageAttachmentsByStorageAttachmentIds(List<Long> storageAttachmentIds) {
+        if (CollectionUtils.isEmpty(storageAttachmentIds)) {
+            throw new RuntimeException("鏂囦欢id涓嶈兘涓虹┖");
+        }
+        // todo fileChange
+//        return storageAttachmentMapper.selectByIds(storageAttachmentIds);
+        return new ArrayList<>();
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鐢ㄩ�斻�佸叧鑱旇褰曠被鍨嬨�佸叧鑱旇褰昳d鑾峰彇鏂囦欢鍏宠仈淇℃伅
+     *
+     * @param application 鏂囦欢鐢ㄩ��
+     * @param recordType  鍏宠仈璁板綍绫诲瀷
+     * @param recordId    鍏宠仈璁板綍id
+     */
+    public List<StorageAttachment> getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(ApplicationType application, RecordType recordType, Long recordId) {
+        if (!application.isValid()) {
+            throw new RuntimeException("鏂囦欢鐢ㄩ�斾笉鑳戒负绌�");
+        }
+        if (!recordType.isValid()) {
+            throw new RuntimeException("鍏宠仈璁板綍绫诲瀷涓嶈兘涓虹┖");
+        }
+        if (recordId == null || recordId <= 0) {
+            throw new RuntimeException("鍏宠仈璁板綍id涓嶈兘涓虹┖");
+        }
+        return storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>()
+                .eq(StorageAttachment::getRecordType, recordType.getType())
+                .eq(StorageAttachment::getRecordId, recordId)
+                .eq(StorageAttachment::getApplication, application.getType()));
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢淇℃伅
+     *
+     * @param storageAttachmentIds 鏂囦欢id
+     */
+    public List<StorageBlobVO> getStorageBlobDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds) {
+        List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds);
+        if (CollectionUtils.isEmpty(storageAttachments)) {
+            return null;
+        }
+        List<Long> storageBlobIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId).collect(Collectors.toList());
+        // todo fileChange
+//        List<StorageBlob> storageBlobs = storageBlobMapper.selectByIds(storageBlobIds);
+//        List<StorageBlobDTO> storageBlobDTOS = new ArrayList<>();
+//        for (StorageBlob storageBlob : storageBlobs) {
+//            StorageBlobDTO storageBlobDTO = new StorageBlobDTO();
+//            BeanUtils.copyProperties(storageBlob, storageBlobDTO);
+//            storageBlobDTO.setPreviewURL(buildSignedPreviewUrl(storageBlobDTO));
+//            storageBlobDTO.setDownloadURL(buildSignedDownloadUrl(storageBlobDTO));
+//            storageBlobDTOS.add(storageBlobDTO);
+//        }
+        return new ArrayList<>();
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢淇℃伅瀛樺湪杩囨湡鏃堕棿
+     *
+     * @param storageAttachmentIds 鏂囦欢id
+     * @param expired              杩囨湡鏃堕棿
+     */
+    public List<StorageBlobVO> getStorageBlobDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) {
+        List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds);
+        if (CollectionUtils.isEmpty(storageAttachments)) {
+            return null;
+        }
+        List<Long> storageBlobIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId).collect(Collectors.toList());
+        // todo fileChange
+//        List<StorageBlob> storageBlobs = storageBlobMapper.selectByIds(storageBlobIds);
+//        List<StorageBlobDTO> storageBlobDTOS = new ArrayList<>();
+//        for (StorageBlob storageBlob : storageBlobs) {
+//            StorageBlobDTO storageBlobDTO = new StorageBlobDTO();
+//            BeanUtils.copyProperties(storageBlob, storageBlobDTO);
+//            storageBlobDTO.setPreviewURL(buildSignedUrl(storageBlobDTO, "/preview/", expired));
+//            storageBlobDTO.setDownloadURL(buildSignedUrl(storageBlobDTO, "/download/", expired));
+//            storageBlobDTOS.add(storageBlobDTO);
+//        }
+//        return storageBlobDTOS;
+        return new ArrayList<>();
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢淇℃伅
+     *
+     * @param storageAttachmentIds 鏂囦欢id
+     */
+    public List<StorageAttachmentDTO> getStorageAttachmentDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds) {
+        List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds);
+        if (CollectionUtils.isEmpty(storageAttachments)) {
+            return new ArrayList<>();
+        }
+        List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>();
+        for (StorageAttachment storageAttachment : storageAttachments) {
+            StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO();
+            BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO);
+            List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()));
+            if (CollectionUtils.isEmpty(storageBlobVOS)) {
+                storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>());
+            } else {
+                storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS);
+            }
+            storageAttachmentDTOS.add(storageAttachmentDTO);
+        }
+        return storageAttachmentDTOS;
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢淇℃伅瀛樺湪杩囨湡鏃堕棿
+     *
+     * @param storageAttachmentIds 鏂囦欢id
+     * @param expired              杩囨湡鏃堕棿
+     */
+    public List<StorageAttachmentDTO> getStorageAttachmentDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) {
+        List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds);
+        if (CollectionUtils.isEmpty(storageAttachments)) {
+            return new ArrayList<>();
+        }
+        List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>();
+        for (StorageAttachment storageAttachment : storageAttachments) {
+            StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO();
+            BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO);
+            List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired);
+            if (CollectionUtils.isEmpty(storageBlobVOS)) {
+                storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>());
+            } else {
+                storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS);
+            }
+            storageAttachmentDTOS.add(storageAttachmentDTO);
+        }
+        return storageAttachmentDTOS;
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢淇℃伅
+     *
+     * @param application 搴旂敤
+     * @param recordType  璁板綍绫诲瀷
+     * @param recordId    璁板綍id
+     */
+    public List<StorageAttachmentDTO> getStorageAttachmentDTOsByApplicationAndRecordTypeAndRecordId(ApplicationType application, RecordType recordType, Long recordId) {
+        List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId);
+        if (CollectionUtils.isEmpty(storageAttachments)) {
+            return new ArrayList<>();
+        }
+        List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>();
+        for (StorageAttachment storageAttachment : storageAttachments) {
+            StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO();
+            BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO);
+            List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()));
+            if (CollectionUtils.isEmpty(storageBlobVOS)) {
+                storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>());
+            } else {
+                storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS);
+            }
+            storageAttachmentDTOS.add(storageAttachmentDTO);
+        }
+        return storageAttachmentDTOS;
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢淇℃伅瀛樺湪杩囨湡鏃堕棿
+     *
+     * @param application 搴旂敤
+     * @param recordType  璁板綍绫诲瀷
+     * @param recordId    璁板綍id
+     * @param expired     杩囨湡鏃堕棿
+     */
+    public List<StorageAttachmentDTO> getStorageAttachmentDTOsByApplicationAndRecordTypeAndRecordId(ApplicationType application, RecordType recordType, Long recordId, BigDecimal expired) {
+        List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId);
+        if (CollectionUtils.isEmpty(storageAttachments)) {
+            return new ArrayList<>();
+        }
+        List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>();
+        for (StorageAttachment storageAttachment : storageAttachments) {
+            StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO();
+            BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO);
+            List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired);
+            if (CollectionUtils.isEmpty(storageBlobVOS)) {
+                storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>());
+            } else {
+                storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS);
+            }
+            storageAttachmentDTOS.add(storageAttachmentDTO);
+        }
+        return storageAttachmentDTOS;
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢棰勮鍦板潃
+     *
+     * @param storageAttachmentIds 鏂囦欢鍏宠仈id
+     */
+    public List<String> getFilePreviewURLByStorageAttachmentIds(List<Long> storageAttachmentIds) {
+        List<String> res = new ArrayList<>();
+        List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds);
+        for (StorageBlobVO storageBlobVO : storageBlobVOS) {
+            res.add(buildSignedPreviewUrl(storageBlobVO));
+        }
+        return res;
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢棰勮鍦板潃瀛樺湪杩囨湡鏃堕棿
+     *
+     * @param storageAttachmentIds 鏂囦欢鍏宠仈id
+     * @param expired              杩囨湡鏃堕棿
+     */
+    public List<String> getFilePreviewURLByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) {
+        List<String> res = new ArrayList<>();
+        List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds);
+        for (StorageBlobVO storageBlobVO : storageBlobVOS) {
+            res.add(buildSignedUrl(storageBlobVO, "/preview/", expired));
+        }
+        return res;
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢涓嬭浇鍦板潃
+     *
+     * @param storageAttachmentIds 鏂囦欢鍏宠仈id
+     */
+    public List<String> getFileDownloadURLByStorageAttachmentIds(List<Long> storageAttachmentIds) {
+        List<String> res = new ArrayList<>();
+        List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds);
+        for (StorageBlobVO storageBlobVO : storageBlobVOS) {
+            res.add(buildSignedDownloadUrl(storageBlobVO));
+        }
+        return res;
+    }
+
+    /**
+     * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢涓嬭浇鍦板潃瀛樺湪杩囨湡鏃堕棿
+     *
+     * @param storageAttachmentIds 鏂囦欢鍏宠仈id
+     * @param expired              杩囨湡鏃堕棿
+     */
+    public List<String> getFileDownloadURLByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) {
+        List<String> res = new ArrayList<>();
+        List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds);
+        for (StorageBlobVO storageBlobVO : storageBlobVOS) {
+            res.add(buildSignedUrl(storageBlobVO, "/download/", expired));
+        }
+        return res;
+    }
+
+    public String buildSignedPreviewUrl(StorageBlobVO storageBlob) {
+        return buildSignedUrl(storageBlob, "/preview/", properties.getExpired());
+    }
+    public String buildSignedDownloadUrl(StorageBlobVO storageBlob) {
+        return buildSignedUrl(storageBlob, "/download/", properties.getExpired());
+    }
+
+    /**
+     * 鏋勫缓甯︾鍚嶇殑URL
+     *
+     * @param storageBlob 鏂囦欢鍏冩暟鎹�
+     * @param actionPath  鎿嶄綔璺緞 "/preview/" or "/download/"
+     * @param expired     杩囨湡鏃堕棿 濡傛灉涓嶉厤缃紝涓嶄紶鍙傦紝灏嗕娇鐢ㄩ粯璁ゅ��120鍒嗛挓
+     * @return 甯︾鍚嶇殑URL
+     */
+    public String buildSignedUrl(StorageBlobVO storageBlob, String actionPath, BigDecimal expired) {
+        if (!Arrays.asList("/preview/", "/download/").contains(actionPath)) {
+            throw new IllegalArgumentException("鎿嶄綔璺緞鍙傛暟閿欒");
+        }
+        if (storageBlob == null || !StringUtils.hasText(storageBlob.getUidFilename())) {
+            throw new IllegalArgumentException("鏂囦欢淇℃伅涓嶅畬鏁�");
+        }
+        long now = System.currentTimeMillis();
+        long expiredMillis = expired.multiply(new BigDecimal("60000")).longValue();
+        if (expiredMillis <= 0L) {
+            expiredMillis = 2L * 60L * 60L * 1000L;
+        }
+        Date issuedAt = new Date(now);
+        Date expiration = new Date(now + expiredMillis);
+        String token = Jwts.builder()
+                .setSubject(storageBlob.getUidFilename())
+                .setIssuedAt(issuedAt)
+                .setExpiration(expiration)
+                .claim("path", storageBlob.getPath())
+                .claim("resourceKey", storageBlob.getResourceKey())
+                .signWith(SignatureAlgorithm.HS256, properties.getJwtSecret())
+                .compact();
+        cacheTokenUsage(token, expiredMillis);
+        String domain = StringUtils.trimTrailingCharacter(properties.getDomain(), '/');
+        String prefix = properties.getUrlPrefix().startsWith("/") ? properties.getUrlPrefix() : "/" + properties.getUrlPrefix();
+        String normalizedActionPath = StringUtils.hasText(actionPath) ? actionPath : "/preview/";
+        if (!normalizedActionPath.startsWith("/")) {
+            normalizedActionPath = "/" + normalizedActionPath;
+        }
+        if (!normalizedActionPath.endsWith("/")) {
+            normalizedActionPath = normalizedActionPath + "/";
+        }
+        return domain + prefix + normalizedActionPath + storageBlob.getUidFilename() + "?token=" + token;
+    }
+
+    private void cacheTokenUsage(String token, long expiredMillis) {
+        if (!StringUtils.hasText(token)) {
+            return;
+        }
+        long ttl = expiredMillis > 0L ? expiredMillis : 2L * 60L * 60L * 1000L;
+        stringRedisTemplate.opsForValue().set(buildTokenUsageKey(token), "0", ttl, TimeUnit.MILLISECONDS);
+    }
+
+    private String buildTokenUsageKey(String token) {
+        return TOKEN_USAGE_KEY_PREFIX + token;
+    }
+
+    public String buildRelativePath() {
+        LocalDate now = LocalDate.now();
+        return now.format(YEAR_PATH_FORMATTER) + "/" + now.format(MONTH_DAY_PATH_FORMATTER);
+    }
+
+    public void validateTokenUsage(String token) {
+        String redisKey = buildTokenUsageKey(token);
+        String currentCountValue = stringRedisTemplate.opsForValue().get(redisKey);
+        if (!StringUtils.hasText(currentCountValue)) {
+            throw new IllegalArgumentException("閾炬帴宸茶繃鏈熸垨杈惧埌浣跨敤娆℃暟澶辨晥");
+        }
+        long currentCount = Long.parseLong(currentCountValue);
+        int limit = resolveLimit();
+        if (currentCount >= limit) {
+            stringRedisTemplate.delete(redisKey);
+            throw new IllegalArgumentException("閾炬帴杈惧埌浣跨敤娆℃暟澶辨晥");
+        }
+        Long updatedCount = stringRedisTemplate.opsForValue().increment(redisKey);
+        if (updatedCount != null && updatedCount >= limit) {
+            stringRedisTemplate.delete(redisKey);
+        }
+    }
+
+    private int resolveLimit() {
+        return properties.getUseLimit() == null || properties.getUseLimit() <= 0 ? 10 : properties.getUseLimit();
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/DutyPlanController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/DutyPlanController.java
index 9ad69ee..4656bce 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/controller/DutyPlanController.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/DutyPlanController.java
@@ -14,7 +14,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
index 956c8bc..453986e 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
@@ -19,7 +19,7 @@
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementController.java
index cf4c2fe..7af02e8 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementController.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementController.java
@@ -16,7 +16,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementFileController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementFileController.java
index 8f9ced9..3f770f8 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementFileController.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementFileController.java
@@ -9,7 +9,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/SealApplicationManagementController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/SealApplicationManagementController.java
index bcfc20d..18b7280 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/controller/SealApplicationManagementController.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/SealApplicationManagementController.java
@@ -16,7 +16,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.Arrays;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/DutyPlanService.java b/src/main/java/com/ruoyi/collaborativeApproval/service/DutyPlanService.java
index 67bff22..b3cbcec 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/service/DutyPlanService.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/DutyPlanService.java
@@ -6,7 +6,7 @@
 import com.ruoyi.collaborativeApproval.dto.DutyPlanDTO;
 import com.ruoyi.collaborativeApproval.pojo.DutyPlan;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/DutyPlanServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/DutyPlanServiceImpl.java
index b70f67a..b1dd3cb 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/DutyPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/DutyPlanServiceImpl.java
@@ -11,7 +11,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/RulesRegulationsManagementFileServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/RulesRegulationsManagementFileServiceImpl.java
index ff59f8c..4e720e2 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/RulesRegulationsManagementFileServiceImpl.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/RulesRegulationsManagementFileServiceImpl.java
@@ -1,7 +1,6 @@
 package com.ruoyi.collaborativeApproval.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.collaborativeApproval.pojo.RulesRegulationsManagementFile;
 import com.ruoyi.collaborativeApproval.mapper.RulesRegulationsManagementFileMapper;
@@ -10,7 +9,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.management.Query;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/common/aop/DataScopeAop.java b/src/main/java/com/ruoyi/common/aop/DataScopeAop.java
index f77ca63..1c73e9b 100644
--- a/src/main/java/com/ruoyi/common/aop/DataScopeAop.java
+++ b/src/main/java/com/ruoyi/common/aop/DataScopeAop.java
@@ -10,8 +10,8 @@
 import org.springframework.web.multipart.MultipartFile;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
 import java.lang.reflect.Array;
 import java.lang.reflect.Field;
 import java.util.Collection;
@@ -150,7 +150,7 @@
                 || ServletRequest.class.isAssignableFrom(type)
                 || ServletResponse.class.isAssignableFrom(type)
                 || packageName.startsWith("java.")
-                || packageName.startsWith("javax.")
+                || packageName.startsWith("jakarta.")
                 || packageName.startsWith("jakarta.")
                 || packageName.startsWith("org.springframework.")
                 || packageName.startsWith("com.baomidou.");
diff --git a/src/main/java/com/ruoyi/common/config/FileProperties.java b/src/main/java/com/ruoyi/common/config/FileProperties.java
new file mode 100644
index 0000000..2687212
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/config/FileProperties.java
@@ -0,0 +1,24 @@
+package com.ruoyi.common.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+
+@Configuration
+@Component
+@ConfigurationProperties(prefix = "file")
+@Data
+public class FileProperties {
+    private String path = "D:/upload";
+    private String urlPrefix = "/file";
+    private String domain = "http://localhost:8080";
+    private BigDecimal expired = new BigDecimal("120");
+    private Integer useLimit = 10;
+    // 浠ょ墝绉橀挜
+    @Value("${token.secret}")
+    private String jwtSecret;
+}
diff --git a/src/main/java/com/ruoyi/common/constant/Constants.java b/src/main/java/com/ruoyi/common/constant/Constants.java
index d12c995..1c87b19 100644
--- a/src/main/java/com/ruoyi/common/constant/Constants.java
+++ b/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -168,6 +168,6 @@
     /**
      * 瀹氭椂浠诲姟杩濊鐨勫瓧绗�
      */
-    public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
+    public static final String[] JOB_ERROR_STR = { "java.net.URL", "jakarta.naming.InitialContext", "org.yaml.snakeyaml",
             "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.framework.config", "com.ruoyi.project.tool" };
 }
diff --git a/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java b/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java
index 3946d48..722e52e 100644
--- a/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java
+++ b/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java
@@ -1,13 +1,13 @@
 package com.ruoyi.common.filter;
 
 import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
 import org.springframework.http.MediaType;
 import com.ruoyi.common.utils.StringUtils;
 
diff --git a/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java b/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java
index ca822ed..53416da 100644
--- a/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java
+++ b/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java
@@ -4,11 +4,11 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import javax.servlet.ReadListener;
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.ReadListener;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
 import com.ruoyi.common.utils.http.HttpHelper;
 import com.ruoyi.common.constant.Constants;
 
diff --git a/src/main/java/com/ruoyi/common/filter/XssFilter.java b/src/main/java/com/ruoyi/common/filter/XssFilter.java
index b4eaabc..db6e9b3 100644
--- a/src/main/java/com/ruoyi/common/filter/XssFilter.java
+++ b/src/main/java/com/ruoyi/common/filter/XssFilter.java
@@ -3,14 +3,14 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.enums.HttpMethod;
 
diff --git a/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java b/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
index e0cc40a..9f89bdd 100644
--- a/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
+++ b/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
@@ -2,10 +2,10 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import javax.servlet.ReadListener;
-import javax.servlet.ServletInputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.ReadListener;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
 import org.apache.commons.io.IOUtils;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
diff --git a/src/main/java/com/ruoyi/common/utils/MinioUtils.java b/src/main/java/com/ruoyi/common/utils/MinioUtils.java
index d192f93..9aef8e4 100644
--- a/src/main/java/com/ruoyi/common/utils/MinioUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/MinioUtils.java
@@ -18,8 +18,8 @@
 import org.springframework.util.FastByteArrayOutputStream;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.InputStream;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
diff --git a/src/main/java/com/ruoyi/common/utils/ServletUtils.java b/src/main/java/com/ruoyi/common/utils/ServletUtils.java
index 292b8da..a7882ee 100644
--- a/src/main/java/com/ruoyi/common/utils/ServletUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/ServletUtils.java
@@ -7,10 +7,10 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
 import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
diff --git a/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java b/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java
index d9821e0..03e8972 100644
--- a/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java
+++ b/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java
@@ -1,9 +1,9 @@
 package com.ruoyi.common.utils.bean;
 
 import java.util.Set;
-import javax.validation.ConstraintViolation;
-import javax.validation.ConstraintViolationException;
-import javax.validation.Validator;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.ConstraintViolationException;
+import jakarta.validation.Validator;
 
 /**
  * bean瀵硅薄灞炴�ч獙璇�
diff --git a/src/main/java/com/ruoyi/common/utils/excel/ExcelUtils.java b/src/main/java/com/ruoyi/common/utils/excel/ExcelUtils.java
index 230bb77..e54f253 100644
--- a/src/main/java/com/ruoyi/common/utils/excel/ExcelUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/excel/ExcelUtils.java
@@ -15,8 +15,8 @@
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
  
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
diff --git a/src/main/java/com/ruoyi/common/utils/file/FileUtils.java b/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
index d4815b0..ccadb17 100644
--- a/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
@@ -9,8 +9,8 @@
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.ArrayUtils;
diff --git a/src/main/java/com/ruoyi/common/utils/http/HttpHelper.java b/src/main/java/com/ruoyi/common/utils/http/HttpHelper.java
index 8baad38..359ee07 100644
--- a/src/main/java/com/ruoyi/common/utils/http/HttpHelper.java
+++ b/src/main/java/com/ruoyi/common/utils/http/HttpHelper.java
@@ -5,7 +5,7 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
-import javax.servlet.ServletRequest;
+import jakarta.servlet.ServletRequest;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java b/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
index 0a16b62..34cf78e 100644
--- a/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -1,27 +1,19 @@
 package com.ruoyi.common.utils.http;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.utils.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.MediaType;
+
+import javax.net.ssl.*;
+import java.io.*;
 import java.net.ConnectException;
 import java.net.SocketTimeoutException;
 import java.net.URL;
 import java.net.URLConnection;
 import java.nio.charset.StandardCharsets;
 import java.security.cert.X509Certificate;
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.utils.StringUtils;
-import org.springframework.http.MediaType;
 
 /**
  * 閫氱敤http鍙戦�佹柟娉�
diff --git a/src/main/java/com/ruoyi/common/utils/ip/IpUtils.java b/src/main/java/com/ruoyi/common/utils/ip/IpUtils.java
index 3316240..24f89b6 100644
--- a/src/main/java/com/ruoyi/common/utils/ip/IpUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/ip/IpUtils.java
@@ -2,7 +2,7 @@
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import com.ruoyi.common.utils.ServletUtils;
 import com.ruoyi.common.utils.StringUtils;
 
diff --git a/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index cdab562..bb2ebb5 100644
--- a/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -23,7 +23,7 @@
 import java.util.Set;
 import java.util.UUID;
 import java.util.stream.Collectors;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.RegExUtils;
 import org.apache.commons.lang3.reflect.FieldUtils;
diff --git a/src/main/java/com/ruoyi/common/vo/SimpleFileVo.java b/src/main/java/com/ruoyi/common/vo/SimpleFileVo.java
index ea817c7..1ee9a00 100644
--- a/src/main/java/com/ruoyi/common/vo/SimpleFileVo.java
+++ b/src/main/java/com/ruoyi/common/vo/SimpleFileVo.java
@@ -5,7 +5,7 @@
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
diff --git a/src/main/java/com/ruoyi/common/xss/Xss.java b/src/main/java/com/ruoyi/common/xss/Xss.java
index 14e43dc..93a3840 100644
--- a/src/main/java/com/ruoyi/common/xss/Xss.java
+++ b/src/main/java/com/ruoyi/common/xss/Xss.java
@@ -1,7 +1,7 @@
 package com.ruoyi.common.xss;
 
-import javax.validation.Constraint;
-import javax.validation.Payload;
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/src/main/java/com/ruoyi/common/xss/XssValidator.java b/src/main/java/com/ruoyi/common/xss/XssValidator.java
index b859428..585fa8a 100644
--- a/src/main/java/com/ruoyi/common/xss/XssValidator.java
+++ b/src/main/java/com/ruoyi/common/xss/XssValidator.java
@@ -1,8 +1,8 @@
 package com.ruoyi.common.xss;
 
 import com.ruoyi.common.utils.StringUtils;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
diff --git a/src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java b/src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java
index f6eee0f..f5e8060 100644
--- a/src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java
+++ b/src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java
@@ -23,7 +23,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
index 150f6d4..59309fd 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
@@ -20,7 +20,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java b/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
index 0804b79..59f24a3 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
@@ -13,7 +13,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.Arrays;
 
 @Api(tags = "璁惧淇濆吇")
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceFileController.java b/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceFileController.java
index d7da280..b3e2423 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceFileController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceFileController.java
@@ -9,7 +9,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java b/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
index 7ac0907..704b928 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
@@ -12,7 +12,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.Arrays;
 
 @Api(tags = "璁惧鎶ヤ慨绠$悊")
diff --git a/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java b/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
index 0d6493e..d34ea65 100644
--- a/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
+++ b/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
@@ -8,7 +8,7 @@
 import com.ruoyi.framework.web.domain.AjaxResult;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
 public interface IDeviceLedgerService  extends IService<DeviceLedger> {
diff --git a/src/main/java/com/ruoyi/device/service/IDeviceMaintenanceService.java b/src/main/java/com/ruoyi/device/service/IDeviceMaintenanceService.java
index 82db913..294ffd2 100644
--- a/src/main/java/com/ruoyi/device/service/IDeviceMaintenanceService.java
+++ b/src/main/java/com/ruoyi/device/service/IDeviceMaintenanceService.java
@@ -7,7 +7,7 @@
 import com.ruoyi.device.pojo.DeviceMaintenance;
 import com.ruoyi.framework.web.domain.AjaxResult;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 public interface IDeviceMaintenanceService extends IService<DeviceMaintenance> {
 
diff --git a/src/main/java/com/ruoyi/device/service/IDeviceRepairService.java b/src/main/java/com/ruoyi/device/service/IDeviceRepairService.java
index 5877ffd..c785435 100644
--- a/src/main/java/com/ruoyi/device/service/IDeviceRepairService.java
+++ b/src/main/java/com/ruoyi/device/service/IDeviceRepairService.java
@@ -7,7 +7,7 @@
 import com.ruoyi.device.pojo.DeviceRepair;
 import com.ruoyi.framework.web.domain.AjaxResult;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 
 public interface IDeviceRepairService extends IService<DeviceRepair> {
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
index e3c732a..46de0e3 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -23,7 +23,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
index a5005af..883caf1 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -21,7 +21,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
index 9d4c6b3..6ff0dd4 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -27,7 +27,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/ElectricityConsumptionAreaController.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/ElectricityConsumptionAreaController.java
index e6babfe..4910671 100644
--- a/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/ElectricityConsumptionAreaController.java
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/ElectricityConsumptionAreaController.java
@@ -19,7 +19,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EnergyPeriodController.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EnergyPeriodController.java
index 1c4842f..92b16ce 100644
--- a/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EnergyPeriodController.java
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EnergyPeriodController.java
@@ -16,7 +16,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java
index e71fe31..432ef65 100644
--- a/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java
@@ -21,7 +21,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
index 45d3bfe..9b9e1dc 100644
--- a/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
+++ b/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
@@ -2,8 +2,8 @@
 
 import java.util.Collection;
 import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.apache.commons.lang3.ArrayUtils;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.AfterReturning;
diff --git a/src/main/java/com/ruoyi/framework/config/DruidConfig.java b/src/main/java/com/ruoyi/framework/config/DruidConfig.java
index f0519d5..4dde749 100644
--- a/src/main/java/com/ruoyi/framework/config/DruidConfig.java
+++ b/src/main/java/com/ruoyi/framework/config/DruidConfig.java
@@ -1,28 +1,25 @@
 package com.ruoyi.framework.config;
 
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.sql.DataSource;
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceBuilder;
+import com.alibaba.druid.spring.boot3.autoconfigure.properties.DruidStatProperties;
+import com.alibaba.druid.util.Utils;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.framework.aspectj.lang.enums.DataSourceType;
+import com.ruoyi.framework.config.properties.DruidProperties;
+import com.ruoyi.framework.datasource.DynamicDataSource;
+import jakarta.servlet.*;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
-import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
-import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
-import com.alibaba.druid.util.Utils;
-import com.ruoyi.common.utils.spring.SpringUtils;
-import com.ruoyi.framework.aspectj.lang.enums.DataSourceType;
-import com.ruoyi.framework.config.properties.DruidProperties;
-import com.ruoyi.framework.datasource.DynamicDataSource;
+
+import javax.sql.DataSource;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * druid 閰嶇疆澶氭暟鎹簮
@@ -96,7 +93,7 @@
         Filter filter = new Filter()
         {
             @Override
-            public void init(javax.servlet.FilterConfig filterConfig) throws ServletException
+            public void init(jakarta.servlet.FilterConfig filterConfig) throws ServletException
             {
             }
             @Override
diff --git a/src/main/java/com/ruoyi/framework/config/FilterConfig.java b/src/main/java/com/ruoyi/framework/config/FilterConfig.java
index 66802f8..f019e7a 100644
--- a/src/main/java/com/ruoyi/framework/config/FilterConfig.java
+++ b/src/main/java/com/ruoyi/framework/config/FilterConfig.java
@@ -9,7 +9,7 @@
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import javax.servlet.DispatcherType;
+import jakarta.servlet.DispatcherType;
 import java.util.HashMap;
 import java.util.Map;
 
diff --git a/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java b/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
index 253910a..69a5f41 100644
--- a/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
+++ b/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
@@ -18,8 +18,6 @@
 import org.springframework.context.annotation.Configuration;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
-import java.sql.SQLException;
-
 /**
  * MyBatis Plus config.
  */
@@ -48,8 +46,7 @@
         PaginationInnerInterceptor interceptor = new PaginationInnerInterceptor(DbType.MYSQL) {
             @Override
             public void beforeQuery(Executor executor, MappedStatement ms, Object parameter,
-                                    RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql)
-                    throws SQLException {
+                                    RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) {
                 IPage<?> page = ParameterUtils.findPage(parameter).orElse(null);
                 if (page != null && page.getSize() <= 0) {
                     return;
diff --git a/src/main/java/com/ruoyi/framework/config/ScheduleConfig.java b/src/main/java/com/ruoyi/framework/config/ScheduleConfig.java
index 576d2c9..4dfb27a 100644
--- a/src/main/java/com/ruoyi/framework/config/ScheduleConfig.java
+++ b/src/main/java/com/ruoyi/framework/config/ScheduleConfig.java
@@ -3,7 +3,7 @@
 //import org.springframework.context.annotation.Bean;
 //import org.springframework.context.annotation.Configuration;
 //import org.springframework.scheduling.quartz.SchedulerFactoryBean;
-//import javax.sql.DataSource;
+//import jakarta.sql.DataSource;
 //import java.util.Properties;
 //
 ///**
diff --git a/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
index 4b31dfa..03c52ac 100644
--- a/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
+++ b/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -108,16 +108,48 @@
             // 鍩轰簬token锛屾墍浠ヤ笉闇�瑕乻ession
             .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
             // 娉ㄨВ鏍囪鍏佽鍖垮悕璁块棶鐨剈rl
-            .authorizeHttpRequests((requests) -> {
-                permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
-                // 瀵逛簬鐧诲綍login 娉ㄥ唽register 楠岃瘉鐮乧aptchaImage 鍏佽鍖垮悕璁块棶
-                requests.antMatchers("/login", "/register", "/captchaImage","/loginCheck","/userLoginFacotryList/**","/loginCheckFactory").permitAll()
-                    // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂�
-                    .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**","/javaWork/**","/**/*.pdf").permitAll()
-                    .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
-                    // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
-                    .anyRequest().authenticated();
-            })
+                // todo ai鐢熸垚锛� 鍚庢湡鑻ユ湁闂璇疯嚜琛屼紭鍖�
+                .authorizeHttpRequests(requests -> {
+
+                    // 1. 鏀捐鍔ㄦ�侀厤缃殑 URL
+                    permitAllUrl.getUrls().forEach(url ->
+                            requests.requestMatchers(url).permitAll()
+                    );
+
+                    // 2. 鐧诲綍 / 娉ㄥ唽 / 楠岃瘉鐮� / 绛夋斁琛�
+                    requests.requestMatchers(
+                            "/login",
+                            "/register",
+                            "/captchaImage",
+                            "/loginCheck",
+                            "/userLoginFacotryList/**",
+                            "/loginCheckFactory"
+                    ).permitAll();
+
+                    // 3. 闈欐�佽祫婧愭斁琛�
+                    requests.requestMatchers(HttpMethod.GET,
+                            "/",
+                            "/*.html",
+                            "/**/*.html",
+                            "/**/*.css",
+                            "/**/*.js",
+                            "/profile/**",
+                            "/javaWork/**",
+                            "/**/*.pdf"
+                    ).permitAll();
+
+                    // 4. swagger / druid 鏀捐
+                    requests.requestMatchers(
+                            "/swagger-ui.html",
+                            "/swagger-resources/**",
+                            "/webjars/**",
+                            "/*/api-docs",
+                            "/druid/**"
+                    ).permitAll();
+
+                    // 5. 鍏朵粬鍏ㄩ儴鎷︽埅
+                    requests.anyRequest().authenticated();
+                })
             // 娣诲姞Logout filter
             .logout(logout -> logout.logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler))
             // 娣诲姞JWT filter
diff --git a/src/main/java/com/ruoyi/framework/config/ServerConfig.java b/src/main/java/com/ruoyi/framework/config/ServerConfig.java
index 157e9f4..4c1c476 100644
--- a/src/main/java/com/ruoyi/framework/config/ServerConfig.java
+++ b/src/main/java/com/ruoyi/framework/config/ServerConfig.java
@@ -1,6 +1,6 @@
 package com.ruoyi.framework.config;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.utils.ServletUtils;
 
diff --git a/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java b/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
index bc22e20..e2626bd 100644
--- a/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
+++ b/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
@@ -1,11 +1,6 @@
 package com.ruoyi.framework.config.properties;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.regex.Pattern;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
 import org.apache.commons.lang3.RegExUtils;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.InitializingBean;
@@ -16,7 +11,9 @@
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
 import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
-import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+
+import java.util.*;
+import java.util.regex.Pattern;
 
 /**
  * 璁剧疆Anonymous娉ㄨВ鍏佽鍖垮悕璁块棶鐨剈rl
@@ -40,18 +37,36 @@
         RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
         Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods();
 
+//        map.keySet().forEach(info -> {
+//            HandlerMethod handlerMethod = map.get(info);
+//
+//            // 鑾峰彇鏂规硶涓婅竟鐨勬敞瑙� 鏇夸唬path variable 涓� *
+//            Anonymous method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class);
+//            Optional.ofNullable(method).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
+//                    .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
+//
+//            // 鑾峰彇绫讳笂杈圭殑娉ㄨВ, 鏇夸唬path variable 涓� *
+//            Anonymous controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Anonymous.class);
+//            Optional.ofNullable(controller).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
+//                    .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
+//        });
+
         map.keySet().forEach(info -> {
             HandlerMethod handlerMethod = map.get(info);
+            // 鑾峰彇鏂规硶涓婄殑鍖垮悕璁块棶娉ㄨВ
+            Anonymous anonymous = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class);
+            if (Objects.nonNull(anonymous)) {
+                // 閲嶇偣锛歋pring Boot 3 鍏煎鎬у啓娉�
+                Set<String> patterns = new HashSet<>();
+                if (info.getPatternsCondition() != null) {
+                    patterns.addAll(info.getPatternsCondition().getPatterns());
+                }
+                if (info.getPathPatternsCondition() != null) {
+                    patterns.addAll(info.getPathPatternsCondition().getPatternValues());
+                }
 
-            // 鑾峰彇鏂规硶涓婅竟鐨勬敞瑙� 鏇夸唬path variable 涓� *
-            Anonymous method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class);
-            Optional.ofNullable(method).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
-                    .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
-
-            // 鑾峰彇绫讳笂杈圭殑娉ㄨВ, 鏇夸唬path variable 涓� *
-            Anonymous controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Anonymous.class);
-            Optional.ofNullable(controller).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
-                    .forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
+                patterns.forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, "*")));
+            }
         });
     }
 
diff --git a/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java b/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java
index 014ae38..aeae267 100644
--- a/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java
+++ b/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java
@@ -1,9 +1,10 @@
 package com.ruoyi.framework.datasource;
 
-import java.util.Map;
-import javax.sql.DataSource;
 import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
 
+import javax.sql.DataSource;
+import java.util.Map;
+
 /**
  * 鍔ㄦ�佹暟鎹簮
  * 
diff --git a/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java b/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
index a559159..fd80428 100644
--- a/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
+++ b/src/main/java/com/ruoyi/framework/interceptor/RepeatSubmitInterceptor.java
@@ -1,8 +1,8 @@
 package com.ruoyi.framework.interceptor;
 
 import java.lang.reflect.Method;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.stereotype.Component;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.HandlerInterceptor;
diff --git a/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java b/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
index ef335f3..fa95ca7 100644
--- a/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
+++ b/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
@@ -3,7 +3,7 @@
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
diff --git a/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java b/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java
index 8d8fb5a..31c6f81 100644
--- a/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java
+++ b/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java
@@ -1,9 +1,9 @@
 package com.ruoyi.framework.manager;
 
+import jakarta.annotation.PreDestroy;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
-import javax.annotation.PreDestroy;
 
 /**
  * 纭繚搴旂敤閫�鍑烘椂鑳藉叧闂悗鍙扮嚎绋�
diff --git a/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java b/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
index ede50be..410d049 100644
--- a/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
+++ b/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
@@ -1,10 +1,10 @@
 package com.ruoyi.framework.security.filter;
 
 import java.io.IOException;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.context.SecurityContextHolder;
diff --git a/src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java b/src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java
index 6dff702..d43cd7c 100644
--- a/src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java
+++ b/src/main/java/com/ruoyi/framework/security/handle/AuthenticationEntryPointImpl.java
@@ -2,8 +2,8 @@
 
 import java.io.IOException;
 import java.io.Serializable;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.web.AuthenticationEntryPoint;
 import org.springframework.stereotype.Component;
diff --git a/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java b/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java
index 04f37b6..4d69000 100644
--- a/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java
+++ b/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java
@@ -1,9 +1,9 @@
 package com.ruoyi.framework.security.handle;
 
 import java.io.IOException;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.core.Authentication;
diff --git a/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java b/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java
index 6a7874a..0b95af8 100644
--- a/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java
+++ b/src/main/java/com/ruoyi/framework/security/service/SysLoginService.java
@@ -1,6 +1,6 @@
 package com.ruoyi.framework.security.service;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.project.system.mapper.SysUserMapper;
diff --git a/src/main/java/com/ruoyi/framework/security/service/TokenService.java b/src/main/java/com/ruoyi/framework/security/service/TokenService.java
index 5799a03..c64347c 100644
--- a/src/main/java/com/ruoyi/framework/security/service/TokenService.java
+++ b/src/main/java/com/ruoyi/framework/security/service/TokenService.java
@@ -1,35 +1,36 @@
 package com.ruoyi.framework.security.service;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-import javax.servlet.http.HttpServletRequest;
-
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.ruoyi.project.system.domain.SysUserDept;
-import com.ruoyi.project.system.mapper.SysUserDeptMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.utils.ServletUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.ip.AddressUtils;
 import com.ruoyi.common.utils.ip.IpUtils;
-import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.framework.redis.RedisCache;
-import com.ruoyi.framework.security.LoginUser;
-import com.ruoyi.project.system.domain.SysRole;
-import eu.bitwalker.useragentutils.UserAgent;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.framework.redis.RedisCache;
+import com.ruoyi.framework.security.LoginUser;
+import com.ruoyi.project.system.domain.SysRole;
+import com.ruoyi.project.system.domain.SysUserDept;
+import com.ruoyi.project.system.mapper.SysUserDeptMapper;
+import eu.bitwalker.useragentutils.UserAgent;
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.SignatureAlgorithm;
+import io.jsonwebtoken.security.Keys;
+import jakarta.servlet.http.HttpServletRequest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
+
+import javax.crypto.SecretKey;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 /**
  * token楠岃瘉澶勭悊
@@ -160,74 +161,74 @@
     {
         loginUser.setLoginTime(System.currentTimeMillis());
         loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
-        loginUser.setDeptIds(getDeptIdsByUserId(loginUser.getUserId()));
-        if (loginUser.getDeptIds() != null && loginUser.getDeptIds().length > 0)
-        {
-            loginUser.setCurrentDeptId(loginUser.getDeptIds()[0]);
-        }
-        loginUser.setDataScope(resolveDataScope(loginUser));
+        loginUser.setDeptIds(getDeptIdsByUserId(loginUser.getUserId()));
+        if (loginUser.getDeptIds() != null && loginUser.getDeptIds().length > 0)
+        {
+            loginUser.setCurrentDeptId(loginUser.getDeptIds()[0]);
+        }
+        loginUser.setDataScope(resolveDataScope(loginUser));
         // 鏍规嵁uuid灏唋oginUser缂撳瓨
         String userKey = getTokenKey(loginUser.getToken());
         redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
     }
 
-    public String resolveDataScope(LoginUser loginUser)
-    {
-        if (loginUser == null || loginUser.getUser() == null || CollectionUtils.isEmpty(loginUser.getUser().getRoles()))
-        {
-            return null;
-        }
-        boolean hasCustom = false;
-        boolean hasDeptAndChild = false;
-        boolean hasDept = false;
-        boolean hasSelf = false;
-        for (SysRole role : loginUser.getUser().getRoles())
-        {
-            if (role == null || !"0".equals(role.getStatus()))
-            {
-                continue;
-            }
-            if ("1".equals(role.getDataScope()))
-            {
-                return "1";
-            }
-            if ("2".equals(role.getDataScope()))
-            {
-                hasCustom = true;
-            }
-            else if ("4".equals(role.getDataScope()))
-            {
-                hasDeptAndChild = true;
-            }
-            else if ("3".equals(role.getDataScope()))
-            {
-                hasDept = true;
-            }
-            else if ("5".equals(role.getDataScope()))
-            {
-                hasSelf = true;
-            }
-        }
-        if (hasCustom)
-        {
-            return "2";
-        }
-        if (hasDeptAndChild)
-        {
-            return "4";
-        }
-        if (hasDept)
-        {
-            return "3";
-        }
-        if (hasSelf)
-        {
-            return "5";
-        }
-        return null;
-    }
-
-    public Long[] getDeptIdsByUserId(Long userId){
+    public String resolveDataScope(LoginUser loginUser)
+    {
+        if (loginUser == null || loginUser.getUser() == null || CollectionUtils.isEmpty(loginUser.getUser().getRoles()))
+        {
+            return null;
+        }
+        boolean hasCustom = false;
+        boolean hasDeptAndChild = false;
+        boolean hasDept = false;
+        boolean hasSelf = false;
+        for (SysRole role : loginUser.getUser().getRoles())
+        {
+            if (role == null || !"0".equals(role.getStatus()))
+            {
+                continue;
+            }
+            if ("1".equals(role.getDataScope()))
+            {
+                return "1";
+            }
+            if ("2".equals(role.getDataScope()))
+            {
+                hasCustom = true;
+            }
+            else if ("4".equals(role.getDataScope()))
+            {
+                hasDeptAndChild = true;
+            }
+            else if ("3".equals(role.getDataScope()))
+            {
+                hasDept = true;
+            }
+            else if ("5".equals(role.getDataScope()))
+            {
+                hasSelf = true;
+            }
+        }
+        if (hasCustom)
+        {
+            return "2";
+        }
+        if (hasDeptAndChild)
+        {
+            return "4";
+        }
+        if (hasDept)
+        {
+            return "3";
+        }
+        if (hasSelf)
+        {
+            return "5";
+        }
+        return null;
+    }
+
+    public Long[] getDeptIdsByUserId(Long userId){
         LambdaQueryWrapper<SysUserDept> sysUserDeptLambdaQueryWrapper = new LambdaQueryWrapper<>();
         sysUserDeptLambdaQueryWrapper.eq(SysUserDept::getUserId, userId);
         List<SysUserDept> sysUserDept = sysUserDeptMapper.selectList(sysUserDeptLambdaQueryWrapper);
@@ -252,6 +253,11 @@
         loginUser.setOs(userAgent.getOperatingSystem().getName());
     }
 
+    private SecretKey getSigningKey() {
+        byte[] keyBytes = secret.getBytes(StandardCharsets.UTF_8);
+        return Keys.hmacShaKeyFor(keyBytes);
+    }
+
     /**
      * 浠庢暟鎹0鏄庣敓鎴愪护鐗�
      *
@@ -260,10 +266,10 @@
      */
     private String createToken(Map<String, Object> claims)
     {
-        String token = Jwts.builder()
-                .setClaims(claims)
-                .signWith(SignatureAlgorithm.HS512, secret).compact();
-        return token;
+        return Jwts.builder()
+                .claims(claims) // 娉ㄦ剰锛氭柊鐗堟柟娉曞悕鍙樹簡锛屼笉鍐嶆槸 setClaims
+                .signWith(getSigningKey(), Jwts.SIG.HS512) // 浣跨敤鏂扮殑绛惧悕甯搁噺
+                .compact();
     }
 
     /**
@@ -275,9 +281,10 @@
     private Claims parseToken(String token)
     {
         return Jwts.parser()
-                .setSigningKey(secret)
-                .parseClaimsJws(token)
-                .getBody();
+                .verifyWith(getSigningKey()) // 鏂扮増浣跨敤 verifyWith
+                .build()
+                .parseSignedClaims(token)
+                .getPayload();
     }
 
     /**
diff --git a/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java b/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
index bcea0a7..f0467b3 100644
--- a/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
+++ b/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
@@ -1,6 +1,6 @@
 package com.ruoyi.framework.web.exception;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.access.AccessDeniedException;
diff --git a/src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java b/src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java
index 40445d1..8d60cd5 100644
--- a/src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java
+++ b/src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java
@@ -14,7 +14,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
 /**
diff --git a/src/main/java/com/ruoyi/inspectiontask/controller/TimingTaskController.java b/src/main/java/com/ruoyi/inspectiontask/controller/TimingTaskController.java
index ccaf969..78884ad 100644
--- a/src/main/java/com/ruoyi/inspectiontask/controller/TimingTaskController.java
+++ b/src/main/java/com/ruoyi/inspectiontask/controller/TimingTaskController.java
@@ -16,7 +16,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java b/src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
index 87e3e61..8daf720 100644
--- a/src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
+++ b/src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
@@ -1,7 +1,5 @@
 package com.ruoyi.inspectiontask.dto;
 
-import com.ruoyi.basic.dto.StorageBlobDTO;
-import com.ruoyi.basic.pojo.StorageAttachment;
 import com.ruoyi.inspectiontask.pojo.InspectionTask;
 import com.ruoyi.sales.pojo.CommonFile;
 import lombok.Data;
diff --git a/src/main/java/com/ruoyi/inspectiontask/dto/QrCodeScanRecordDto.java b/src/main/java/com/ruoyi/inspectiontask/dto/QrCodeScanRecordDto.java
index 4247330..6e5fd22 100644
--- a/src/main/java/com/ruoyi/inspectiontask/dto/QrCodeScanRecordDto.java
+++ b/src/main/java/com/ruoyi/inspectiontask/dto/QrCodeScanRecordDto.java
@@ -1,7 +1,7 @@
 package com.ruoyi.inspectiontask.dto;
 
 
-import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.basic.dto.StorageBlobVO;
 import com.ruoyi.inspectiontask.pojo.QrCode;
 import com.ruoyi.inspectiontask.pojo.QrCodeScanRecord;
 import lombok.Data;
@@ -15,6 +15,6 @@
 
     private String scanner;
 
-    private List<StorageBlobDTO> storageBlobDTO;
+    private List<StorageBlobVO> storageBlobVO;
 
 }
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
index 54dbd90..08ee9ab 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
@@ -5,10 +5,9 @@
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.basic.dto.StorageBlobVO;
 import com.ruoyi.basic.mapper.StorageAttachmentMapper;
 import com.ruoyi.basic.mapper.StorageBlobMapper;
-import com.ruoyi.basic.pojo.StorageAttachment;
 import com.ruoyi.basic.pojo.StorageBlob;
 import com.ruoyi.basic.service.StorageAttachmentService;
 import com.ruoyi.common.enums.FileNameType;
@@ -36,9 +35,6 @@
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Function;
 import java.util.stream.Collectors;
-
-import static com.ruoyi.common.constant.StorageAttachmentConstants.StorageAttachmentFile;
-import static com.ruoyi.common.enums.StorageAttachmentRecordType.InspectionTasks;
 
 /**
  * @author :yys
@@ -179,24 +175,25 @@
     }
 
     // 鎻愬彇鍒涘缓BlobDTO鐨勫叕鍏辨柟娉�
-    private StorageBlobDTO createBlobDto(StorageBlob blob) {
-        StorageBlobDTO dto = new StorageBlobDTO();
+    private StorageBlobVO createBlobDto(StorageBlob blob) {
+        StorageBlobVO dto = new StorageBlobVO();
         BeanUtils.copyProperties(blob, dto);
 
-        // 璁剧疆URL
-        dto.setUrl(minioUtils.getPreviewUrls(
-                blob.getBucketFilename(),
-                blob.getBucketName(),
-                true
-        ));
-
-        // 璁剧疆涓嬭浇URL
-        dto.setDownloadUrl(minioUtils.getDownloadUrls(
-                blob.getBucketFilename(),
-                blob.getBucketName(),
-                blob.getOriginalFilename(),
-                true
-        ));
+        // todo fileChange
+//        // 璁剧疆URL
+//        dto.setUrl(minioUtils.getPreviewUrls(
+//                blob.getBucketFilename(),
+//                blob.getBucketName(),
+//                true
+//        ));
+//
+//        // 璁剧疆涓嬭浇URL
+//        dto.setDownloadUrl(minioUtils.getDownloadUrls(
+//                blob.getBucketFilename(),
+//                blob.getBucketName(),
+//                blob.getOriginalFilename(),
+//                true
+//        ));
         return dto;
     }
 
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java
index 00ece03..d43513a 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java
@@ -5,7 +5,6 @@
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.basic.dto.StorageBlobDTO;
 import com.ruoyi.basic.mapper.StorageAttachmentMapper;
 import com.ruoyi.basic.mapper.StorageBlobMapper;
 import com.ruoyi.basic.pojo.StorageAttachment;
@@ -127,23 +126,24 @@
                     });
 
             // 6.2 璁剧疆闄勪欢淇℃伅
-            dto.setStorageBlobDTO(
-                    Optional.ofNullable(attachmentsMap.get(record.getId()))
-                            .orElse(Collections.emptyList())
-                            .stream()
-                            .map(att -> {
-                                StorageBlobDTO blobDTO = new StorageBlobDTO();
-                                Optional.ofNullable(blobMap.get(att.getStorageBlobId()))
-                                        .ifPresent(blob -> {
-                                            BeanUtils.copyProperties(blob, blobDTO);
-                                            blobDTO.setUrl(minioUtils.getPreviewUrls(blob.getBucketFilename(), blob.getBucketName(), true));
-                                            blobDTO.setDownloadUrl(minioUtils.getDownloadUrls(blob.getBucketFilename(),blob.getBucketName(),blob.getOriginalFilename(),true));
-                                        });
-                                return blobDTO;
-                            })
-                            .filter(blobDTO -> blobDTO.getId() != null) // 杩囨护鏃犳晥闄勪欢
-                            .collect(Collectors.toList())
-            );
+            // todo fileChange
+//            dto.setStorageBlobDTO(
+//                    Optional.ofNullable(attachmentsMap.get(record.getId()))
+//                            .orElse(Collections.emptyList())
+//                            .stream()
+//                            .map(att -> {
+//                                StorageBlobDTO blobDTO = new StorageBlobDTO();
+//                                Optional.ofNullable(blobMap.get(att.getStorageBlobId()))
+//                                        .ifPresent(blob -> {
+//                                            BeanUtils.copyProperties(blob, blobDTO);
+//                                            blobDTO.setUrl(minioUtils.getPreviewUrls(blob.getBucketFilename(), blob.getBucketName(), true));
+//                                            blobDTO.setDownloadUrl(minioUtils.getDownloadUrls(blob.getBucketFilename(),blob.getBucketName(),blob.getOriginalFilename(),true));
+//                                        });
+//                                return blobDTO;
+//                            })
+//                            .filter(blobDTO -> blobDTO.getId() != null) // 杩囨护鏃犳晥闄勪欢
+//                            .collect(Collectors.toList())
+//            );
             return dto;
         }).collect(Collectors.toList());
 
@@ -166,18 +166,19 @@
             i = qrCodeScanRecordMapper.updateById(qrCodeScanRecord);
         }
 
-        if (qrCodeScanRecordDto.getStorageBlobDTO() != null && !qrCodeScanRecordDto.getStorageBlobDTO().isEmpty()) {
+        if (qrCodeScanRecordDto.getStorageBlobVO() != null && !qrCodeScanRecordDto.getStorageBlobVO().isEmpty()) {
             List<StorageAttachment> attachments = new ArrayList<>();
 
-            for (StorageBlobDTO storageBlobDTO : qrCodeScanRecordDto.getStorageBlobDTO()) {
-                StorageAttachment storageAttachment = new StorageAttachment(
-                        StorageAttachmentFile,
-                        (long) QrCodeScanRecords.ordinal(),
-                        qrCodeScanRecord.getId()
-                );
-                storageAttachment.setStorageBlobDTO(storageBlobDTO);
-                attachments.add(storageAttachment);
-            }
+            // todo fileChange
+//            for (StorageBlobDTO storageBlobDTO : qrCodeScanRecordDto.getStorageBlobDTO()) {
+//                StorageAttachment storageAttachment = new StorageAttachment(
+//                        StorageAttachmentFile,
+//                        (long) QrCodeScanRecords.ordinal(),
+//                        qrCodeScanRecord.getId()
+//                );
+//                storageAttachment.setStorageBlobDTO(storageBlobDTO);
+//                attachments.add(storageAttachment);
+//            }
             storageAttachmentService.saveStorageAttachment(attachments, qrCodeScanRecord.getId(), QrCodeScanRecords, StorageAttachmentFile);
         }
         return i;
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/QuartzConfig.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/QuartzConfig.java
index 83fc99d..40d9965 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/QuartzConfig.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/QuartzConfig.java
@@ -13,6 +13,7 @@
 
 import javax.sql.DataSource;
 
+
 @Configuration
 public class QuartzConfig {
     @Autowired
diff --git a/src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java b/src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java
index f0c861a..a3ac7a8 100644
--- a/src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java
+++ b/src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java
@@ -25,7 +25,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.UnsupportedEncodingException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
diff --git a/src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java b/src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java
index a0fd247..d31a48e 100644
--- a/src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java
+++ b/src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java
@@ -6,7 +6,7 @@
 import com.ruoyi.lavorissue.dto.StatisticsLaborIssue;
 import com.ruoyi.lavorissue.pojo.LaborIssue;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.UnsupportedEncodingException;
 import java.util.List;
 import java.util.Map;
diff --git a/src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java b/src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java
index 9e66121..231cf90 100644
--- a/src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java
+++ b/src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java
@@ -27,7 +27,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java
index b166c89..a735189 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java
@@ -21,7 +21,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerRecordController.java b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerRecordController.java
index 8c7116e..3d21414 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerRecordController.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerRecordController.java
@@ -15,7 +15,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerRecordService.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerRecordService.java
index e8038da..bdb1135 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerRecordService.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerRecordService.java
@@ -5,7 +5,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
 /**
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerService.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerService.java
index 7ca300d..c28fe83 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerService.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerService.java
@@ -6,7 +6,7 @@
 import com.ruoyi.measuringinstrumentledger.dto.MeasuringInstrumentLedgerDto;
 import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedger;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
 /**
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerRecordServiceImpl.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerRecordServiceImpl.java
index c4ab40c..d094cdb 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerRecordServiceImpl.java
@@ -22,7 +22,7 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java
index fbaad14..ffe91ca 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java
@@ -26,7 +26,7 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
diff --git a/src/main/java/com/ruoyi/oA/controller/OaProjectController.java b/src/main/java/com/ruoyi/oA/controller/OaProjectController.java
index 8862fb5..2e9c3f5 100644
--- a/src/main/java/com/ruoyi/oA/controller/OaProjectController.java
+++ b/src/main/java/com/ruoyi/oA/controller/OaProjectController.java
@@ -3,17 +3,16 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedger;
 import com.ruoyi.oA.dto.OaProjectDto;
 import com.ruoyi.oA.pojo.OaProject;
 import com.ruoyi.oA.service.OaProjectService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import jakarta.servlet.http.HttpServletResponse;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
 import java.util.HashMap;
 import java.util.List;
 
@@ -66,7 +65,7 @@
 //    }
     @ApiOperation("瀵煎嚭鎵�閫夐」鐩�")
     @PostMapping("/export/{ids}")
-    public void export(HttpServletResponse response,@PathVariable("ids") List<Long> ids) {
+    public void export(HttpServletResponse response, @PathVariable("ids") List<Long> ids) {
         if (CollectionUtils.isEmpty(ids)) {
             throw new IllegalArgumentException("瀵煎嚭椤圭洰鍒楄〃涓嶈兘涓虹┖");
         }
diff --git a/src/main/java/com/ruoyi/oA/service/OaProjectService.java b/src/main/java/com/ruoyi/oA/service/OaProjectService.java
index 32ba593..9f8e474 100644
--- a/src/main/java/com/ruoyi/oA/service/OaProjectService.java
+++ b/src/main/java/com/ruoyi/oA/service/OaProjectService.java
@@ -2,11 +2,11 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.oA.dto.OaProjectDto;
 import com.ruoyi.oA.pojo.OaProject;
-import com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.servlet.http.HttpServletResponse;
 
-import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/oA/service/impl/OaProjectServiceImpl.java b/src/main/java/com/ruoyi/oA/service/impl/OaProjectServiceImpl.java
index 149c04f..a8ca3b1 100644
--- a/src/main/java/com/ruoyi/oA/service/impl/OaProjectServiceImpl.java
+++ b/src/main/java/com/ruoyi/oA/service/impl/OaProjectServiceImpl.java
@@ -5,18 +5,17 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord;
 import com.ruoyi.oA.dto.OaProjectDto;
+import com.ruoyi.oA.mapper.OaProjectMapper;
 import com.ruoyi.oA.pojo.OaProject;
 import com.ruoyi.oA.pojo.OaProjectPhase;
 import com.ruoyi.oA.service.OaProjectPhaseService;
 import com.ruoyi.oA.service.OaProjectService;
-import com.ruoyi.oA.mapper.OaProjectMapper;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java b/src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java
index 91243f4..950da62 100644
--- a/src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java
+++ b/src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java
@@ -17,7 +17,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/GasTankWarningController.java b/src/main/java/com/ruoyi/procurementrecord/controller/GasTankWarningController.java
index 7646478..cbe5e99 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/GasTankWarningController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/GasTankWarningController.java
@@ -9,7 +9,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java
index d9bc6fc..757c22c 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementExceptionRecordController.java
@@ -16,7 +16,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPlanController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPlanController.java
index 64d9dc8..f3fd88e 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPlanController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPlanController.java
@@ -11,7 +11,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPriceManagementController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPriceManagementController.java
index 9135b7b..56354c7 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPriceManagementController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPriceManagementController.java
@@ -12,7 +12,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
index 879b328..64134d3 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -19,7 +19,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
index 1fb594b..45126c7 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
@@ -17,7 +17,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/GasTankWarningService.java b/src/main/java/com/ruoyi/procurementrecord/service/GasTankWarningService.java
index 912fb3c..bedac85 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/GasTankWarningService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/GasTankWarningService.java
@@ -5,7 +5,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.procurementrecord.pojo.GasTankWarning;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 public interface GasTankWarningService extends IService<GasTankWarning> {
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPlanService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPlanService.java
index e96dbe6..5e778fe 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPlanService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPlanService.java
@@ -5,7 +5,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.procurementrecord.pojo.ProcurementPlan;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPriceManagementService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPriceManagementService.java
index fc26ab6..927d977 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPriceManagementService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPriceManagementService.java
@@ -5,7 +5,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.procurementrecord.pojo.ProcurementPriceManagement;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
index 31fc05e..202ce88 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
@@ -8,7 +8,7 @@
 import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * @author :yys
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
index 6bd187c..da23205 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -9,7 +9,7 @@
 import com.ruoyi.procurementrecord.pojo.CustomStorage;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java
index 772869b..be0cc29 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java
@@ -13,7 +13,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java
index 81216db..6fe8ef1 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java
@@ -12,7 +12,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java
index e90a7a2..ba64add 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java
@@ -13,7 +13,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
index 1255afd..8b6b33d 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
@@ -19,7 +19,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
index 1e31842..8a3c4ba 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -31,7 +31,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
diff --git a/src/main/java/com/ruoyi/project/common/CaptchaController.java b/src/main/java/com/ruoyi/project/common/CaptchaController.java
index 13dd70f..e4b2b4d 100644
--- a/src/main/java/com/ruoyi/project/common/CaptchaController.java
+++ b/src/main/java/com/ruoyi/project/common/CaptchaController.java
@@ -3,9 +3,9 @@
 import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import javax.imageio.ImageIO;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.FastByteArrayOutputStream;
diff --git a/src/main/java/com/ruoyi/project/common/CommonController.java b/src/main/java/com/ruoyi/project/common/CommonController.java
index 21fa5ec..f4ca6ca 100644
--- a/src/main/java/com/ruoyi/project/common/CommonController.java
+++ b/src/main/java/com/ruoyi/project/common/CommonController.java
@@ -1,183 +1,202 @@
 package com.ruoyi.project.common;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 import com.ruoyi.basic.service.StorageBlobService;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+import com.ruoyi.framework.config.ServerConfig;
 import com.ruoyi.framework.web.domain.R;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.file.FileUploadUtils;
-import com.ruoyi.common.utils.file.FileUtils;
-import com.ruoyi.framework.config.RuoYiConfig;
-import com.ruoyi.framework.config.ServerConfig;
-import com.ruoyi.framework.web.domain.AjaxResult;
+
+import jakarta.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.List;
 
 /**
  * 閫氱敤璇锋眰澶勭悊
- * 
+ *
  * @author ruoyi
  */
 @Api(tags = "閫氱敤鎺ュ彛")
+@AllArgsConstructor
 @RestController
 @RequestMapping("/common")
-public class CommonController
-{
+public class CommonController {
     private static final Logger log = LoggerFactory.getLogger(CommonController.class);
 
-    @Autowired
     private ServerConfig serverConfig;
 
     private static final String FILE_DELIMETER = ",";
 
-    /**
-     * 閫氱敤涓嬭浇璇锋眰
-     * 
-     * @param fileName 鏂囦欢鍚嶇О
-     * @param delete 鏄惁鍒犻櫎
-     */
-    @GetMapping("/download")
-    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
-    {
-        try
-        {
-            if (!FileUtils.checkAllowDownload(fileName))
-            {
-                throw new Exception(StringUtils.format("鏂囦欢鍚嶇О({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", fileName));
-            }
-            String realFileName =  fileName.substring(fileName.indexOf("_") + 1);
+    private final StorageBlobService storageBlobService;
 
-            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
-            FileUtils.setAttachmentResponseHeader(response, realFileName);
-            FileUtils.writeBytes(fileName, response.getOutputStream());
-//            if (delete)
+
+//    /**
+//     * 閫氱敤涓嬭浇璇锋眰
+//     *
+//     * @param fileName 鏂囦欢鍚嶇О
+//     * @param delete 鏄惁鍒犻櫎
+//     */
+//    @GetMapping("/download")
+//    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
+//    {
+//        try
+//        {
+//            if (!FileUtils.checkAllowDownload(fileName))
 //            {
-//                FileUtils.deleteFile(fileName);
+//                throw new Exception(StringUtils.format("鏂囦欢鍚嶇О({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", fileName));
 //            }
-        }
-        catch (Exception e)
-        {
-            log.error("涓嬭浇鏂囦欢澶辫触", e);
-        }
+//            String realFileName =  fileName.substring(fileName.indexOf("_") + 1);
+//
+//            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+//            FileUtils.setAttachmentResponseHeader(response, realFileName);
+//            FileUtils.writeBytes(fileName, response.getOutputStream());
+
+    /// /            if (delete)
+    /// /            {
+    /// /                FileUtils.deleteFile(fileName);
+    /// /            }
+//        }
+//        catch (Exception e)
+//        {
+//            log.error("涓嬭浇鏂囦欢澶辫触", e);
+//        }
+//    }
+//
+//    /**
+//     * minio閫氱敤涓婁紶璇锋眰锛堝涓級
+//     */
+//    @PostMapping("/minioUploads")
+//    @ApiOperation(value = "minio閫氱敤涓婁紶璇锋眰")
+//    public AjaxResult minioUploadFiles(List<MultipartFile> files, String bucketName, Long type) throws Exception
+//    {
+//        return AjaxResult.success();
+//    }
+//
+//    /**
+//     * 閫氱敤涓婁紶璇锋眰锛堝崟涓級
+//     */
+//    @PostMapping("/upload")
+//    public AjaxResult uploadFile(MultipartFile file) throws Exception
+//    {
+//        try
+//        {
+//            // 涓婁紶鏂囦欢璺緞
+//            String filePath = RuoYiConfig.getUploadPath();
+//            // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О
+//            String fileName = FileUploadUtils.upload(filePath, file);
+//            String url = serverConfig.getUrl() + fileName;
+//            AjaxResult ajax = AjaxResult.success();
+//            ajax.put("url", url);
+//            ajax.put("fileName", fileName);
+//            ajax.put("newFileName", FileUtils.getName(fileName));
+//            ajax.put("originalFilename", file.getOriginalFilename());
+//            return ajax;
+//        }
+//        catch (Exception e)
+//        {
+//            return AjaxResult.error(e.getMessage());
+//        }
+//    }
+//
+//    /**
+//     * 閫氱敤涓婁紶璇锋眰锛堝涓級
+//     */
+//    @PostMapping("/uploads")
+//    public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception
+//    {
+//        try
+//        {
+//            // 涓婁紶鏂囦欢璺緞
+//            String filePath = RuoYiConfig.getUploadPath();
+//            List<String> urls = new ArrayList<String>();
+//            List<String> fileNames = new ArrayList<String>();
+//            List<String> newFileNames = new ArrayList<String>();
+//            List<String> originalFilenames = new ArrayList<String>();
+//            for (MultipartFile file : files)
+//            {
+//                // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О
+//                String fileName = FileUploadUtils.upload(filePath, file);
+//                String url = serverConfig.getUrl() + fileName;
+//                urls.add(url);
+//                fileNames.add(fileName);
+//                newFileNames.add(FileUtils.getName(fileName));
+//                originalFilenames.add(file.getOriginalFilename());
+//            }
+//            AjaxResult ajax = AjaxResult.success();
+//            ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER));
+//            ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER));
+//            ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER));
+//            ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER));
+//            return ajax;
+//        }
+//        catch (Exception e)
+//        {
+//            return AjaxResult.error(e.getMessage());
+//        }
+//    }
+//
+//    /**
+//     * 鏈湴璧勬簮閫氱敤涓嬭浇
+//     */
+//    @GetMapping("/download/resource")
+//    public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
+//            throws Exception
+//    {
+//        try
+//        {
+//            if (!FileUtils.checkAllowDownload(resource))
+//            {
+//                throw new Exception(StringUtils.format("璧勬簮鏂囦欢({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", resource));
+//            }
+//            // 鏈湴璧勬簮璺緞
+//            String localPath = RuoYiConfig.getProfile();
+//            // 鏁版嵁搴撹祫婧愬湴鍧�
+//            String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
+//            // 涓嬭浇鍚嶇О
+//            String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
+//            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+//            FileUtils.setAttachmentResponseHeader(response, downloadName);
+//            FileUtils.writeBytes(downloadPath, response.getOutputStream());
+//        }
+//        catch (Exception e)
+//        {
+//            log.error("涓嬭浇鏂囦欢澶辫触", e);
+//        }
+//    }
+
+    @PostMapping({"/upload"})
+    @ApiOperation(value = "鏂囦欢涓婁紶")
+    public R upload(@RequestParam("files") List<MultipartFile> files) throws Exception {
+        return R.ok(storageBlobService.upload(files));
     }
 
-    @Autowired
-    private StorageBlobService storageBlobService;
 
-
-    /**
-     * minio閫氱敤涓婁紶璇锋眰锛堝涓級
-     */
-    @PostMapping("/minioUploads")
-    @ApiOperation(value = "minio閫氱敤涓婁紶璇锋眰")
-    public AjaxResult minioUploadFiles(List<MultipartFile> files, String bucketName, Long type) throws Exception
-    {
-        return AjaxResult.success(storageBlobService.updateStorageBlobs(files, bucketName,type));
+    @GetMapping("/download/{fileName}")
+    @Anonymous
+    public void download(@PathVariable String fileName, @RequestParam("token") String token, HttpServletResponse response) throws Exception {
+        File file = storageBlobService.getFileByToken(fileName, token);
+        String originalFileName = storageBlobService.getDownloadFileName(fileName);
+        String encodedFileName = URLEncoder.encode(originalFileName, StandardCharsets.UTF_8.name()).replace("+", "%20");
+        response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + encodedFileName);
+        Files.copy(file.toPath(), response.getOutputStream());
     }
 
-    /**
-     * 閫氱敤涓婁紶璇锋眰锛堝崟涓級
-     */
-    @PostMapping("/upload")
-    public AjaxResult uploadFile(MultipartFile file) throws Exception
-    {
-        try
-        {
-            // 涓婁紶鏂囦欢璺緞
-            String filePath = RuoYiConfig.getUploadPath();
-            // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О
-            String fileName = FileUploadUtils.upload(filePath, file);
-            String url = serverConfig.getUrl() + fileName;
-            AjaxResult ajax = AjaxResult.success();
-            ajax.put("url", url);
-            ajax.put("fileName", fileName);
-            ajax.put("newFileName", FileUtils.getName(fileName));
-            ajax.put("originalFilename", file.getOriginalFilename());
-            return ajax;
-        }
-        catch (Exception e)
-        {
-            return AjaxResult.error(e.getMessage());
-        }
-    }
-
-    /**
-     * 閫氱敤涓婁紶璇锋眰锛堝涓級
-     */
-    @PostMapping("/uploads")
-    public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception
-    {
-        try
-        {
-            // 涓婁紶鏂囦欢璺緞
-            String filePath = RuoYiConfig.getUploadPath();
-            List<String> urls = new ArrayList<String>();
-            List<String> fileNames = new ArrayList<String>();
-            List<String> newFileNames = new ArrayList<String>();
-            List<String> originalFilenames = new ArrayList<String>();
-            for (MultipartFile file : files)
-            {
-                // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О
-                String fileName = FileUploadUtils.upload(filePath, file);
-                String url = serverConfig.getUrl() + fileName;
-                urls.add(url);
-                fileNames.add(fileName);
-                newFileNames.add(FileUtils.getName(fileName));
-                originalFilenames.add(file.getOriginalFilename());
-            }
-            AjaxResult ajax = AjaxResult.success();
-            ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER));
-            ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER));
-            ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER));
-            ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER));
-            return ajax;
-        }
-        catch (Exception e)
-        {
-            return AjaxResult.error(e.getMessage());
-        }
-    }
-
-    /**
-     * 鏈湴璧勬簮閫氱敤涓嬭浇
-     */
-    @GetMapping("/download/resource")
-    public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
-            throws Exception
-    {
-        try
-        {
-            if (!FileUtils.checkAllowDownload(resource))
-            {
-                throw new Exception(StringUtils.format("璧勬簮鏂囦欢({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", resource));
-            }
-            // 鏈湴璧勬簮璺緞
-            String localPath = RuoYiConfig.getProfile();
-            // 鏁版嵁搴撹祫婧愬湴鍧�
-            String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
-            // 涓嬭浇鍚嶇О
-            String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
-            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
-            FileUtils.setAttachmentResponseHeader(response, downloadName);
-            FileUtils.writeBytes(downloadPath, response.getOutputStream());
-        }
-        catch (Exception e)
-        {
-            log.error("涓嬭浇鏂囦欢澶辫触", e);
-        }
+    @GetMapping("/preview/{fileName}")
+    @Anonymous
+    public void preview(@PathVariable String fileName, @RequestParam("token") String token, HttpServletResponse response) throws Exception {
+        File file = storageBlobService.getFileByToken(fileName, token);
+        String contentType = Files.probeContentType(file.toPath());
+        response.setContentType(contentType == null ? "application/octet-stream" : contentType);
+        String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()).replace("+", "%20");
+        response.setHeader("Content-Disposition", "inline;filename*=UTF-8''" + encodedFileName);
+        Files.copy(file.toPath(), response.getOutputStream());
     }
 }
diff --git a/src/main/java/com/ruoyi/project/monitor/controller/SysJobController.java b/src/main/java/com/ruoyi/project/monitor/controller/SysJobController.java
index fd1b258..9458724 100644
--- a/src/main/java/com/ruoyi/project/monitor/controller/SysJobController.java
+++ b/src/main/java/com/ruoyi/project/monitor/controller/SysJobController.java
@@ -1,7 +1,7 @@
 package com.ruoyi.project.monitor.controller;
 
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.quartz.SchedulerException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
diff --git a/src/main/java/com/ruoyi/project/monitor/controller/SysJobLogController.java b/src/main/java/com/ruoyi/project/monitor/controller/SysJobLogController.java
index 0a716ab..d14a7f7 100644
--- a/src/main/java/com/ruoyi/project/monitor/controller/SysJobLogController.java
+++ b/src/main/java/com/ruoyi/project/monitor/controller/SysJobLogController.java
@@ -1,7 +1,7 @@
 package com.ruoyi.project.monitor.controller;
 
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.DeleteMapping;
diff --git a/src/main/java/com/ruoyi/project/monitor/controller/SysLogininforController.java b/src/main/java/com/ruoyi/project/monitor/controller/SysLogininforController.java
index d49efa2..a8c6d07 100644
--- a/src/main/java/com/ruoyi/project/monitor/controller/SysLogininforController.java
+++ b/src/main/java/com/ruoyi/project/monitor/controller/SysLogininforController.java
@@ -1,7 +1,7 @@
 package com.ruoyi.project.monitor.controller;
 
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.DeleteMapping;
diff --git a/src/main/java/com/ruoyi/project/monitor/controller/SysOperlogController.java b/src/main/java/com/ruoyi/project/monitor/controller/SysOperlogController.java
index 43cc698..68b28bb 100644
--- a/src/main/java/com/ruoyi/project/monitor/controller/SysOperlogController.java
+++ b/src/main/java/com/ruoyi/project/monitor/controller/SysOperlogController.java
@@ -1,7 +1,7 @@
 package com.ruoyi.project.monitor.controller;
 
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.DeleteMapping;
diff --git a/src/main/java/com/ruoyi/project/monitor/domain/SysJob.java b/src/main/java/com/ruoyi/project/monitor/domain/SysJob.java
index e45f42e..56f30b8 100644
--- a/src/main/java/com/ruoyi/project/monitor/domain/SysJob.java
+++ b/src/main/java/com/ruoyi/project/monitor/domain/SysJob.java
@@ -1,8 +1,8 @@
 package com.ruoyi.project.monitor.domain;
 
 import java.util.Date;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.fasterxml.jackson.annotation.JsonFormat;
diff --git a/src/main/java/com/ruoyi/project/monitor/service/impl/SysJobServiceImpl.java b/src/main/java/com/ruoyi/project/monitor/service/impl/SysJobServiceImpl.java
index 2db6b22..5c9e38a 100644
--- a/src/main/java/com/ruoyi/project/monitor/service/impl/SysJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/project/monitor/service/impl/SysJobServiceImpl.java
@@ -1,14 +1,5 @@
 package com.ruoyi.project.monitor.service.impl;
 
-import java.util.List;
-import javax.annotation.PostConstruct;
-import org.quartz.JobDataMap;
-import org.quartz.JobKey;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 import com.ruoyi.common.constant.ScheduleConstants;
 import com.ruoyi.common.exception.job.TaskException;
 import com.ruoyi.common.utils.job.CronUtils;
@@ -16,6 +7,16 @@
 import com.ruoyi.project.monitor.domain.SysJob;
 import com.ruoyi.project.monitor.mapper.SysJobMapper;
 import com.ruoyi.project.monitor.service.ISysJobService;
+import jakarta.annotation.PostConstruct;
+import org.quartz.JobDataMap;
+import org.quartz.JobKey;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 /**
  * 瀹氭椂浠诲姟璋冨害淇℃伅 鏈嶅姟灞�
diff --git a/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java b/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java
index 6a7cd7e..08107bd 100644
--- a/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java
+++ b/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java
@@ -1,7 +1,7 @@
 package com.ruoyi.project.system.controller;
 
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
diff --git a/src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java b/src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java
index 0dc5768..f8dffbe 100644
--- a/src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java
+++ b/src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java
@@ -2,7 +2,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
diff --git a/src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java b/src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java
index 5fb602e..8d395cd 100644
--- a/src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java
+++ b/src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java
@@ -1,7 +1,7 @@
 package com.ruoyi.project.system.controller;
 
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
diff --git a/src/main/java/com/ruoyi/project/system/controller/SysPostController.java b/src/main/java/com/ruoyi/project/system/controller/SysPostController.java
index a49692c..6854a03 100644
--- a/src/main/java/com/ruoyi/project/system/controller/SysPostController.java
+++ b/src/main/java/com/ruoyi/project/system/controller/SysPostController.java
@@ -1,7 +1,7 @@
 package com.ruoyi.project.system.controller;
 
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
diff --git a/src/main/java/com/ruoyi/project/system/controller/SysRoleController.java b/src/main/java/com/ruoyi/project/system/controller/SysRoleController.java
index c3766bf..f9bc6f7 100644
--- a/src/main/java/com/ruoyi/project/system/controller/SysRoleController.java
+++ b/src/main/java/com/ruoyi/project/system/controller/SysRoleController.java
@@ -1,7 +1,7 @@
 package com.ruoyi.project.system.controller;
 
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
diff --git a/src/main/java/com/ruoyi/project/system/controller/SysUserController.java b/src/main/java/com/ruoyi/project/system/controller/SysUserController.java
index 8b01634..c0230f6 100644
--- a/src/main/java/com/ruoyi/project/system/controller/SysUserController.java
+++ b/src/main/java/com/ruoyi/project/system/controller/SysUserController.java
@@ -2,7 +2,7 @@
 
 import java.util.List;
 import java.util.stream.Collectors;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import com.ruoyi.project.system.domain.vo.SysUserDeptVo;
 import com.ruoyi.project.system.mapper.SysUserMapper;
diff --git a/src/main/java/com/ruoyi/project/system/domain/SysConfig.java b/src/main/java/com/ruoyi/project/system/domain/SysConfig.java
index ba1c022..f7f69b3 100644
--- a/src/main/java/com/ruoyi/project/system/domain/SysConfig.java
+++ b/src/main/java/com/ruoyi/project/system/domain/SysConfig.java
@@ -1,7 +1,7 @@
 package com.ruoyi.project.system.domain;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
diff --git a/src/main/java/com/ruoyi/project/system/domain/SysDept.java b/src/main/java/com/ruoyi/project/system/domain/SysDept.java
index 355618d..2c3056a 100644
--- a/src/main/java/com/ruoyi/project/system/domain/SysDept.java
+++ b/src/main/java/com/ruoyi/project/system/domain/SysDept.java
@@ -1,16 +1,16 @@
 package com.ruoyi.project.system.domain;
 
-import java.util.ArrayList;
-import java.util.List;
-import javax.validation.constraints.Email;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotBlank;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.framework.web.domain.BaseEntity;
+
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 閮ㄩ棬琛� sys_dept
diff --git a/src/main/java/com/ruoyi/project/system/domain/SysDictData.java b/src/main/java/com/ruoyi/project/system/domain/SysDictData.java
index 7d72f89..8ae4cdb 100644
--- a/src/main/java/com/ruoyi/project/system/domain/SysDictData.java
+++ b/src/main/java/com/ruoyi/project/system/domain/SysDictData.java
@@ -1,7 +1,7 @@
 package com.ruoyi.project.system.domain;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.constant.UserConstants;
diff --git a/src/main/java/com/ruoyi/project/system/domain/SysDictType.java b/src/main/java/com/ruoyi/project/system/domain/SysDictType.java
index d81dfc9..9a523d6 100644
--- a/src/main/java/com/ruoyi/project/system/domain/SysDictType.java
+++ b/src/main/java/com/ruoyi/project/system/domain/SysDictType.java
@@ -1,8 +1,8 @@
 package com.ruoyi.project.system.domain;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Pattern;
+import jakarta.validation.constraints.Size;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
diff --git a/src/main/java/com/ruoyi/project/system/domain/SysMenu.java b/src/main/java/com/ruoyi/project/system/domain/SysMenu.java
index 683bdab..d039ec8 100644
--- a/src/main/java/com/ruoyi/project/system/domain/SysMenu.java
+++ b/src/main/java/com/ruoyi/project/system/domain/SysMenu.java
@@ -2,9 +2,9 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.framework.web.domain.BaseEntity;
diff --git a/src/main/java/com/ruoyi/project/system/domain/SysNotice.java b/src/main/java/com/ruoyi/project/system/domain/SysNotice.java
index b88a57c..5e85478 100644
--- a/src/main/java/com/ruoyi/project/system/domain/SysNotice.java
+++ b/src/main/java/com/ruoyi/project/system/domain/SysNotice.java
@@ -1,7 +1,7 @@
 package com.ruoyi.project.system.domain;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
diff --git a/src/main/java/com/ruoyi/project/system/domain/SysPost.java b/src/main/java/com/ruoyi/project/system/domain/SysPost.java
index e9b7ecd..fb0dde2 100644
--- a/src/main/java/com/ruoyi/project/system/domain/SysPost.java
+++ b/src/main/java/com/ruoyi/project/system/domain/SysPost.java
@@ -1,8 +1,8 @@
 package com.ruoyi.project.system.domain;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
diff --git a/src/main/java/com/ruoyi/project/system/domain/SysRole.java b/src/main/java/com/ruoyi/project/system/domain/SysRole.java
index 67941af..cb8762a 100644
--- a/src/main/java/com/ruoyi/project/system/domain/SysRole.java
+++ b/src/main/java/com/ruoyi/project/system/domain/SysRole.java
@@ -1,9 +1,9 @@
 package com.ruoyi.project.system.domain;
 
 import java.util.Set;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
diff --git a/src/main/java/com/ruoyi/project/system/domain/SysUser.java b/src/main/java/com/ruoyi/project/system/domain/SysUser.java
index ac7f535..d75fcc0 100644
--- a/src/main/java/com/ruoyi/project/system/domain/SysUser.java
+++ b/src/main/java/com/ruoyi/project/system/domain/SysUser.java
@@ -1,18 +1,20 @@
 package com.ruoyi.project.system.domain;
 
-import java.util.Date;
-import java.util.List;
-import javax.validation.constraints.*;
-
 import com.baomidou.mybatisplus.annotation.TableField;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.xss.Xss;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel.ColumnType;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel.Type;
 import com.ruoyi.framework.aspectj.lang.annotation.Excels;
 import com.ruoyi.framework.web.domain.BaseEntity;
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotBlank;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import jakarta.validation.constraints.Size;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 鐢ㄦ埛瀵硅薄 sys_user
diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
index 0396057..7c8425a 100644
--- a/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
+++ b/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
@@ -2,7 +2,7 @@
 
 import java.util.Collection;
 import java.util.List;
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.common.constant.CacheConstants;
diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java
index 8dce677..53dc6a7 100644
--- a/src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java
+++ b/src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java
@@ -4,7 +4,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
index 7773825..91d07eb 100644
--- a/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
+++ b/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
@@ -4,7 +4,7 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
-import javax.validation.Validator;
+import jakarta.validation.Validator;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
diff --git a/src/main/java/com/ruoyi/project/system/service/impl/UnipushService.java b/src/main/java/com/ruoyi/project/system/service/impl/UnipushService.java
index a6e97f4..c89625b 100644
--- a/src/main/java/com/ruoyi/project/system/service/impl/UnipushService.java
+++ b/src/main/java/com/ruoyi/project/system/service/impl/UnipushService.java
@@ -19,13 +19,13 @@
 import com.ruoyi.project.system.domain.SysUserClient;
 import com.ruoyi.project.system.mapper.SysMenuMapper;
 import com.ruoyi.project.system.service.SysUserClientService;
+import jakarta.annotation.PostConstruct;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.PostConstruct;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
diff --git a/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java b/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
index 93f4956..410755a 100644
--- a/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
+++ b/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
@@ -5,7 +5,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
diff --git a/src/main/java/com/ruoyi/project/tool/gen/domain/GenTable.java b/src/main/java/com/ruoyi/project/tool/gen/domain/GenTable.java
index 5cc81a0..7ed591b 100644
--- a/src/main/java/com/ruoyi/project/tool/gen/domain/GenTable.java
+++ b/src/main/java/com/ruoyi/project/tool/gen/domain/GenTable.java
@@ -1,8 +1,8 @@
 package com.ruoyi.project.tool.gen.domain;
 
 import java.util.List;
-import javax.validation.Valid;
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotBlank;
 import org.apache.commons.lang3.ArrayUtils;
 import com.ruoyi.common.constant.GenConstants;
 import com.ruoyi.common.utils.StringUtils;
diff --git a/src/main/java/com/ruoyi/project/tool/gen/domain/GenTableColumn.java b/src/main/java/com/ruoyi/project/tool/gen/domain/GenTableColumn.java
index e14d6e8..0fc104a 100644
--- a/src/main/java/com/ruoyi/project/tool/gen/domain/GenTableColumn.java
+++ b/src/main/java/com/ruoyi/project/tool/gen/domain/GenTableColumn.java
@@ -1,6 +1,6 @@
 package com.ruoyi.project.tool.gen.domain;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.web.domain.BaseEntity;
 
diff --git a/src/main/java/com/ruoyi/projectManagement/controller/InfoController.java b/src/main/java/com/ruoyi/projectManagement/controller/InfoController.java
index cb79883..6d1b151 100644
--- a/src/main/java/com/ruoyi/projectManagement/controller/InfoController.java
+++ b/src/main/java/com/ruoyi/projectManagement/controller/InfoController.java
@@ -13,7 +13,7 @@
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
+import jakarta.validation.Valid;
 
 /**
  * @author buhuazhen
diff --git a/src/main/java/com/ruoyi/projectManagement/controller/PlanController.java b/src/main/java/com/ruoyi/projectManagement/controller/PlanController.java
index f3a4745..f49ae82 100644
--- a/src/main/java/com/ruoyi/projectManagement/controller/PlanController.java
+++ b/src/main/java/com/ruoyi/projectManagement/controller/PlanController.java
@@ -11,7 +11,7 @@
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
+import jakarta.validation.Valid;
 
 /**
  * @author buhuazhen
diff --git a/src/main/java/com/ruoyi/projectManagement/dto/InfoStageDto.java b/src/main/java/com/ruoyi/projectManagement/dto/InfoStageDto.java
index 13fade5..fcc881a 100644
--- a/src/main/java/com/ruoyi/projectManagement/dto/InfoStageDto.java
+++ b/src/main/java/com/ruoyi/projectManagement/dto/InfoStageDto.java
@@ -6,7 +6,7 @@
 import lombok.NoArgsConstructor;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 
diff --git a/src/main/java/com/ruoyi/projectManagement/dto/SaveInfoDto.java b/src/main/java/com/ruoyi/projectManagement/dto/SaveInfoDto.java
index 0b878ef..9fbef30 100644
--- a/src/main/java/com/ruoyi/projectManagement/dto/SaveInfoDto.java
+++ b/src/main/java/com/ruoyi/projectManagement/dto/SaveInfoDto.java
@@ -8,8 +8,8 @@
 import lombok.NoArgsConstructor;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
diff --git a/src/main/java/com/ruoyi/projectManagement/dto/UpdateStateInfo.java b/src/main/java/com/ruoyi/projectManagement/dto/UpdateStateInfo.java
index 162a1d6..3aaab47 100644
--- a/src/main/java/com/ruoyi/projectManagement/dto/UpdateStateInfo.java
+++ b/src/main/java/com/ruoyi/projectManagement/dto/UpdateStateInfo.java
@@ -6,7 +6,7 @@
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
diff --git a/src/main/java/com/ruoyi/projectManagement/service/InfoService.java b/src/main/java/com/ruoyi/projectManagement/service/InfoService.java
index ac3d8e8..22a9250 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/InfoService.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/InfoService.java
@@ -7,7 +7,7 @@
 import com.ruoyi.projectManagement.vo.SaveInfoVo;
 import com.ruoyi.projectManagement.vo.SearchInfoVo;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 /**
  * @author buhuazhen
diff --git a/src/main/java/com/ruoyi/projectManagement/service/PlanService.java b/src/main/java/com/ruoyi/projectManagement/service/PlanService.java
index c0a8161..2659b27 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/PlanService.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/PlanService.java
@@ -9,9 +9,9 @@
 import com.ruoyi.projectManagement.vo.SavePlanVo;
 import com.ruoyi.projectManagement.vo.SearchPlanVo;
 
-import javax.annotation.Nullable;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Null;
+import jakarta.annotation.Nullable;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Null;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/handle/ContractInfoHandleService.java b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/ContractInfoHandleService.java
index 59cbb9f..36afacb 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/handle/ContractInfoHandleService.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/ContractInfoHandleService.java
@@ -10,8 +10,8 @@
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Nullable;
-import javax.validation.constraints.NotNull;
+import jakarta.annotation.Nullable;
+import jakarta.validation.constraints.NotNull;
 
 /**
  * @author buhuazhen
diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java
index 84715f9..a5f2ff4 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoHandleService.java
@@ -20,7 +20,7 @@
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoStageHandleService.java b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoStageHandleService.java
index dac839d..031c656 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoStageHandleService.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/InfoStageHandleService.java
@@ -21,7 +21,7 @@
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 import java.util.*;
 import java.util.stream.Collectors;
 
diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/handle/ShippingAddressHandleService.java b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/ShippingAddressHandleService.java
index f5e6cf6..73acb78 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/handle/ShippingAddressHandleService.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/handle/ShippingAddressHandleService.java
@@ -9,8 +9,8 @@
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Nullable;
-import javax.validation.constraints.NotNull;
+import jakarta.annotation.Nullable;
+import jakarta.validation.constraints.NotNull;
 
 /**
  * @author buhuazhen
diff --git a/src/main/java/com/ruoyi/projectManagement/vo/SaveInfoVo.java b/src/main/java/com/ruoyi/projectManagement/vo/SaveInfoVo.java
index 749de19..166cc32 100644
--- a/src/main/java/com/ruoyi/projectManagement/vo/SaveInfoVo.java
+++ b/src/main/java/com/ruoyi/projectManagement/vo/SaveInfoVo.java
@@ -8,7 +8,7 @@
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import javax.validation.Valid;
+import jakarta.validation.Valid;
 import java.io.Serializable;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/projectManagement/vo/SavePlanNodeVo.java b/src/main/java/com/ruoyi/projectManagement/vo/SavePlanNodeVo.java
index 7f059da..807f87e 100644
--- a/src/main/java/com/ruoyi/projectManagement/vo/SavePlanNodeVo.java
+++ b/src/main/java/com/ruoyi/projectManagement/vo/SavePlanNodeVo.java
@@ -4,8 +4,8 @@
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
diff --git a/src/main/java/com/ruoyi/projectManagement/vo/SavePlanVo.java b/src/main/java/com/ruoyi/projectManagement/vo/SavePlanVo.java
index bd42d84..f3ce9df 100644
--- a/src/main/java/com/ruoyi/projectManagement/vo/SavePlanVo.java
+++ b/src/main/java/com/ruoyi/projectManagement/vo/SavePlanVo.java
@@ -6,8 +6,8 @@
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import javax.validation.Valid;
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java b/src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java
index 3df034f..5d206f0 100644
--- a/src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java
@@ -20,7 +20,7 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java b/src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java
index a69d204..ba77143 100644
--- a/src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java
@@ -14,7 +14,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
index e895ea6..3276bea 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
@@ -17,7 +17,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
diff --git a/src/main/java/com/ruoyi/purchase/controller/ProcurementBusinessSummaryController.java b/src/main/java/com/ruoyi/purchase/controller/ProcurementBusinessSummaryController.java
index 9370ddb..01179af 100644
--- a/src/main/java/com/ruoyi/purchase/controller/ProcurementBusinessSummaryController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/ProcurementBusinessSummaryController.java
@@ -18,7 +18,7 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
index 2358caf..d6d48da 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -28,7 +28,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
index baefa12..ff23dbc 100644
--- a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
@@ -30,7 +30,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrderProductsMapper.java b/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrderProductsMapper.java
index 89aa81d..fe18e44 100644
--- a/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrderProductsMapper.java
+++ b/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrderProductsMapper.java
@@ -6,7 +6,7 @@
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java b/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
index dcd669c..dc68108 100644
--- a/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
+++ b/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
@@ -8,7 +8,7 @@
 import com.ruoyi.purchase.vo.PurchaseReturnDetailsVo;
 import com.ruoyi.purchase.vo.PurchaseReturnOrderVo;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
index 6584dbb..17809df 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
@@ -28,7 +28,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
diff --git a/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java b/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
index 349fe3c..98dbcd4 100644
--- a/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
+++ b/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
@@ -18,8 +18,8 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/quality/controller/QualityInspectFileController.java b/src/main/java/com/ruoyi/quality/controller/QualityInspectFileController.java
index 4428fd7..bc5df62 100644
--- a/src/main/java/com/ruoyi/quality/controller/QualityInspectFileController.java
+++ b/src/main/java/com/ruoyi/quality/controller/QualityInspectFileController.java
@@ -12,8 +12,8 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/quality/controller/QualityInspectParamController.java b/src/main/java/com/ruoyi/quality/controller/QualityInspectParamController.java
index 3d6df0c..263b201 100644
--- a/src/main/java/com/ruoyi/quality/controller/QualityInspectParamController.java
+++ b/src/main/java/com/ruoyi/quality/controller/QualityInspectParamController.java
@@ -12,8 +12,8 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/quality/controller/QualityTestStandardController.java b/src/main/java/com/ruoyi/quality/controller/QualityTestStandardController.java
index 014729b..a61ffed 100644
--- a/src/main/java/com/ruoyi/quality/controller/QualityTestStandardController.java
+++ b/src/main/java/com/ruoyi/quality/controller/QualityTestStandardController.java
@@ -10,8 +10,8 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Resource;
+import jakarta.annotation.Nonnull;
+import jakarta.annotation.Resource;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/quality/controller/QualityUnqualifiedController.java b/src/main/java/com/ruoyi/quality/controller/QualityUnqualifiedController.java
index e558c30..3b20f82 100644
--- a/src/main/java/com/ruoyi/quality/controller/QualityUnqualifiedController.java
+++ b/src/main/java/com/ruoyi/quality/controller/QualityUnqualifiedController.java
@@ -7,8 +7,8 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/quality/dto/QualityInspectDto.java b/src/main/java/com/ruoyi/quality/dto/QualityInspectDto.java
index bfdf56b..27d9579 100644
--- a/src/main/java/com/ruoyi/quality/dto/QualityInspectDto.java
+++ b/src/main/java/com/ruoyi/quality/dto/QualityInspectDto.java
@@ -9,7 +9,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
diff --git a/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java b/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
index ccdf6ef..b5b1bc9 100644
--- a/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
+++ b/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
@@ -7,7 +7,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
diff --git a/src/main/java/com/ruoyi/quality/pojo/QualityInspectFile.java b/src/main/java/com/ruoyi/quality/pojo/QualityInspectFile.java
index 63d0886..a1cfe39 100644
--- a/src/main/java/com/ruoyi/quality/pojo/QualityInspectFile.java
+++ b/src/main/java/com/ruoyi/quality/pojo/QualityInspectFile.java
@@ -5,7 +5,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
diff --git a/src/main/java/com/ruoyi/quality/pojo/QualityInspectParam.java b/src/main/java/com/ruoyi/quality/pojo/QualityInspectParam.java
index 9992e85..a15b47b 100644
--- a/src/main/java/com/ruoyi/quality/pojo/QualityInspectParam.java
+++ b/src/main/java/com/ruoyi/quality/pojo/QualityInspectParam.java
@@ -3,9 +3,9 @@
 import com.baomidou.mybatisplus.annotation.*;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
+import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
diff --git a/src/main/java/com/ruoyi/quality/pojo/QualityUnqualified.java b/src/main/java/com/ruoyi/quality/pojo/QualityUnqualified.java
index 60760ec..4ed2f58 100644
--- a/src/main/java/com/ruoyi/quality/pojo/QualityUnqualified.java
+++ b/src/main/java/com/ruoyi/quality/pojo/QualityUnqualified.java
@@ -7,7 +7,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
diff --git a/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java b/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
index dd8f01f..d78a5ca 100644
--- a/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
+++ b/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
@@ -6,7 +6,7 @@
 import com.ruoyi.quality.dto.QualityInspectDto;
 import com.ruoyi.quality.pojo.QualityInspect;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 public interface IQualityInspectService extends IService<QualityInspect> {
 
diff --git a/src/main/java/com/ruoyi/quality/service/IQualityUnqualifiedService.java b/src/main/java/com/ruoyi/quality/service/IQualityUnqualifiedService.java
index ceff474..e35bc02 100644
--- a/src/main/java/com/ruoyi/quality/service/IQualityUnqualifiedService.java
+++ b/src/main/java/com/ruoyi/quality/service/IQualityUnqualifiedService.java
@@ -6,7 +6,7 @@
 import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.quality.pojo.QualityUnqualified;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 public interface IQualityUnqualifiedService extends IService<QualityUnqualified> {
 
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
index c6e40e4..1bedb6c 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -29,7 +29,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URLEncoder;
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
index b3ddbb4..876d68e 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -30,7 +30,7 @@
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeCertificationFileController.java b/src/main/java/com/ruoyi/safe/controller/SafeCertificationFileController.java
index 564b5bc..c1cab36 100644
--- a/src/main/java/com/ruoyi/safe/controller/SafeCertificationFileController.java
+++ b/src/main/java/com/ruoyi/safe/controller/SafeCertificationFileController.java
@@ -10,7 +10,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeHiddenFileController.java b/src/main/java/com/ruoyi/safe/controller/SafeHiddenFileController.java
index 6d229c0..227f861 100644
--- a/src/main/java/com/ruoyi/safe/controller/SafeHiddenFileController.java
+++ b/src/main/java/com/ruoyi/safe/controller/SafeHiddenFileController.java
@@ -10,7 +10,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeTrainingController.java b/src/main/java/com/ruoyi/safe/controller/SafeTrainingController.java
index 3ea4689..a4e9613 100644
--- a/src/main/java/com/ruoyi/safe/controller/SafeTrainingController.java
+++ b/src/main/java/com/ruoyi/safe/controller/SafeTrainingController.java
@@ -14,7 +14,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeTrainingDetailsController.java b/src/main/java/com/ruoyi/safe/controller/SafeTrainingDetailsController.java
index 75bcfb9..6b91383 100644
--- a/src/main/java/com/ruoyi/safe/controller/SafeTrainingDetailsController.java
+++ b/src/main/java/com/ruoyi/safe/controller/SafeTrainingDetailsController.java
@@ -11,7 +11,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeTrainingFileController.java b/src/main/java/com/ruoyi/safe/controller/SafeTrainingFileController.java
index 3057900..7ca0450 100644
--- a/src/main/java/com/ruoyi/safe/controller/SafeTrainingFileController.java
+++ b/src/main/java/com/ruoyi/safe/controller/SafeTrainingFileController.java
@@ -11,7 +11,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/safe/pojo/SafeCertificationFile.java b/src/main/java/com/ruoyi/safe/pojo/SafeCertificationFile.java
index 012f02f..dc23511 100644
--- a/src/main/java/com/ruoyi/safe/pojo/SafeCertificationFile.java
+++ b/src/main/java/com/ruoyi/safe/pojo/SafeCertificationFile.java
@@ -12,7 +12,7 @@
 import lombok.Getter;
 import lombok.Setter;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/safe/pojo/SafeHidden.java b/src/main/java/com/ruoyi/safe/pojo/SafeHidden.java
index 86daf35..2a565f6 100644
--- a/src/main/java/com/ruoyi/safe/pojo/SafeHidden.java
+++ b/src/main/java/com/ruoyi/safe/pojo/SafeHidden.java
@@ -1,22 +1,17 @@
 package com.ruoyi.safe.pojo;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-
+import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import jakarta.validation.constraints.NotBlank;
 import lombok.Getter;
 import lombok.Setter;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/safe/pojo/SafeTraining.java b/src/main/java/com/ruoyi/safe/pojo/SafeTraining.java
index 4010af1..8c89ab8 100644
--- a/src/main/java/com/ruoyi/safe/pojo/SafeTraining.java
+++ b/src/main/java/com/ruoyi/safe/pojo/SafeTraining.java
@@ -17,7 +17,7 @@
 import lombok.Setter;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/safe/pojo/SafeTrainingDetails.java b/src/main/java/com/ruoyi/safe/pojo/SafeTrainingDetails.java
index 7c8173c..825b4ad 100644
--- a/src/main/java/com/ruoyi/safe/pojo/SafeTrainingDetails.java
+++ b/src/main/java/com/ruoyi/safe/pojo/SafeTrainingDetails.java
@@ -1,22 +1,18 @@
 package com.ruoyi.safe.pojo;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-
+import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import jakarta.validation.constraints.NotBlank;
 import lombok.Getter;
 import lombok.Setter;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/safe/service/SafeTrainingDetailsService.java b/src/main/java/com/ruoyi/safe/service/SafeTrainingDetailsService.java
index 8a06f05..4f20efc 100644
--- a/src/main/java/com/ruoyi/safe/service/SafeTrainingDetailsService.java
+++ b/src/main/java/com/ruoyi/safe/service/SafeTrainingDetailsService.java
@@ -6,7 +6,7 @@
 import com.ruoyi.safe.pojo.SafeTrainingDetails;
 import com.baomidou.mybatisplus.extension.service.IService;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/safe/service/SafeTrainingService.java b/src/main/java/com/ruoyi/safe/service/SafeTrainingService.java
index 56f2e6e..ab9f3cc 100644
--- a/src/main/java/com/ruoyi/safe/service/SafeTrainingService.java
+++ b/src/main/java/com/ruoyi/safe/service/SafeTrainingService.java
@@ -6,7 +6,7 @@
 import com.ruoyi.safe.pojo.SafeTraining;
 import com.baomidou.mybatisplus.extension.service.IService;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/safe/service/impl/SafeTrainingDetailsServiceImpl.java b/src/main/java/com/ruoyi/safe/service/impl/SafeTrainingDetailsServiceImpl.java
index 2804aa3..bc22538 100644
--- a/src/main/java/com/ruoyi/safe/service/impl/SafeTrainingDetailsServiceImpl.java
+++ b/src/main/java/com/ruoyi/safe/service/impl/SafeTrainingDetailsServiceImpl.java
@@ -16,7 +16,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URLEncoder;
diff --git a/src/main/java/com/ruoyi/safe/service/impl/SafeTrainingServiceImpl.java b/src/main/java/com/ruoyi/safe/service/impl/SafeTrainingServiceImpl.java
index 0c81ed5..2f528f2 100644
--- a/src/main/java/com/ruoyi/safe/service/impl/SafeTrainingServiceImpl.java
+++ b/src/main/java/com/ruoyi/safe/service/impl/SafeTrainingServiceImpl.java
@@ -21,7 +21,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URLEncoder;
diff --git a/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java b/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java
index b7ce1c1..ecaffc9 100644
--- a/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java
@@ -15,7 +15,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
diff --git a/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java b/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
index 5606148..250e080 100644
--- a/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
+++ b/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
@@ -12,7 +12,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
index aa10b54..5246c50 100644
--- a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
@@ -22,7 +22,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index cbef46f..869e290 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -29,7 +29,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
index aaedff4..b93b63f 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -1,6 +1,6 @@
 package com.ruoyi.sales.controller;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java b/src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java
index f2e7928..e6a1d46 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java
@@ -9,7 +9,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 @RestController
 @RequestMapping("/sales/quotation")
diff --git a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
index 49548e1..7ffe281 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
@@ -19,7 +19,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
@@ -101,7 +101,7 @@
     @PostMapping("/export")
     @ApiOperation("瀵煎嚭鍙戣揣瀹℃壒")
     public void export(HttpServletResponse response) {
-        List<ShipmentApproval> list = shipmentApprovalService.list(null);
+        List<ShipmentApproval> list = shipmentApprovalService.list();
         ExcelUtil<ShipmentApproval> util = new ExcelUtil<ShipmentApproval>(ShipmentApproval.class);
         util.exportExcel(response, list, "鍙戣揣瀹℃壒");
     }
diff --git a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
index eed5ffa..21be152 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -35,7 +35,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.time.LocalDate;
 import java.util.List;
diff --git a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
index eda9da4..0ed193b 100644
--- a/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
+++ b/src/main/java/com/ruoyi/sales/service/ISalesLedgerService.java
@@ -13,8 +13,8 @@
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.annotation.Nullable;
-import javax.validation.constraints.NotNull;
+import jakarta.annotation.Nullable;
+import jakarta.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java b/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java
index ae71649..e9335ca 100644
--- a/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java
+++ b/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java
@@ -9,7 +9,7 @@
 import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java b/src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java
index 19af693..4044a4e 100644
--- a/src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java
+++ b/src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java
@@ -7,7 +7,7 @@
 import com.ruoyi.sales.dto.SalesLedgerDto;
 import org.springframework.web.bind.annotation.RequestBody;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 public interface InvoiceRegistrationService {
diff --git a/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java b/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
index dbe8971..49378c8 100644
--- a/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
+++ b/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java
@@ -7,7 +7,7 @@
 import com.ruoyi.sales.dto.ReceiptPaymentDto;
 import com.ruoyi.sales.pojo.ReceiptPayment;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
index d89119f..b06e5b3 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
@@ -23,7 +23,7 @@
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.math.BigDecimal;
 import java.time.LocalDate;
diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
index b2b5ad3..da21baf 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
@@ -28,7 +28,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
index b667be2..1762e02 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -27,7 +27,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.ObjectUtils;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.YearMonth;
diff --git a/src/main/java/com/ruoyi/staff/controller/AnalyticsController.java b/src/main/java/com/ruoyi/staff/controller/AnalyticsController.java
index cfa802c..2522550 100644
--- a/src/main/java/com/ruoyi/staff/controller/AnalyticsController.java
+++ b/src/main/java/com/ruoyi/staff/controller/AnalyticsController.java
@@ -6,7 +6,7 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 
 @RestController
 @RequestMapping("/staff/analytics")
diff --git a/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java b/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java
index d6a8ce3..4e93b5f 100644
--- a/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java
+++ b/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java
@@ -9,8 +9,8 @@
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java b/src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java
index 130d588..53e918e 100644
--- a/src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java
+++ b/src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java
@@ -17,9 +17,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.NotNull;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.NotNull;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffContractController.java b/src/main/java/com/ruoyi/staff/controller/StaffContractController.java
index af4c90c..9a9f562 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffContractController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffContractController.java
@@ -7,7 +7,7 @@
 import io.swagger.annotations.Api;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 
 /**
  * 鍛樺伐鍙拌处/鍚堝悓绠$悊
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java b/src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java
index c018008..3fe71c9 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffLeaveController.java
@@ -8,8 +8,8 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
index 8ef5a4b..e85136b 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -16,9 +16,9 @@
 import org.springframework.web.multipart.MultipartFile;
 import com.ruoyi.staff.dto.StaffOnJobExcelDto;
 
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java b/src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java
index a54096a..d195e9c 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java
@@ -14,7 +14,7 @@
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/staff/dto/PerformanceShiftAddDto.java b/src/main/java/com/ruoyi/staff/dto/PerformanceShiftAddDto.java
index d7aff73..bff3e4d 100644
--- a/src/main/java/com/ruoyi/staff/dto/PerformanceShiftAddDto.java
+++ b/src/main/java/com/ruoyi/staff/dto/PerformanceShiftAddDto.java
@@ -5,7 +5,7 @@
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 
 @Data
diff --git a/src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java b/src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java
index 7e57745..860a4dd 100644
--- a/src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java
+++ b/src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java
@@ -6,7 +6,7 @@
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.Date;
diff --git a/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java b/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
index 1e60ffe..a859d14 100644
--- a/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
+++ b/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
@@ -8,7 +8,7 @@
 import com.ruoyi.staff.pojo.StaffOnJob;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 public interface IStaffOnJobService extends IService<StaffOnJob> {
diff --git a/src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java b/src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java
index 7b8cd58..2cf8c5f 100644
--- a/src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java
+++ b/src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java
@@ -8,7 +8,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.staff.pojo.StaffOnJob;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/staff/service/StaffLeaveService.java b/src/main/java/com/ruoyi/staff/service/StaffLeaveService.java
index 9fab5a1..24d2261 100644
--- a/src/main/java/com/ruoyi/staff/service/StaffLeaveService.java
+++ b/src/main/java/com/ruoyi/staff/service/StaffLeaveService.java
@@ -6,7 +6,7 @@
 import com.ruoyi.staff.dto.StaffLeaveDto;
 import com.ruoyi.staff.pojo.StaffLeave;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 public interface StaffLeaveService extends IService<StaffLeave> {
diff --git a/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
index 9d5e688..d054603 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
@@ -31,7 +31,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDate;
diff --git a/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
index dceb925..dd368aa 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
@@ -25,6 +25,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import jakarta.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
index b7e64ed..bd7ab66 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
@@ -21,7 +21,7 @@
 import com.ruoyi.staff.pojo.StaffLeave;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.stream.Collectors;
 
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
index 3613da3..506d107 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -36,7 +36,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.nio.charset.StandardCharsets;
 import java.time.Instant;
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java
index b05fc92..4e1ca14 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java
@@ -17,7 +17,7 @@
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.Duration;
 
diff --git a/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java b/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
index b12fc67..dc1dede 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
@@ -13,7 +13,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java b/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
index c253728..e3e4f60 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
@@ -17,7 +17,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java b/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java
index bd98859..de4ce7b 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java
@@ -13,7 +13,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java b/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
index 39401c4..9f8e2d5 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
@@ -12,7 +12,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
index beddc42..1bcc7bd 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
@@ -10,7 +10,7 @@
 import lombok.Setter;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
diff --git a/src/main/java/com/ruoyi/stock/service/StockInRecordService.java b/src/main/java/com/ruoyi/stock/service/StockInRecordService.java
index 29ba7e5..12be000 100644
--- a/src/main/java/com/ruoyi/stock/service/StockInRecordService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockInRecordService.java
@@ -6,7 +6,7 @@
 import com.ruoyi.stock.dto.StockInRecordDto;
 import com.ruoyi.stock.pojo.StockInRecord;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 public interface StockInRecordService extends IService<StockInRecord> {
diff --git a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
index 429eeea..986af11 100644
--- a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
@@ -9,7 +9,7 @@
 import com.ruoyi.stock.pojo.StockInventory;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/stock/service/StockOutRecordService.java b/src/main/java/com/ruoyi/stock/service/StockOutRecordService.java
index f18d50c..bf00410 100644
--- a/src/main/java/com/ruoyi/stock/service/StockOutRecordService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockOutRecordService.java
@@ -6,7 +6,7 @@
 import com.ruoyi.stock.dto.StockOutRecordDto;
 import com.ruoyi.stock.pojo.StockOutRecord;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java b/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
index 0d6ba6d..e31da8b 100644
--- a/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
@@ -7,7 +7,7 @@
 import com.ruoyi.stock.dto.StockUninventoryDto;
 import com.ruoyi.stock.pojo.StockUninventory;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * <p>
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
index 15e3e39..8dae966 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -26,7 +26,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @Service
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
index c5b4136..d7a1fcb 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -28,7 +28,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
index f0b3c84..c24da34 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -26,7 +26,7 @@
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
index 0c586b3..c61bed0 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -20,7 +20,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/technology/controller/TechnologyBomController.java b/src/main/java/com/ruoyi/technology/controller/TechnologyBomController.java
index 10b8b7d..b642c8f 100644
--- a/src/main/java/com/ruoyi/technology/controller/TechnologyBomController.java
+++ b/src/main/java/com/ruoyi/technology/controller/TechnologyBomController.java
@@ -18,7 +18,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
diff --git a/src/main/java/com/ruoyi/technology/service/TechnologyBomService.java b/src/main/java/com/ruoyi/technology/service/TechnologyBomService.java
index cf4a5af..84ded9a 100644
--- a/src/main/java/com/ruoyi/technology/service/TechnologyBomService.java
+++ b/src/main/java/com/ruoyi/technology/service/TechnologyBomService.java
@@ -9,7 +9,7 @@
 import com.ruoyi.technology.pojo.TechnologyBom;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 public interface TechnologyBomService extends IService<TechnologyBom> {
diff --git a/src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java b/src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java
index 0a97e01..09d85df 100644
--- a/src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java
+++ b/src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java
@@ -29,7 +29,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
diff --git a/src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java b/src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java
index fdf07fd..eb63831 100644
--- a/src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java
+++ b/src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java
@@ -22,7 +22,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.time.LocalDateTime;
 import java.util.List;
 
diff --git a/src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java b/src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java
index 586c330..a525309 100644
--- a/src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java
+++ b/src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java
@@ -17,7 +17,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
diff --git a/src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java b/src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java
index 13a1bc7..9c8517e 100644
--- a/src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java
+++ b/src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java
@@ -9,7 +9,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java b/src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java
index bb9c391..246e3ab 100644
--- a/src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java
+++ b/src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java
@@ -4,7 +4,7 @@
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.time.LocalDateTime;
 
 public class ReturnExportDto {
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java
index 6af2ceb..803c66b 100644
--- a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java
+++ b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java
@@ -11,7 +11,7 @@
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java b/src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java
index 5c06c07..9a24896 100644
--- a/src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java
+++ b/src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java
@@ -4,7 +4,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotBlank;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
diff --git a/src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java b/src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java
index 3f76061..1ba6278 100644
--- a/src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java
+++ b/src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java
@@ -7,7 +7,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.warehouse.pojo.DocumentationReturnManagement;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/java/com/ruoyi/warehouse/service/DocumentationService.java b/src/main/java/com/ruoyi/warehouse/service/DocumentationService.java
index 32910ce..8efa2b8 100644
--- a/src/main/java/com/ruoyi/warehouse/service/DocumentationService.java
+++ b/src/main/java/com/ruoyi/warehouse/service/DocumentationService.java
@@ -6,7 +6,7 @@
 import com.ruoyi.warehouse.pojo.Documentation;
 import com.baomidou.mybatisplus.extension.service.IService;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java
index 4ddf5a2..62fd196 100644
--- a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java
+++ b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java
@@ -19,7 +19,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java
index 5a7cf30..82d1c15 100644
--- a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java
+++ b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java
@@ -13,7 +13,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
diff --git a/src/main/java/com/ruoyi/waterrecord/controller/WaterRecordController.java b/src/main/java/com/ruoyi/waterrecord/controller/WaterRecordController.java
index a963aa1..78244e0 100644
--- a/src/main/java/com/ruoyi/waterrecord/controller/WaterRecordController.java
+++ b/src/main/java/com/ruoyi/waterrecord/controller/WaterRecordController.java
@@ -17,7 +17,7 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
diff --git a/src/main/resources/application-dev-pro.yml b/src/main/resources/application-dev-pro.yml
index 477cc55..4ebc169 100644
--- a/src/main/resources/application-dev-pro.yml
+++ b/src/main/resources/application-dev-pro.yml
@@ -68,13 +68,15 @@
 
 # Spring閰嶇疆
 spring:
+  main:
+    allow-circular-references: true # 鍏佽寰幆渚濊禆
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driverClassName: com.mysql.cj.jdbc.Driver
     druid:
       # 涓诲簱鏁版嵁婧�
       master:
-        url: jdbc:mysql://192.168.1.35:3307/product-inventory-management-new-pro?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://localhost:3306/product-inventory-management-new-pro?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         username: root
         password: 123456
       # 浠庡簱鏁版嵁婧�
@@ -198,8 +200,8 @@
 token:
   # 浠ょ墝鑷畾涔夋爣璇�
   header: Authorization
-  # 浠ょ墝瀵嗛挜
-  secret: abcdefghijklmnopqrstuvwxyz
+  # 浠ょ墝瀵嗛挜 鏂扮増jwt瀵嗛挜闀垮害蹇呴』64浣嶄互涓�
+  secret: xpAVjhCjQDaDB7mjPAzMDSbQWXNu2zYkTdDNUsPMS5Xx8QMmQVYN7n74eZrYJxDJ
   # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
   expireTime: 450
 
@@ -254,3 +256,8 @@
 file:
   temp-dir: D:/ruoyi/temp/uploads   # 涓存椂鐩綍
   upload-dir: D:/ruoyi/prod/uploads # 姝e紡鐩綍
+  path: C:/Users/12631/Desktop/download/uploads # 涓婁紶鐩綍
+  urlPrefix: /common # 閾炬帴鍓嶇紑
+  domain: http://127.0.0.1:7003 # 鍩熷悕鍓嶇紑
+  expired: 120 # 杩囨湡鏃堕棿(鍗曚綅:鍒嗛挓)
+  useLimit: 10 # 浣跨敤娆℃暟
diff --git a/src/main/resources/vm/java/controller.java.vm b/src/main/resources/vm/java/controller.java.vm
index e9c5cb7..8f5565a 100644
--- a/src/main/resources/vm/java/controller.java.vm
+++ b/src/main/resources/vm/java/controller.java.vm
@@ -1,7 +1,7 @@
 package ${packageName}.controller;
 
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;

--
Gitblit v1.9.3