From 113cd73922b9b67c261c19c744e46eb2822d7b41 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期五, 14 十一月 2025 14:54:11 +0800
Subject: [PATCH] Merge branch 'prod' into dev_tide
---
src/main/java/com/ruoyi/warehouse/pojo/Warehouse.java | 62
src/main/resources/application-jsmy.yml | 219
src/main/java/com/ruoyi/sales/service/ShippingInfoService.java | 14
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java | 259
src/main/java/com/ruoyi/sales/controller/SalespersonManagementController.java | 65
src/main/java/com/ruoyi/sales/dto/ReceiptPaymentRecordDto.java | 61
src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java | 244
src/main/java/com/ruoyi/common/utils/OrderUtils.java | 55
src/main/resources/mapper/approve/FileSharingMapper.xml | 7
src/main/java/com/ruoyi/approve/service/impl/NotificationManagementServiceImpl.java | 24
src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java | 27
src/main/java/com/ruoyi/staff/pojo/StaffScheduling.java | 106
src/main/resources/mapper/sales/InvoiceLedgerMapper.xml | 2
src/main/java/com/ruoyi/device/controller/DeviceDefectRecordController.java | 51
src/main/java/com/ruoyi/warehouse/dto/DocumentationReturnManagementDto.java | 12
src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java | 10
src/main/resources/mapper/approve/RpaProcessAutomationMapper.xml | 19
src/main/resources/application-jsyny.yml | 219
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetUseDto.java | 21
src/main/java/com/ruoyi/production/dto/DaiDto.java | 110
src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java | 54
src/main/java/com/ruoyi/collaborativeApproval/service/DutyPlanService.java | 19
src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java | 77
src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java | 16
src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java | 29
src/main/java/com/ruoyi/inspectiontask/mapper/TimingTaskMapper.java | 17
src/main/java/com/ruoyi/account/controller/AccountExpenseController.java | 22
src/main/java/com/ruoyi/device/pojo/DeviceDefectRecord.java | 51
src/main/resources/mapper/warehouse/WarehouseGoodsShelvesMapper.xml | 50
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPlanController.java | 67
src/main/resources/mapper/oA/OaProjectPhaseTaskMapper.xml | 34
src/main/java/com/ruoyi/sales/mapper/SalesQuotationMapper.java | 14
src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java | 257
src/main/java/com/ruoyi/collaborativeApproval/service/impl/SealApplicationManagementServiceImpl.java | 22
src/main/resources/application-hxgy.yml | 219
src/main/java/com/ruoyi/sales/service/impl/SalesQuotationProductServiceImpl.java | 11
src/main/java/com/ruoyi/warehouse/pojo/DocumentationBorrowManagement.java | 129
pom.xml | 6
src/main/java/com/ruoyi/device/execl/DeviceMaintenanceExeclDto.java | 8
src/main/resources/mapper/collaborativeApproval/RulesRegulationsManagementMapper.xml | 31
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java | 10
src/main/resources/application-hysn.yml | 219
src/main/resources/mapper/inspectiontask/TimingTaskMapper.xml | 8
src/main/resources/mapper/sales/SalesQuotationProductMapper.xml | 15
src/main/java/com/ruoyi/sales/controller/PaymentShippingController.java | 70
src/main/resources/mapper/staff/HolidayApplicationMapper.xml | 7
src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java | 96
src/main/java/com/ruoyi/collaborativeApproval/mapper/SealApplicationManagementMapper.java | 14
src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java | 95
src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java | 58
src/main/java/com/ruoyi/approve/mapper/AnnualLeaveSettingMapper.java | 13
src/main/java/com/ruoyi/warehouse/controller/WarehouseController.java | 63
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingRoom.java | 98
src/main/java/com/ruoyi/equipmentenergyconsumption/mapper/ElectricityConsumptionAreaMapper.java | 15
src/main/java/com/ruoyi/equipmentenergyconsumption/controller/ElectricityConsumptionAreaController.java | 66
src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java | 16
src/main/resources/mapper/sales/ShippingInfoMapper.xml | 44
src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java | 19
src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java | 68
src/main/resources/mapper/collaborativeApproval/DutyPlanMapper.xml | 40
src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java | 21
src/main/java/com/ruoyi/warehouse/service/DocumentationFileService.java | 14
src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerRecordServiceImpl.java | 15
src/main/resources/mapper/system/SysUserMapper.xml | 22
src/main/java/com/ruoyi/inspectiontask/controller/TimingTaskController.java | 74
src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java | 9
src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java | 31
src/main/java/com/ruoyi/oA/service/OaProjectPhaseService.java | 21
src/main/java/com/ruoyi/staff/service/StaffSchedulingService.java | 20
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java | 13
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java | 116
src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java | 72
src/main/java/com/ruoyi/equipmentenergyconsumption/mapper/EnergyPeriodMapper.java | 12
src/main/java/com/ruoyi/collaborativeApproval/service/NoticeService.java | 17
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskScheduler.java | 239
src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java | 30
src/main/java/com/ruoyi/common/utils/excel/ConfigurableMergeStrategy.java | 29
src/main/resources/mapper/device/DeviceLedgerMapper.xml | 14
src/main/java/com/ruoyi/common/utils/excel/ExcelClassField.java | 77
src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java | 6
src/main/resources/application-tjxm.yml | 219
src/main/resources/mapper/approve/AnnualLeaveSettingMapper.xml | 15
src/main/java/com/ruoyi/basic/service/StorageBlobService.java | 3
src/main/java/com/ruoyi/device/mapper/DeviceLedgerMapper.java | 4
src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java | 8
src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java | 15
src/main/resources/mybatis/mybatis-config.xml | 1
src/main/resources/mapper/equipmentenergyconsumption/electricityConsumptionAreaMapper.xml | 27
src/main/java/com/ruoyi/common/enums/FileNameType.java | 5
src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java | 22
src/main/resources/mapper/approve/OvertimeSettingMapper.xml | 18
src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java | 15
src/main/resources/mapper/approve/WorkingHoursSettingMapper.xml | 15
src/main/java/com/ruoyi/inspectiontask/dto/QrCodeScanRecordDto.java | 20
src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java | 3
src/main/java/com/ruoyi/device/service/impl/DeviceDefectRecordServiceImpl.java | 67
src/main/java/com/ruoyi/account/service/AccountIncomeService.java | 4
src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java | 13
src/main/resources/mapper/warehouse/DocumentationBorrowManagementMapper.xml | 88
src/main/resources/application-tymk.yml | 219
src/main/java/com/ruoyi/inspectiontask/service/QrCodeScanRecordService.java | 20
src/main/java/com/ruoyi/dto/PageDto.java | 18
src/main/resources/static/report-template.docx | 0
src/main/java/com/ruoyi/officesupplies/mapper/OfficeSuppliesMapper.java | 23
src/main/resources/application-phmk.yml | 219
src/main/java/com/ruoyi/framework/config/SwaggerConfig.java | 4
src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java | 5
src/main/java/com/ruoyi/inspectiontask/service/impl/SpringContextHolder.java | 20
src/main/resources/mapper/collaborativeApproval/SealApplicationManagementMapper.xml | 21
src/main/resources/application-hsxny.yml | 219
src/main/java/com/ruoyi/warehouse/dto/WarehouseTreeDto.java | 12
src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml | 7
src/main/java/com/ruoyi/officesupplies/service/impl/OfficeSuppliesServiceImpl.java | 30
src/main/java/com/ruoyi/approve/mapper/OvertimeSettingMapper.java | 13
src/main/resources/application-mxsc.yml | 219
src/main/resources/application-bdsm.yml | 219
src/main/java/com/ruoyi/oA/dto/OaProjectPhaseDto.java | 12
src/main/java/com/ruoyi/device/pojo/DeviceLedger.java | 23
src/main/java/com/ruoyi/oA/controller/OaProjectPhaseController.java | 41
src/main/java/com/ruoyi/sales/service/impl/SalespersonManagementServiceImpl.java | 37
src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseReportDto.java | 9
src/main/java/com/ruoyi/common/utils/excel/ExcelUtils.java | 1039 ++
src/main/java/com/ruoyi/device/dto/DeviceDefectRecordDto.java | 14
src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java | 20
src/main/java/com/ruoyi/inspectiontask/mapper/QrCodeMapper.java | 11
src/main/java/com/ruoyi/lavorissue/pojo/LaborIssue.java | 172
src/main/java/com/ruoyi/account/controller/AccountIncomeController.java | 9
src/main/java/com/ruoyi/basic/pojo/SupplierManage.java | 12
src/main/java/com/ruoyi/basic/pojo/StorageAttachment.java | 4
src/main/resources/application-hbxm.yml | 219
src/main/java/com/ruoyi/collaborativeApproval/dto/NoticeDTO.java | 13
src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java | 10
src/main/java/com/ruoyi/oA/pojo/OaProjectPhase.java | 92
src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java | 2
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java | 168
src/main/java/com/ruoyi/home/service/HomeService.java | 3
src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java | 38
src/main/resources/application-nydl.yml | 219
src/main/java/com/ruoyi/approve/mapper/FileSharingMapper.java | 9
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java | 6
src/main/java/com/ruoyi/approve/pojo/RpaProcessAutomation.java | 65
src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java | 20
src/main/java/com/ruoyi/compensationperformance/pojo/CompensationPerformance.java | 1
src/main/java/com/ruoyi/oA/service/OaProjectPhaseTaskService.java | 17
src/main/java/com/ruoyi/procurementrecord/service/impl/InboundManagementServiceImpl.java | 29
src/main/java/com/ruoyi/approve/utils/ListToStringTypeHandler.java | 52
src/main/resources/mapper/procurementrecord/GasTankWarningMapper.xml | 23
src/main/java/com/ruoyi/collaborativeApproval/pojo/StaffContactsPersonal.java | 43
src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EnergyPeriodController.java | 84
src/main/java/com/ruoyi/oA/controller/OaProjectPhaseTaskController.java | 41
src/main/java/com/ruoyi/sales/service/SalesQuotationProductService.java | 8
src/main/java/com/ruoyi/common/utils/excel/CustomCellStyleHandler.java | 43
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java | 38
src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationTreeDto.java | 13
src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java | 49
src/main/java/com/ruoyi/project/common/CommonController.java | 20
src/main/java/com/ruoyi/device/controller/DeviceRepairController.java | 3
src/main/resources/application-zqhx.yml | 12
src/main/resources/application-zyrqCopy.yml | 219
src/main/java/com/ruoyi/sales/mapper/SalesQuotationProductMapper.java | 16
src/main/java/com/ruoyi/common/utils/excel/ExcelImport.java | 31
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetDraftMapper.java | 18
src/main/resources/mapper/warehouse/DocumentationMapper.xml | 87
src/main/java/com/ruoyi/approve/mapper/WorkingHoursSettingMapper.java | 13
src/main/resources/application-zyrq.yml | 219
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetDraft.java | 132
src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesMapper.java | 29
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java | 179
src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java | 73
src/main/java/com/ruoyi/collaborativeApproval/dto/StaffContactsPersonalDTO.java | 17
src/main/java/com/ruoyi/customervisits/mapper/CustomerVisitsMapper.java | 11
src/main/java/com/ruoyi/warehouse/pojo/Documentation.java | 175
src/main/java/com/ruoyi/equipmentenergyconsumption/service/ElectricityConsumptionAreaService.java | 16
src/main/java/com/ruoyi/inspectiontask/controller/QrCodeController.java | 56
src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementPriceManagementMapper.java | 23
src/main/java/com/ruoyi/waterrecord/mapper/WaterRecordMapper.java | 21
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingApplicationVo.java | 16
src/main/java/com/ruoyi/staff/vo/SearchSchedulingVo.java | 27
src/main/resources/mapper/customervisits/CustomerVisitsMapper.xml | 5
src/main/java/com/ruoyi/approve/service/impl/RpaProcessAutomationServiceImpl.java | 21
src/main/java/com/ruoyi/officesupplies/pojo/OfficeSupplies.java | 160
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java | 78
src/main/java/com/ruoyi/sales/service/PaymentShippingService.java | 22
src/main/java/com/ruoyi/oA/mapper/OaProjectPhaseMapper.java | 18
src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java | 113
src/main/java/com/ruoyi/sales/service/SalesQuotationService.java | 17
src/main/java/com/ruoyi/procurementrecord/dto/Details.java | 16
src/main/resources/mapper/collaborativeApproval/MeetingRoomMapper.xml | 28
src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java | 16
src/main/java/com/ruoyi/collaborativeApproval/mapper/ReadingStatusMapper.java | 9
src/main/java/com/ruoyi/warehouse/dto/DocumentationBorrowManagementDto.java | 16
src/main/java/com/ruoyi/inspectiontask/dto/QrCodeDto.java | 8
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java | 50
src/main/java/com/ruoyi/collaborativeApproval/service/RulesRegulationsManagementService.java | 11
src/main/java/com/ruoyi/staff/service/HolidayApplicationService.java | 10
src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java | 87
src/main/java/com/ruoyi/approve/pojo/OvertimeSetting.java | 79
src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java | 30
src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java | 7
src/main/java/com/ruoyi/warehouse/service/DocumentClassificationService.java | 20
src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java | 35
src/main/java/com/ruoyi/basic/controller/SupplierManageController.java | 9
src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementController.java | 87
src/main/java/com/ruoyi/warehouse/service/impl/DocumentClassificationServiceImpl.java | 97
src/main/java/com/ruoyi/basic/mapper/StorageAttachmentMapper.java | 2
src/main/java/com/ruoyi/collaborativeApproval/service/impl/DutyPlanServiceImpl.java | 41
src/main/java/com/ruoyi/collaborativeApproval/pojo/DutyPlan.java | 125
src/main/java/com/ruoyi/customervisits/service/impl/CustomerVisitsServiceImpl.java | 35
src/main/java/com/ruoyi/collaborativeApproval/controller/DutyPlanController.java | 63
src/main/java/com/ruoyi/warehouse/controller/DocumentClassificationController.java | 52
src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java | 2
src/main/resources/mapper/sales/PaymentShippingMapper.xml | 19
src/main/resources/application-hcmy.yml | 219
src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java | 23
src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java | 19
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java | 13
src/main/java/com/ruoyi/device/execl/DeviceRepairExeclDto.java | 8
src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java | 365
src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java | 14
src/main/java/com/ruoyi/staff/service/impl/HolidayApplicationServiceImpl.java | 22
src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java | 60
src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml | 1
src/main/java/com/ruoyi/account/service/AccountExpenseService.java | 8
src/main/java/com/ruoyi/sales/pojo/SalesQuotation.java | 69
src/main/java/com/ruoyi/inspectiontask/mapper/QrCodeScanRecordMapper.java | 11
src/main/java/com/ruoyi/home/controller/HomeController.java | 3
src/main/resources/application-cjny.yml | 219
src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesController.java | 54
src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeServiceImpl.java | 54
src/main/java/com/ruoyi/warehouse/service/DocumentationService.java | 40
src/main/resources/application-jyhj.yml | 219
src/main/java/com/ruoyi/inspectiontask/controller/QrCodeScanRecordController.java | 56
src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java | 61
src/main/java/com/ruoyi/production/controller/SalesLedgerSchedulingController.java | 29
src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesRowcolController.java | 32
src/main/resources/mapper/waterrecord/WaterRecordMapper.xml | 17
src/main/java/com/ruoyi/approve/controller/HolidaySettingsController.java | 173
src/main/java/com/ruoyi/device/service/DeviceDefectRecordService.java | 15
src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java | 26
src/main/java/com/ruoyi/oA/dto/OaProjectDto.java | 26
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java | 7
src/main/java/com/ruoyi/sales/dto/SalesQuotationDto.java | 14
src/main/java/com/ruoyi/inspectiontask/service/impl/QuartzConfig.java | 50
src/main/java/com/ruoyi/production/service/SalesLedgerSchedulingService.java | 2
src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java | 17
src/main/java/com/ruoyi/inspectiontask/dto/TimingTaskDto.java | 12
src/main/java/com/ruoyi/procurementrecord/mapper/InboundManagementMapper.java | 23
src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java | 91
src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java | 3
src/main/java/com/ruoyi/warehouse/service/WarehouseService.java | 24
src/main/resources/mapper/approve/KnowledgeBaseMapper.xml | 21
src/main/java/com/ruoyi/approve/service/RpaProcessAutomationService.java | 10
src/main/java/com/ruoyi/oA/mapper/OaProjectMapper.java | 27
src/main/resources/application-mqsp.yml | 219
src/main/java/com/ruoyi/common/enums/StorageAttachmentRecordType.java | 5
src/main/java/com/ruoyi/sales/pojo/PaymentShipping.java | 83
src/main/resources/mapper/warehouse/WarehouseGoodsShelvesRowcolMapper.xml | 41
src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java | 17
src/main/java/com/ruoyi/sales/mapper/PaymentShippingMapper.java | 23
src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/EnergyPeriod.java | 59
src/main/resources/application-hckx.yml | 219
src/main/resources/application-hxsj.yml | 219
src/main/resources/application-dhdc.yml | 219
src/main/java/com/ruoyi/warehouse/mapper/WarehouseMapper.java | 26
src/main/resources/application-hsmy.yml | 219
src/main/resources/mapper/sales/ReceiptPaymentMapper.xml | 23
src/main/resources/mapper/warehouse/DocumentClassificationMapper.xml | 23
src/main/java/com/ruoyi/warehouse/mapper/DocumentationFileMapper.java | 17
src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml | 13
src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/ElectricityConsumptionArea.java | 43
src/main/java/com/ruoyi/account/controller/AccountFileController.java | 6
src/main/resources/application-xyhb.yml | 219
src/main/java/com/ruoyi/collaborativeApproval/pojo/RulesRegulationsManagement.java | 111
src/main/java/com/ruoyi/warehouse/mapper/DocumentClassificationMapper.java | 20
src/main/java/com/ruoyi/inspectiontask/StorageAttachmentRecordType.java | 23
src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java | 16
src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java | 22
src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml | 16
src/main/java/com/ruoyi/approve/mapper/HolidaySettingsMapper.java | 13
src/main/java/com/ruoyi/collaborativeApproval/pojo/ReadingStatus.java | 70
src/main/resources/application-zjyj.yml | 12
src/main/resources/mapper/warehouse/WarehouseMapper.xml | 42
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java | 450
src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsDto.java | 15
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseServiceImpl.java | 175
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingRoomVo.java | 23
src/main/resources/application-cmny.yml | 219
src/main/java/com/ruoyi/approve/pojo/AnnualLeaveSetting.java | 70
src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesRowcolDto.java | 15
src/main/java/com/ruoyi/approve/controller/NotificationManagementController.java | 82
src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java | 21
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingMinutes.java | 79
src/main/java/com/ruoyi/sales/service/impl/PaymentShippingServiceImpl.java | 29
src/main/java/com/ruoyi/oA/service/OaProjectService.java | 24
src/main/resources/mapper/sales/SalespersonManagementMapper.xml | 19
src/main/java/com/ruoyi/approve/mapper/RpaProcessAutomationMapper.java | 16
src/main/resources/mapper/sales/SalesQuotationMapper.xml | 19
src/main/resources/mapper/collaborativeApproval/NoticeMapper.xml | 21
src/main/java/com/ruoyi/collaborativeApproval/service/StaffContactsPersonalService.java | 11
src/main/java/com/ruoyi/collaborativeApproval/mapper/StaffContactsPersonalMapper.java | 14
src/main/java/com/ruoyi/lavorissue/dto/StatisticsLaborIssue.java | 30
src/main/java/com/ruoyi/equipmentenergyconsumption/dto/EquipmentEnergyConsumptionDto.java | 111
src/main/java/com/ruoyi/collaborativeApproval/controller/SealApplicationManagementController.java | 63
src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesService.java | 27
src/main/java/com/ruoyi/oA/service/impl/OaProjectPhaseTaskServiceImpl.java | 33
src/main/java/com/ruoyi/procurementrecord/controller/GasTankWarningController.java | 44
src/main/resources/application-bhmy.yml | 219
src/main/java/com/ruoyi/procurementrecord/mapper/GasTankWarningMapper.java | 13
src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java | 150
src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java | 27
src/main/java/com/ruoyi/collaborativeApproval/controller/StaffContactsPersonalController.java | 42
src/main/java/com/ruoyi/oA/pojo/OaProject.java | 107
src/main/java/com/ruoyi/procurementrecord/pojo/GasTankWarning.java | 158
src/main/resources/mapper/approve/ApproveProcessMapper.xml | 3
src/main/java/com/ruoyi/collaborativeApproval/pojo/SealApplicationManagement.java | 72
src/main/java/com/ruoyi/quality/controller/QualityInspectController.java | 12
src/main/java/com/ruoyi/aftersalesservice/dto/AfterSalesServiceDto.java | 68
src/main/java/com/ruoyi/officesupplies/service/OfficeSuppliesService.java | 22
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingItem.java | 24
src/main/java/com/ruoyi/approve/service/HolidaySettingsService.java | 10
src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java | 69
src/main/java/com/ruoyi/device/mapper/DeviceDefectRecordMapper.java | 14
src/main/resources/mapper/equipmentenergyconsumption/EnergyPeriodMapper.xml | 30
src/main/java/com/ruoyi/warehouse/service/impl/DocumentationFileServiceImpl.java | 26
src/main/java/com/ruoyi/common/utils/MinioUtils.java | 132
src/main/java/com/ruoyi/staff/pojo/PersonalAttendanceRecords.java | 52
src/main/java/com/ruoyi/warehouse/pojo/DocumentationReturnManagement.java | 130
src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml | 4
src/main/java/com/ruoyi/approve/service/IApproveProcessService.java | 5
src/main/resources/application-hhkj.yml | 219
src/main/java/com/ruoyi/collaborativeApproval/dto/DutyPlanDTO.java | 22
src/main/java/com/ruoyi/approve/service/impl/HolidaySettingsServiceImpl.java | 21
src/main/java/com/ruoyi/warehouse/dto/DocumentationDto.java | 20
src/main/java/com/ruoyi/common/utils/excel/ExcelExport.java | 28
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java | 10
src/main/java/com/ruoyi/approve/mapper/OnlineMeetingMapper.java | 9
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementPlan.java | 105
src/main/java/com/ruoyi/sales/mapper/SalespersonManagementMapper.java | 17
src/main/java/com/ruoyi/sales/pojo/SalespersonManagement.java | 79
src/main/java/com/ruoyi/collaborativeApproval/mapper/NoticeMapper.java | 20
src/main/java/com/ruoyi/oA/service/impl/OaProjectPhaseServiceImpl.java | 62
src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java | 67
src/main/java/com/ruoyi/procurementrecord/controller/InboundManagementController.java | 64
src/main/java/com/ruoyi/equipmentenergyconsumption/service/impl/EnergyPeriodServiceImpl.java | 24
src/main/java/com/ruoyi/quality/service/IQualityInspectService.java | 4
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetApplication.java | 140
src/main/resources/mapper/procurementrecord/InboundManagementMapper.xml | 16
src/main/java/com/ruoyi/waterrecord/service/WaterRecordService.java | 25
src/main/resources/mapper/collaborativeApproval/MeetApplicationMapper.xml | 80
src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java | 64
src/main/java/com/ruoyi/lavorissue/mapper/LavorIssueMapper.java | 27
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java | 19
src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java | 40
src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java | 3
src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java | 11
src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java | 12
src/main/resources/mapper/warehouse/DocumentationFileMapper.xml | 17
src/main/java/com/ruoyi/staff/mapper/PersonalAttendanceRecordsMapper.java | 9
src/main/resources/mapper/device/DeviceMaintenanceMapper.xml | 35
src/main/java/com/ruoyi/approve/pojo/OnlineMeeting.java | 80
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java | 14
src/main/resources/mapper/approve/NotificationManagementMapper.xml | 19
src/main/java/com/ruoyi/collaborativeApproval/service/impl/RulesRegulationsManagementServiceImpl.java | 21
src/main/java/com/ruoyi/procurementrecord/service/InboundManagementService.java | 22
src/main/java/com/ruoyi/oA/pojo/OaProjectPhaseTask.java | 117
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementPriceManagement.java | 122
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetApplicationMapper.java | 26
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 44
src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java | 14
src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesRowcolServiceImpl.java | 63
src/main/java/com/ruoyi/purchase/dto/VatDto.java | 5
src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelvesRowcol.java | 79
src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java | 38
src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java | 9
src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java | 36
src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java | 21
src/main/resources/mapper/procurementrecord/ProcurementPlanMapper.xml | 16
src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java | 2
src/main/java/com/ruoyi/approve/pojo/WorkingHoursSetting.java | 79
src/main/java/com/ruoyi/basic/controller/CustomerController.java | 7
src/main/java/com/ruoyi/procurementrecord/service/ProcurementPlanService.java | 25
src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java | 61
src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesRowcolService.java | 23
src/main/java/com/ruoyi/approve/pojo/KnowledgeBase.java | 86
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingUseVo.java | 19
src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java | 14
src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingDto.java | 3
src/main/resources/application-prod.yml | 1
src/main/resources/application-wdsy.yml | 12
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingDraftVo.java | 23
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 54
src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java | 1
src/main/java/com/ruoyi/staff/mapper/StaffSchedulingMapper.java | 23
src/main/resources/application-jlsn.yml | 219
src/main/java/com/ruoyi/approve/pojo/FileSharing.java | 69
src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java | 194
src/main/java/com/ruoyi/approve/pojo/HolidaySettings.java | 80
src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationDto.java | 12
src/main/java/com/ruoyi/equipmentenergyconsumption/service/impl/ElectricityConsumptionAreaServiceImpl.java | 80
src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java | 148
src/main/java/com/ruoyi/sales/pojo/SalesQuotationProduct.java | 49
src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java | 91
src/main/java/com/ruoyi/collaborativeApproval/service/impl/StaffContactsPersonalServiceImpl.java | 22
src/main/java/com/ruoyi/inspectiontask/service/QrCodeService.java | 19
src/main/java/com/ruoyi/collaborativeApproval/pojo/Notice.java | 88
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java | 44
src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java | 3
src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java | 12
src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java | 27
src/main/java/com/ruoyi/collaborativeApproval/controller/NoticeController.java | 63
src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml | 40
src/main/java/com/ruoyi/inspectiontask/pojo/QrCode.java | 63
src/main/resources/mapper/procurementrecord/ProcurementPriceManagementMapper.xml | 16
src/main/java/com/ruoyi/approve/service/NotificationManagementService.java | 10
src/main/java/com/ruoyi/inspectiontask/pojo/TimingTask.java | 108
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java | 8
src/main/resources/mapper/officesupplies/OfficeSuppliesMapper.xml | 19
src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java | 9
src/main/resources/application-rzny.yml | 219
src/main/java/com/ruoyi/inspectiontask/pojo/QrCodeScanRecord.java | 73
src/main/java/com/ruoyi/procurementrecord/pojo/InboundManagement.java | 73
src/main/java/com/ruoyi/approve/pojo/NotificationManagement.java | 88
src/main/java/com/ruoyi/staff/controller/HolidayApplicationController.java | 44
src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java | 92
src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java | 48
src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java | 62
src/main/java/com/ruoyi/sales/service/SalespersonManagementService.java | 22
src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java | 56
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java | 113
src/main/resources/mapper/approve/OnlineMeetingMapper.xml | 7
src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java | 74
src/main/java/com/ruoyi/staff/mapper/HolidayApplicationMapper.java | 9
src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesRowcolMapper.java | 25
src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java | 2
src/main/resources/mapper/oA/OaProjectMapper.xml | 32
src/main/java/com/ruoyi/oA/mapper/OaProjectPhaseTaskMapper.java | 18
src/main/java/com/ruoyi/collaborativeApproval/service/impl/NoticeServiceImpl.java | 56
src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java | 72
src/main/resources/mapper/warehouse/DocumentationReturnManagementMapper.xml | 57
src/main/java/com/ruoyi/inspectiontask/mapper/InspectionTaskMapper.java | 11
src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java | 47
src/main/resources/mapper/collaborativeApproval/StaffContactsPersonalMapper.xml | 27
src/main/java/com/ruoyi/collaborativeApproval/service/SealApplicationManagementService.java | 10
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java | 15
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPriceManagementController.java | 73
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingMinutesMapper.java | 18
src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java | 8
src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelves.java | 79
src/main/java/com/ruoyi/procurementrecord/service/ProcurementPriceManagementService.java | 26
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java | 41
src/main/resources/application-jjxm.yml | 219
src/main/java/com/ruoyi/basic/pojo/StorageBlob.java | 47
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingSimpleDto.java | 23
src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java | 2
src/main/resources/application-demo.yml | 18
src/main/resources/mapper/account/AccountFileMapper.xml | 3
src/main/java/com/ruoyi/equipmentenergyconsumption/service/EnergyPeriodService.java | 10
src/main/java/com/ruoyi/customervisits/service/CustomerVisitsService.java | 14
src/main/java/com/ruoyi/warehouse/mapper/DocumentationReturnManagementMapper.java | 33
src/main/java/com/ruoyi/collaborativeApproval/mapper/RulesRegulationsManagementMapper.java | 14
src/main/java/com/ruoyi/oA/controller/OaProjectController.java | 76
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java | 3
src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java | 10
src/main/java/com/ruoyi/approve/mapper/NotificationManagementMapper.java | 13
src/main/java/com/ruoyi/warehouse/dto/WarehouseDto.java | 13
src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/EquipmentEnergyConsumption.java | 5
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java | 15
src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesDto.java | 12
src/main/java/com/ruoyi/customervisits/controller/CustomerVisitsController.java | 50
src/main/java/com/ruoyi/collaborativeApproval/dto/RulesRegulationsManagementDTO.java | 16
src/main/resources/mapper/collaborativeApproval/ReadingStatusMapper.xml | 6
src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml | 11
src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml | 7
src/main/resources/mapper/device/DeviceDefectRecordMapper.xml | 26
src/main/java/com/ruoyi/warehouse/pojo/DocumentClassification.java | 67
src/main/java/com/ruoyi/waterrecord/pojo/WaterRecord.java | 135
src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java | 23
src/main/resources/mapper/purchase/ProductRecordMapper.xml | 1
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java | 7
src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SpareParts.java | 59
src/main/resources/mapper/approve/HolidaySettingsMapper.xml | 17
src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementPlanMapper.java | 22
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingRoomMapper.java | 18
src/main/resources/application-mkzs.yml | 219
src/main/java/com/ruoyi/collaborativeApproval/dto/SealApplicationManagementDTO.java | 11
src/main/resources/mapper/lavorissue/LavorIssueMapper.xml | 78
src/main/java/com/ruoyi/collaborativeApproval/mapper/DutyPlanMapper.java | 20
src/main/java/com/ruoyi/waterrecord/controller/WaterRecordController.java | 91
src/main/resources/mapper/staff/StaffSchedulingMapper.xml | 52
src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java | 77
src/main/java/com/ruoyi/inspectiontask/service/TimingTaskService.java | 23
src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java | 8
src/main/resources/mapper/system/SysUserDeptMapper.xml | 2
src/main/java/com/ruoyi/oA/service/impl/OaProjectServiceImpl.java | 69
src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java | 34
src/main/java/com/ruoyi/procurementrecord/service/GasTankWarningService.java | 15
src/main/resources/mapper/oA/OaProjectPhaseMapper.xml | 27
src/main/resources/mapper/collaborativeApproval/MeetingMinutesMapper.xml | 24
src/main/java/com/ruoyi/staff/pojo/HolidayApplication.java | 58
src/main/java/com/ruoyi/waterrecord/service/impl/WaterRecordServiceImpl.java | 52
src/main/java/com/ruoyi/inspectiontask/service/InspectionTaskService.java | 20
src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingProcessDto.java | 5
src/main/resources/application-qlmc.yml | 219
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetSummaryDto.java | 24
src/main/java/com/ruoyi/equipmentenergyconsumption/dto/ElectricityConsumptionAreaTreeDto.java | 22
src/main/resources/application-hbkj.yml | 219
src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java | 73
src/main/java/com/ruoyi/customervisits/pojo/CustomerVisits.java | 115
src/main/java/com/ruoyi/staff/dto/StaffSchedulingDto.java | 85
src/main/resources/mapper/collaborativeApproval/MeetDraftMapper.xml | 34
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementUpdateDto.java | 2
511 files changed, 27,103 insertions(+), 247 deletions(-)
diff --git a/pom.xml b/pom.xml
index 6a0e071..695a16c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -294,6 +294,12 @@
<version>1.12.2</version>
</dependency>
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>easyexcel</artifactId>
+ <version>4.0.3</version>
+ </dependency>
+
</dependencies>
<build>
diff --git a/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java b/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java
index 44d1dbd..a6d771f 100644
--- a/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java
+++ b/src/main/java/com/ruoyi/account/controller/AccountExpenseController.java
@@ -11,6 +11,8 @@
import com.ruoyi.dto.DateQueryDto;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
@@ -24,6 +26,7 @@
*/
@RestController
@RequestMapping("/account/accountExpense")
+@Api(tags = "璐㈠姟绠$悊--鏀嚭绠$悊")
public class AccountExpenseController {
@Resource
@@ -39,6 +42,7 @@
* @return
*/
@PostMapping("/add")
+ @ApiOperation("鏂板")
public AjaxResult add(@RequestBody AccountExpense accountExpense) {
accountExpense.setInputTime(new Date());
LoginUser loginUser = SecurityUtils.getLoginUser();
@@ -52,6 +56,7 @@
* @return
*/
@DeleteMapping("/del")
+ @ApiOperation("鍒犻櫎")
public AjaxResult delQualityInspect(@RequestBody List<Integer> ids) {
if(CollectionUtils.isEmpty(ids)){
return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
@@ -66,6 +71,7 @@
* @return
*/
@PostMapping("/update")
+ @ApiOperation("淇敼")
public AjaxResult update(@RequestBody AccountExpense accountExpense) {
return AjaxResult.success(accountExpenseService.updateById(accountExpense));
}
@@ -77,6 +83,7 @@
* @return
*/
@GetMapping("/listPage")
+ @ApiOperation("鍒嗛〉鏌ヨ")
public AjaxResult accountExpenseListPage(Page page, AccountExpense accountExpense) {
return AjaxResult.success(accountExpenseService.accountExpenseListPage(page, accountExpense));
}
@@ -87,6 +94,7 @@
* @return
*/
@GetMapping("/{id}")
+ @ApiOperation("璇︽儏")
public AjaxResult accountExpenseDetail(@PathVariable("id") Integer id) {
return AjaxResult.success(accountExpenseService.getById(id));
}
@@ -97,6 +105,7 @@
* @param accountExpense
*/
@PostMapping("/export")
+ @ApiOperation("瀵煎嚭")
public void accountExpenseExport(HttpServletResponse response,AccountExpense accountExpense) {
accountExpenseService.accountExpenseExport(response, accountExpense);
}
@@ -107,8 +116,19 @@
* @return
*/
@GetMapping("/report/forms")
+ @ApiOperation("璐㈠姟鎶ヨ〃鍥捐〃鏌ヨ")
public AjaxResult report(DateQueryDto dateQueryDto) {
return AjaxResult.success(accountExpenseService.report(dateQueryDto));
+ }
+
+ /**
+ * 璐㈠姟鎶ヨ〃-璐㈠姟鍒嗘瀽
+ * @return
+ */
+ @GetMapping("/report/analysis")
+ @ApiOperation("璐㈠姟鎶ヨ〃-璐㈠姟鍒嗘瀽")
+ public AjaxResult analysis() {
+ return AjaxResult.success(accountExpenseService.analysis());
}
/**
@@ -117,6 +137,7 @@
* @return
*/
@GetMapping("/report/income")
+ @ApiOperation("璐㈠姟鎶ヨ〃鍥捐〃鏀跺叆骞村害鏌ヨ")
public AjaxResult reportIncome() {
return AjaxResult.success(accountIncomeService.reportIncome());
}
@@ -127,6 +148,7 @@
* @return
*/
@GetMapping("/report/expense")
+ @ApiOperation("璐㈠姟鎶ヨ〃鍥捐〃鏀嚭骞村害鏌ヨ")
public AjaxResult reportExpense() {
return AjaxResult.success(accountExpenseService.reportExpense());
}
diff --git a/src/main/java/com/ruoyi/account/controller/AccountFileController.java b/src/main/java/com/ruoyi/account/controller/AccountFileController.java
index 3757bb2..130e7c8 100644
--- a/src/main/java/com/ruoyi/account/controller/AccountFileController.java
+++ b/src/main/java/com/ruoyi/account/controller/AccountFileController.java
@@ -6,6 +6,8 @@
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.quality.pojo.QualityInspectFile;
import com.ruoyi.quality.service.IQualityInspectFileService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
@@ -17,6 +19,7 @@
*/
@RestController
@RequestMapping("/account/accountFile")
+@Api(tags = "璐㈠姟闄勪欢")
public class AccountFileController {
@@ -30,6 +33,7 @@
* @return
*/
@PostMapping("/add")
+ @ApiOperation("鏂板")
public AjaxResult add(@RequestBody AccountFile accountFile) {
return AjaxResult.success(accountFileService.save(accountFile));
}
@@ -40,6 +44,7 @@
* @return
*/
@DeleteMapping("/del")
+ @ApiOperation("鍒犻櫎")
public AjaxResult delAccountFile(@RequestBody List<Integer> ids) {
if(CollectionUtils.isEmpty(ids)){
return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
@@ -55,6 +60,7 @@
* @return
*/
@GetMapping("/listPage")
+ @ApiOperation("鍒嗛〉鏌ヨ")
public AjaxResult accountFileListPage(Page page, AccountFile accountFile) {
return AjaxResult.success(accountFileService.accountFileListPage(page, accountFile));
}
diff --git a/src/main/java/com/ruoyi/account/controller/AccountIncomeController.java b/src/main/java/com/ruoyi/account/controller/AccountIncomeController.java
index 68e50f7..c6a24d7 100644
--- a/src/main/java/com/ruoyi/account/controller/AccountIncomeController.java
+++ b/src/main/java/com/ruoyi/account/controller/AccountIncomeController.java
@@ -14,6 +14,8 @@
import com.ruoyi.quality.service.IQualityInspectFileService;
import com.ruoyi.quality.service.IQualityInspectParamService;
import com.ruoyi.quality.service.IQualityInspectService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
@@ -27,6 +29,7 @@
*/
@RestController
@RequestMapping("/account/accountIncome")
+@Api(tags = "璐㈠姟绠$悊--鏀跺叆绠$悊")
public class AccountIncomeController {
@Resource
@@ -39,6 +42,7 @@
* @return
*/
@PostMapping("/add")
+ @ApiOperation("鏂板")
public AjaxResult add(@RequestBody AccountIncome accountIncome) {
accountIncome.setInputTime(new Date());
LoginUser loginUser = SecurityUtils.getLoginUser();
@@ -52,6 +56,7 @@
* @return
*/
@DeleteMapping("/del")
+ @ApiOperation("鍒犻櫎")
public AjaxResult delQualityInspect(@RequestBody List<Integer> ids) {
if(CollectionUtils.isEmpty(ids)){
return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
@@ -66,6 +71,7 @@
* @return
*/
@PostMapping("/update")
+ @ApiOperation("淇敼")
public AjaxResult update(@RequestBody AccountIncome accountIncome) {
return AjaxResult.success(accountIncomeService.updateById(accountIncome));
}
@@ -77,6 +83,7 @@
* @return
*/
@GetMapping("/listPage")
+ @ApiOperation("鍒嗛〉鏌ヨ")
public AjaxResult accountIncomeListPage(Page page, AccountIncome accountIncome) {
return AjaxResult.success(accountIncomeService.accountIncomeListPage(page, accountIncome));
}
@@ -87,6 +94,7 @@
* @return
*/
@GetMapping("/{id}")
+ @ApiOperation("璇︽儏")
public AjaxResult accountIncomeDetail(@PathVariable("id") Integer id) {
return AjaxResult.success(accountIncomeService.getById(id));
}
@@ -97,6 +105,7 @@
* @param accountIncome
*/
@PostMapping("/export")
+ @ApiOperation("瀵煎嚭")
public void accountIncomeExport(HttpServletResponse response,AccountIncome accountIncome) {
accountIncomeService.accountIncomeExport(response, accountIncome);
}
diff --git a/src/main/java/com/ruoyi/account/service/AccountExpenseService.java b/src/main/java/com/ruoyi/account/service/AccountExpenseService.java
index 71fd214..7c91b2a 100644
--- a/src/main/java/com/ruoyi/account/service/AccountExpenseService.java
+++ b/src/main/java/com/ruoyi/account/service/AccountExpenseService.java
@@ -7,10 +7,12 @@
import com.ruoyi.account.dto.AccountDto2;
import com.ruoyi.account.dto.AccountDto3;
import com.ruoyi.account.pojo.AccountExpense;
+import com.ruoyi.account.pojo.AccountIncome;
import com.ruoyi.dto.DateQueryDto;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
+import java.util.Map;
public interface AccountExpenseService extends IService<AccountExpense> {
@@ -21,4 +23,10 @@
AccountDto report(DateQueryDto dateQueryDto);
List<AccountDto3> reportExpense();
+
+ Map<String,List<String>> analysis();
+
+ AccountExpense getByInvoiceNumber(String purchaseContractNumber);
+
+ List<AccountExpense> getByInvoiceNumberList(String purchaseContractNumber);
}
diff --git a/src/main/java/com/ruoyi/account/service/AccountIncomeService.java b/src/main/java/com/ruoyi/account/service/AccountIncomeService.java
index fc30cda..037a0ea 100644
--- a/src/main/java/com/ruoyi/account/service/AccountIncomeService.java
+++ b/src/main/java/com/ruoyi/account/service/AccountIncomeService.java
@@ -18,4 +18,8 @@
void accountIncomeExport(HttpServletResponse response, AccountIncome accountIncome);
List<AccountDto3> reportIncome();
+
+ AccountIncome getByInvoiceNumber(String purchaseContractNumber);
+
+ List<AccountIncome> getByInvoiceNumberList(String purchaseContractNumber);
}
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 37c2f7c..a3c775f 100644
--- a/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java
+++ b/src/main/java/com/ruoyi/account/service/impl/AccountExpenseServiceImpl.java
@@ -22,12 +22,10 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
+import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
@AllArgsConstructor
@Service
@@ -115,5 +113,55 @@
return accountDto3s;
}
+ @Override
+ public Map<String, List<String>> analysis() {
+ // 鑾峰彇鏈懆鐨勬椂闂磋寖鍥�
+ LocalDate startOfWeek = LocalDate.now().with(DayOfWeek.MONDAY);
+ LocalDate endOfWeek = LocalDate.now().with(DayOfWeek.SUNDAY);
+ Map<String, List<String>> result = new HashMap<>();
+ List<String> days = new ArrayList<>();
+ List<String> totalIncomeList = new ArrayList<>();
+ List<String> totalExpenseList = new ArrayList<>();
+ List<String> netIncomeList = new ArrayList<>();
+ // 鏍规嵁鏃堕棿鑼冨洿寰幆鏌ヨ姣忎竴澶╃殑鎬绘敹鍏ワ紝鎬绘敮鍑�,鍑�鏀跺叆锛堟�绘敹鍏�-鎬绘敮鍑猴級
+ for (LocalDate date = startOfWeek; date.isBefore(endOfWeek) || date.isEqual(endOfWeek); date = date.plusDays(1)) {
+ BigDecimal totalIncome = accountIncomeMapper.selectList(Wrappers.<AccountIncome>lambdaQuery()
+ .eq(AccountIncome::getInputTime, date.toString()))
+ .stream()
+ .map(AccountIncome::getIncomeMoney)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal totalExpense = accountExpenseMapper.selectList(Wrappers.<AccountExpense>lambdaQuery()
+ .eq(AccountExpense::getInputTime, date.toString()))
+ .stream()
+ .map(AccountExpense::getExpenseMoney)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal netIncome = totalIncome.subtract(totalExpense);
+ days.add(date.toString());
+ totalIncomeList.add(totalIncome.toString());
+ totalExpenseList.add(totalExpense.toString());
+ netIncomeList.add(netIncome.toString());
+ }
+ result.put("days", days); // 澶�
+ result.put("totalIncome", totalIncomeList); // 鏀跺叆
+ result.put("totalExpense", totalExpenseList); // 鏀嚭
+ result.put("netIncome", netIncomeList); // 鍑�鏀跺叆
+
+ return result;
+ }
+
+ @Override
+ public AccountExpense getByInvoiceNumber(String purchaseContractNumber) {
+ return accountExpenseMapper.selectOne(Wrappers.<AccountExpense>lambdaQuery()
+ .eq(AccountExpense::getInvoiceNumber, purchaseContractNumber));
+ }
+
+ @Override
+ public List<AccountExpense> getByInvoiceNumberList(String purchaseContractNumber) {
+ return accountExpenseMapper.selectList(Wrappers.<AccountExpense>lambdaQuery()
+ .eq(AccountExpense::getInvoiceNumber, purchaseContractNumber));
+ }
+
}
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 66fb6e4..199e399 100644
--- a/src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/account/service/impl/AccountIncomeServiceImpl.java
@@ -1,6 +1,7 @@
package com.ruoyi.account.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -74,4 +75,17 @@
}
return accountDto3s;
}
+
+ @Override
+ public AccountIncome getByInvoiceNumber(String purchaseContractNumber) {
+ AccountIncome accountIncome = accountIncomeMapper.selectOne(new LambdaQueryWrapper<AccountIncome>()
+ .eq(AccountIncome::getInvoiceNumber, purchaseContractNumber));
+ return accountIncome;
+ }
+
+ @Override
+ public List<AccountIncome> getByInvoiceNumberList(String purchaseContractNumber) {
+ return accountIncomeMapper.selectList(new LambdaQueryWrapper<AccountIncome>()
+ .eq(AccountIncome::getInvoiceNumber, purchaseContractNumber));
+ }
}
diff --git a/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java b/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java
index af0f61b..fee8947 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java
@@ -2,9 +2,11 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.aftersalesservice.dto.AfterSalesServiceDto;
import com.ruoyi.aftersalesservice.pojo.AfterSalesService;
import com.ruoyi.aftersalesservice.service.AfterSalesServiceService;
import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
@@ -12,12 +14,16 @@
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.purchase.dto.VatDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -44,6 +50,38 @@
return AjaxResult.success(listPage);
}
+ @Log(title = "鍞悗鏈嶅姟-鍙嶉鐧昏", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ @ApiOperation("鍞悗鏈嶅姟-鍙嶉鐧昏")
+ public void export(HttpServletResponse response) {
+ Page page = new Page(-1,-1);
+ AfterSalesService afterSalesService = new AfterSalesService();
+ IPage<AfterSalesService> listPage = afterSalesServiceService.listPage(page, afterSalesService);
+ List<AfterSalesServiceDto> list = new ArrayList<>();
+ listPage.getRecords().forEach(item -> {
+ AfterSalesServiceDto dto = new AfterSalesServiceDto();
+ BeanUtils.copyProperties(item, dto);
+ dto.setStatusName(item.getStatus().toString());
+ list.add(dto);
+ });
+ ExcelUtil<AfterSalesServiceDto> util = new ExcelUtil<AfterSalesServiceDto>(AfterSalesServiceDto.class);
+ util.exportExcel(response, list , "鍙嶉鐧昏");
+ }
+
+ @Log(title = "鍞悗鏈嶅姟-鍞悗澶勭悊", businessType = BusinessType.EXPORT)
+ @PostMapping("/exportTwo")
+ @ApiOperation("鍞悗鏈嶅姟-鍞悗澶勭悊")
+ public void exportTwo(HttpServletResponse response) {
+ Page page = new Page(-1,-1);
+ AfterSalesService afterSalesService = new AfterSalesService();
+ IPage<AfterSalesService> listPage = afterSalesServiceService.listPage(page, afterSalesService);
+ listPage.getRecords().forEach(item -> {
+ item.setStatusName(item.getStatus().toString());
+ });
+ ExcelUtil<AfterSalesService> util = new ExcelUtil<AfterSalesService>(AfterSalesService.class);
+ util.exportExcel(response, listPage.getRecords() , "鍞悗澶勭悊");
+ }
+
@PostMapping("/add")
@ApiOperation("鍞悗鏈嶅姟-鏂板")
@Log(title = "鍞悗鏈嶅姟-鏂板", businessType = BusinessType.INSERT)
diff --git a/src/main/java/com/ruoyi/aftersalesservice/dto/AfterSalesServiceDto.java b/src/main/java/com/ruoyi/aftersalesservice/dto/AfterSalesServiceDto.java
new file mode 100644
index 0000000..8a7c70b
--- /dev/null
+++ b/src/main/java/com/ruoyi/aftersalesservice/dto/AfterSalesServiceDto.java
@@ -0,0 +1,68 @@
+package com.ruoyi.aftersalesservice.dto;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/11/3 11:14
+ */
+@Data
+public class AfterSalesServiceDto {
+
+ /**
+ * 鐘舵�� 1-寰呭鐞� 2-宸插鐞�
+ */
+ @ApiModelProperty("鐘舵�� 1-寰呭鐞� 2-宸插鐞�")
+ private Integer status;
+
+
+ @Excel(name = "鐘舵��", readConverterExp = "1=寰呭鐞�,2=宸插鐞�")
+ private String statusName;
+
+ /**
+ * 鐧昏浜哄悕绉�
+ */
+ @ApiModelProperty("鐧昏浜哄悕绉�")
+ @Excel(name = "鐧昏浜哄悕绉�")
+ private String checkNickName;
+
+
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ @ApiModelProperty("瀹㈡埛鍚嶇О")
+ @Excel(name = "瀹㈡埛鍚嶇О")
+ private String customerName;
+
+ /**
+ * 闂鎻忚堪
+ */
+ @ApiModelProperty("闂鎻忚堪")
+ @Excel(name = "闂鎻忚堪")
+ private String proDesc;
+
+
+ /**
+ * 鍙嶉鏃ユ湡
+ */
+ @ApiModelProperty("鍙嶉鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鍙嶉鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date feedbackDate;
+
+
+ @ApiModelProperty("鍏宠仈閮ㄩ棬")
+ @Excel(name = "鍏宠仈閮ㄩ棬")
+ private String deptName;
+
+}
diff --git a/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java b/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java
index f8c459d..67ccd01 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -32,6 +33,10 @@
@ApiModelProperty("鐘舵�� 1-寰呭鐞� 2-宸插鐞�")
private Integer status;
+
+ @Excel(name = "鐘舵��", readConverterExp = "1=寰呭鐞�,2=宸插鐞�")
+ private String statusName;
+
/**
* 鐧昏浜�
*/
@@ -42,6 +47,7 @@
* 鐧昏浜哄悕绉�
*/
@ApiModelProperty("鐧昏浜哄悕绉�")
+ @Excel(name = "鐧昏浜哄悕绉�")
private String checkNickName;
/**
@@ -54,24 +60,28 @@
* 澶勭悊浜哄悕绉�
*/
@ApiModelProperty("澶勭悊浜哄悕绉�")
+ @Excel(name = "澶勭悊浜哄悕绉�")
private String disposeNickName;
/**
* 瀹㈡埛鍚嶇О
*/
@ApiModelProperty("瀹㈡埛鍚嶇О")
+ @Excel(name = "瀹㈡埛鍚嶇О")
private String customerName;
/**
* 闂鎻忚堪
*/
@ApiModelProperty("闂鎻忚堪")
+ @Excel(name = "闂鎻忚堪")
private String proDesc;
/**
* 澶勭悊缁撴灉
*/
@ApiModelProperty("澶勭悊缁撴灉")
+ @Excel(name = "澶勭悊缁撴灉")
private String disRes;
/**
@@ -80,6 +90,7 @@
@ApiModelProperty("鍙嶉鏃ユ湡")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鍙嶉鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
private Date feedbackDate;
/**
@@ -88,6 +99,7 @@
@ApiModelProperty("澶勭悊鏃ユ湡")
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "澶勭悊鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
private Date disDate;
diff --git a/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java b/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
index 9dcda81..6fb9986 100644
--- a/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
+++ b/src/main/java/com/ruoyi/approve/controller/ApproveProcessController.java
@@ -1,23 +1,31 @@
package com.ruoyi.approve.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.pojo.AccountExpense;
import com.ruoyi.approve.pojo.ApproveProcess;
import com.ruoyi.approve.service.IApproveProcessService;
import com.ruoyi.approve.vo.ApproveGetAndUpdateVo;
import com.ruoyi.approve.vo.ApproveProcessVO;
import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.system.domain.SysDept;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
import java.text.ParseException;
import java.util.List;
@RestController
@RequestMapping("/approveProcess")
+@Api(tags = "瀹℃壒")
public class ApproveProcessController {
@GetMapping("/test")
@@ -50,7 +58,8 @@
*/
@PostMapping("/add")
@Transactional(rollbackFor = Exception.class)
- public AjaxResult add(@RequestBody ApproveProcessVO approveProcessVO) throws ParseException {
+ @ApiOperation(value = "娣诲姞瀹℃壒")
+ public AjaxResult add(@RequestBody ApproveProcessVO approveProcessVO) throws Exception {
if (approveProcessVO == null) {
return AjaxResult.warn("鍙傛暟涓嶈兘涓虹┖");
}
@@ -65,6 +74,7 @@
* @return
*/
@GetMapping("/get")
+ @ApiOperation(value = "瀹℃壒璇︽儏")
public AjaxResult get(ApproveGetAndUpdateVo approveGetAndUpdateVo){
if (approveGetAndUpdateVo.getId() == null || approveGetAndUpdateVo.getId().isEmpty()) {
return AjaxResult.warn("鍙傛暟涓嶈兘涓虹┖");
@@ -79,7 +89,8 @@
*/
@PostMapping("/update")
@Transactional(rollbackFor = Exception.class)
- public AjaxResult update(@RequestBody ApproveGetAndUpdateVo approveGetAndUpdateVo) {
+ @ApiOperation(value = "鏇存柊瀹℃壒")
+ public AjaxResult update(@RequestBody ApproveGetAndUpdateVo approveGetAndUpdateVo) throws IOException {
if (approveGetAndUpdateVo == null) {
return AjaxResult.warn("鍙傛暟涓嶈兘涓虹┖");
}
@@ -91,6 +102,7 @@
* @return
*/
@GetMapping("/list")
+ @ApiOperation(value = "鑾峰彇瀹℃壒鍒楄〃")
public AjaxResult list(Page page, ApproveProcess approveProcess) {
return AjaxResult.success(approveProcessService.listAll(page, approveProcess));
}
@@ -101,6 +113,7 @@
* @return
*/
@DeleteMapping("/deleteIds")
+ @ApiOperation(value = "鍒犻櫎瀹℃壒")
@Transactional(rollbackFor = Exception.class)
public AjaxResult deleteIds(@RequestBody Long[] ids) {
if (ids == null || ids.length == 0) {
@@ -109,4 +122,64 @@
approveProcessService.delApprove(ids);
return AjaxResult.success("鎿嶄綔鎴愬姛");
}
+
+ @ApiOperation(value = "鍏嚭绠$悊瀵煎嚭")
+ @PostMapping("/exportOne")
+ public void exportOne(HttpServletResponse response) {
+ List<ApproveProcess> accountExpenses = approveProcessService.list(new LambdaQueryWrapper<ApproveProcess>()
+ .eq(ApproveProcess::getApproveDelete, 0)
+ .eq(ApproveProcess::getApproveType, 1));
+ ExcelUtil<ApproveProcess> util = new ExcelUtil<ApproveProcess>(ApproveProcess.class);
+ util.exportExcel(response, accountExpenses, "鍏嚭绠$悊瀵煎嚭");
+ }
+
+ @ApiOperation(value = "璇峰亣绠$悊瀵煎嚭")
+ @PostMapping("/exportTwo")
+ public void exportTwo(HttpServletResponse response) {
+ List<ApproveProcess> accountExpenses = approveProcessService.list(new LambdaQueryWrapper<ApproveProcess>()
+ .eq(ApproveProcess::getApproveDelete, 0)
+ .eq(ApproveProcess::getApproveType, 2));
+ ExcelUtil<ApproveProcess> util = new ExcelUtil<ApproveProcess>(ApproveProcess.class);
+ util.exportExcel(response, accountExpenses, "璇峰亣绠$悊瀵煎嚭");
+ }
+
+ @ApiOperation(value = "鍑哄樊绠$悊瀵煎嚭")
+ @PostMapping("/exportThree")
+ public void exportThree(HttpServletResponse response) {
+ List<ApproveProcess> accountExpenses = approveProcessService.list(new LambdaQueryWrapper<ApproveProcess>()
+ .eq(ApproveProcess::getApproveDelete, 0)
+ .eq(ApproveProcess::getApproveType, 3));
+ ExcelUtil<ApproveProcess> util = new ExcelUtil<ApproveProcess>(ApproveProcess.class);
+ util.exportExcel(response, accountExpenses, "鍑哄樊绠$悊瀵煎嚭");
+ }
+
+ @ApiOperation(value = "鎶ラ攢绠$悊瀵煎嚭")
+ @PostMapping("/exportFour")
+ public void exportFour(HttpServletResponse response) {
+ List<ApproveProcess> accountExpenses = approveProcessService.list(new LambdaQueryWrapper<ApproveProcess>()
+ .eq(ApproveProcess::getApproveDelete, 0)
+ .eq(ApproveProcess::getApproveType, 4));
+ ExcelUtil<ApproveProcess> util = new ExcelUtil<ApproveProcess>(ApproveProcess.class);
+ util.exportExcel(response, accountExpenses, "鎶ラ攢绠$悊瀵煎嚭");
+ }
+
+ @ApiOperation(value = "閲囪喘鐢宠瀵煎嚭")
+ @PostMapping("/exportFive")
+ public void exportFive(HttpServletResponse response) {
+ List<ApproveProcess> accountExpenses = approveProcessService.list(new LambdaQueryWrapper<ApproveProcess>()
+ .eq(ApproveProcess::getApproveDelete, 0)
+ .eq(ApproveProcess::getApproveType, 5));
+ ExcelUtil<ApproveProcess> util = new ExcelUtil<ApproveProcess>(ApproveProcess.class);
+ util.exportExcel(response, accountExpenses, "閲囪喘鐢宠瀵煎嚭");
+ }
+
+ @ApiOperation(value = "鍗忓悓瀹℃壒瀵煎嚭")
+ @PostMapping("/exportZero")
+ public void exportZero(HttpServletResponse response) {
+ List<ApproveProcess> accountExpenses = approveProcessService.list(new LambdaQueryWrapper<ApproveProcess>()
+ .eq(ApproveProcess::getApproveDelete, 0)
+ .eq(ApproveProcess::getApproveType, 0));
+ ExcelUtil<ApproveProcess> util = new ExcelUtil<ApproveProcess>(ApproveProcess.class);
+ util.exportExcel(response, accountExpenses, "鍗忓悓瀹℃壒瀵煎嚭");
+ }
}
diff --git a/src/main/java/com/ruoyi/approve/controller/HolidaySettingsController.java b/src/main/java/com/ruoyi/approve/controller/HolidaySettingsController.java
new file mode 100644
index 0000000..2ecf29f
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/controller/HolidaySettingsController.java
@@ -0,0 +1,173 @@
+package com.ruoyi.approve.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.mapper.AnnualLeaveSettingMapper;
+import com.ruoyi.approve.mapper.OvertimeSettingMapper;
+import com.ruoyi.approve.mapper.WorkingHoursSettingMapper;
+import com.ruoyi.approve.pojo.*;
+import com.ruoyi.approve.service.HolidaySettingsService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/holidaySettings")
+@AllArgsConstructor
+public class HolidaySettingsController {
+ @Autowired
+ private HolidaySettingsService holidaySettingsService;
+ @Autowired
+ private AnnualLeaveSettingMapper annualLeaveSettingMapper;
+ @Autowired
+ private OvertimeSettingMapper overtimeSettingMapper;
+ @Autowired
+ private WorkingHoursSettingMapper workingHoursSettingMapper;
+
+ /**銆�
+ * 鑾峰彇鍋囨湡璁剧疆鍒楄〃
+ * @return
+ */
+ @GetMapping("/getList")
+ public AjaxResult getList(@RequestParam(defaultValue = "1") long current,
+ @RequestParam(defaultValue = "50") long size, HolidaySettings holidaySettings) {
+ Page page = new Page(current, size);
+ return AjaxResult.success(holidaySettingsService.listpage(page,holidaySettings));
+ }
+ /**銆�
+ * 澧炴坊
+ * @return
+ */
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody HolidaySettings holidaySettings){
+ return AjaxResult.success(holidaySettingsService.save(holidaySettings));
+ }
+ /**
+ * 鏇存柊
+ * @return
+ */
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody HolidaySettings holidaySettings){
+ return AjaxResult.success(holidaySettingsService.updateById(holidaySettings));
+ }
+ /**
+ * 鍒犻櫎
+ * @return
+ */
+ @DeleteMapping("/delete")
+ public AjaxResult delete(@RequestBody List<Long> ids){
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(holidaySettingsService.removeByIds(ids));
+ }
+ /**銆�
+ * 鑾峰彇骞村亣瑙勫垯鍒楄〃
+ * @return
+ */
+ @GetMapping("/getAnnualLeaveSettingList")
+ public AjaxResult getAnnualLeaveSettingList(@RequestParam(defaultValue = "1") long current,
+ @RequestParam(defaultValue = "50") long size, AnnualLeaveSetting annualLeaveSetting) {
+ Page page = new Page(current, size);
+ return AjaxResult.success(annualLeaveSettingMapper.listPage(page,annualLeaveSetting));
+ }
+ /**銆�
+ * 澧炴坊骞村亣瑙勫垯
+ * @return
+ */
+ @PostMapping("/addAnnualLeaveSetting")
+ public AjaxResult addAnnualLeaveSetting(@RequestBody AnnualLeaveSetting annualLeaveSetting){
+ return AjaxResult.success(annualLeaveSettingMapper.insert(annualLeaveSetting));
+ }
+ /**銆�
+ * 鏇存柊骞村亣瑙勫垯
+ * @return
+ */
+ @PostMapping("/updateAnnualLeaveSetting")
+ public AjaxResult updateAnnualLeaveSetting(@RequestBody AnnualLeaveSetting annualLeaveSetting){
+ return AjaxResult.success(annualLeaveSettingMapper.updateById(annualLeaveSetting));
+ }
+ /**銆�
+ * 鍒犻櫎骞村亣瑙勫垯
+ * @return
+ */
+ @DeleteMapping("/deleteAnnualLeaveSetting")
+ public AjaxResult deleteAnnualLeaveSetting(@RequestBody List<Long> ids){
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(annualLeaveSettingMapper.deleteBatchIds(ids));
+ }
+
+ /**銆�
+ * 鑾峰彇鍔犵彮瑙勫垯鍒楄〃
+ * @return
+ */
+ @GetMapping("/getOvertimeSettingList")
+ public AjaxResult getOvertimeSettingList(@RequestParam(defaultValue = "1") long current,
+ @RequestParam(defaultValue = "50") long size, OvertimeSetting overtimeSetting) {
+ Page page = new Page(current, size);
+ return AjaxResult.success(overtimeSettingMapper.listPage(page,overtimeSetting));
+ }
+ /**銆�
+ * 澧炴坊鍔犵彮瑙勫垯
+ * @return
+ */
+ @PostMapping("/addOvertimeSetting")
+ public AjaxResult addOvertimeSetting(@RequestBody OvertimeSetting overtimeSetting){
+ return AjaxResult.success(overtimeSettingMapper.insert(overtimeSetting));
+ }
+ /**銆�
+ * 鏇存柊鍔犵彮瑙勫垯
+ * @return
+ */
+ @PostMapping("/updateOvertimeSetting")
+ public AjaxResult updateOvertimeSetting(@RequestBody OvertimeSetting overtimeSetting){
+ return AjaxResult.success(overtimeSettingMapper.updateById(overtimeSetting));
+ }
+ /**銆�
+ * 鍒犻櫎鍔犵彮瑙勫垯
+ * @return
+ */
+ @DeleteMapping("/deleteOvertimeSetting")
+ public AjaxResult deleteOvertimeSetting(@RequestBody List<Long> ids){
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(overtimeSettingMapper.deleteBatchIds(ids));
+ }
+ /**銆�
+ * 鑾峰彇涓婄彮鏃堕棿璁剧疆-鐝埗瑙勫垯鍒楄〃
+ * @return
+ */
+ @GetMapping("/getWorkingHoursSettingList")
+ public AjaxResult getWorkingHoursSettingList(@RequestParam(defaultValue = "1") long current,
+ @RequestParam(defaultValue = "50") long size, WorkingHoursSetting workingHoursSetting) {
+ Page page = new Page(current, size);
+ return AjaxResult.success(workingHoursSettingMapper.listPage(page,workingHoursSetting));
+ }
+ /**銆�
+ * 澧炴坊鐝埗瑙勫垯
+ * @return
+ */
+ @PostMapping("/addWorkingHoursSetting")
+ public AjaxResult addWorkingHoursSetting(@RequestBody WorkingHoursSetting workingHoursSetting){
+ return AjaxResult.success(workingHoursSettingMapper.insert(workingHoursSetting));
+ }
+ /**銆�
+ * 鏇存柊鐝埗瑙勫垯
+ * @return
+ */
+ @PostMapping("/updateWorkingHoursSetting")
+ public AjaxResult updateWorkingHoursSetting(@RequestBody WorkingHoursSetting workingHoursSetting){
+ return AjaxResult.success(workingHoursSettingMapper.updateById(workingHoursSetting));
+ }
+ /**銆�
+ * 鍒犻櫎鐝埗瑙勫垯
+ * @return
+ */
+ @DeleteMapping("/deleteWorkingHoursSetting")
+ public AjaxResult deleteWorkingHoursSetting(@RequestBody List<Long> ids){
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(workingHoursSettingMapper.deleteBatchIds(ids));
+ }
+
+
+}
diff --git a/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java b/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java
new file mode 100644
index 0000000..b6ede4a
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java
@@ -0,0 +1,72 @@
+package com.ruoyi.approve.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.mapper.KnowledgeBaseMapper;
+import com.ruoyi.approve.pojo.KnowledgeBase;
+import com.ruoyi.approve.pojo.RpaProcessAutomation;
+import com.ruoyi.approve.service.KnowledgeBaseService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@RestController
+@RequestMapping("/knowledgeBase")
+@AllArgsConstructor
+@Api(tags = "鐭ヨ瘑搴撶鐞�")
+public class KnowledgeBaseController {
+ @Autowired
+ private KnowledgeBaseService knowledgeBaseService;
+
+ /**銆�
+ * 鑾峰彇鍒楄〃
+ * @return
+ */
+ @GetMapping("/getList")
+ public AjaxResult getList(@RequestParam(defaultValue = "1") long current,
+ @RequestParam(defaultValue = "10") long size, KnowledgeBase knowledgeBase) {
+ Page page = new Page(current, size);
+ return AjaxResult.success(knowledgeBaseService.listpage(page,knowledgeBase));
+ }
+ /**銆�
+ * 澧炴坊
+ * @return
+ */
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody KnowledgeBase knowledgeBase){
+ return AjaxResult.success(knowledgeBaseService.save(knowledgeBase));
+ }
+ /**
+ * 鏇存柊
+ * @return
+ */
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody KnowledgeBase knowledgeBase){
+ return AjaxResult.success(knowledgeBaseService.updateById(knowledgeBase));
+ }
+ /**
+ * 鍒犻櫎
+ * @return
+ */
+ @DeleteMapping("/delete")
+ public AjaxResult delete(@RequestBody List<Long> ids){
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(knowledgeBaseService.removeByIds(ids));
+ }
+
+ @ApiOperation(value = "鐭ヨ瘑搴撶鐞嗗鍑�")
+ @PostMapping("/export")
+ public void export(HttpServletResponse response) {
+ List<KnowledgeBase> accountExpenses = knowledgeBaseService.list();
+ ExcelUtil<KnowledgeBase> util = new ExcelUtil<KnowledgeBase>(KnowledgeBase.class);
+ util.exportExcel(response, accountExpenses, "鐭ヨ瘑搴撶鐞嗗鍑�");
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/approve/controller/NotificationManagementController.java b/src/main/java/com/ruoyi/approve/controller/NotificationManagementController.java
new file mode 100644
index 0000000..e3ac566
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/controller/NotificationManagementController.java
@@ -0,0 +1,82 @@
+package com.ruoyi.approve.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.mapper.FileSharingMapper;
+import com.ruoyi.approve.mapper.OnlineMeetingMapper;
+import com.ruoyi.approve.pojo.FileSharing;
+import com.ruoyi.approve.pojo.NotificationManagement;
+import com.ruoyi.approve.pojo.OnlineMeeting;
+import com.ruoyi.approve.service.NotificationManagementService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/notificationManagement")
+@AllArgsConstructor
+public class NotificationManagementController {
+ @Autowired
+ private NotificationManagementService notificationManagementService ;
+ @Autowired
+ private OnlineMeetingMapper onlineMeetingMapper;
+ @Autowired
+ private FileSharingMapper fileSharingMapper;
+ /**銆�
+ * 鑾峰彇鍒楄〃
+ * @return
+ */
+ @GetMapping("/getList")
+ public AjaxResult getList(@RequestParam(defaultValue = "1") long current,
+ @RequestParam(defaultValue = "50") long size, NotificationManagement notificationManagement) {
+ Page page = new Page(current, size);
+ return AjaxResult.success(notificationManagementService.listpage(page,notificationManagement));
+ }
+ /**銆�
+ * 澧炴坊
+ * @return
+ */
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody NotificationManagement notificationManagement){
+ return AjaxResult.success(notificationManagementService.save(notificationManagement));
+ }
+ /**
+ * 鏇存柊
+ * @return
+ */
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody NotificationManagement notificationManagement){
+ return AjaxResult.success(notificationManagementService.updateById(notificationManagement));
+ }
+ /**
+ * 鍒犻櫎
+ * @return
+ */
+ @DeleteMapping("/delete")
+ public AjaxResult delete(@RequestBody List<Long> ids){
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(notificationManagementService.removeByIds(ids));
+ }
+ /**
+ *鏂板浼氳
+ * @param onlineMeeting
+ * @return
+ */
+ @PostMapping("/addOnlineMeeting")
+ public AjaxResult addOnlineMeeting(@RequestBody OnlineMeeting onlineMeeting){
+ return AjaxResult.success(onlineMeetingMapper.insert(onlineMeeting));
+ }
+ /**
+ *鏂板鏂囦欢鍏变韩
+ *
+ */
+ @PostMapping("/addFileSharing")
+ public AjaxResult addFileSharing(@RequestBody FileSharing fileSharing){
+ return AjaxResult.success(fileSharingMapper.insert(fileSharing));
+ }
+}
+
+
diff --git a/src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java b/src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java
new file mode 100644
index 0000000..e8c35f9
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java
@@ -0,0 +1,74 @@
+package com.ruoyi.approve.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.ApproveProcess;
+import com.ruoyi.approve.pojo.RpaProcessAutomation;
+import com.ruoyi.approve.service.RpaProcessAutomationService;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.security.LoginUser;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.project.system.domain.SysDept;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@RestController
+@RequestMapping("/rpaProcessAutomation")
+@AllArgsConstructor
+@Api(tags = "RPA娴佺▼鑷姩鍖�")
+public class RpaProcessAutomationController {
+ @Autowired
+ private RpaProcessAutomationService rpaProcessAutomationService;
+ /**銆�
+ * 鑾峰彇鍒楄〃
+ * @return
+ */
+ @GetMapping("/getList")
+ public AjaxResult getList(@RequestParam(defaultValue = "1") long current,
+ @RequestParam(defaultValue = "100") long size, RpaProcessAutomation rpaProcessAutomation) {
+ Page page = new Page(current, size);
+ return AjaxResult.success(rpaProcessAutomationService.listpage(page,rpaProcessAutomation));
+ }
+ /**銆�
+ * 澧炴坊
+ * @return
+ */
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody RpaProcessAutomation rpaProcessAutomation){
+ return AjaxResult.success(rpaProcessAutomationService.save(rpaProcessAutomation));
+ }
+ /**
+ * 鏇存柊
+ * @return
+ */
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody RpaProcessAutomation rpaProcessAutomation){
+ return AjaxResult.success(rpaProcessAutomationService.updateById(rpaProcessAutomation));
+ }
+ /**
+ * 鍒犻櫎
+ * @return
+ */
+ @DeleteMapping("/delete")
+ public AjaxResult delete(@RequestBody List<Long> ids){
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(rpaProcessAutomationService.removeByIds(ids));
+ }
+
+ @ApiOperation(value = "RPA娴佺▼鑷姩鍖栧鍑�")
+ @PostMapping("/export")
+ public void export(HttpServletResponse response) {
+ List<RpaProcessAutomation> accountExpenses = rpaProcessAutomationService.list();
+ ExcelUtil<RpaProcessAutomation> util = new ExcelUtil<RpaProcessAutomation>(RpaProcessAutomation.class);
+ util.exportExcel(response, accountExpenses, "RPA娴佺▼鑷姩鍖栧鍑�");
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/AnnualLeaveSettingMapper.java b/src/main/java/com/ruoyi/approve/mapper/AnnualLeaveSettingMapper.java
new file mode 100644
index 0000000..034f752
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/AnnualLeaveSettingMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.AnnualLeaveSetting;
+import io.lettuce.core.dynamic.annotation.Param;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface AnnualLeaveSettingMapper extends BaseMapper<AnnualLeaveSetting> {
+ IPage<AnnualLeaveSetting> listPage(Page page,@Param("annualLeaveSetting") AnnualLeaveSetting annualLeaveSetting);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/FileSharingMapper.java b/src/main/java/com/ruoyi/approve/mapper/FileSharingMapper.java
new file mode 100644
index 0000000..d8f311e
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/FileSharingMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.approve.pojo.FileSharing;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface FileSharingMapper extends BaseMapper<FileSharing> {
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/HolidaySettingsMapper.java b/src/main/java/com/ruoyi/approve/mapper/HolidaySettingsMapper.java
new file mode 100644
index 0000000..a37485d
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/HolidaySettingsMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.HolidaySettings;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface HolidaySettingsMapper extends BaseMapper<HolidaySettings> {
+ IPage<HolidaySettings> listpage(Page page,@Param("holidaySettings") HolidaySettings holidaySettings);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java b/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java
new file mode 100644
index 0000000..adae509
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.KnowledgeBase;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface KnowledgeBaseMapper extends BaseMapper<KnowledgeBase> {
+ IPage<KnowledgeBase> listpage(Page page, KnowledgeBase knowledgeBase);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/NotificationManagementMapper.java b/src/main/java/com/ruoyi/approve/mapper/NotificationManagementMapper.java
new file mode 100644
index 0000000..defede2
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/NotificationManagementMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.NotificationManagement;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface NotificationManagementMapper extends BaseMapper<NotificationManagement> {
+ IPage<NotificationManagement> listpage(Page<NotificationManagement> page,@Param("notificationManagement") NotificationManagement notificationManagement);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/OnlineMeetingMapper.java b/src/main/java/com/ruoyi/approve/mapper/OnlineMeetingMapper.java
new file mode 100644
index 0000000..fe7aa38
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/OnlineMeetingMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.approve.pojo.OnlineMeeting;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface OnlineMeetingMapper extends BaseMapper<OnlineMeeting> {
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/OvertimeSettingMapper.java b/src/main/java/com/ruoyi/approve/mapper/OvertimeSettingMapper.java
new file mode 100644
index 0000000..ec564db
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/OvertimeSettingMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.OvertimeSetting;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.data.repository.query.Param;
+
+@Mapper
+public interface OvertimeSettingMapper extends BaseMapper<OvertimeSetting> {
+ IPage<OvertimeSetting> listPage(Page<OvertimeSetting> page,@Param("overtimeSetting") OvertimeSetting overtimeSetting);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/RpaProcessAutomationMapper.java b/src/main/java/com/ruoyi/approve/mapper/RpaProcessAutomationMapper.java
new file mode 100644
index 0000000..e5f8769
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/RpaProcessAutomationMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.RpaProcessAutomation;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface RpaProcessAutomationMapper extends BaseMapper<RpaProcessAutomation> {
+
+
+ IPage<RpaProcessAutomation> listpage(Page page,@Param("rpaProcessAutomation")RpaProcessAutomation rpaProcessAutomation);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/WorkingHoursSettingMapper.java b/src/main/java/com/ruoyi/approve/mapper/WorkingHoursSettingMapper.java
new file mode 100644
index 0000000..b5dad41
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/WorkingHoursSettingMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.WorkingHoursSetting;
+import io.lettuce.core.dynamic.annotation.Param;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WorkingHoursSettingMapper extends BaseMapper<WorkingHoursSetting> {
+ IPage<WorkingHoursSetting> listPage(Page page,@Param("workingHoursSetting") WorkingHoursSetting workingHoursSetting);
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/AnnualLeaveSetting.java b/src/main/java/com/ruoyi/approve/pojo/AnnualLeaveSetting.java
new file mode 100644
index 0000000..2097b30
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/AnnualLeaveSetting.java
@@ -0,0 +1,70 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("annual_leave_setting")
+public class AnnualLeaveSetting implements Serializable {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鍛樺伐绫诲瀷
+ */
+ private String employeeType;
+ /**
+ * 宸ヤ綔骞撮檺
+ */
+ private String workYears;
+ /**
+ * 骞村亣澶╂暟
+ */
+ private Integer annualDays;
+ /**
+ * 鏈�澶у彲缁撹浆澶╂暟
+ */
+ private Integer maxCarryOver;
+ /**
+ * 鐘舵��
+ */
+ private String status;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鏇存柊浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
index 02e9f45..c1114bd 100644
--- a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
+++ b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -3,9 +3,12 @@
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
+import java.util.List;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.sales.pojo.CommonFile;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -24,10 +27,14 @@
@TableId(type = IdType.AUTO)
private Long id;
+ @TableField(exist = false)
+ private List<CommonFile> commonFileList;
+
/**
* 娴佺▼缂栧彿
*/
@ApiModelProperty(value = "娴佺▼缂栧彿")
+ @Excel(name = "娴佺▼缂栧彿")
private String approveId;
/**
@@ -38,6 +45,8 @@
/**
* 鐢宠浜哄悕绉�
*/
+ @ApiModelProperty(value = "鐢宠浜哄悕绉�")
+ @Excel(name = "鐢宠浜�")
private String approveUserName;
/**
@@ -49,6 +58,7 @@
* 鐢宠閮ㄩ棬鍚嶇О
*/
@ApiModelProperty(value = "鐢宠閮ㄩ棬鍚嶇О")
+ @Excel(name = "鐢宠閮ㄩ棬")
private String approveDeptName;
/**
@@ -65,6 +75,7 @@
* 鐢宠鍘熷洜
*/
@ApiModelProperty(value = "鐢宠鍘熷洜")
+ @Excel(name = "瀹℃壒浜嬬敱")
private String approveReason;
/**
@@ -75,6 +86,8 @@
/**
* 褰撳墠瀹℃壒鐢ㄦ埛鍚嶇О
*/
+ @ApiModelProperty(value = "褰撳墠瀹℃壒浜�")
+ @Excel(name = "褰撳墠瀹℃壒浜�")
private String approveUserCurrentName;
/**
@@ -82,18 +95,22 @@
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "鐢宠鏃ユ湡")
+ @Excel(name = "鐢宠鏃ユ湡" ,dateFormat = "yyyy-MM-dd")
private Date approveTime;
/**
* 瀹℃壒瀹屾垚鏃堕棿
*/
@JsonFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "瀹℃壒瀹屾垚鏃堕棿")
+ @Excel(name = "缁撴潫鏃ユ湡" ,dateFormat = "yyyy-MM-dd")
private Date approveOverTime;
/**
* 瀹℃壒鐘舵�侊細0寰呭鏍革紝1瀹℃牳涓紝2瀹℃牳瀹屾垚 3瀹℃牳鏈�氳繃 4宸查噸鏂版彁浜�
*/
@ApiModelProperty(value = "瀹℃壒鐘舵�侊細0寰呭鏍革紝1瀹℃牳涓紝2瀹℃牳瀹屾垚 3瀹℃牳鏈�氳繃 4宸查噸鏂版彁浜�")
+ @Excel(name = "瀹℃壒鐘舵��", readConverterExp = "0=寰呭鏍�,1=瀹℃牳涓�,2=瀹℃牳瀹屾垚,3=瀹℃牳鏈�氳繃,4=宸查噸鏂版彁浜�")
private Integer approveStatus;
/**
diff --git a/src/main/java/com/ruoyi/approve/pojo/FileSharing.java b/src/main/java/com/ruoyi/approve/pojo/FileSharing.java
new file mode 100644
index 0000000..9c84034
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/FileSharing.java
@@ -0,0 +1,69 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.ListToStringTypeHandler;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+@TableName("file_sharing")
+public class FileSharing implements Serializable {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鍏变韩鏍囬
+ */
+ private String title;
+ /**
+ * 涓婁紶鏂囦欢
+ */
+// private String files;
+ @TableField(value = "files",typeHandler = ListToStringTypeHandler.class)
+ private List<String> files;
+ /**
+ * 鎺ユ敹閮ㄩ棬
+ */
+ @TableField(value = "departments",typeHandler = ListToStringTypeHandler.class)
+ private List<String> departments;
+ /**
+ * 鍏变韩鎻忚堪
+ */
+ private String description;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鏇存柊浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/HolidaySettings.java b/src/main/java/com/ruoyi/approve/pojo/HolidaySettings.java
new file mode 100644
index 0000000..f3d9506
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/HolidaySettings.java
@@ -0,0 +1,80 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.ListToStringTypeHandler;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@TableName("holiday_settings")
+public class HolidaySettings implements Serializable {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鍋囨湡鍚嶇О
+ */
+ private String name;
+ /**
+ * 鍋囨湡绫诲瀷
+ */
+ private String type;
+ /**
+ * 寮�濮嬫棩鏈�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate startDate;
+ /**
+ * 缁撴潫鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate endDate;
+ /**
+ * 澶╂暟
+ */
+ private Integer days;
+ /**
+ * 鐘舵��
+ */
+ private String status;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鏇存柊浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/KnowledgeBase.java b/src/main/java/com/ruoyi/approve/pojo/KnowledgeBase.java
new file mode 100644
index 0000000..a066e06
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/KnowledgeBase.java
@@ -0,0 +1,86 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("knowledge_base")
+public class KnowledgeBase implements Serializable {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鐭ヨ瘑鏍囬
+ */
+ @Excel(name = "鐭ヨ瘑鏍囬")
+ private String title;
+ /**
+ * 鐭ヨ瘑绫诲瀷
+ */
+ @Excel(name = "鐭ヨ瘑绫诲瀷",readConverterExp = "contract=鍚堝悓鐗规壒,approval=瀹℃壒妗堜緥,solution=瑙e喅鏂规,experience=缁忛獙鎬荤粨,guide=鎿嶄綔鎸囧崡")
+ private String type;
+ /**
+ * 閫傜敤鍦烘櫙
+ */
+ @Excel(name = "閫傜敤鍦烘櫙")
+ private String scenario;
+ /**
+ * 瑙e喅鏁堢巼
+ */
+ @Excel(name = "瑙e喅鏁堢巼",readConverterExp = "low=杞诲井鎻愬崌,medium=涓�鑸彁鍗�,high=鏄捐憲鎻愬崌")
+ private String efficiency;
+ /**
+ * 闂鎻忚堪
+ */
+ private String problem;
+ /**
+ * 瑙e喅鏂规
+ */
+ private String solution;
+ /**
+ * 鍏抽敭瑕佺偣
+ */
+ private String keyPoints;
+ /**
+ * 鍒涘缓浜�
+ */
+ @Excel(name = "鍒涘缓浜�")
+ private String creator;
+ /**
+ * 浣跨敤娆℃暟
+ */
+ @Excel(name = "浣跨敤娆℃暟")
+ private Integer usageCount;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "鍒涘缓鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 鏇存柊浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/NotificationManagement.java b/src/main/java/com/ruoyi/approve/pojo/NotificationManagement.java
new file mode 100644
index 0000000..cb91626
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/NotificationManagement.java
@@ -0,0 +1,88 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.ListToStringTypeHandler;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@TableName("notification_management")
+public class NotificationManagement implements Serializable {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 閫氱煡鏍囬
+ */
+ private String title;
+ /**
+ * 閫氱煡绫诲瀷
+ */
+ private String type;
+ /**
+ * 浼樺厛绾�
+ */
+ private String priority;
+ /**
+ * 閫氱煡鐘舵��
+ */
+ private String status;
+ /**
+ * 鏈夋晥鏈熸椂闂�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate expireDate;
+ /**
+ * 鎺ユ敹閮ㄩ棬
+ */
+ @TableField(value = "departments",typeHandler = ListToStringTypeHandler.class)
+ private List<String> departments;
+ /**
+ * 鍚屾鏂瑰紡
+ */
+ @TableField(value = "sync_methods",typeHandler = ListToStringTypeHandler.class)
+ private List<String> syncMethods;
+ /**
+ * 閫氱煡鍐呭
+ */
+ private String content;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鏇存柊浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/OnlineMeeting.java b/src/main/java/com/ruoyi/approve/pojo/OnlineMeeting.java
new file mode 100644
index 0000000..863d348
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/OnlineMeeting.java
@@ -0,0 +1,80 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.ListToStringTypeHandler;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@TableName("online_meeting")
+public class OnlineMeeting implements Serializable {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 浼氳鏍囬
+ */
+ private String title;
+ /**
+ * 寮�濮嬫椂闂�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime startTime;
+ /**
+ * 浼氳鏃堕暱
+ */
+ private Integer duration;
+ /**
+ * 浼氳骞冲彴
+ */
+ private String platform;
+ /**
+ * 浼氳鎻忚堪
+ */
+ private String description;
+ /**
+ * 鍙備細浜哄憳
+ */
+ @TableField(value = "participants",typeHandler = ListToStringTypeHandler.class)
+ private List<String> participants;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鏇存柊浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/OvertimeSetting.java b/src/main/java/com/ruoyi/approve/pojo/OvertimeSetting.java
new file mode 100644
index 0000000..ed929cd
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/OvertimeSetting.java
@@ -0,0 +1,79 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+@Data
+@TableName("overtime_setting")
+public class OvertimeSetting implements Serializable {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鍔犵彮瑙勫垯鍚嶇О
+ */
+ private String name;
+ /**
+ * 鍔犵彮绫诲瀷
+ */
+ private String type;
+ /**
+ * 寮�濮嬫椂闂�
+ */
+ @JsonFormat(pattern = "HH:mm")
+ @DateTimeFormat(pattern = "HH:mm")
+ private LocalTime startTime;
+ /**
+ * 缁撴潫鏃堕棿
+ */
+ @JsonFormat(pattern = "HH:mm")
+ @DateTimeFormat(pattern = "HH:mm")
+ private LocalTime endTime;
+ /**
+ * 鍊嶇巼
+ */
+ private Double rate;
+ /**
+ * 鐘舵��
+ */
+ private String status;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鏇存柊浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/RpaProcessAutomation.java b/src/main/java/com/ruoyi/approve/pojo/RpaProcessAutomation.java
new file mode 100644
index 0000000..d47f2a0
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/RpaProcessAutomation.java
@@ -0,0 +1,65 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("rpa_process_automation")
+public class RpaProcessAutomation implements Serializable {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 绋嬪簭鍚�
+ */
+ @Excel(name = "绋嬪簭鍚�")
+ private String programName;
+ /**
+ * 绋嬪簭鎻忚堪
+ */
+ @Excel(name = "绋嬪簭鎻忚堪")
+ private String description;
+ /**
+ * 鐘舵��
+ */
+ @Excel(name = "鐘舵��")
+ private String status;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鏇存柊浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/WorkingHoursSetting.java b/src/main/java/com/ruoyi/approve/pojo/WorkingHoursSetting.java
new file mode 100644
index 0000000..e457c8f
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/WorkingHoursSetting.java
@@ -0,0 +1,79 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+@Data
+@TableName("working_hours_setting")
+public class WorkingHoursSetting implements Serializable {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鏃堕棿娈靛悕绉�
+ */
+ private String name;
+
+ /**
+ * 涓婄彮鏃堕棿
+ */
+ @JsonFormat(pattern = "HH:mm")
+ @DateTimeFormat(pattern = "HH:mm")
+ private LocalTime startTime;
+ /**
+ * 涓嬬彮鏃堕棿
+ */
+ @JsonFormat(pattern = "HH:mm")
+ @DateTimeFormat(pattern = "HH:mm")
+ private LocalTime endTime;
+ /**
+ * 寮规�т笂鐝�
+ */
+ private String flexibleStart;
+ /**
+ * 寮规�ф椂闂�(鍒嗛挓)
+ */
+ private Integer flexibleMinutes;
+ /**
+ * 鐘舵��
+ */
+ private String status;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鏇存柊浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/service/HolidaySettingsService.java b/src/main/java/com/ruoyi/approve/service/HolidaySettingsService.java
new file mode 100644
index 0000000..aa44adb
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/HolidaySettingsService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.approve.service;
+
+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.approve.pojo.HolidaySettings;
+
+public interface HolidaySettingsService extends IService<HolidaySettings> {
+ IPage listpage(Page page, HolidaySettings holidaySettings);
+}
diff --git a/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java b/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
index d212c46..675c474 100644
--- a/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
+++ b/src/main/java/com/ruoyi/approve/service/IApproveProcessService.java
@@ -9,6 +9,7 @@
import com.ruoyi.approve.vo.ApproveProcessVO;
import com.ruoyi.project.system.domain.SysDept;
+import java.io.IOException;
import java.text.ParseException;
import java.util.List;
@@ -17,7 +18,7 @@
* 娣诲姞瀹℃壒娴佺▼
* @param approveProcessVO 瀹℃壒娴佺▼VO瀵硅薄
*/
- void addApprove(ApproveProcessVO approveProcessVO) throws ParseException;
+ void addApprove(ApproveProcessVO approveProcessVO) throws Exception;
/**
* 鏍规嵁閮ㄩ棬id鏌ヨ閮ㄩ棬淇℃伅
* @param deptIds 閮ㄩ棬ID鏁扮粍
@@ -28,7 +29,7 @@
void delApprove(Long[] ids);
- void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo);
+ void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo) throws IOException;
ApproveProcess getApproveById(String id);
diff --git a/src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java b/src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java
new file mode 100644
index 0000000..c8a3664
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.approve.service;
+
+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.approve.pojo.KnowledgeBase;
+
+public interface KnowledgeBaseService extends IService<KnowledgeBase> {
+ IPage<KnowledgeBase> listpage(Page page, KnowledgeBase knowledgeBase);
+}
diff --git a/src/main/java/com/ruoyi/approve/service/NotificationManagementService.java b/src/main/java/com/ruoyi/approve/service/NotificationManagementService.java
new file mode 100644
index 0000000..8d2fade
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/NotificationManagementService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.approve.service;
+
+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.approve.pojo.NotificationManagement;
+
+public interface NotificationManagementService extends IService<NotificationManagement> {
+ IPage listpage(Page page, NotificationManagement notificationManagement);
+}
diff --git a/src/main/java/com/ruoyi/approve/service/RpaProcessAutomationService.java b/src/main/java/com/ruoyi/approve/service/RpaProcessAutomationService.java
new file mode 100644
index 0000000..edf0011
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/RpaProcessAutomationService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.approve.service;
+
+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.approve.pojo.RpaProcessAutomation;
+
+public interface RpaProcessAutomationService extends IService<RpaProcessAutomation> {
+ IPage<RpaProcessAutomation> listpage(Page page, RpaProcessAutomation rpaProcessAutomation);
+}
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index f7c98aa..d0ff36a 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -132,7 +132,7 @@
ApproveNode approveNode1 = approveNodeMapper.selectOne(approveNodeLambdaQueryWrapper);
approveProcess.setApproveStatus(status);
if(approveNode1 != null){
- approveProcess.setApproveUserCurrentId(approveNode.getApproveNodeUserId());
+ approveProcess.setApproveUserCurrentId(approveNode1.getApproveNodeUserId());
approveProcess.setApproveUserCurrentName(approveNode1.getApproveNodeUser());
}
approveProcessMapper.updateById(approveProcess);
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
index 2c04224..e866bbf 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -14,11 +14,15 @@
import com.ruoyi.approve.utils.DailyRedisCounter;
import com.ruoyi.approve.vo.ApproveGetAndUpdateVo;
import com.ruoyi.approve.vo.ApproveProcessVO;
+import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.other.service.impl.TempFileServiceImpl;
import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysDeptMapper;
import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.sales.mapper.CommonFileMapper;
+import com.ruoyi.sales.pojo.CommonFile;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +32,7 @@
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
+import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
@@ -52,9 +57,11 @@
private final IApproveNodeService approveNodeService;
private final SysUserMapper sysUserMapper;
private final ApproveProcessMapper approveProcessMapper;
+ private final TempFileServiceImpl tempFileService;
+ private final CommonFileMapper commonFileMapper;
@Override
- public void addApprove(ApproveProcessVO approveProcessVO) throws ParseException {
+ public void addApprove(ApproveProcessVO approveProcessVO) throws Exception {
SysUser sysUser = sysUserMapper.selectUserById(approveProcessVO.getApproveUser());
SysDept sysDept = sysDeptMapper.selectDeptById(approveProcessVO.getApproveDeptId());
String[] split = approveProcessVO.getApproveUserIds().split(",");
@@ -83,6 +90,7 @@
approveProcess.setApproveOverTime(null);
approveProcess.setApproveStatus(0);
approveProcess.setApproveDelete(0);
+ approveProcess.setApproveType(approveProcessVO.getApproveType());
approveProcess.setCreateTime(LocalDateTime.now());
approveProcess.setTenantId(approveProcessVO.getApproveDeptId());
approveProcess.setApproveUserIds(approveProcessVO.getApproveUserIds());
@@ -102,6 +110,8 @@
save(approveProcess);
//鍒濆鍖栧鎵硅妭鐐�
approveNodeService.initApproveNodes(approveProcessVO.getApproveUserIds(),approveID,approveProcessVO.getApproveDeptId());
+ // 闄勪欢缁戝畾
+ tempFileService.migrateTempFilesToFormal(approveProcess.getId(), approveProcessVO.getTempFileIds(), FileNameType.ApproveProcess.getValue());
}
@Override
@@ -117,6 +127,13 @@
@Override
public IPage<ApproveProcess> listAll(Page page,ApproveProcess approveProcess) {
IPage<ApproveProcess> approveProcessIPage = approveProcessMapper.listPage(page,approveProcess);
+ List<ApproveProcess> records = approveProcessIPage.getRecords();
+ for (ApproveProcess record : records) {
+ List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
+ .eq(CommonFile::getCommonId, record.getId())
+ .eq(CommonFile::getType, FileNameType.ApproveProcess.getValue()));
+ record.setCommonFileList(commonFiles);
+ }
return approveProcessIPage;
}
@@ -142,6 +159,9 @@
queryWrapper.eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId());
queryWrapper.last("limit 1");
ApproveProcess one = getOne(queryWrapper);
+ one.setCommonFileList(commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
+ .eq(CommonFile::getCommonId, one.getId())
+ .eq(CommonFile::getType, FileNameType.ApproveProcess.getValue())));
return one;
}
@@ -149,7 +169,7 @@
@Override
- public void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo) {
+ public void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo) throws IOException {
ApproveProcess approve = approveProcessMapper.selectById(approveGetAndUpdateVo.getId());
approve.setApproveUserIds(approveGetAndUpdateVo.getApproveUserIds());
approve.setApproveReason(approveGetAndUpdateVo.getApproveReason());
@@ -170,24 +190,32 @@
}
updateById(approve);
//淇敼瀹℃壒浜�
+ // 鍏堝垹闄� 鍚庢柊澧�
LambdaQueryWrapper<ApproveNode> approveNodeLambdaQueryWrapper = new LambdaQueryWrapper<>();
approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approve.getApproveId())
.eq(ApproveNode::getDeleteFlag, 0)
.eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId())
.orderByAsc(ApproveNode::getApproveNodeOrder);
- List<ApproveNode> list = approveNodeMapper.selectList(approveNodeLambdaQueryWrapper);
- int i = 0;
- for (ApproveNode approveNode : list) {
- int finalI = i;
- List<SysUser> collect = sysUsers.stream().filter(user -> user.getUserId().equals(Long.parseLong(split[finalI]))).collect(Collectors.toList());
- if(CollectionUtils.isEmpty(collect)){
- throw new RuntimeException("璇烽�夋嫨姝g‘鐨勫鎵逛汉");
- }
- approveNode.setApproveNodeUserId(collect.get(0).getUserId());
- approveNode.setApproveNodeUser(collect.get(0).getNickName());
- approveNodeMapper.updateById(approveNode);
- i++;
- }
+ approveNodeMapper.delete(approveNodeLambdaQueryWrapper);
+ approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(),approve.getApproveId(),approve.getTenantId());
+
+// int i = 0;
+// for (ApproveNode approveNode : list) {
+// int finalI = i;
+// if(i >= split.length){
+// approveNode.setDeleteFlag(1);
+// }else{
+// List<SysUser> collect = sysUsers.stream().filter(user -> user.getUserId().equals(Long.parseLong(split[finalI]))).collect(Collectors.toList());
+// if(CollectionUtils.isEmpty(collect)){
+// throw new RuntimeException("璇烽�夋嫨姝g‘鐨勫鎵逛汉");
+// }
+// approveNode.setApproveNodeUserId(collect.get(0).getUserId());
+// approveNode.setApproveNodeUser(collect.get(0).getNickName());
+// }
+// approveNodeMapper.updateById(approveNode);
+// i++;
+// }
+ tempFileService.migrateTempFilesToFormal(approve.getId(), approveGetAndUpdateVo.getTempFileIds(), FileNameType.ApproveProcess.getValue());
}
diff --git a/src/main/java/com/ruoyi/approve/service/impl/HolidaySettingsServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/HolidaySettingsServiceImpl.java
new file mode 100644
index 0000000..a0cfe37
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/impl/HolidaySettingsServiceImpl.java
@@ -0,0 +1,21 @@
+package com.ruoyi.approve.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.approve.mapper.HolidaySettingsMapper;
+import com.ruoyi.approve.pojo.HolidaySettings;
+import com.ruoyi.approve.service.HolidaySettingsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class HolidaySettingsServiceImpl extends ServiceImpl<HolidaySettingsMapper, HolidaySettings> implements HolidaySettingsService {
+ @Autowired
+ private HolidaySettingsMapper holidaySettingsMapper;
+
+ @Override
+ public IPage<HolidaySettings> listpage(Page page, HolidaySettings holidaySettings) {
+ return holidaySettingsMapper.listpage(page,holidaySettings);
+ }
+}
diff --git a/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java
new file mode 100644
index 0000000..57a3fa7
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java
@@ -0,0 +1,21 @@
+package com.ruoyi.approve.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.approve.mapper.KnowledgeBaseMapper;
+import com.ruoyi.approve.pojo.KnowledgeBase;
+import com.ruoyi.approve.service.KnowledgeBaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class KnowledgeBaseServiceImpl extends ServiceImpl<KnowledgeBaseMapper, KnowledgeBase> implements KnowledgeBaseService {
+ @Autowired
+ private KnowledgeBaseMapper knowledgeBaseMapper;
+
+ @Override
+ public IPage<KnowledgeBase> listpage(Page page, KnowledgeBase knowledgeBase) {
+ return knowledgeBaseMapper.listpage(page,knowledgeBase);
+ }
+}
diff --git a/src/main/java/com/ruoyi/approve/service/impl/NotificationManagementServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/NotificationManagementServiceImpl.java
new file mode 100644
index 0000000..fa13fa9
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/impl/NotificationManagementServiceImpl.java
@@ -0,0 +1,24 @@
+package com.ruoyi.approve.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.approve.mapper.NotificationManagementMapper;
+import com.ruoyi.approve.pojo.NotificationManagement;
+import com.ruoyi.approve.service.NotificationManagementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class NotificationManagementServiceImpl extends ServiceImpl<NotificationManagementMapper, NotificationManagement> implements NotificationManagementService {
+ @Autowired
+ private NotificationManagementMapper notificationManagementMapper;
+
+ @Override
+ public IPage<NotificationManagement> listpage(Page page, NotificationManagement notificationManagement) {
+// // 1. 鍒涘缓 Page 瀹炰緥锛圛Page 瀹炵幇绫伙級锛屾寚瀹氶〉鐮佸拰姣忛〉鏉℃暟
+// IPage<NotificationManagement> page1 = new Page<>(page.getCurrent(), page.getSize());
+ return notificationManagementMapper.listpage(page,notificationManagement);
+ }
+}
diff --git a/src/main/java/com/ruoyi/approve/service/impl/RpaProcessAutomationServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/RpaProcessAutomationServiceImpl.java
new file mode 100644
index 0000000..ddb6083
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/impl/RpaProcessAutomationServiceImpl.java
@@ -0,0 +1,21 @@
+package com.ruoyi.approve.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.approve.mapper.RpaProcessAutomationMapper;
+import com.ruoyi.approve.pojo.RpaProcessAutomation;
+import com.ruoyi.approve.service.RpaProcessAutomationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RpaProcessAutomationServiceImpl extends ServiceImpl<RpaProcessAutomationMapper, RpaProcessAutomation> implements RpaProcessAutomationService {
+ @Autowired
+ private RpaProcessAutomationMapper rpaProcessAutomationMapper;
+ @Override
+ public IPage<RpaProcessAutomation> listpage(Page page, RpaProcessAutomation rpaProcessAutomation) {
+ return rpaProcessAutomationMapper.listpage(page,rpaProcessAutomation);
+ }
+}
diff --git a/src/main/java/com/ruoyi/approve/utils/ListToStringTypeHandler.java b/src/main/java/com/ruoyi/approve/utils/ListToStringTypeHandler.java
new file mode 100644
index 0000000..4042a25
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/utils/ListToStringTypeHandler.java
@@ -0,0 +1,52 @@
+package com.ruoyi.approve.utils;
+
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+@MappedTypes(List.class)
+@MappedJdbcTypes(JdbcType.VARCHAR)
+public class ListToStringTypeHandler extends BaseTypeHandler<List<String>> {
+ private static final String SEPARATOR = ",";
+
+ @Override
+ public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType) throws SQLException {
+ // 瀛樺偍鏃讹細List 杞�楀彿鍒嗛殧瀛楃涓�
+ if (parameter == null) {
+ ps.setString(i, null);
+ } else {
+ ps.setString(i, String.join(SEPARATOR, parameter));
+ }
+// String value = parameter.stream().collect(Collectors.joining(","));
+// ps.setString(i, value);
+ }
+ @Override
+ public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {
+ // 鏌ヨ鏃讹細瀛楃涓茶浆 List
+ String value = rs.getString(columnName);
+ return value != null && !value.isEmpty() ? Arrays.asList(value.split(SEPARATOR)) : new ArrayList<>();
+ }
+
+ @Override
+ public List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+ String value = rs.getString(columnIndex);
+ return value != null && !value.isEmpty() ? Arrays.asList(value.split(SEPARATOR)) : new ArrayList<>();
+ }
+
+ @Override
+ public List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+ String value = cs.getString(columnIndex);
+ return value != null && !value.isEmpty() ? Arrays.asList(value.split(SEPARATOR)) : new ArrayList<>();
+ }
+
+}
+
diff --git a/src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java b/src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java
index 0c9eb11..7913ffd 100644
--- a/src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java
+++ b/src/main/java/com/ruoyi/approve/utils/StartAndEndDateDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.approve.utils;
+import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -13,9 +14,24 @@
public class StartAndEndDateDto {
@ApiModelProperty("寮�濮嬫椂闂�")
+ @TableField(exist = false)
private String startDate;
@ApiModelProperty("缁撴潫鏃堕棿")
+ @TableField(exist = false)
private String endDate;
+ @ApiModelProperty("寮�濮嬫湀浠�")
+ @TableField(exist = false)
+ private Integer startMonth;
+
+ @ApiModelProperty("缁撴潫鏈堜唤")
+ @TableField(exist = false)
+ private Integer endMonth;
+
+ @ApiModelProperty("骞翠唤")
+ @TableField(exist = false)
+ private Integer year;
+
+
}
diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java b/src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java
index 98c5d52..69d5dea 100644
--- a/src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java
+++ b/src/main/java/com/ruoyi/approve/vo/ApproveGetAndUpdateVo.java
@@ -1,11 +1,15 @@
package com.ruoyi.approve.vo;
+import com.ruoyi.sales.pojo.CommonFile;
import lombok.Data;
import javax.validation.constraints.NotBlank;
+import java.util.List;
@Data
public class ApproveGetAndUpdateVo {
+
+ private List<String> tempFileIds;
//瀹℃壒id
@NotBlank(message = "娴佺▼缂栧彿涓嶈兘涓虹┖")
private String id;
@@ -20,4 +24,8 @@
private String approveTime;
private Integer approveStatus;
+ /**
+ * 瀹℃壒绫诲瀷
+ */
+ private Integer approveType;
}
diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
index 8d793d8..1fb353e 100644
--- a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
+++ b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
@@ -1,11 +1,15 @@
package com.ruoyi.approve.vo;
+import com.ruoyi.sales.pojo.CommonFile;
import lombok.Data;
import javax.validation.constraints.NotBlank;
+import java.util.List;
@Data
public class ApproveProcessVO {
+
+ private List<String> tempFileIds;
private Long id;
@@ -21,4 +25,9 @@
private String approveUserIds;
private String approveReason;
+
+ /**
+ * 瀹℃壒绫诲瀷
+ */
+ private Integer approveType;
}
diff --git a/src/main/java/com/ruoyi/basic/controller/CustomerController.java b/src/main/java/com/ruoyi/basic/controller/CustomerController.java
index 132e5bd..e89e203 100644
--- a/src/main/java/com/ruoyi/basic/controller/CustomerController.java
+++ b/src/main/java/com/ruoyi/basic/controller/CustomerController.java
@@ -53,6 +53,13 @@
util.exportExcel(response, list, "瀹㈡埛妗f鏁版嵁");
}
+ @PostMapping("/downloadTemplate")
+ @Log(title = "瀹㈡埛妗f-涓嬭浇妯℃澘", businessType = BusinessType.EXPORT)
+ public void downloadTemplate(HttpServletResponse response) {
+ ExcelUtil<Customer> util = new ExcelUtil<Customer>(Customer.class);
+ util.importTemplateExcel(response, "瀹㈡埛妗f妯℃澘");
+ }
+
/**
* 瀵煎叆瀹㈡埛妗f
diff --git a/src/main/java/com/ruoyi/basic/controller/SupplierManageController.java b/src/main/java/com/ruoyi/basic/controller/SupplierManageController.java
index b50f88f..32cad29 100644
--- a/src/main/java/com/ruoyi/basic/controller/SupplierManageController.java
+++ b/src/main/java/com/ruoyi/basic/controller/SupplierManageController.java
@@ -2,8 +2,10 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.basic.dto.SupplierManageDto;
+import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.basic.pojo.SupplierManage;
import com.ruoyi.basic.service.ISupplierService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
@@ -89,6 +91,13 @@
supplierService.supplierExport(response, supplierManageDto);
}
+ @PostMapping("/downloadTemplate")
+ @Log(title = "渚涘簲鍟�-涓嬭浇妯℃澘", businessType = BusinessType.EXPORT)
+ public void downloadTemplate(HttpServletResponse response) {
+ ExcelUtil<SupplierManage> util = new ExcelUtil<SupplierManage>(SupplierManage.class);
+ util.importTemplateExcel(response, "渚涘簲鍟嗘。妗堟ā鏉�");
+ }
+
/**
* 渚涘簲鍟嗗鍏�
*/
diff --git a/src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java b/src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java
index b868048..17a7d71 100644
--- a/src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java
+++ b/src/main/java/com/ruoyi/basic/dto/StorageBlobDTO.java
@@ -6,4 +6,6 @@
@Data
public class StorageBlobDTO extends StorageBlob {
private String url;
+
+ private String downloadUrl;
}
diff --git a/src/main/java/com/ruoyi/basic/mapper/StorageAttachmentMapper.java b/src/main/java/com/ruoyi/basic/mapper/StorageAttachmentMapper.java
index 12a34d8..529e05d 100644
--- a/src/main/java/com/ruoyi/basic/mapper/StorageAttachmentMapper.java
+++ b/src/main/java/com/ruoyi/basic/mapper/StorageAttachmentMapper.java
@@ -2,7 +2,6 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.basic.pojo.StorageAttachment;
-import org.apache.ibatis.annotations.Mapper;
/**
* <p>
@@ -12,7 +11,6 @@
* @author ruoyi
* @since 2025-05-29
*/
-@Mapper
public interface StorageAttachmentMapper extends BaseMapper<StorageAttachment> {
}
diff --git a/src/main/java/com/ruoyi/basic/pojo/StorageAttachment.java b/src/main/java/com/ruoyi/basic/pojo/StorageAttachment.java
index 0e30cad..1dd7bc7 100644
--- a/src/main/java/com/ruoyi/basic/pojo/StorageAttachment.java
+++ b/src/main/java/com/ruoyi/basic/pojo/StorageAttachment.java
@@ -36,6 +36,9 @@
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
/**
* 閫昏緫鍒犻櫎
*/
@@ -62,6 +65,7 @@
@TableField(value = "storage_blob_id")
private Long storageBlobId;
+ @TableField(exist = false)
private StorageBlobDTO storageBlobDTO;
public StorageAttachment(String fileType, Long recordType, Long recordId) {
diff --git a/src/main/java/com/ruoyi/basic/pojo/StorageBlob.java b/src/main/java/com/ruoyi/basic/pojo/StorageBlob.java
index 8e92865..6bf6fc6 100644
--- a/src/main/java/com/ruoyi/basic/pojo/StorageBlob.java
+++ b/src/main/java/com/ruoyi/basic/pojo/StorageBlob.java
@@ -1,13 +1,13 @@
package com.ruoyi.basic.pojo;
-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 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;
/**
@@ -28,16 +28,11 @@
@TableId(value = "id", type = IdType.AUTO)
private Long id;
- /** 鍒涘缓鏃堕棿 */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-// @TableField(fill = FieldFill.INSERT)
- private Date createTime;
-
/**
* 璧勬簮id
*/
- @TableField(value = "key")
- private String key;
+ @TableField(value = "resource_key")
+ private String resourceKey;
/**
* 璧勬簮绫诲瀷锛屼緥濡侸PG鍥剧墖鐨勮祫婧愮被鍨嬩负image/jpg
*/
@@ -64,4 +59,34 @@
*/
@TableField(value = "byte_size")
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;
}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/basic/pojo/SupplierManage.java b/src/main/java/com/ruoyi/basic/pojo/SupplierManage.java
index 3855879..142a6f2 100644
--- a/src/main/java/com/ruoyi/basic/pojo/SupplierManage.java
+++ b/src/main/java/com/ruoyi/basic/pojo/SupplierManage.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -16,35 +17,44 @@
private Integer id;
@ApiModelProperty(value = "渚涘簲鍟嗗悕绉�")
-
+ @Excel(name = "渚涘簲鍟嗗悕绉�")
private String supplierName;
@ApiModelProperty(value = "绾崇◣浜鸿瘑鍒彿")
+ @Excel(name = "绾崇◣浜鸿瘑鍒彿")
private String taxpayerIdentificationNum;
@ApiModelProperty(value = "鍏徃鍦板潃")
+ @Excel(name = "鍏徃鍦板潃")
private String companyAddress;
@ApiModelProperty(value = "鍏徃鐢佃瘽")
+ @Excel(name = "鍏徃鐢佃瘽")
private String companyPhone;
@ApiModelProperty(value = "寮�鎴疯")
+ @Excel(name = "寮�鎴疯")
private String bankAccountName;
@ApiModelProperty(value = "璐﹀彿")
+ @Excel(name = "璐﹀彿")
private String bankAccountNum;
@ApiModelProperty(value = "鑱旂郴浜�")
+ @Excel(name = "鑱旂郴浜�")
private String contactUserName;
@ApiModelProperty(value = "鑱旂郴鐢佃瘽")
+ @Excel(name = "鑱旂郴鐢佃瘽")
private String contactUserPhone;
@ApiModelProperty(value = "缁存姢浜篒D")
+ @Excel(name = "缁存姢浜�")
private Integer maintainUserId;
@ApiModelProperty(value = "缁存姢鏃堕棿")
@JsonFormat(pattern = "yyyy-MM-dd")
+// @Excel(name = "缁存姢鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
private LocalDate maintainTime;
@ApiModelProperty(value = "鍒涘缓鏃堕棿")
diff --git a/src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java b/src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java
index e285063..de2c096 100644
--- a/src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java
+++ b/src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java
@@ -34,6 +34,9 @@
*/
public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, StorageAttachmentConstants fileType);
+ public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, String fileType);
+
+
/**
* 鍒犻櫎閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭�
* @param storageAttachment 鏂囦欢淇℃伅
diff --git a/src/main/java/com/ruoyi/basic/service/StorageBlobService.java b/src/main/java/com/ruoyi/basic/service/StorageBlobService.java
index 00d8c3b..962437d 100644
--- a/src/main/java/com/ruoyi/basic/service/StorageBlobService.java
+++ b/src/main/java/com/ruoyi/basic/service/StorageBlobService.java
@@ -26,6 +26,9 @@
*/
List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName);
+ List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName,Long type);
+
+
/**
* 鎵归噺鍒犻櫎鏂囦欢
* @param attachment
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 78c8647..0d126c7 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java
@@ -78,6 +78,22 @@
}
@Override
+ 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);
+ }
+
+ }
+
+ @Override
public int deleteStorageAttachment(StorageAttachment storageAttachment) {
// 鍏堝垹闄ゆ槑缁嗚〃
storageBlobService.deleteStorageBlobs(storageAttachment);
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 6be4401..d85a522 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
@@ -9,6 +9,7 @@
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;
@@ -16,11 +17,15 @@
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.framework.web.domain.MinioResult;
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.web.multipart.MultipartFile;
+import java.time.LocalDateTime;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@@ -61,9 +66,8 @@
dto.setBucketFilename(res.getBucketFileName());
dto.setOriginalFilename(res.getOriginalName());
dto.setByteSize(file.getSize());
- dto.setKey(IdUtils.simpleUUID());
+ dto.setResourceKey(IdUtils.simpleUUID());
dto.setBucketName(bucketName);
- dto.setCreateTime(DateUtils.getNowDate());
dto.setUrl(minioUtils.getPreviewUrl(res.getBucketFileName(), bucketName, false));
// 鎻掑叆鏁版嵁搴�
storageBlobMapper.insert(dto);
@@ -79,12 +83,95 @@
}
@Override
+ public List<StorageBlobDTO> updateStorageBlobs(List<MultipartFile> files, String bucketName, Long type) {
+
+ // 鑻ユ病浼犲叆bucketName锛屽垯浣跨敤榛樿bucketName
+ if (StringUtils.isEmpty(bucketName)) {
+ bucketName = minioUtils.getDefaultBucket();
+ }
+ List<StorageBlobDTO> storageBlobDTOs = new ArrayList<>();
+ for (MultipartFile file : files) {
+ try {
+ validateFileExtension(file);
+
+ MinioResult res = minioUtils.upload(bucketName, file, false);
+
+ 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);
+ }
+ }
+ return storageBlobDTOs;
+ }
+
+ 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 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);
+ }
+ }
+
+ @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;
+ }
List<StorageBlob> storageBlobs = storageBlobMapper.selectList(new LambdaQueryWrapper<StorageBlob>()
.in(StorageBlob::getId, ids));
if (!storageBlobs.isEmpty()) {
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/DutyPlanController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/DutyPlanController.java
new file mode 100644
index 0000000..9ad69ee
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/DutyPlanController.java
@@ -0,0 +1,63 @@
+package com.ruoyi.collaborativeApproval.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.collaborativeApproval.dto.DutyPlanDTO;
+import com.ruoyi.collaborativeApproval.mapper.DutyPlanMapper;
+import com.ruoyi.collaborativeApproval.pojo.DutyPlan;
+import com.ruoyi.collaborativeApproval.pojo.RulesRegulationsManagement;
+import com.ruoyi.collaborativeApproval.service.DutyPlanService;
+import com.ruoyi.common.utils.excel.ExcelUtils;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@RestController
+@RequestMapping("/dutyPlan")
+@AllArgsConstructor
+public class DutyPlanController {
+ @Autowired
+ private DutyPlanService dutyPlanService;
+
+ @GetMapping("/getList")
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ public AjaxResult listPage(Page page, DutyPlanDTO dutyPlanDTO){
+ return AjaxResult.success(dutyPlanService.listPage(page, dutyPlanDTO));
+ }
+ @GetMapping("/getNum")
+ @ApiOperation("鑾峰彇绛夌骇鏁版嵁")
+ public AjaxResult getNum(){
+ return AjaxResult.success(dutyPlanService.getNum());
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("鏂板")
+ public AjaxResult add(@RequestBody DutyPlan dutyPlan){
+ return AjaxResult.success(dutyPlanService.save(dutyPlan));
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("淇敼")
+ public AjaxResult update(@RequestBody DutyPlan dutyPlan){
+ return AjaxResult.success(dutyPlanService.updateById(dutyPlan));
+ }
+
+ @DeleteMapping("/delete")
+ @ApiOperation("鍒犻櫎")
+ public AjaxResult delete(@RequestBody List<Long> ids){
+ if (CollectionUtils.isEmpty(ids)) {
+ throw new RuntimeException("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ }
+ return AjaxResult.success(dutyPlanService.removeBatchByIds(ids));
+ }
+ @PostMapping("/export")
+ @ApiOperation("瀵煎嚭")
+ public void exportData(HttpServletResponse response, DutyPlanDTO dutyPlanDTO){
+ dutyPlanService.exportData(response, dutyPlanDTO);
+ }
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
new file mode 100644
index 0000000..6c53634
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
@@ -0,0 +1,148 @@
+package com.ruoyi.collaborativeApproval.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.approve.pojo.ApproveProcess;
+import com.ruoyi.collaborativeApproval.mapper.MeetDraftMapper;
+import com.ruoyi.collaborativeApproval.pojo.MeetApplication;
+import com.ruoyi.collaborativeApproval.pojo.MeetDraft;
+import com.ruoyi.collaborativeApproval.pojo.MeetingMinutes;
+import com.ruoyi.collaborativeApproval.pojo.MeetingRoom;
+import com.ruoyi.collaborativeApproval.service.MeetingService;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingApplicationVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingDraftVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingRoomVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingUseVo;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.domain.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 鍏充簬浼氳controller
+ *
+ * @author buhuazhen
+ * @date 2025/9/15
+ * @email 3038525872@qq.com
+ */
+@RestController
+@RequestMapping("/meeting")
+@RequiredArgsConstructor
+@Api(tags = "浼氳")
+public class MeetingController {
+ private final MeetingService meetingService;
+
+ @PostMapping("/roomList")
+ public R getMeetingRoomList(@RequestBody SearchMeetingRoomVo vo) {
+
+ return R.ok(meetingService.getMeetingRoomList(vo));
+ }
+
+ @PostMapping("/saveRoom")
+ public R saveRoom(@RequestBody MeetingRoom meetingRoom) {
+ meetingService.saveMeetRoom(meetingRoom);
+ return R.ok();
+ }
+
+ @GetMapping("/room/{id}")
+ public R getRoomById(@PathVariable Long id) {
+ return R.ok(meetingService.findMeetRoomById(id));
+ }
+
+ @DeleteMapping("/delRoom/{id}")
+ public R deleteRoom(@PathVariable Long id) {
+ meetingService.deleteMeetingRoom(id);
+ return R.ok();
+ }
+
+ @GetMapping("/roomEnum")
+ public R getRoomEnum() {
+ return R.ok(meetingService.getRoomEnum());
+ }
+
+ @PostMapping("/draftList")
+ public R getMeetingDraftList(@RequestBody SearchMeetingDraftVo vo) {
+ return R.ok(meetingService.getMeetingDraftList(vo));
+ }
+
+ @PostMapping("/saveDraft")
+ public R saveMeetingDraft(@RequestBody MeetDraft meetDraft) {
+ meetingService.saveMeetDraft(meetDraft);
+ return R.ok();
+ }
+
+ @DeleteMapping("/delDraft/{id}")
+ public R deleteMeetingDraft(@PathVariable Long id) {
+ meetingService.deleteMeetingDraft(id);
+ return R.ok();
+ }
+
+ @PostMapping("/saveMeetingApplication")
+ public R saveMeetApplication(@RequestBody MeetApplication meetApplication) {
+ meetingService.saveMeetApplication(meetApplication);
+ return R.ok();
+ }
+
+ @PostMapping("/applicationList")
+ public R getMeetingApplicationList(@RequestBody SearchMeetingApplicationVo vo) {
+ return R.ok(meetingService.getMeetingApplicationList(vo));
+ }
+
+
+
+ @PostMapping("/meetingUseList")
+ public R meetingUseList(@RequestBody SearchMeetingUseVo vo) {
+ return R.ok(meetingService.meetingUseList(vo));
+ }
+
+
+ @PostMapping("/meetingPublishList")
+ public R meetingPublishList(@RequestBody SearchMeetingApplicationVo vo) {
+ return R.ok(meetingService.getMeetingPublishList(vo));
+ }
+
+
+ @GetMapping("/getMeetingMinutesByMeetingId/{id}")
+ public R getMeetingMinutes(@PathVariable Long id) {
+ return R.ok(meetingService.getMeetingMinutesById(id));
+ }
+
+ @PostMapping("/saveMeetingMinutes")
+ public R saveMeetingMinutes(@RequestBody MeetingMinutes meetingMinutes) {
+ meetingService.saveMeetingMinutes(meetingMinutes);
+ return R.ok();
+ }
+
+ @GetMapping("/getMeetSummary")
+ public R getMeetSummary() {
+ return R.ok(meetingService.getMeetSummary());
+ }
+
+ @GetMapping("/getMeetSummaryItems")
+ public R getMeetSummaryItems() {
+ return R.ok(meetingService.getMeetSummaryItems());
+ }
+
+ @ApiOperation(value = "浼氳瀹よ缃鍑�")
+ @PostMapping("/export")
+ public void export(HttpServletResponse response) {
+ List<MeetingRoom> accountExpenses = meetingService.list();
+ ExcelUtil<MeetingRoom> util = new ExcelUtil<MeetingRoom>(MeetingRoom.class);
+ util.exportExcel(response, accountExpenses, "浼氳瀹よ缃鍑�");
+ }
+
+ private final MeetDraftMapper meetDraftMapper;
+
+ @ApiOperation(value = "浼氳鑽夌瀵煎嚭")
+ @PostMapping("/exportOne")
+ public void exportOne(HttpServletResponse response) {
+ List<MeetDraft> accountExpenses = meetDraftMapper.selectList(new LambdaQueryWrapper<MeetDraft>());
+ ExcelUtil<MeetDraft> util = new ExcelUtil<MeetDraft>(MeetDraft.class);
+ util.exportExcel(response, accountExpenses, "浼氳鑽夌瀵煎嚭");
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/NoticeController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/NoticeController.java
new file mode 100644
index 0000000..df8e248
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/NoticeController.java
@@ -0,0 +1,63 @@
+package com.ruoyi.collaborativeApproval.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.collaborativeApproval.dto.NoticeDTO;
+import com.ruoyi.collaborativeApproval.service.NoticeService;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@Api(tags = "閫氱煡鍏憡")
+@RequestMapping("/collaborativeApproval/notice")
+public class NoticeController extends BaseController {
+
+ private final NoticeService noticeService;
+
+ @GetMapping("/page")
+ @Log(title = "鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ public AjaxResult listPage(Page page, NoticeDTO noticeDTO){
+ return AjaxResult.success(noticeService.listPage(page, noticeDTO));
+ }
+
+ @PostMapping("/add")
+ @Log(title = "鏂板", businessType = BusinessType.INSERT)
+ @ApiOperation("鏂板")
+ public AjaxResult add(@RequestBody NoticeDTO noticeDTO){
+ return AjaxResult.success(noticeService.save(noticeDTO));
+ }
+
+ @PutMapping("/update")
+ @Log(title = "淇敼", businessType = BusinessType.UPDATE)
+ @ApiOperation("淇敼")
+ public AjaxResult update(@RequestBody NoticeDTO noticeDTO){
+ return AjaxResult.success(noticeService.updateById(noticeDTO));
+ }
+
+ @DeleteMapping("/{ids}")
+ @Log(title = "鍒犻櫎", businessType = BusinessType.DELETE)
+ @ApiOperation("鍒犻櫎")
+ public AjaxResult delete(@PathVariable("ids") List<Long> ids){
+ if (CollectionUtils.isEmpty(ids)) {
+ throw new RuntimeException("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ }
+ return AjaxResult.success(noticeService.removeBatchByIds(ids));
+ }
+
+ @GetMapping("/count")
+ @Log(title = "鑾峰彇鍏憡鏁伴噺", businessType = BusinessType.OTHER)
+ @ApiOperation("鑾峰彇鍏憡鏁伴噺")
+ public AjaxResult count(){
+ return AjaxResult.success(noticeService.selectCount());
+ }
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementController.java
new file mode 100644
index 0000000..acfe676
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/RulesRegulationsManagementController.java
@@ -0,0 +1,87 @@
+package com.ruoyi.collaborativeApproval.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.collaborativeApproval.mapper.ReadingStatusMapper;
+import com.ruoyi.collaborativeApproval.pojo.ReadingStatus;
+import com.ruoyi.collaborativeApproval.pojo.RulesRegulationsManagement;
+import com.ruoyi.collaborativeApproval.pojo.SealApplicationManagement;
+import com.ruoyi.collaborativeApproval.service.RulesRegulationsManagementService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@RestController
+@RequestMapping("/rulesRegulationsManagement")
+@AllArgsConstructor
+@Api(tags = "鍒跺害绠$悊")
+public class RulesRegulationsManagementController {
+ @Autowired
+ private RulesRegulationsManagementService rulesRegulationsManagementService;
+ @Autowired
+ private ReadingStatusMapper readingStatusMapper;
+
+ @GetMapping("/getList")
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ public AjaxResult listPage(Page page, RulesRegulationsManagement rulesRegulationsManagement){
+ return AjaxResult.success(rulesRegulationsManagementService.listPage(page, rulesRegulationsManagement));
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("鏂板")
+ public AjaxResult add(@RequestBody RulesRegulationsManagement rulesRegulationsManagement){
+ return AjaxResult.success(rulesRegulationsManagementService.save(rulesRegulationsManagement));
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("淇敼")
+ public AjaxResult update(@RequestBody RulesRegulationsManagement rulesRegulationsManagement){
+ return AjaxResult.success(rulesRegulationsManagementService.updateById(rulesRegulationsManagement));
+ }
+
+ @DeleteMapping("/delete")
+ @ApiOperation("鍒犻櫎")
+ public AjaxResult delete(@PathVariable("ids") List<Long> ids){
+ if (CollectionUtils.isEmpty(ids)) {
+ throw new RuntimeException("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ }
+ return AjaxResult.success(rulesRegulationsManagementService.removeBatchByIds(ids));
+ }
+ //瑙勫垯鏌ョ湅鏃舵柊澧為槄璇荤姸鎬�
+ @PostMapping("/addReadingStatus")
+ @ApiOperation("鏂板闃呰鐘舵��")
+ public AjaxResult addReadingStatus(@RequestBody ReadingStatus readingStatus){
+ return AjaxResult.success(readingStatusMapper.insert(readingStatus));
+ }
+ @PostMapping("/updateReadingStatus")
+ @ApiOperation("淇敼闃呰鐘舵��")
+ public AjaxResult updateReadingStatus(@RequestBody ReadingStatus readingStatus){
+ return AjaxResult.success(readingStatusMapper.updateById(readingStatus));
+ }
+ @GetMapping("/getReadingStatusList")
+ @ApiOperation("鍒嗛〉鏌ヨ闃呰鐘舵��")
+ public AjaxResult listPage(Page page, ReadingStatus readingStatus){
+ return AjaxResult.success(readingStatusMapper.selectPage(page,new QueryWrapper<ReadingStatus>(readingStatus)));
+ }
+ @GetMapping("/getReadingStatusByRuleId/{ruleId}")
+ @ApiOperation("鏍规嵁鍒跺害id鏌ヨ闃呰鐘舵��")
+ public AjaxResult getReadingStatusByRuleId(@PathVariable Long ruleId){
+ return AjaxResult.success(readingStatusMapper.selectList(new QueryWrapper<ReadingStatus>().eq("rule_id", ruleId)));
+ }
+
+ @ApiOperation(value = "瑙勭珷鍒跺害绠$悊瀵煎嚭")
+ @PostMapping("/export")
+ public void export(HttpServletResponse response) {
+ List<RulesRegulationsManagement> accountExpenses = rulesRegulationsManagementService.list();
+ ExcelUtil<RulesRegulationsManagement> util = new ExcelUtil<RulesRegulationsManagement>(RulesRegulationsManagement.class);
+ util.exportExcel(response, accountExpenses, "瑙勭珷鍒跺害绠$悊瀵煎嚭");
+ }
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/SealApplicationManagementController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/SealApplicationManagementController.java
new file mode 100644
index 0000000..242072e
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/SealApplicationManagementController.java
@@ -0,0 +1,63 @@
+package com.ruoyi.collaborativeApproval.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.KnowledgeBase;
+import com.ruoyi.collaborativeApproval.pojo.SealApplicationManagement;
+import com.ruoyi.collaborativeApproval.service.SealApplicationManagementService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/sealApplicationManagement")
+@Api(tags = "鐢ㄥ嵃鐢宠绠$悊")
+public class SealApplicationManagementController {
+ @Autowired
+ private SealApplicationManagementService sealApplicationManagementService;
+
+ @GetMapping("/getList")
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ public AjaxResult listPage(Page page, SealApplicationManagement sealApplicationManagement){
+ return AjaxResult.success(sealApplicationManagementService.listPage(page,sealApplicationManagement));
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("鏂板")
+ public AjaxResult add(@RequestBody SealApplicationManagement sealApplicationManagement){
+ return AjaxResult.success(sealApplicationManagementService.save(sealApplicationManagement));
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("淇敼")
+ public AjaxResult update(@RequestBody SealApplicationManagement sealApplicationManagement){
+ return AjaxResult.success(sealApplicationManagementService.updateById(sealApplicationManagement));
+ }
+
+ @DeleteMapping("/delete")
+ @ApiOperation("鍒犻櫎")
+ public AjaxResult delete(@PathVariable("ids") List<Long> ids){
+ if (CollectionUtils.isEmpty(ids)) {
+ throw new RuntimeException("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ }
+ return AjaxResult.success(sealApplicationManagementService.removeBatchByIds(ids));
+ }
+
+ @ApiOperation(value = "鐢ㄥ嵃鐢宠绠$悊瀵煎嚭")
+ @PostMapping("/export")
+ public void export(HttpServletResponse response) {
+ List<SealApplicationManagement> accountExpenses = sealApplicationManagementService.list();
+ ExcelUtil<SealApplicationManagement> util = new ExcelUtil<SealApplicationManagement>(SealApplicationManagement.class);
+ util.exportExcel(response, accountExpenses, "鐢ㄥ嵃鐢宠绠$悊瀵煎嚭");
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/StaffContactsPersonalController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/StaffContactsPersonalController.java
new file mode 100644
index 0000000..f189872
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/StaffContactsPersonalController.java
@@ -0,0 +1,42 @@
+package com.ruoyi.collaborativeApproval.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.collaborativeApproval.dto.StaffContactsPersonalDTO;
+import com.ruoyi.collaborativeApproval.pojo.StaffContactsPersonal;
+import com.ruoyi.collaborativeApproval.service.StaffContactsPersonalService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/staffContactsPersonal")
+@AllArgsConstructor
+public class StaffContactsPersonalController {
+ @Autowired
+ private StaffContactsPersonalService staffContactsPersonalService;
+ @GetMapping("/getList")
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ public AjaxResult listPage(Page page, StaffContactsPersonalDTO staffContactsPersonalDTO ){
+ return AjaxResult.success(staffContactsPersonalService.listPage(page, staffContactsPersonalDTO));
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("鏂板")
+ public AjaxResult add(@RequestBody StaffContactsPersonal staffContactsPersonal){
+ return AjaxResult.success(staffContactsPersonalService.save(staffContactsPersonal));
+ }
+
+ @DeleteMapping("/delete/{id}")
+ @ApiOperation("鍒犻櫎")
+ public AjaxResult delete(@PathVariable("id") Long id){
+// if (CollectionUtils.isEmpty(id)) {
+// throw new RuntimeException("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+// }
+ return AjaxResult.success(staffContactsPersonalService.removeById(id));
+ }
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/DutyPlanDTO.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/DutyPlanDTO.java
new file mode 100644
index 0000000..4f3936f
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/DutyPlanDTO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import org.springframework.format.annotation.DateTimeFormat;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.collaborativeApproval.pojo.DutyPlan;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.util.List;
+
+@Data
+public class DutyPlanDTO extends DutyPlan {
+ private List<String> tags;
+
+ /**
+ * 鏌ヨ鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate queryDate;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetSummaryDto.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetSummaryDto.java
new file mode 100644
index 0000000..1c43eeb
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetSummaryDto.java
@@ -0,0 +1,24 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/17
+ * @email 3038525872@qq.com
+ */
+@Data
+public class MeetSummaryDto implements Serializable {
+ // 鎬讳細璁�
+ private Integer total;
+ // 杩涜涓�
+ private Integer underWay;
+ // 宸插畬鎴�
+ private Integer completed;
+ // 鍗冲皢寮�濮�
+ private Integer toStart;
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetUseDto.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetUseDto.java
new file mode 100644
index 0000000..68e0d68
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetUseDto.java
@@ -0,0 +1,21 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/16
+ * @email 3038525872@qq.com
+ */
+@Data
+public class MeetUseDto implements Serializable {
+
+ private Long id;
+ private String name;
+ private List<MeetingItem> meetings = new ArrayList<>();
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingItem.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingItem.java
new file mode 100644
index 0000000..b804076
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingItem.java
@@ -0,0 +1,24 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import lombok.Data;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/16
+ * @email 3038525872@qq.com
+ */
+@Data
+public class MeetingItem {
+ private Long id;
+ private String title;
+ private String startTime;
+ private String endTime;
+ private String time;
+ private String host;
+ private Integer participants = 0;
+ private Integer status;
+ private String description;
+ private String room;
+
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingSimpleDto.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingSimpleDto.java
new file mode 100644
index 0000000..3b1aaf3
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingSimpleDto.java
@@ -0,0 +1,23 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/17
+ * @email 3038525872@qq.com
+ */
+@Data
+public class MeetingSimpleDto {
+ private Long id;
+ private String title;
+ private Integer status;
+ private LocalDateTime startTime;
+ private LocalDateTime endTime;
+ private String location;
+ private String host;
+ private String participants;
+ private String content;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/NoticeDTO.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/NoticeDTO.java
new file mode 100644
index 0000000..e7db276
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/NoticeDTO.java
@@ -0,0 +1,13 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import com.ruoyi.collaborativeApproval.pojo.Notice;
+import lombok.Data;
+
+@Data
+public class NoticeDTO extends Notice {
+ private String CreateUserName;
+
+ private Long count;
+
+ private String statusName;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/RulesRegulationsManagementDTO.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/RulesRegulationsManagementDTO.java
new file mode 100644
index 0000000..61de2e9
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/RulesRegulationsManagementDTO.java
@@ -0,0 +1,16 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import com.ruoyi.collaborativeApproval.pojo.RulesRegulationsManagement;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class RulesRegulationsManagementDTO extends RulesRegulationsManagement {
+ /**
+ * 鍙戝竷浜哄鍚�
+ */
+ private String createUserName;
+ private List<String> scope;
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/SealApplicationManagementDTO.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/SealApplicationManagementDTO.java
new file mode 100644
index 0000000..0dc75a6
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/SealApplicationManagementDTO.java
@@ -0,0 +1,11 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import com.ruoyi.collaborativeApproval.pojo.SealApplicationManagement;
+import lombok.Data;
+
+@Data
+public class SealApplicationManagementDTO extends SealApplicationManagement {
+ private String createUserName;
+ //鎵�灞為儴闂�
+ private String department;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/StaffContactsPersonalDTO.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/StaffContactsPersonalDTO.java
new file mode 100644
index 0000000..29c1d50
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/StaffContactsPersonalDTO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import com.ruoyi.collaborativeApproval.pojo.StaffContactsPersonal;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class StaffContactsPersonalDTO extends StaffContactsPersonal {
+ private String staffNo;
+ private String staffName;
+ private String sex;
+ private String postJob;
+ private String adress;
+ private String profession;
+ private String identityCard;
+ private String phone;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/DutyPlanMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/DutyPlanMapper.java
new file mode 100644
index 0000000..b9bffe1
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/DutyPlanMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.collaborativeApproval.dto.DutyPlanDTO;
+import com.ruoyi.collaborativeApproval.pojo.DutyPlan;
+import io.lettuce.core.dynamic.annotation.Param;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface DutyPlanMapper extends BaseMapper<DutyPlan> {
+ IPage<DutyPlanDTO> listPage(Page page, @Param("dutyPlan") DutyPlanDTO dutyPlan);
+
+
+ List<Map<String, Object>> getNum();
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetApplicationMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetApplicationMapper.java
new file mode 100644
index 0000000..15c1eed
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetApplicationMapper.java
@@ -0,0 +1,26 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.ruoyi.collaborativeApproval.dto.MeetSummaryDto;
+import com.ruoyi.collaborativeApproval.dto.MeetingSimpleDto;
+import com.ruoyi.collaborativeApproval.pojo.MeetApplication;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恗eet_application(浼氳鐢宠琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-15 15:54:20
+* @Entity com.ruoyi.collaborativeApproval.pojo.MeetApplication
+*/
+public interface MeetApplicationMapper extends BaseMapper<MeetApplication> {
+
+ MeetSummaryDto getMeetSummary();
+
+ List<MeetingSimpleDto> getMeetSummaryItems();
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetDraftMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetDraftMapper.java
new file mode 100644
index 0000000..e6c6835
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetDraftMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.ruoyi.collaborativeApproval.pojo.MeetDraft;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恗eet_draft(浼氳鑽夌琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-15 14:10:49
+* @Entity com.ruoyi.collaborativeApproval.pojo.MeetDraft
+*/
+public interface MeetDraftMapper extends BaseMapper<MeetDraft> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingMinutesMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingMinutesMapper.java
new file mode 100644
index 0000000..14985a6
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingMinutesMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.ruoyi.collaborativeApproval.pojo.MeetingMinutes;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恗eeting_minutes(浼氳绾琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-17 10:25:20
+* @Entity com.ruoyi.collaborativeApproval.pojo.MeetingMinutes
+*/
+public interface MeetingMinutesMapper extends BaseMapper<MeetingMinutes> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingRoomMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingRoomMapper.java
new file mode 100644
index 0000000..5fd825a
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingRoomMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.ruoyi.collaborativeApproval.pojo.MeetingRoom;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恗eeting_room(浼氳瀹よ〃)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-15 10:32:50
+* @Entity com.ruoyi.collaborativeApproval.pojo.MeetingRoom
+*/
+public interface MeetingRoomMapper extends BaseMapper<MeetingRoom> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/NoticeMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/NoticeMapper.java
new file mode 100644
index 0000000..1b6d67d
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/NoticeMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.collaborativeApproval.dto.NoticeDTO;
+import com.ruoyi.collaborativeApproval.pojo.Notice;
+import org.apache.ibatis.annotations.Param;
+
+public interface NoticeMapper extends BaseMapper<Notice> {
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param page
+ * @param noticeDTO
+ * @return
+ */
+ IPage<NoticeDTO> listPage(Page page, @Param("ew") NoticeDTO noticeDTO);
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/ReadingStatusMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/ReadingStatusMapper.java
new file mode 100644
index 0000000..84834f9
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/ReadingStatusMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.collaborativeApproval.pojo.ReadingStatus;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ReadingStatusMapper extends BaseMapper<ReadingStatus> {
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/RulesRegulationsManagementMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/RulesRegulationsManagementMapper.java
new file mode 100644
index 0000000..d37e631
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/RulesRegulationsManagementMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.collaborativeApproval.dto.RulesRegulationsManagementDTO;
+import com.ruoyi.collaborativeApproval.pojo.RulesRegulationsManagement;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface RulesRegulationsManagementMapper extends BaseMapper<RulesRegulationsManagement> {
+ IPage<RulesRegulationsManagementDTO> listPage(Page page,@Param("ew") RulesRegulationsManagement rulesRegulationsManagement);
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/SealApplicationManagementMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/SealApplicationManagementMapper.java
new file mode 100644
index 0000000..3b5e55f
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/SealApplicationManagementMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.collaborativeApproval.dto.SealApplicationManagementDTO;
+import com.ruoyi.collaborativeApproval.pojo.SealApplicationManagement;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface SealApplicationManagementMapper extends BaseMapper<SealApplicationManagement> {
+ IPage<SealApplicationManagementDTO> listPage(Page page, @Param("ew") SealApplicationManagement sealApplicationManagement);
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/StaffContactsPersonalMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/StaffContactsPersonalMapper.java
new file mode 100644
index 0000000..934805f
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/StaffContactsPersonalMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.collaborativeApproval.dto.StaffContactsPersonalDTO;
+import com.ruoyi.collaborativeApproval.pojo.StaffContactsPersonal;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface StaffContactsPersonalMapper extends BaseMapper<StaffContactsPersonal> {
+ IPage listPage(Page page,@Param("staffContactsPersonalDTO") StaffContactsPersonalDTO staffContactsPersonalDTO);
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/DutyPlan.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/DutyPlan.java
new file mode 100644
index 0000000..1a55190
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/DutyPlan.java
@@ -0,0 +1,125 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.ListToStringTypeHandler;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.ibatis.type.JdbcType;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@TableName("duty_plan")
+public class DutyPlan{
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 璁″垝鏍囬
+ */
+ @Excel(name = "璁″垝鏍囬")
+ @ApiModelProperty("璁″垝鏍囬")
+ private String title;
+ /**
+ * 璁″垝鎻忚堪
+ */
+ @Excel(name = "璁″垝鎻忚堪")
+ @ApiModelProperty("璁″垝鎻忚堪")
+ private String description;
+
+
+ /**
+ * 璁″垝绾у埆
+ */
+ @Excel(name = "璁″垝绾у埆")
+ @ApiModelProperty("璁″垝绾у埆")
+ private String level;
+ /**
+ * 鏃堕棿鍛ㄦ湡
+ */
+ @Excel(name = "鏃堕棿鍛ㄦ湡")
+ @ApiModelProperty("鏃堕棿鍛ㄦ湡")
+ private String period;
+ /**
+ * 寮�濮嬫椂闂�
+ */
+ @Excel(name = "寮�濮嬫椂闂�")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate startDate;
+ /**
+ * 缁撴潫鏃堕棿
+ */
+ @Excel(name = "缁撴潫鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate endDate;
+
+ /**
+ * 璐熻矗浜�
+ */
+ @Excel(name = "璐熻矗浜�")
+ @ApiModelProperty("璐熻矗浜�")
+ private String assignee;
+ /**
+ * 鐘舵��
+ */
+ @Excel(name = "鐘舵��")
+ @ApiModelProperty("鐘舵��")
+ private String status;
+ /**
+ * 浼樺厛绾�
+ */
+ @Excel(name = "浼樺厛绾�")
+ @ApiModelProperty("浼樺厛绾�")
+ private String priority;
+ /**
+ * 瀹屾垚搴�
+ */
+ @Excel(name = "瀹屾垚搴�")
+ @ApiModelProperty("瀹屾垚搴�")
+ private Integer progress;
+ /**
+ * 鏍囩
+ */
+ @Excel(name = "鏍囩")
+ @ApiModelProperty("鏍囩")
+ @TableField(value = "tags",typeHandler = ListToStringTypeHandler.class,jdbcType = JdbcType.VARCHAR)
+ private List<String> tags;
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+ /**
+ * 淇敼浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetApplication.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetApplication.java
new file mode 100644
index 0000000..5f9ad1d
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetApplication.java
@@ -0,0 +1,140 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.models.auth.In;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 浼氳鐢宠琛�
+ * @TableName meet_application
+ */
+@TableName(value ="meet_application")
+@Data
+public class MeetApplication implements Serializable {
+ /**
+ * 鐢宠ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 浼氳涓婚
+ */
+ @TableField(value = "title")
+ private String title;
+
+ /**
+ * 浼氳瀹D
+ */
+ @TableField(value = "room_id")
+ private Long roomId;
+
+ /**
+ * 涓绘寔浜�
+ */
+ @TableField(value = "host")
+ private String host;
+
+ /**
+ * 浼氳鏃ユ湡
+ */
+ @TableField(value = "meeting_date")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate meetingDate;
+
+ /**
+ * 寮�濮嬫椂闂�
+ */
+ @TableField(value = "start_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime startTime;
+
+ /**
+ * 缁撴潫鏃堕棿
+ */
+ @TableField(value = "end_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime endTime;
+
+ /**
+ * 鍙備細浜哄憳锛圝SON鏍煎紡瀛樺偍ID鏁扮粍锛�
+ */
+ @TableField(value = "participants")
+ private String participants;
+
+ /**
+ * 浼氳璇存槑
+ */
+ @TableField(value = "description")
+ private String description;
+
+ /**
+ * 鐢宠绫诲瀷锛坅pproval:瀹℃壒娴佺▼, department:閮ㄩ棬绾�, notification:閫氱煡鍙戝竷锛�
+ */
+ @TableField(value = "application_type")
+ private String applicationType;
+
+ /**
+ * 鐘舵�侊紙0:寰呭鎵�, 1:宸查�氳繃, 2:宸叉嫆缁�, 3:宸插彇娑堬級
+ */
+ @TableField(value = "status")
+ private Integer status;
+
+ /**
+ * 鐢宠浜�
+ */
+ @TableField(value = "applicant")
+ private String applicant;
+
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(value = "create_user" ,fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鑰�
+ */
+ @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(value = "tenant_id",fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ @TableField(value = "publish_status")
+ private Integer publishStatus;
+
+ @TableField(value = "publish_comment")
+ private String publishComment;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetDraft.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetDraft.java
new file mode 100644
index 0000000..7df4b0a
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetDraft.java
@@ -0,0 +1,132 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 浼氳鑽夌琛�
+ * @TableName meet_draft
+ */
+@TableName(value ="meet_draft")
+@Data
+public class MeetDraft implements Serializable {
+ /**
+ * 鑽夌ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 浼氳缂栧彿
+ */
+ @TableField(value = "room_id")
+ private Long roomId;
+
+ /**
+ * 浼氳涓婚
+ */
+ @TableField(value = "title")
+ @Excel(name = "浼氳涓婚")
+ private String title;
+
+ /**
+ * 涓绘寔浜�
+ */
+ @TableField(value = "host")
+ @Excel(name = "涓绘寔浜�")
+ private String host;
+
+ /**
+ * 浼氳鏃ユ湡
+ */
+ @TableField(value = "meeting_date")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate meetingDate;
+
+ /**
+ * 寮�濮嬫椂闂�
+ */
+ @TableField(value = "start_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime startTime;
+
+ /**
+ * 缁撴潫鏃堕棿
+ */
+ @TableField(value = "end_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime endTime;
+
+ /**
+ * 鍙備細浜烘暟
+ */
+ @TableField(value = "participants")
+ @Excel(name = "鍙備細浜烘暟")
+ private Integer participants;
+
+ /**
+ * 鍙備細浜哄憳鍒楄〃
+ */
+ @TableField(value = "participant_list")
+ private String participantList;
+
+ /**
+ * 浼氳璇存槑
+ */
+ @TableField(value = "description")
+ private String description;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(value = "creator")
+ private String creator;
+
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(value = "create_user" ,fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鑰�
+ */
+ @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(value = "tenant_id",fill = FieldFill.INSERT)
+ private Long tenantId;
+
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingMinutes.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingMinutes.java
new file mode 100644
index 0000000..bd80254
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingMinutes.java
@@ -0,0 +1,79 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 浼氳绾琛�
+ * @TableName meeting_minutes
+ */
+@TableName(value ="meeting_minutes")
+@Data
+public class MeetingMinutes implements Serializable {
+ /**
+ * 绾ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鍏宠仈鐨勪細璁甀D
+ */
+ @TableField(value = "meeting_id")
+ private Long meetingId;
+
+ /**
+ * 绾鏍囬
+ */
+ @TableField(value = "title")
+ private String title;
+
+ /**
+ * 绾鍐呭锛堝瘜鏂囨湰锛�
+ */
+ @TableField(value = "content")
+ private String content;
+
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(value = "create_user" ,fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鑰�
+ */
+ @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(value = "tenant_id",fill = FieldFill.INSERT)
+ private Long tenantId;
+
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingRoom.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingRoom.java
new file mode 100644
index 0000000..9742071
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingRoom.java
@@ -0,0 +1,98 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import lombok.Data;
+
+/**
+ * 浼氳瀹よ〃
+ * @TableName meeting_room
+ */
+@TableName(value ="meeting_room")
+@Data
+public class MeetingRoom implements Serializable {
+ /**
+ * 浼氳瀹D
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 浼氳瀹ゅ悕绉�
+ */
+ @TableField(value = "name")
+ @Excel(name = "浼氳瀹ゅ悕绉�")
+ private String name;
+
+ /**
+ * 浣嶇疆
+ */
+ @TableField(value = "location")
+ @Excel(name = "浣嶇疆")
+ private String location;
+
+ /**
+ * 瀹圭撼浜烘暟
+ */
+ @TableField(value = "capacity")
+ @Excel(name = "瀹圭撼浜烘暟")
+ private Integer capacity;
+
+ /**
+ * 璁惧閰嶇疆锛堥�楀彿鍒嗛殧锛�
+ */
+ @TableField(value = "equipment")
+ @Excel(name = "璁惧閰嶇疆")
+ private String equipment;
+
+ /**
+ * 鐘舵�侊紙1:鍚敤 0:绂佺敤锛�
+ */
+ @TableField(value = "status")
+ @Excel(name = "鐘舵��", readConverterExp = "1=鍚敤,0=绂佺敤")
+ private Integer status;
+
+ /**
+ * 澶囨敞
+ */
+ @TableField(value = "remark")
+ private String remark;
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(value = "create_user" ,fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鑰�
+ */
+ @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(value = "tenant_id",fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/Notice.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/Notice.java
new file mode 100644
index 0000000..cc9f926
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/Notice.java
@@ -0,0 +1,88 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 鍏憡琛�
+ *
+ */
+@Data
+@TableName("notice")
+@ApiModel
+public class Notice {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+
+ /**
+ * 鍏憡鏍囬
+ */
+ @ApiModelProperty("鍏憡鏍囬")
+ private String title;
+
+ /**
+ * 鍏憡绫诲瀷锛�1鏀惧亣閫氱煡 2璁惧缁翠慨閫氱煡锛�
+ */
+ @ApiModelProperty("鍏憡绫诲瀷锛�1鏀惧亣閫氱煡 2璁惧缁翠慨閫氱煡锛�")
+ private Integer type;
+
+ /**
+ * 鐘舵�侊紙0鑽夌 1鍙戝竷 2宸蹭笅绾匡級
+ */
+ @ApiModelProperty("鐘舵�侊紙0鑽夌 1鍙戝竷 2宸蹭笅绾匡級")
+ private Integer status;
+
+ /**
+ * 鍏憡鍐呭
+ */
+ @ApiModelProperty("鍏憡鍐呭")
+ private String content;
+
+ /**
+ * 浼樺厛绾�(1鏅�� 2閲嶈 3绱ф��)
+ */
+ @ApiModelProperty("浼樺厛绾�(1鏅�� 2閲嶈 3绱ф��)")
+ private Integer priority;
+
+ /**
+ * 杩囨湡鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date expirationDate;
+
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/ReadingStatus.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/ReadingStatus.java
new file mode 100644
index 0000000..1aa4892
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/ReadingStatus.java
@@ -0,0 +1,70 @@
+package com.ruoyi.collaborativeApproval.pojo;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("reading_status")
+public class ReadingStatus implements Serializable {
+ /**
+ * 涓婚敭
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鍒跺害id
+ */
+ private Long ruleId;
+ /**
+ * 鍛樺伐濮撳悕
+ */
+ private String employee;
+ /**
+ * 閮ㄩ棬
+ */
+ private String department;
+ /**
+ * 纭鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime confirmTime;
+ /**
+ * 闃呰鐘舵��
+ */
+ private String status;
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+ /**
+ * 淇敼浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/RulesRegulationsManagement.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/RulesRegulationsManagement.java
new file mode 100644
index 0000000..cc32e10
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/RulesRegulationsManagement.java
@@ -0,0 +1,111 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.ListToStringTypeHandler;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.ibatis.type.JdbcType;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@TableName(value = "rules_regulations_management")
+public class RulesRegulationsManagement {
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鍒跺害缂栧彿
+ */
+ @ApiModelProperty("鍒跺害缂栧彿")
+ @Excel(name = "鍒跺害缂栧彿")
+ private String regulationNum;
+
+ /**
+ * 鏍囬
+ */
+ @ApiModelProperty("鏍囬")
+ @Excel(name = "鏍囬")
+ private String title;
+ /**
+ * 鍒跺害鍒嗙被
+ */
+ @ApiModelProperty("鍒跺害鍒嗙被")
+ @Excel(name = "鍒跺害鍒嗙被", readConverterExp = "finance=璐㈠姟鍒跺害,hr=浜轰簨鍒跺害,safety=瀹夊叏鍒跺害,tech=鎶�鏈埗搴�")
+ private String category;
+ /**
+ * 鍒跺害鍐呭
+ */
+ @ApiModelProperty("鍒跺害鍐呭")
+ private String content;
+ /**
+ * 鐢熸晥鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime effectiveTime;
+
+ /**
+ * 閫傜敤鑼冨洿
+ */
+ @ApiModelProperty("閫傜敤鑼冨洿")
+ @TableField(value = "scope",typeHandler = ListToStringTypeHandler.class,jdbcType = JdbcType.VARCHAR)
+ private List<String> scope;
+ /**
+ * 鏄惁闇�瑕佺‘璁�
+ */
+ @ApiModelProperty("鏄惁闇�瑕佺‘璁�")
+ private Boolean requireConfirm;
+ /**
+ * 鐗堟湰
+ */
+ @ApiModelProperty("鐗堟湰")
+ @Excel(name = "鐗堟湰")
+ private String version;
+ /**
+ * 鐘舵��
+ */
+ @ApiModelProperty("鐘舵��")
+ @Excel(name = "鐘舵��", readConverterExp = "repealed=宸插簾姝�,active=鐢熸晥涓�")
+ private String status;
+ /**
+ * 宸茶浜烘暟
+ */
+ @ApiModelProperty("宸茶浜烘暟")
+ @Excel(name = "宸茶浜烘暟")
+ private Integer readCount;
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "鍒涘缓鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+ /**
+ * 淇敼浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/SealApplicationManagement.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/SealApplicationManagement.java
new file mode 100644
index 0000000..d6d1d81
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/SealApplicationManagement.java
@@ -0,0 +1,72 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+@Data
+@TableName("seal_application_management")
+public class SealApplicationManagement {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鐢宠缂栧彿
+ */
+ @ApiModelProperty("鐢宠缂栧彿")
+ @Excel(name = "鐢宠缂栧彿")
+ private String applicationNum;
+
+ /**
+ * 鍏憡鏍囬
+ */
+ @ApiModelProperty("鍏憡鏍囬")
+ @Excel(name = "鐢宠鏍囬")
+ private String title;
+ /**
+ * 鐢ㄥ嵃绫诲瀷
+ */
+ @ApiModelProperty("鐢ㄥ嵃绫诲瀷")
+ @Excel(name = "鐢ㄥ嵃绫诲瀷", readConverterExp = "official=鍏珷,contract=鍚堝悓涓撶敤绔�,finance=璐㈠姟涓撶敤绔�,legal=鏈煡")
+ private String sealType;
+ /**
+ * 鐢宠鐢ㄥ嵃鍘熷洜
+ */
+ @ApiModelProperty("鐢宠鐢ㄥ嵃鍘熷洜")
+ private String reason;
+
+ /**
+ * 绱ф�ョ▼搴�
+ */
+ @ApiModelProperty("绱ф�ョ▼搴�")
+ private String urgency;
+ /**
+ * 鐘舵��
+ */
+ @ApiModelProperty("鐘舵��")
+ @Excel(name = "鐘舵��", readConverterExp = "pending=寰呭鎵�,approved=宸查�氳繃,rejected=宸叉嫆缁�")
+ private String status;
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/StaffContactsPersonal.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/StaffContactsPersonal.java
new file mode 100644
index 0000000..967769e
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/StaffContactsPersonal.java
@@ -0,0 +1,43 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@TableName("staff_contacts_personal")
+@Data
+public class StaffContactsPersonal {
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+// /**
+// * 鐢ㄦ埛ID锛堟墍灞炶�咃級
+// */
+// @ApiModelProperty("鐢ㄦ埛ID锛堟墍灞炶�咃級")
+// private Integer userId;
+
+ /**
+ * 鍛樺伐ID
+ */
+ @ApiModelProperty("鍛樺伐ID")
+ private Integer contactId;
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/DutyPlanService.java b/src/main/java/com/ruoyi/collaborativeApproval/service/DutyPlanService.java
new file mode 100644
index 0000000..67bff22
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/DutyPlanService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.collaborativeApproval.service;
+
+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.collaborativeApproval.dto.DutyPlanDTO;
+import com.ruoyi.collaborativeApproval.pojo.DutyPlan;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+public interface DutyPlanService extends IService<DutyPlan> {
+ IPage listPage(Page page, DutyPlanDTO dutyPlanDTO);
+
+ List<Map<String, Object>> getNum();
+
+ void exportData(HttpServletResponse response, DutyPlanDTO dutyPlan);
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java b/src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java
new file mode 100644
index 0000000..7b3c906
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java
@@ -0,0 +1,73 @@
+package com.ruoyi.collaborativeApproval.service;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.collaborativeApproval.dto.MeetSummaryDto;
+import com.ruoyi.collaborativeApproval.dto.MeetUseDto;
+import com.ruoyi.collaborativeApproval.dto.MeetingSimpleDto;
+import com.ruoyi.collaborativeApproval.pojo.MeetApplication;
+import com.ruoyi.collaborativeApproval.pojo.MeetDraft;
+import com.ruoyi.collaborativeApproval.pojo.MeetingMinutes;
+import com.ruoyi.collaborativeApproval.pojo.MeetingRoom;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingApplicationVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingDraftVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingRoomVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingUseVo;
+
+
+import java.util.List;
+
+public interface MeetingService extends IService<MeetingRoom> {
+//****************浼氳瀹�********************************
+ IPage<MeetingRoom> getMeetingRoomList(SearchMeetingRoomVo vo);
+
+ void saveMeetRoom(MeetingRoom meetingRoom);
+
+ MeetingRoom findMeetRoomById(Long id);
+
+ void deleteMeetingRoom(Long id);
+
+ List<MeetingRoom> getRoomEnum();
+
+
+
+//***************鑽夌********************************
+
+ IPage<MeetDraft> getMeetingDraftList(SearchMeetingDraftVo vo);
+
+ void saveMeetDraft(MeetDraft meetDraft);
+
+ void deleteMeetingDraft(Long id);
+
+// ************鐢宠浼氳************
+
+ void saveMeetApplication(MeetApplication meetApplication);
+
+// ************鐢宠瀹℃壒************
+
+ IPage<MeetApplication> getMeetingApplicationList(SearchMeetingApplicationVo vo);
+
+
+
+ // ****************浼氳浣跨敤鏌ヨ********************************
+
+ /**
+ * 浼氳浣跨敤娓呭崟
+ */
+ List<MeetUseDto> meetingUseList(SearchMeetingUseVo vo);
+
+ // ****************浼氳鍙戝竷********************************
+ IPage<MeetApplication> getMeetingPublishList(SearchMeetingApplicationVo vo);
+
+
+ // ****************浼氳绾********************************
+ MeetingMinutes getMeetingMinutesById(Long id);
+
+ void saveMeetingMinutes(MeetingMinutes meetingMinutes);
+
+ MeetSummaryDto getMeetSummary();
+
+
+ List<MeetingSimpleDto> getMeetSummaryItems();
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/NoticeService.java b/src/main/java/com/ruoyi/collaborativeApproval/service/NoticeService.java
new file mode 100644
index 0000000..31ded68
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/NoticeService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.collaborativeApproval.service;
+
+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.collaborativeApproval.dto.NoticeDTO;
+import com.ruoyi.collaborativeApproval.pojo.Notice;
+
+import java.util.List;
+
+
+public interface NoticeService extends IService<Notice> {
+
+ IPage<NoticeDTO> listPage(Page page, NoticeDTO noticeDTO);
+
+ List<NoticeDTO> selectCount();
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/RulesRegulationsManagementService.java b/src/main/java/com/ruoyi/collaborativeApproval/service/RulesRegulationsManagementService.java
new file mode 100644
index 0000000..270fa56
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/RulesRegulationsManagementService.java
@@ -0,0 +1,11 @@
+package com.ruoyi.collaborativeApproval.service;
+
+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.collaborativeApproval.dto.RulesRegulationsManagementDTO;
+import com.ruoyi.collaborativeApproval.pojo.RulesRegulationsManagement;
+
+public interface RulesRegulationsManagementService extends IService<RulesRegulationsManagement> {
+ IPage<RulesRegulationsManagementDTO> listPage(Page page, RulesRegulationsManagement rulesRegulationsManagement);
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/SealApplicationManagementService.java b/src/main/java/com/ruoyi/collaborativeApproval/service/SealApplicationManagementService.java
new file mode 100644
index 0000000..d0d931a
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/SealApplicationManagementService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.collaborativeApproval.service;
+
+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.collaborativeApproval.pojo.SealApplicationManagement;
+
+public interface SealApplicationManagementService extends IService<SealApplicationManagement> {
+ IPage listPage(Page page, SealApplicationManagement sealApplicationManagement);
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/StaffContactsPersonalService.java b/src/main/java/com/ruoyi/collaborativeApproval/service/StaffContactsPersonalService.java
new file mode 100644
index 0000000..d06133d
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/StaffContactsPersonalService.java
@@ -0,0 +1,11 @@
+package com.ruoyi.collaborativeApproval.service;
+
+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.collaborativeApproval.dto.StaffContactsPersonalDTO;
+import com.ruoyi.collaborativeApproval.pojo.StaffContactsPersonal;
+
+public interface StaffContactsPersonalService extends IService<StaffContactsPersonal> {
+ IPage listPage(Page page, StaffContactsPersonalDTO staffContactsPersonalDTO);
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/DutyPlanServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/DutyPlanServiceImpl.java
new file mode 100644
index 0000000..b70f67a
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/DutyPlanServiceImpl.java
@@ -0,0 +1,41 @@
+package com.ruoyi.collaborativeApproval.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.collaborativeApproval.dto.DutyPlanDTO;
+import com.ruoyi.collaborativeApproval.mapper.DutyPlanMapper;
+import com.ruoyi.collaborativeApproval.pojo.DutyPlan;
+import com.ruoyi.collaborativeApproval.service.DutyPlanService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class DutyPlanServiceImpl extends ServiceImpl<DutyPlanMapper, DutyPlan> implements DutyPlanService {
+ @Autowired
+ private DutyPlanMapper dutyPlanMapper;
+
+ @Override
+ public IPage listPage(Page page, DutyPlanDTO dutyPlanDTO) {
+ return dutyPlanMapper.listPage(page, dutyPlanDTO);
+ }
+
+ @Override
+ public List<Map<String, Object>> getNum() {
+
+ return dutyPlanMapper.getNum();
+ }
+
+ @Override
+ public void exportData(HttpServletResponse response, DutyPlanDTO dutyPlanDTO) {
+ IPage<DutyPlanDTO> dutyPlans = dutyPlanMapper.listPage(new Page<>(-1, -1), dutyPlanDTO);
+ List<DutyPlanDTO> records = dutyPlans.getRecords();
+ ExcelUtil<DutyPlanDTO> util = new ExcelUtil<>(DutyPlanDTO.class);
+ util.exportExcel(response, records, "璁″垝瀵煎嚭");
+ }
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
new file mode 100644
index 0000000..c269b1a
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
@@ -0,0 +1,244 @@
+package com.ruoyi.collaborativeApproval.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.xiaoymin.knife4j.core.util.StrUtil;
+import com.ruoyi.collaborativeApproval.dto.MeetSummaryDto;
+import com.ruoyi.collaborativeApproval.dto.MeetUseDto;
+import com.ruoyi.collaborativeApproval.dto.MeetingItem;
+import com.ruoyi.collaborativeApproval.dto.MeetingSimpleDto;
+import com.ruoyi.collaborativeApproval.mapper.MeetApplicationMapper;
+import com.ruoyi.collaborativeApproval.mapper.MeetDraftMapper;
+import com.ruoyi.collaborativeApproval.mapper.MeetingMinutesMapper;
+import com.ruoyi.collaborativeApproval.mapper.MeetingRoomMapper;
+import com.ruoyi.collaborativeApproval.pojo.MeetApplication;
+import com.ruoyi.collaborativeApproval.pojo.MeetDraft;
+import com.ruoyi.collaborativeApproval.pojo.MeetingMinutes;
+import com.ruoyi.collaborativeApproval.pojo.MeetingRoom;
+import com.ruoyi.collaborativeApproval.service.MeetingService;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingApplicationVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingDraftVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingRoomVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingUseVo;
+import com.ruoyi.common.utils.SecurityUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+@Service
+@RequiredArgsConstructor
+public class MeetingServiceImpl extends ServiceImpl<MeetingRoomMapper, MeetingRoom> implements MeetingService {
+ private final MeetingRoomMapper meetingRoomMapper;
+
+ private final MeetDraftMapper meetDraftMapper;
+
+ private final MeetApplicationMapper meetApplicationMapper;
+
+ private final MeetingMinutesMapper meetingMinutesMapper;
+
+ @Override
+ public IPage<MeetingRoom> getMeetingRoomList(SearchMeetingRoomVo vo) {
+ LambdaQueryWrapper<MeetingRoom> queryWrapper = new LambdaQueryWrapper<>();
+ if (StrUtil.isNotBlank(vo.getName())) {
+ queryWrapper.like(MeetingRoom::getName, vo.getName());
+ }
+ if (StrUtil.isNotBlank(vo.getLocation())) {
+ queryWrapper.like(MeetingRoom::getLocation, vo.getLocation());
+ }
+ queryWrapper.orderByDesc(MeetingRoom::getId);
+ return meetingRoomMapper.selectPage(new Page<MeetingRoom>(vo.getCurrent(), vo.getSize()), queryWrapper);
+ }
+
+ @Override
+ public void saveMeetRoom(MeetingRoom meetingRoom) {
+ if (meetingRoom.getId() != null) {
+ meetingRoomMapper.updateById(meetingRoom);
+ } else {
+ meetingRoomMapper.insert(meetingRoom);
+ }
+ }
+
+ @Override
+ public MeetingRoom findMeetRoomById(Long id) {
+ return meetingRoomMapper.selectById(id);
+ }
+
+ @Override
+ public void deleteMeetingRoom(Long id) {
+ meetingRoomMapper.deleteById(id);
+ }
+
+ @Override
+ public List<MeetingRoom> getRoomEnum() {
+ LambdaQueryWrapper<MeetingRoom> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.select(MeetingRoom::getName, MeetingRoom::getId, MeetingRoom::getLocation);
+ queryWrapper.eq(MeetingRoom::getStatus, 1);
+ queryWrapper.orderByDesc(MeetingRoom::getId);
+ return meetingRoomMapper.selectList(queryWrapper);
+ }
+
+ @Override
+ public IPage<MeetDraft> getMeetingDraftList(SearchMeetingDraftVo vo) {
+
+ LambdaQueryWrapper<MeetDraft> queryWrapper = new LambdaQueryWrapper<>();
+ if (StrUtil.isNotBlank(vo.getTitle())) {
+ queryWrapper.like(MeetDraft::getTitle, vo.getTitle());
+ }
+ if (Objects.nonNull(vo.getMeetingDate())) {
+ queryWrapper.eq(MeetDraft::getMeetingDate, vo.getMeetingDate());
+ }
+
+ queryWrapper.orderByDesc(MeetDraft::getId);
+
+ return meetDraftMapper.selectPage(new Page<>(vo.getCurrent(), vo.getSize()), queryWrapper);
+ }
+
+ @Override
+ public void saveMeetDraft(MeetDraft meetDraft) {
+ if (meetDraft.getId() != null) {
+ meetDraftMapper.updateById(meetDraft);
+ } else {
+ meetDraftMapper.insert(meetDraft);
+ }
+ }
+
+ @Override
+ public void deleteMeetingDraft(Long id) {
+ meetDraftMapper.deleteById(id);
+ }
+
+ @Override
+ public void saveMeetApplication(MeetApplication meetApplication) {
+ meetApplication.setApplicant(SecurityUtils.getUsername());
+ if (meetApplication.getId() != null) {
+ meetApplicationMapper.updateById(meetApplication);
+ } else {
+ meetApplicationMapper.insert(meetApplication);
+ }
+ }
+
+ @Override
+ public IPage<MeetApplication> getMeetingApplicationList(SearchMeetingApplicationVo vo) {
+ LambdaQueryWrapper<MeetApplication> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.in(MeetApplication::getApplicationType, "approval", "department");
+ if (StrUtil.isNotBlank(vo.getTitle())) {
+ queryWrapper.like(MeetApplication::getTitle, vo.getTitle());
+ }
+ if (StrUtil.isNotBlank(vo.getApplicant())) {
+ queryWrapper.like(MeetApplication::getApplicant, vo.getApplicant());
+ }
+ if (StrUtil.isNotBlank(vo.getStatus())) {
+ queryWrapper.eq(MeetApplication::getStatus, vo.getStatus());
+ }
+ queryWrapper.orderByDesc(MeetApplication::getId);
+ return meetApplicationMapper.selectPage(new Page<>(vo.getCurrent(), vo.getSize()), queryWrapper);
+ }
+
+
+ @Override
+ public List<MeetUseDto> meetingUseList(SearchMeetingUseVo vo) {
+ // 鏌ヨ浼氳鍒楄〃
+ LambdaQueryWrapper<MeetApplication> alWrapper = new LambdaQueryWrapper<>();
+ alWrapper.and(wrapper -> {
+ wrapper.eq(MeetApplication::getStatus, 1)
+ .or()
+ .eq(MeetApplication::getApplicationType, "notification");
+ });
+ if (Objects.nonNull(vo.getMeetingDate())) {
+ alWrapper.and(wrapper -> {
+ wrapper.eq(MeetApplication::getMeetingDate, vo.getMeetingDate());
+ });
+ }
+ alWrapper.orderByAsc(MeetApplication::getStartTime);
+ List<MeetApplication> meetApplicationList = meetApplicationMapper.selectList(alWrapper);
+
+ // 鏍规嵁 roomId 杩涜鍒嗙粍
+ Map<Long, List<MeetApplication>> roomGroup = meetApplicationList.stream().collect(Collectors.groupingBy(MeetApplication::getRoomId));
+ // 鏌ヨroom淇℃伅
+ List<MeetingRoom> roomList = meetingRoomMapper.selectList(new LambdaUpdateWrapper<MeetingRoom>().orderByAsc(MeetingRoom::getId));
+
+ List<MeetUseDto> meetUseDtoList = new ArrayList<>();
+
+ roomList.forEach(r -> {
+ MeetUseDto dto = new MeetUseDto();
+ MeetingRoom meetingRoom = roomList.stream().filter(room -> room.getId().equals(r.getId())).findFirst().orElse(new MeetingRoom());
+ dto.setId(meetingRoom.getId());
+ dto.setName(meetingRoom.getName());
+ List<MeetingItem> collect = roomGroup.getOrDefault(r.getId(), new ArrayList<>()).stream().map(it -> {
+ MeetingItem item = new MeetingItem();
+ item.setId(it.getId());
+ item.setHost(it.getHost());
+ item.setStatus(1);
+ item.setTitle(it.getTitle());
+ item.setStartTime(it.getStartTime().format(DateTimeFormatter.ofPattern("HH:mm")));
+ item.setEndTime(it.getEndTime().format(DateTimeFormatter.ofPattern("HH:mm")));
+ item.setTime(item.getStartTime() + "锝�" + item.getEndTime());
+ item.setParticipants(it.getParticipants().split(",").length);
+ item.setDescription(it.getDescription());
+ item.setRoom(meetingRoom.getName() + "(" + meetingRoom.getLocation() + ")");
+ return item;
+ }).collect(Collectors.toList());
+ dto.setMeetings(collect);
+ meetUseDtoList.add(dto);
+ });
+ return meetUseDtoList;
+
+ }
+
+ @Override
+ public IPage<MeetApplication> getMeetingPublishList(SearchMeetingApplicationVo vo) {
+ LambdaQueryWrapper<MeetApplication> queryWrapper = new LambdaQueryWrapper<>();
+ if (StrUtil.isNotBlank(vo.getTitle())) {
+ queryWrapper.like(MeetApplication::getTitle, vo.getTitle());
+ }
+ if (StrUtil.isNotBlank(vo.getApplicant())) {
+ queryWrapper.like(MeetApplication::getApplicant, vo.getApplicant());
+ }
+ if (StrUtil.isNotBlank(vo.getStatus())) {
+ queryWrapper.eq(MeetApplication::getPublishStatus, vo.getStatus());
+ }
+ queryWrapper.and(wrapper -> {
+ wrapper.eq(MeetApplication::getStatus, 1)
+ .or()
+ .eq(MeetApplication::getApplicationType, "notification");
+ });
+ queryWrapper.orderByDesc(MeetApplication::getId);
+ return meetApplicationMapper.selectPage(new Page<>(vo.getCurrent(), vo.getSize()), queryWrapper);
+ }
+
+ @Override
+ public MeetingMinutes getMeetingMinutesById(Long id) {
+ return meetingMinutesMapper.selectOne(new LambdaUpdateWrapper<MeetingMinutes>().eq(MeetingMinutes::getMeetingId,id));
+ }
+
+ @Override
+ public void saveMeetingMinutes(MeetingMinutes meetingMinutes) {
+ if (meetingMinutes.getId() != null){
+ meetingMinutesMapper.updateById(meetingMinutes);
+ }else {
+ meetingMinutesMapper.insert(meetingMinutes);
+ }
+ }
+
+
+ @Override
+ public MeetSummaryDto getMeetSummary() {
+ return meetApplicationMapper.getMeetSummary();
+ }
+
+ @Override
+ public List<MeetingSimpleDto> getMeetSummaryItems() {
+ return meetApplicationMapper.getMeetSummaryItems();
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/NoticeServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/NoticeServiceImpl.java
new file mode 100644
index 0000000..d6504a1
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/NoticeServiceImpl.java
@@ -0,0 +1,56 @@
+package com.ruoyi.collaborativeApproval.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.collaborativeApproval.dto.NoticeDTO;
+import com.ruoyi.collaborativeApproval.mapper.NoticeMapper;
+import com.ruoyi.collaborativeApproval.pojo.Notice;
+import com.ruoyi.collaborativeApproval.service.NoticeService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@Slf4j
+@AllArgsConstructor
+public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> implements NoticeService {
+
+ private final NoticeMapper noticeMapper;
+
+ @Override
+ public IPage<NoticeDTO> listPage(Page page, NoticeDTO noticeDTO) {
+ IPage<NoticeDTO> noticeDTOIPage = noticeMapper.listPage(page, noticeDTO);
+ noticeDTOIPage.getRecords().forEach(item -> {
+ // 鏍规嵁杩囨湡鏃堕棿鍒ゆ柇statusName
+ if (item.getExpirationDate() == null) {
+ item.setStatusName("鏈煡");
+ }else if(item.getExpirationDate().getTime() < System.currentTimeMillis()){
+ item.setStatusName("宸茶繃鏈�");
+ } else{
+ item.setStatusName("姝e父");
+ }
+ });
+ return noticeDTOIPage;
+ }
+
+ @Override
+ public List<NoticeDTO> selectCount() {
+ List<NoticeDTO> result = new ArrayList<>();
+ NoticeDTO notice = new NoticeDTO();
+ notice.setType(1);
+ notice.setCount(noticeMapper.selectCount(new LambdaQueryWrapper<Notice>().eq(Notice::getType, 1)));
+ result.add(notice);
+
+ NoticeDTO notice1 = new NoticeDTO();
+ notice1.setType(2);
+ notice1.setCount(noticeMapper.selectCount(new LambdaQueryWrapper<Notice>().eq(Notice::getType, 2)));
+ result.add(notice1);
+
+ return result;
+ }
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/RulesRegulationsManagementServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/RulesRegulationsManagementServiceImpl.java
new file mode 100644
index 0000000..a4f912e
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/RulesRegulationsManagementServiceImpl.java
@@ -0,0 +1,21 @@
+package com.ruoyi.collaborativeApproval.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.collaborativeApproval.dto.RulesRegulationsManagementDTO;
+import com.ruoyi.collaborativeApproval.mapper.RulesRegulationsManagementMapper;
+import com.ruoyi.collaborativeApproval.pojo.RulesRegulationsManagement;
+import com.ruoyi.collaborativeApproval.service.RulesRegulationsManagementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RulesRegulationsManagementServiceImpl extends ServiceImpl<RulesRegulationsManagementMapper, RulesRegulationsManagement> implements RulesRegulationsManagementService {
+ @Autowired
+ private RulesRegulationsManagementMapper rulesRegulationsManagementMapper;
+ @Override
+ public IPage<RulesRegulationsManagementDTO> listPage(Page page, RulesRegulationsManagement rulesRegulationsManagement) {
+ return rulesRegulationsManagementMapper.listPage(page, rulesRegulationsManagement);
+ }
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/SealApplicationManagementServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/SealApplicationManagementServiceImpl.java
new file mode 100644
index 0000000..6cb8a2b
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/SealApplicationManagementServiceImpl.java
@@ -0,0 +1,22 @@
+package com.ruoyi.collaborativeApproval.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.collaborativeApproval.dto.SealApplicationManagementDTO;
+import com.ruoyi.collaborativeApproval.mapper.SealApplicationManagementMapper;
+import com.ruoyi.collaborativeApproval.pojo.SealApplicationManagement;
+import com.ruoyi.collaborativeApproval.service.SealApplicationManagementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SealApplicationManagementServiceImpl extends ServiceImpl<SealApplicationManagementMapper, SealApplicationManagement> implements SealApplicationManagementService {
+ @Autowired
+ private SealApplicationManagementMapper sealApplicationManagementMapper;
+
+ @Override
+ public IPage<SealApplicationManagementDTO> listPage(Page page, SealApplicationManagement sealApplicationManagement) {
+ return sealApplicationManagementMapper.listPage(page, sealApplicationManagement);
+ }
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/StaffContactsPersonalServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/StaffContactsPersonalServiceImpl.java
new file mode 100644
index 0000000..1a77996
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/StaffContactsPersonalServiceImpl.java
@@ -0,0 +1,22 @@
+package com.ruoyi.collaborativeApproval.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.collaborativeApproval.dto.StaffContactsPersonalDTO;
+import com.ruoyi.collaborativeApproval.mapper.StaffContactsPersonalMapper;
+import com.ruoyi.collaborativeApproval.pojo.StaffContactsPersonal;
+import com.ruoyi.collaborativeApproval.service.StaffContactsPersonalService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class StaffContactsPersonalServiceImpl extends ServiceImpl<StaffContactsPersonalMapper, StaffContactsPersonal> implements StaffContactsPersonalService {
+ @Autowired
+ private StaffContactsPersonalMapper staffContactsPersonalMapper;
+ @Override
+ public IPage listPage(Page page, StaffContactsPersonalDTO staffContactsPersonalDTO) {
+ return staffContactsPersonalMapper.listPage(page, staffContactsPersonalDTO);
+ }
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingApplicationVo.java b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingApplicationVo.java
new file mode 100644
index 0000000..04fbf46
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingApplicationVo.java
@@ -0,0 +1,16 @@
+package com.ruoyi.collaborativeApproval.vo;
+
+import com.ruoyi.dto.PageDto;
+import lombok.Data;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/16
+ * @email 3038525872@qq.com
+ */
+@Data
+public class SearchMeetingApplicationVo extends PageDto {
+ private String title;
+ private String applicant;
+ private String status;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingDraftVo.java b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingDraftVo.java
new file mode 100644
index 0000000..6178e1d
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingDraftVo.java
@@ -0,0 +1,23 @@
+package com.ruoyi.collaborativeApproval.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.dto.PageDto;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/15
+ * @email 3038525872@qq.com
+ */
+@Data
+public class SearchMeetingDraftVo extends PageDto {
+ private String title;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date meetingDate;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingRoomVo.java b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingRoomVo.java
new file mode 100644
index 0000000..1af4c04
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingRoomVo.java
@@ -0,0 +1,23 @@
+package com.ruoyi.collaborativeApproval.vo;
+
+import com.ruoyi.dto.PageDto;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/15
+ * @email 3038525872@qq.com
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SearchMeetingRoomVo extends PageDto {
+
+ private String name;
+ private String location;
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingUseVo.java b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingUseVo.java
new file mode 100644
index 0000000..a782b19
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingUseVo.java
@@ -0,0 +1,19 @@
+package com.ruoyi.collaborativeApproval.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/16
+ * @email 3038525872@qq.com
+ */
+@Data
+public class SearchMeetingUseVo {
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date meetingDate;
+}
diff --git a/src/main/java/com/ruoyi/common/enums/FileNameType.java b/src/main/java/com/ruoyi/common/enums/FileNameType.java
index ded6e9f..16d51f6 100644
--- a/src/main/java/com/ruoyi/common/enums/FileNameType.java
+++ b/src/main/java/com/ruoyi/common/enums/FileNameType.java
@@ -1,5 +1,7 @@
package com.ruoyi.common.enums;
+import com.ruoyi.approve.pojo.ApproveProcess;
+
public enum FileNameType {
SALE(1), // 閿�鍞�
@@ -8,7 +10,8 @@
PURCHASELEDGER(4),
MEASURING(5), //璁¢噺鍣ㄥ叿鍙拌处
MEASURINGRecord(6),//璁¢噺鍣ㄥ叿鍙拌处璁板綍
- ApproveNode(7); //鍗忓悓瀹℃壒瀹℃牳
+ ApproveNode(7), //鍗忓悓瀹℃壒鑺傜偣瀹℃牳
+ ApproveProcess(8); //鍗忓悓瀹℃壒涓绘暟鎹�
private final int value;
diff --git a/src/main/java/com/ruoyi/common/enums/StorageAttachmentRecordType.java b/src/main/java/com/ruoyi/common/enums/StorageAttachmentRecordType.java
index 8b0597e..a4b889d 100644
--- a/src/main/java/com/ruoyi/common/enums/StorageAttachmentRecordType.java
+++ b/src/main/java/com/ruoyi/common/enums/StorageAttachmentRecordType.java
@@ -9,7 +9,10 @@
@AllArgsConstructor
public enum StorageAttachmentRecordType {
// 渚嬪瓙 瀹為檯寮�鍙戣鍒犻櫎
- Template("Template","鑼冧緥");
+ Template("Template","鑼冧緥"),
+ Archives("Archives","鏂囨。绠$悊"),
+ InspectionTasks("InspectionTasks","鐢熶骇宸℃"),
+ QrCodeScanRecords("QrCodeScanRecords","浜岀淮鐮佹壂鐮佽褰曟枃浠�");
private final String code;
diff --git a/src/main/java/com/ruoyi/common/utils/MinioUtils.java b/src/main/java/com/ruoyi/common/utils/MinioUtils.java
index 55af1dd..d192f93 100644
--- a/src/main/java/com/ruoyi/common/utils/MinioUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/MinioUtils.java
@@ -21,12 +21,10 @@
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
+import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -306,4 +304,130 @@
return null;
}
+ /**
+ * 鐢熸垚棰勮URL
+ * @param bucketFilename 鏂囦欢鍦∕inIO涓殑鍞竴鏍囪瘑
+ * @param bucketName 瀛樺偍妗跺悕绉�
+ * @param useDefaultExpiry 鏄惁浣跨敤榛樿杩囨湡鏃堕棿锛坱rue=浣跨敤榛樿杩囨湡鏃堕棿锛宖alse=姘镐箙鏈夋晥锛�
+ * @return 棰勮URL
+ */
+ public String getPreviewUrls(String bucketFilename, String bucketName, boolean useDefaultExpiry) {
+ if (StringUtils.isBlank(bucketFilename)) {
+ return null;
+ }
+
+ try {
+ // 楠岃瘉鏂囦欢瀛樺湪鎬�
+ minioClient.statObject(StatObjectArgs.builder()
+ .bucket(bucketName)
+ .object(bucketFilename)
+ .build());
+
+ GetPresignedObjectUrlArgs.Builder builder = GetPresignedObjectUrlArgs.builder()
+ .method(Method.GET)
+ .bucket(bucketName)
+ .object(bucketFilename);
+
+ // 璁剧疆杩囨湡鏃堕棿锛歶seDefaultExpiry=true 浣跨敤閰嶇疆鐨勮繃鏈熸椂闂�
+ if (useDefaultExpiry) {
+ builder.expiry(previewExpiry, TimeUnit.HOURS);
+ }
+
+ return minioClient.getPresignedObjectUrl(builder.build());
+ } catch (Exception e) {
+ throw new UtilException("鐢熸垚棰勮URL澶辫触: " + e.getMessage(), e);
+ }
+ }
+
+
+ /**
+ * 鐢熸垚涓嬭浇URL锛堝己鍒舵祻瑙堝櫒涓嬭浇锛�
+ * @param bucketFilename 鏂囦欢鍦∕inIO涓殑鍞竴鏍囪瘑
+ * @param bucketName 瀛樺偍妗跺悕绉�
+ * @param originalFileName 鍘熷鏂囦欢鍚嶏紙鐢ㄤ簬涓嬭浇鏃舵樉绀猴級
+ * @param useDefaultExpiry 鏄惁浣跨敤榛樿杩囨湡鏃堕棿锛坱rue=浣跨敤榛樿锛宖alse=鏃犺繃鏈熸椂闂达級
+ * @return 涓嬭浇URL
+ */
+ public String getDownloadUrls(String bucketFilename, String bucketName, String originalFileName, boolean useDefaultExpiry) {
+ if (StringUtils.isBlank(bucketFilename)) {
+ return null;
+ }
+
+ try {
+ // 楠岃瘉鏂囦欢瀛樺湪鎬�
+ minioClient.statObject(StatObjectArgs.builder()
+ .bucket(bucketName)
+ .object(bucketFilename)
+ .build());
+
+ // 姝g‘缂栫爜鏂囦欢鍚嶏細鏇挎崲 + 涓� %20
+ String encodedFileName = URLEncoder.encode(originalFileName, String.valueOf(StandardCharsets.UTF_8))
+ .replace("+", "%20");
+
+ Map<String, String> reqParams = new HashMap<>();
+ reqParams.put("response-content-disposition",
+ "attachment; filename=\"" + encodedFileName + "\"");
+
+ GetPresignedObjectUrlArgs.Builder builder = GetPresignedObjectUrlArgs.builder()
+ .method(Method.GET)
+ .bucket(bucketName)
+ .object(bucketFilename)
+ .extraQueryParams(reqParams);
+
+ // 鏍规嵁鍙傛暟鍐冲畾鏄惁璁剧疆杩囨湡鏃堕棿
+ if (useDefaultExpiry) {
+ // 浣跨敤榛樿杩囨湡鏃堕棿锛堜粠閰嶇疆璇诲彇锛�
+ builder.expiry(previewExpiry, TimeUnit.HOURS);
+ } else {
+ // 涓嶈缃繃鏈熸椂闂达紙MinIO 榛樿7澶╋級
+ }
+ return minioClient.getPresignedObjectUrl(builder.build());
+ } catch (Exception e) {
+ throw new UtilException("鐢熸垚涓嬭浇URL澶辫触: " + e.getMessage(), e);
+ }
+ }
+
+ public String getDownloadUrl(String bucketFileName, String bucketName) {
+ if (StringUtils.isNotBlank(bucketFileName)) {
+ try {
+ // 妫�鏌ユ枃浠舵槸鍚﹀瓨鍦�
+ minioClient.statObject(StatObjectArgs.builder()
+ .bucket(bucketName)
+ .object(bucketFileName)
+ .build());
+
+ // 璁剧疆鍝嶅簲澶�
+ Map<String, String> reqParams = new HashMap<>();
+ // 鎻愬彇鍘熷鏂囦欢鍚嶏紙濡傛灉瀛樺偍鏃朵繚鐣欎簡鍘熷鍚嶇О锛�
+ String originalFileName = extractOriginalFileName(bucketFileName);
+ reqParams.put("response-content-disposition",
+ "attachment; filename=\"" + URLEncoder.encode(originalFileName, String.valueOf(StandardCharsets.UTF_8)) + "\"");
+
+ // 鏋勫缓棰勭鍚峌RL鍙傛暟
+ GetPresignedObjectUrlArgs args = GetPresignedObjectUrlArgs.builder()
+ .method(Method.GET)
+ .bucket(bucketName)
+ .object(bucketFileName)
+ .expiry(previewExpiry, TimeUnit.HOURS)
+ .extraQueryParams(reqParams)
+ .build();
+
+ return minioClient.getPresignedObjectUrl(args);
+ } catch (Exception e) {
+ throw new UtilException("MinioUtils锛氱敓鎴愪笅杞介摼鎺ュ紓甯�", e);
+ }
+ }
+ return null;
+ }
+
+ private String extractOriginalFileName(String bucketFileName) {
+ // 绀轰緥锛氬鏋滃瓨鍌ㄦ牸寮忎负 "鍘熷鏂囦欢鍚峗UUID"
+ int underscoreIndex = bucketFileName.lastIndexOf("_");
+ if (underscoreIndex > 0) {
+ return bucketFileName.substring(0, underscoreIndex);
+ }
+ // 濡傛灉娌℃湁鐗规畩鏍煎紡锛岀洿鎺ヨ繑鍥炲畬鏁存枃浠跺悕
+ return bucketFileName;
+ }
+
}
diff --git a/src/main/java/com/ruoyi/common/utils/OrderUtils.java b/src/main/java/com/ruoyi/common/utils/OrderUtils.java
new file mode 100644
index 0000000..42c154d
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/utils/OrderUtils.java
@@ -0,0 +1,55 @@
+package com.ruoyi.common.utils;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 15:31
+ */
+public class OrderUtils {
+
+
+ /**
+ * 鏌ヨ褰撳ぉ锛堝熀浜巆reateTime瀛楁锛夌殑璁板綍鏁伴噺
+ * @param mapper 瀹炰綋绫诲搴旂殑BaseMapper
+ * @param <T> 瀹炰綋绫绘硾鍨�
+ * @return 褰撳ぉ璁板綍鏁伴噺
+ */
+ public static <T> String countTodayByCreateTime(BaseMapper<T> mapper,String preFix) {
+ // 鑾峰彇褰撳ぉ寮�濮嬫椂闂达紙00:00:00锛�
+ LocalDateTime todayStart = LocalDateTime.of(
+ LocalDateTime.now().toLocalDate(),
+ LocalTime.MIN
+ );
+ // 鑾峰彇褰撳ぉ缁撴潫鏃堕棿锛�23:59:59.999锛�
+ LocalDateTime todayEnd = LocalDateTime.of(
+ LocalDateTime.now().toLocalDate(),
+ LocalTime.MAX
+ );
+
+ // 杞崲涓篋ate绫诲瀷锛堝鏋滃疄浣撶被涓璫reateTime鏄疞ocalDateTime鍙洿鎺ヤ娇鐢級
+ Date startDate = Date.from(todayStart.atZone(ZoneId.systemDefault()).toInstant());
+ Date endDate = Date.from(todayEnd.atZone(ZoneId.systemDefault()).toInstant());
+
+ // 鏋勫缓鏌ヨ鏉′欢
+ QueryWrapper<T> queryWrapper = new QueryWrapper<>();
+ queryWrapper.ge("create_time", startDate) // 澶т簬绛変簬褰撳ぉ寮�濮�
+ .lt("create_time", endDate); // 灏忎簬褰撳ぉ缁撴潫锛堥伩鍏嶆绉掔簿搴﹂棶棰橈級
+
+ // 鎵ц鏌ヨ
+ Long aLong = mapper.selectCount(queryWrapper);
+ // 鎷兼帴璁㈠崟缂栧彿 preFix + 鏃堕棿锛坹yyyMMdd锛� + 璁㈠崟鏁伴噺(001)
+ return preFix + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE).replaceAll("-", "") + String.format("%03d", (aLong + 1));}
+}
diff --git a/src/main/java/com/ruoyi/common/utils/excel/ConfigurableMergeStrategy.java b/src/main/java/com/ruoyi/common/utils/excel/ConfigurableMergeStrategy.java
new file mode 100644
index 0000000..6d59d27
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/utils/excel/ConfigurableMergeStrategy.java
@@ -0,0 +1,29 @@
+package com.ruoyi.common.utils.excel;
+
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.write.merge.AbstractMergeStrategy;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.util.CellRangeAddress;
+
+import java.util.List;
+
+public class ConfigurableMergeStrategy extends AbstractMergeStrategy {
+ private final List<CellRangeAddress> mergeRegions;
+
+ public ConfigurableMergeStrategy(List<CellRangeAddress> mergeRegions) {
+ this.mergeRegions = mergeRegions;
+ }
+
+ @Override
+ protected void merge(Sheet sheet, Cell cell, Head head, Integer relativeRowIndex) {
+ // 妫�鏌ュ綋鍓嶅崟鍏冩牸鏄惁鍦ㄤ换浣曚竴涓悎骞跺尯鍩熷唴
+ for (CellRangeAddress region : mergeRegions) {
+ if (cell.getRowIndex() == region.getFirstRow() &&
+ cell.getColumnIndex() == region.getFirstColumn()) {
+ sheet.addMergedRegion(region); // 鎵ц鍚堝苟
+ break;
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/ruoyi/common/utils/excel/CustomCellStyleHandler.java b/src/main/java/com/ruoyi/common/utils/excel/CustomCellStyleHandler.java
new file mode 100644
index 0000000..7c095e7
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/utils/excel/CustomCellStyleHandler.java
@@ -0,0 +1,43 @@
+package com.ruoyi.common.utils.excel;
+
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.write.handler.CellWriteHandler;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
+import org.apache.poi.ss.usermodel.*;
+
+import java.util.List;
+
+public class CustomCellStyleHandler implements CellWriteHandler {
+
+ @Override
+ public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
+
+ }
+
+ @Override
+ public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+
+ }
+
+
+ @Override
+ public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+ int row = cell.getRowIndex();
+ int col = cell.getColumnIndex();
+
+ // 闇�瑕佹帓闄ょ殑鍗曞厓鏍�
+ if ((row == 2 && col == 0) || (row == 10 && col == 0)) {
+ return;
+ }
+
+ // 涓哄叾浠栧崟鍏冩牸璁剧疆鏍峰紡锛堝眳涓�+鑷姩鎹㈣锛�
+ Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
+ CellStyle style = workbook.createCellStyle();
+ style.setAlignment(HorizontalAlignment.CENTER);
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ style.setWrapText(true);
+ cell.setCellStyle(style);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/common/utils/excel/ExcelClassField.java b/src/main/java/com/ruoyi/common/utils/excel/ExcelClassField.java
new file mode 100644
index 0000000..de42dd9
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/utils/excel/ExcelClassField.java
@@ -0,0 +1,77 @@
+package com.ruoyi.common.utils.excel;
+
+import java.util.LinkedHashMap;
+
+/**
+ * @author sunnyzyq
+ * @date 2021/12/17
+ */
+public class ExcelClassField {
+
+ /** 瀛楁鍚嶇О */
+ private String fieldName;
+
+ /** 琛ㄥご鍚嶇О */
+ private String name;
+
+ /** 鏄犲皠鍏崇郴 */
+ private LinkedHashMap<String, String> kvMap;
+
+ /** 绀轰緥鍊� */
+ private Object example;
+
+ /** 鎺掑簭 */
+ private int sort;
+
+ /** 鏄惁涓烘敞瑙e瓧娈碉細0-鍚︼紝1-鏄� */
+ private int hasAnnotation;
+
+ public String getFieldName() {
+ return fieldName;
+ }
+
+ public void setFieldName(String fieldName) {
+ this.fieldName = fieldName;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public LinkedHashMap<String, String> getKvMap() {
+ return kvMap;
+ }
+
+ public void setKvMap(LinkedHashMap<String, String> kvMap) {
+ this.kvMap = kvMap;
+ }
+
+ public Object getExample() {
+ return example;
+ }
+
+ public void setExample(Object example) {
+ this.example = example;
+ }
+
+ public int getSort() {
+ return sort;
+ }
+
+ public void setSort(int sort) {
+ this.sort = sort;
+ }
+
+ public int getHasAnnotation() {
+ return hasAnnotation;
+ }
+
+ public void setHasAnnotation(int hasAnnotation) {
+ this.hasAnnotation = hasAnnotation;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/common/utils/excel/ExcelExport.java b/src/main/java/com/ruoyi/common/utils/excel/ExcelExport.java
new file mode 100644
index 0000000..06ffc83
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/utils/excel/ExcelExport.java
@@ -0,0 +1,28 @@
+package com.ruoyi.common.utils.excel;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author sunnyzyq
+ * @date 2021/12/17
+ */
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExcelExport {
+
+ /** 瀛楁鍚嶇О */
+ String value();
+
+ /** 瀵煎嚭鎺掑簭鍏堝悗: 鏁板瓧瓒婂皬瓒婇潬鍓嶏紙榛樿鎸塉ava绫诲瓧娈甸『搴忓鍑猴級 */
+ int sort() default 0;
+
+ /** 瀵煎嚭鏄犲皠锛屾牸寮忓锛�0-鏈煡;1-鐢�;2-濂� */
+ String kv() default "";
+
+ /** 瀵煎嚭妯℃澘绀轰緥鍊硷紙鏈夊�肩殑璇濓紝鐩存帴鍙栬鍊硷紝涓嶅仛鏄犲皠锛� */
+ String example() default "";
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/common/utils/excel/ExcelImport.java b/src/main/java/com/ruoyi/common/utils/excel/ExcelImport.java
new file mode 100644
index 0000000..cbfcf7f
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/utils/excel/ExcelImport.java
@@ -0,0 +1,31 @@
+package com.ruoyi.common.utils.excel;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author sunnyzyq
+ * @date 2021/12/17
+ */
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ExcelImport {
+
+ /** 瀛楁鍚嶇О */
+ String value();
+
+ /** 瀵煎嚭鏄犲皠锛屾牸寮忓锛�0-鏈煡;1-鐢�;2-濂� */
+ String kv() default "";
+
+ /** 鏄惁涓哄繀濉瓧娈碉紙榛樿涓洪潪蹇呭~锛� */
+ boolean required() default false;
+
+ /** 鏈�澶ч暱搴︼紙榛樿255锛� */
+ int maxLength() default 255;
+
+ /** 瀵煎叆鍞竴鎬ч獙璇侊紙澶氫釜瀛楁鍒欏彇鑱斿悎楠岃瘉锛� */
+ boolean unique() default false;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/common/utils/excel/ExcelUtils.java b/src/main/java/com/ruoyi/common/utils/excel/ExcelUtils.java
new file mode 100644
index 0000000..230bb77
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/utils/excel/ExcelUtils.java
@@ -0,0 +1,1039 @@
+package com.ruoyi.common.utils.excel;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.common.utils.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFDataValidation;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.util.CellRangeAddressList;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.net.URL;
+import java.text.NumberFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.Map.Entry;
+import java.util.regex.Pattern;
+
+/**
+ * Excel瀵煎叆瀵煎嚭宸ュ叿绫�
+ * 鍘熸枃閾炬帴锛堜笉瀹氭椂澧炲姞鏂板姛鑳斤級: https://zyqok.blog.csdn.net/article/details/121994504
+ *
+ * @author sunnyzyq
+ * @date 2021/12/17
+ */
+@SuppressWarnings("unused")
+public class ExcelUtils {
+
+ private static final String XLSX = ".xlsx";
+ private static final String XLS = ".xls";
+ public static final String ROW_MERGE = "row_merge";
+ public static final String COLUMN_MERGE = "column_merge";
+ private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
+ private static final String ROW_NUM = "rowNum";
+ private static final String ROW_DATA = "rowData";
+ private static final String ROW_TIPS = "rowTips";
+ private static final int CELL_OTHER = 0;
+ private static final int CELL_ROW_MERGE = 1;
+ private static final int CELL_COLUMN_MERGE = 2;
+ private static final int IMG_HEIGHT = 30;
+ private static final int IMG_WIDTH = 30;
+ private static final char LEAN_LINE = '/';
+ private static final int BYTES_DEFAULT_LENGTH = 10240;
+ private static final NumberFormat NUMBER_FORMAT = NumberFormat.getNumberInstance();
+
+
+ public static <T> List<T> readFile(File file, Class<T> clazz) throws Exception {
+ JSONArray array = readFile(file);
+ return getBeanList(array, clazz);
+ }
+
+ public static <T> List<T> readMultipartFile(MultipartFile mFile, Class<T> clazz) throws Exception {
+ JSONArray array = readMultipartFile(mFile);
+ return getBeanList(array, clazz);
+ }
+
+ public static JSONArray readFile(File file) throws Exception {
+ return readExcel(null, file);
+ }
+
+ public static JSONArray readMultipartFile(MultipartFile mFile) throws Exception {
+ return readExcel(mFile, null);
+ }
+
+ public static Map<String, JSONArray> readFileManySheet(File file) throws Exception {
+ return readExcelManySheet(null, file);
+ }
+
+ public static Map<String, JSONArray> readFileManySheet(MultipartFile file) throws Exception {
+ return readExcelManySheet(file, null);
+ }
+
+ private static <T> List<T> getBeanList(JSONArray array, Class<T> clazz) throws Exception {
+ List<T> list = new ArrayList<>();
+ Map<Integer, String> uniqueMap = new HashMap<>(16);
+ for (int i = 0; i < array.size(); i++) {
+ list.add(getBean(clazz, array.getJSONObject(i), uniqueMap));
+ }
+ return list;
+ }
+
+ /**
+ * 鑾峰彇姣忎釜瀵硅薄鐨勬暟鎹�
+ */
+ private static <T> T getBean(Class<T> c, JSONObject obj, Map<Integer, String> uniqueMap) throws Exception {
+ T t = c.newInstance();
+ Field[] fields = c.getDeclaredFields();
+ List<String> errMsgList = new ArrayList<>();
+ boolean hasRowTipsField = false;
+ StringBuilder uniqueBuilder = new StringBuilder();
+ int rowNum = 0;
+ for (Field field : fields) {
+ // 琛屽彿
+ if (field.getName().equals(ROW_NUM)) {
+ rowNum = obj.getInteger(ROW_NUM);
+ field.setAccessible(true);
+ field.set(t, rowNum);
+ continue;
+ }
+ // 鏄惁闇�瑕佽缃紓甯镐俊鎭�
+ if (field.getName().equals(ROW_TIPS)) {
+ hasRowTipsField = true;
+ continue;
+ }
+ // 鍘熷鏁版嵁
+ if (field.getName().equals(ROW_DATA)) {
+ field.setAccessible(true);
+ field.set(t, obj.toString());
+ continue;
+ }
+ // 璁剧疆瀵瑰簲灞炴�у��
+ setFieldValue(t, field, obj, uniqueBuilder, errMsgList);
+ }
+ // 鏁版嵁鍞竴鎬ф牎楠�
+ if (uniqueBuilder.length() > 0) {
+ if (uniqueMap.containsValue(uniqueBuilder.toString())) {
+ Set<Integer> rowNumKeys = uniqueMap.keySet();
+ for (Integer num : rowNumKeys) {
+ if (uniqueMap.get(num).equals(uniqueBuilder.toString())) {
+ errMsgList.add(String.format("鏁版嵁鍞竴鎬ф牎楠屽け璐�,(%s)涓庣%s琛岄噸澶�)", uniqueBuilder, num));
+ }
+ }
+ } else {
+ uniqueMap.put(rowNum, uniqueBuilder.toString());
+ }
+ }
+ // 澶辫触澶勭悊
+ if (errMsgList.isEmpty() && !hasRowTipsField) {
+ return t;
+ }
+ StringBuilder sb = new StringBuilder();
+ int size = errMsgList.size();
+ for (int i = 0; i < size; i++) {
+ if (i == size - 1) {
+ sb.append(errMsgList.get(i));
+ } else {
+ sb.append(errMsgList.get(i)).append(";");
+ }
+ }
+ // 璁剧疆閿欒淇℃伅
+ for (Field field : fields) {
+ if (field.getName().equals(ROW_TIPS)) {
+ field.setAccessible(true);
+ field.set(t, sb.toString());
+ }
+ }
+ return t;
+ }
+
+ private static <T> void setFieldValue(T t, Field field, JSONObject obj, StringBuilder uniqueBuilder, List<String> errMsgList) {
+ // 鑾峰彇 ExcelImport 娉ㄨВ灞炴��
+ ExcelImport annotation = field.getAnnotation(ExcelImport.class);
+ if (annotation == null) {
+ return;
+ }
+ String cname = annotation.value();
+ if (cname.trim().length() == 0) {
+ return;
+ }
+ // 鑾峰彇鍏蜂綋鍊�
+ String val = null;
+ if (obj.containsKey(cname)) {
+ val = getString(obj.getString(cname));
+ }
+ if (val == null) {
+ return;
+ }
+ field.setAccessible(true);
+ // 鍒ゆ柇鏄惁蹇呭~
+ boolean require = annotation.required();
+ if (require && val.isEmpty()) {
+ errMsgList.add(String.format("[%s]涓嶈兘涓虹┖", cname));
+ return;
+ }
+ // 鏁版嵁鍞竴鎬ц幏鍙�
+ boolean unique = annotation.unique();
+ if (unique) {
+ if (uniqueBuilder.length() > 0) {
+ uniqueBuilder.append("--").append(val);
+ } else {
+ uniqueBuilder.append(val);
+ }
+ }
+ // 鍒ゆ柇鏄惁瓒呰繃鏈�澶ч暱搴�
+ int maxLength = annotation.maxLength();
+ if (maxLength > 0 && val.length() > maxLength) {
+ errMsgList.add(String.format("[%s]闀垮害涓嶈兘瓒呰繃%s涓瓧绗�(褰撳墠%s涓瓧绗�)", cname, maxLength, val.length()));
+ }
+ // 鍒ゆ柇褰撳墠灞炴�ф槸鍚︽湁鏄犲皠鍏崇郴
+ LinkedHashMap<String, String> kvMap = getKvMap(annotation.kv());
+ if (!kvMap.isEmpty()) {
+ boolean isMatch = false;
+ for (String key : kvMap.keySet()) {
+ if (kvMap.get(key).equals(val)) {
+ val = key;
+ isMatch = true;
+ break;
+ }
+ }
+ if (!isMatch) {
+ errMsgList.add(String.format("[%s]鐨勫�间笉姝g‘(褰撳墠鍊间负%s)", cname, val));
+ return;
+ }
+ }
+ // 鍏朵綑鎯呭喌鏍规嵁绫诲瀷璧嬪��
+ String fieldClassName = field.getType().getSimpleName();
+ try {
+ if ("String".equalsIgnoreCase(fieldClassName)) {
+ field.set(t, val);
+ } else if ("boolean".equalsIgnoreCase(fieldClassName)) {
+ field.set(t, Boolean.valueOf(val));
+ } else if ("int".equalsIgnoreCase(fieldClassName) || "Integer".equals(fieldClassName)) {
+ try {
+ field.set(t, Integer.valueOf(val));
+ } catch (NumberFormatException e) {
+ errMsgList.add(String.format("[%s]鐨勫�兼牸寮忎笉姝g‘(褰撳墠鍊间负%s)", cname, val));
+ }
+ } else if ("double".equalsIgnoreCase(fieldClassName)) {
+ field.set(t, Double.valueOf(val));
+ } else if ("long".equalsIgnoreCase(fieldClassName)) {
+ field.set(t, Long.valueOf(val));
+ } else if ("BigDecimal".equalsIgnoreCase(fieldClassName)) {
+ field.set(t, new BigDecimal(val));
+ } else if ("Date".equalsIgnoreCase(fieldClassName)) {
+ try {
+ field.set(t, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(val));
+ } catch (Exception e) {
+ field.set(t, new SimpleDateFormat("yyyy-MM-dd").parse(val));
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static Map<String, JSONArray> readExcelManySheet(MultipartFile mFile, File file) throws IOException {
+ Workbook book = getWorkbook(mFile, file);
+ if (book == null) {
+ return Collections.emptyMap();
+ }
+ Map<String, JSONArray> map = new LinkedHashMap<>();
+ for (int i = 0; i < book.getNumberOfSheets(); i++) {
+ Sheet sheet = book.getSheetAt(i);
+ JSONArray arr = readSheet(sheet);
+ map.put(sheet.getSheetName(), arr);
+ }
+ book.close();
+ return map;
+ }
+
+ private static JSONArray readExcel(MultipartFile mFile, File file) throws IOException {
+ Workbook book = getWorkbook(mFile, file);
+ if (book == null) {
+ return new JSONArray();
+ }
+ JSONArray array = readSheet(book.getSheetAt(0));
+ book.close();
+ return array;
+ }
+
+ private static Workbook getWorkbook(MultipartFile mFile, File file) throws IOException {
+ boolean fileNotExist = (file == null || !file.exists());
+ if (mFile == null && fileNotExist) {
+ return null;
+ }
+ // 瑙f瀽琛ㄦ牸鏁版嵁
+ InputStream in;
+ String fileName;
+ if (mFile != null) {
+ // 涓婁紶鏂囦欢瑙f瀽
+ in = mFile.getInputStream();
+ fileName = getString(mFile.getOriginalFilename()).toLowerCase();
+ } else {
+ // 鏈湴鏂囦欢瑙f瀽
+ in = new FileInputStream(file);
+ fileName = file.getName().toLowerCase();
+ }
+ Workbook book;
+ if (fileName.endsWith(XLSX)) {
+ book = new XSSFWorkbook(in);
+ } else if (fileName.endsWith(XLS)) {
+ POIFSFileSystem poifsFileSystem = new POIFSFileSystem(in);
+ book = new HSSFWorkbook(poifsFileSystem);
+ } else {
+ return null;
+ }
+ in.close();
+ return book;
+ }
+
+ private static JSONArray readSheet(Sheet sheet) {
+ // 棣栬涓嬫爣
+ int rowStart = sheet.getFirstRowNum();
+ // 灏捐涓嬫爣
+ int rowEnd = sheet.getLastRowNum();
+ // 鑾峰彇琛ㄥご琛�
+ Row headRow = sheet.getRow(rowStart);
+ if (headRow == null) {
+ return new JSONArray();
+ }
+ int cellStart = headRow.getFirstCellNum();
+ int cellEnd = headRow.getLastCellNum();
+ Map<Integer, String> keyMap = new HashMap<>();
+ for (int j = cellStart; j < cellEnd; j++) {
+ // 鑾峰彇琛ㄥご鏁版嵁
+ String val = getCellValue(headRow.getCell(j));
+ if (val != null && val.trim().length() != 0) {
+ keyMap.put(j, val);
+ }
+ }
+ // 濡傛灉琛ㄥご娌℃湁鏁版嵁鍒欎笉杩涜瑙f瀽
+ if (keyMap.isEmpty()) {
+ return (JSONArray) Collections.emptyList();
+ }
+ // 鑾峰彇姣忚JSON瀵硅薄鐨勫��
+ JSONArray array = new JSONArray();
+ // 濡傛灉棣栬涓庡熬琛岀浉鍚岋紝琛ㄦ槑鍙湁涓�琛岋紝杩斿洖琛ㄥご鏁版嵁
+ if (rowStart == rowEnd) {
+ JSONObject obj = new JSONObject();
+ // 娣诲姞琛屽彿
+ obj.put(ROW_NUM, 1);
+ for (int i : keyMap.keySet()) {
+ obj.put(keyMap.get(i), "");
+ }
+ array.add(obj);
+ return array;
+ }
+ for (int i = rowStart + 1; i <= rowEnd; i++) {
+ Row eachRow = sheet.getRow(i);
+ JSONObject obj = new JSONObject();
+ // 娣诲姞琛屽彿
+ obj.put(ROW_NUM, i + 1);
+ StringBuilder sb = new StringBuilder();
+ for (int k = cellStart; k < cellEnd; k++) {
+ if (eachRow != null) {
+ String val = getCellValue(eachRow.getCell(k));
+ // 鎵�鏈夋暟鎹坊鍔犲埌閲岄潰锛岀敤浜庡垽鏂琛屾槸鍚︿负绌�
+ sb.append(val);
+ obj.put(keyMap.get(k), val);
+ }
+ }
+ if (sb.length() > 0) {
+ array.add(obj);
+ }
+ }
+ return array;
+ }
+
+ private static String getCellValue(Cell cell) {
+ // 绌虹櫧鎴栫┖
+ if (cell == null || cell.getCellType() == CellType.BLANK) {
+ return "";
+ }
+ // String绫诲瀷
+ if (cell.getCellType() == CellType.STRING) {
+ String val = cell.getStringCellValue();
+ if (val == null || val.trim().length() == 0) {
+ return "";
+ }
+ return val.trim();
+ }
+ // 鏁板瓧绫诲瀷
+ if (cell.getCellType() == CellType.NUMERIC) {
+ String s = cell.getNumericCellValue() + "";
+ // 鍘绘帀灏惧反涓婄殑灏忔暟鐐�0
+ if (Pattern.matches(".*\\.0*", s)) {
+ return s.split("\\.")[0];
+ } else {
+ return s;
+ }
+ }
+ // 甯冨皵鍊肩被鍨�
+ if (cell.getCellType() == CellType.BOOLEAN) {
+ return cell.getBooleanCellValue() + "";
+ }
+ // 閿欒绫诲瀷
+ return cell.getCellFormula();
+ }
+
+ public static <T> void exportTemplate(HttpServletResponse response, String fileName, Class<T> clazz) {
+ exportTemplate(response, fileName, fileName, clazz, false);
+ }
+
+ public static <T> void exportTemplate(HttpServletResponse response, String fileName, String sheetName,
+ Class<T> clazz) {
+ exportTemplate(response, fileName, sheetName, clazz, false);
+ }
+
+ public static <T> void exportTemplate(HttpServletResponse response, String fileName, Class<T> clazz,
+ boolean isContainExample) {
+ exportTemplate(response, fileName, fileName, clazz, isContainExample);
+ }
+
+ public static <T> void exportTemplate(HttpServletResponse response, String fileName, String sheetName,
+ Class<T> clazz, boolean isContainExample) {
+ // 鑾峰彇琛ㄥご瀛楁
+ List<ExcelClassField> headFieldList = getExcelClassFieldList(clazz);
+ // 鑾峰彇琛ㄥご鏁版嵁鍜岀ず渚嬫暟鎹�
+ List<List<Object>> sheetDataList = new ArrayList<>();
+ List<Object> headList = new ArrayList<>();
+ List<Object> exampleList = new ArrayList<>();
+ Map<Integer, List<String>> selectMap = new LinkedHashMap<>();
+ for (int i = 0; i < headFieldList.size(); i++) {
+ ExcelClassField each = headFieldList.get(i);
+ headList.add(each.getName());
+ exampleList.add(each.getExample());
+ LinkedHashMap<String, String> kvMap = each.getKvMap();
+ if (kvMap != null && kvMap.size() > 0) {
+ selectMap.put(i, new ArrayList<>(kvMap.values()));
+ }
+ }
+ sheetDataList.add(headList);
+ if (isContainExample) {
+ sheetDataList.add(exampleList);
+ }
+ // 瀵煎嚭鏁版嵁
+ export(response, fileName, sheetName, sheetDataList, selectMap);
+ }
+
+ private static <T> List<ExcelClassField> getExcelClassFieldList(Class<T> clazz) {
+ // 瑙f瀽鎵�鏈夊瓧娈�
+ Field[] fields = clazz.getDeclaredFields();
+ boolean hasExportAnnotation = false;
+ Map<Integer, List<ExcelClassField>> map = new LinkedHashMap<>();
+ List<Integer> sortList = new ArrayList<>();
+ for (Field field : fields) {
+ ExcelClassField cf = getExcelClassField(field);
+ if (cf.getHasAnnotation() == 1) {
+ hasExportAnnotation = true;
+ }
+ int sort = cf.getSort();
+ if (map.containsKey(sort)) {
+ map.get(sort).add(cf);
+ } else {
+ List<ExcelClassField> list = new ArrayList<>();
+ list.add(cf);
+ sortList.add(sort);
+ map.put(sort, list);
+ }
+ }
+ Collections.sort(sortList);
+ // 鑾峰彇琛ㄥご
+ List<ExcelClassField> headFieldList = new ArrayList<>();
+ if (hasExportAnnotation) {
+ for (Integer sort : sortList) {
+ for (ExcelClassField cf : map.get(sort)) {
+ if (cf.getHasAnnotation() == 1) {
+ headFieldList.add(cf);
+ }
+ }
+ }
+ } else {
+ headFieldList.addAll(map.get(0));
+ }
+ return headFieldList;
+ }
+
+ private static ExcelClassField getExcelClassField(Field field) {
+ ExcelClassField cf = new ExcelClassField();
+ String fieldName = field.getName();
+ cf.setFieldName(fieldName);
+ ExcelExport annotation = field.getAnnotation(ExcelExport.class);
+ // 鏃� ExcelExport 娉ㄨВ鎯呭喌
+ if (annotation == null) {
+ cf.setHasAnnotation(0);
+ cf.setName(fieldName);
+ cf.setSort(0);
+ return cf;
+ }
+ // 鏈� ExcelExport 娉ㄨВ鎯呭喌
+ cf.setHasAnnotation(1);
+ cf.setName(annotation.value());
+ String example = getString(annotation.example());
+ if (!example.isEmpty()) {
+ if (isNumeric(example) && example.length() < 8) {
+ cf.setExample(Double.valueOf(example));
+ } else {
+ cf.setExample(example);
+ }
+ } else {
+ cf.setExample("");
+ }
+ cf.setSort(annotation.sort());
+ // 瑙f瀽鏄犲皠
+ String kv = getString(annotation.kv());
+ cf.setKvMap(getKvMap(kv));
+ return cf;
+ }
+
+ private static LinkedHashMap<String, String> getKvMap(String kv) {
+ LinkedHashMap<String, String> kvMap = new LinkedHashMap<>();
+ if (kv.isEmpty()) {
+ return kvMap;
+ }
+ String[] kvs = kv.split(";");
+ if (kvs.length == 0) {
+ return kvMap;
+ }
+ for (String each : kvs) {
+ String[] eachKv = getString(each).split("-");
+ if (eachKv.length != 2) {
+ continue;
+ }
+ String k = eachKv[0];
+ String v = eachKv[1];
+ if (k.isEmpty() || v.isEmpty()) {
+ continue;
+ }
+ kvMap.put(k, v);
+ }
+ return kvMap;
+ }
+
+ /**
+ * 瀵煎嚭琛ㄦ牸鍒版湰鍦�
+ *
+ * @param file 鏈湴鏂囦欢瀵硅薄
+ * @param sheetData 瀵煎嚭鏁版嵁
+ */
+ public static void exportFile(File file, List<List<Object>> sheetData) {
+ if (file == null) {
+ System.out.println("鏂囦欢鍒涘缓澶辫触");
+ return;
+ }
+ if (sheetData == null) {
+ sheetData = new ArrayList<>();
+ }
+ Map<String, List<List<Object>>> map = new HashMap<>();
+ map.put(file.getName(), sheetData);
+ export(null, file, file.getName(), map, null);
+ }
+
+ /**
+ * 瀵煎嚭琛ㄦ牸鍒版湰鍦�
+ *
+ * @param <T> 瀵煎嚭鏁版嵁绫讳技锛屽拰K绫诲瀷淇濇寔涓�鑷�
+ * @param filePath 鏂囦欢鐖惰矾寰勶紙濡傦細D:/doc/excel/锛�
+ * @param fileName 鏂囦欢鍚嶇О锛堜笉甯﹀熬缂�锛屽锛氬鐢熻〃锛�
+ * @param list 瀵煎嚭鏁版嵁
+ * @throws IOException IO寮傚父
+ */
+ public static <T> File exportFile(String filePath, String fileName, List<T> list) throws IOException {
+ File file = getFile(filePath, fileName);
+ List<List<Object>> sheetData = getSheetData(list);
+ exportFile(file, sheetData);
+ return file;
+ }
+
+ /**
+ * 鑾峰彇鏂囦欢
+ *
+ * @param filePath filePath 鏂囦欢鐖惰矾寰勶紙濡傦細D:/doc/excel/锛�
+ * @param fileName 鏂囦欢鍚嶇О锛堜笉甯﹀熬缂�锛屽锛氱敤鎴疯〃锛�
+ * @return 鏈湴File鏂囦欢瀵硅薄
+ */
+ private static File getFile(String filePath, String fileName) throws IOException {
+ String dirPath = getString(filePath);
+ String fileFullPath;
+ if (dirPath.isEmpty()) {
+ fileFullPath = fileName;
+ } else {
+ // 鍒ゅ畾鏂囦欢澶规槸鍚﹀瓨鍦紝濡傛灉涓嶅瓨鍦紝鍒欑骇鑱斿垱寤�
+ File dirFile = new File(dirPath);
+ if (!dirFile.exists()) {
+ boolean mkdirs = dirFile.mkdirs();
+ if (!mkdirs) {
+ return null;
+ }
+ }
+ // 鑾峰彇鏂囦欢澶瑰叏鍚�
+ if (dirPath.endsWith(String.valueOf(LEAN_LINE))) {
+ fileFullPath = dirPath + fileName + XLSX;
+ } else {
+ fileFullPath = dirPath + LEAN_LINE + fileName + XLSX;
+ }
+ }
+ System.out.println(fileFullPath);
+ File file = new File(fileFullPath);
+ if (!file.exists()) {
+ boolean result = file.createNewFile();
+ if (!result) {
+ return null;
+ }
+ }
+ return file;
+ }
+
+ private static <T> List<List<Object>> getSheetData(List<T> list) {
+ // 鑾峰彇琛ㄥご瀛楁
+ List<ExcelClassField> excelClassFieldList = getExcelClassFieldList(list.get(0).getClass());
+ List<String> headFieldList = new ArrayList<>();
+ List<Object> headList = new ArrayList<>();
+ Map<String, ExcelClassField> headFieldMap = new HashMap<>();
+ for (ExcelClassField each : excelClassFieldList) {
+ String fieldName = each.getFieldName();
+ headFieldList.add(fieldName);
+ headFieldMap.put(fieldName, each);
+ headList.add(each.getName());
+ }
+ // 娣诲姞琛ㄥご鍚嶇О
+ List<List<Object>> sheetDataList = new ArrayList<>();
+ sheetDataList.add(headList);
+ // 鑾峰彇琛ㄦ暟鎹�
+ for (T t : list) {
+ Map<String, Object> fieldDataMap = getFieldDataMap(t);
+ Set<String> fieldDataKeys = fieldDataMap.keySet();
+ List<Object> rowList = new ArrayList<>();
+ for (String headField : headFieldList) {
+ if (!fieldDataKeys.contains(headField)) {
+ continue;
+ }
+ Object data = fieldDataMap.get(headField);
+ if (data == null) {
+ rowList.add("");
+ continue;
+ }
+ ExcelClassField cf = headFieldMap.get(headField);
+ // 鍒ゆ柇鏄惁鏈夋槧灏勫叧绯�
+ LinkedHashMap<String, String> kvMap = cf.getKvMap();
+ if (kvMap == null || kvMap.isEmpty()) {
+ rowList.add(data);
+ continue;
+ }
+ String val = kvMap.get(data.toString());
+ if (isNumeric(val)) {
+ rowList.add(Double.valueOf(val));
+ } else {
+ rowList.add(val);
+ }
+ }
+ sheetDataList.add(rowList);
+ }
+ return sheetDataList;
+ }
+
+ private static <T> Map<String, Object> getFieldDataMap(T t) {
+ Map<String, Object> map = new HashMap<>();
+ Field[] fields = t.getClass().getDeclaredFields();
+ try {
+ for (Field field : fields) {
+ String fieldName = field.getName();
+ field.setAccessible(true);
+ Object object = field.get(t);
+ map.put(fieldName, object);
+ }
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ return map;
+ }
+
+ public static void exportEmpty(HttpServletResponse response, String fileName) {
+ List<List<Object>> sheetDataList = new ArrayList<>();
+ List<Object> headList = new ArrayList<>();
+ headList.add("瀵煎嚭鏃犳暟鎹�");
+ sheetDataList.add(headList);
+ export(response, fileName, sheetDataList);
+ }
+
+ public static void export(HttpServletResponse response, String fileName, List<List<Object>> sheetDataList) {
+ export(response, fileName, fileName, sheetDataList, null);
+ }
+
+ public static void exportManySheet(HttpServletResponse response, String fileName, Map<String, List<List<Object>>> sheetMap) {
+ export(response, null, fileName, sheetMap, null);
+ }
+
+
+ public static void export(HttpServletResponse response, String fileName, String sheetName,
+ List<List<Object>> sheetDataList) {
+ export(response, fileName, sheetName, sheetDataList, null);
+ }
+
+ public static void export(HttpServletResponse response, String fileName, String sheetName,
+ List<List<Object>> sheetDataList, Map<Integer, List<String>> selectMap) {
+
+ Map<String, List<List<Object>>> map = new HashMap<>();
+ map.put(sheetName, sheetDataList);
+ export(response, null, fileName, map, selectMap);
+ }
+
+ public static <T, K> void export(HttpServletResponse response, String fileName, List<T> list, Class<K> template) {
+ // list 鏄惁涓虹┖
+ boolean lisIsEmpty = list == null || list.isEmpty();
+ // 濡傛灉妯℃澘鏁版嵁涓虹┖锛屼笖瀵煎叆鐨勬暟鎹负绌猴紝鍒欏鍑虹┖鏂囦欢
+ if (template == null && lisIsEmpty) {
+ exportEmpty(response, fileName);
+ return;
+ }
+ // 濡傛灉 list 鏁版嵁锛屽垯瀵煎嚭妯℃澘鏁版嵁
+ if (lisIsEmpty) {
+ exportTemplate(response, fileName, template);
+ return;
+ }
+ // 瀵煎嚭鏁版嵁
+ List<List<Object>> sheetDataList = getSheetData(list);
+ export(response, fileName, sheetDataList);
+ }
+
+ public static void export(HttpServletResponse response, String fileName, List<List<Object>> sheetDataList, Map<Integer, List<String>> selectMap) {
+ export(response, fileName, fileName, sheetDataList, selectMap);
+ }
+
+ private static void export(HttpServletResponse response, File file, String fileName,
+ Map<String, List<List<Object>>> sheetMap, Map<Integer, List<String>> selectMap) {
+ // 鏁翠釜 Excel 琛ㄦ牸 book 瀵硅薄
+ SXSSFWorkbook book = new SXSSFWorkbook();
+ // 姣忎釜 Sheet 椤�
+ Set<Entry<String, List<List<Object>>>> entries = sheetMap.entrySet();
+ for (Entry<String, List<List<Object>>> entry : entries) {
+ List<List<Object>> sheetDataList = entry.getValue();
+ Sheet sheet = book.createSheet(entry.getKey());
+ Drawing<?> patriarch = sheet.createDrawingPatriarch();
+ // 璁剧疆琛ㄥご鑳屾櫙鑹诧紙鐏拌壊锛�
+ CellStyle headStyle = book.createCellStyle();
+ headStyle.setFillForegroundColor(IndexedColors.GREY_80_PERCENT.index);
+ headStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ headStyle.setAlignment(HorizontalAlignment.CENTER);
+ headStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.index);
+ // 璁剧疆琛ㄨ韩鑳屾櫙鑹诧紙榛樿鑹诧級
+ CellStyle rowStyle = book.createCellStyle();
+ rowStyle.setAlignment(HorizontalAlignment.CENTER);
+ rowStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+ // 璁剧疆琛ㄦ牸鍒楀搴︼紙榛樿涓�15涓瓧鑺傦級
+ sheet.setDefaultColumnWidth(15);
+ // 鍒涘缓鍚堝苟绠楁硶鏁扮粍
+ int rowLength = sheetDataList.size();
+ int columnLength = sheetDataList.get(0).size();
+ int[][] mergeArray = new int[rowLength][columnLength];
+ for (int i = 0; i < sheetDataList.size(); i++) {
+ // 姣忎釜 Sheet 椤典腑鐨勮鏁版嵁
+ Row row = sheet.createRow(i);
+ List<Object> rowList = sheetDataList.get(i);
+ for (int j = 0; j < rowList.size(); j++) {
+ // 姣忎釜琛屾暟鎹腑鐨勫崟鍏冩牸鏁版嵁
+ Object o = rowList.get(j);
+ int v = 0;
+ if (o instanceof URL) {
+ // 濡傛灉瑕佸鍑哄浘鐗囩殑璇�, 閾炬帴闇�瑕佷紶閫� URL 瀵硅薄
+ setCellPicture(book, row, patriarch, i, j, (URL) o);
+ } else {
+ Cell cell = row.createCell(j);
+ if (i == 0) {
+ // 绗竴琛屼负琛ㄥご琛岋紝閲囩敤鐏拌壊搴曡儗鏅�
+ v = setCellValue(cell, o, headStyle);
+ } else {
+ // 鍏朵粬琛屼负鏁版嵁琛岋紝榛樿鐧藉簳鑹�
+ v = setCellValue(cell, o, rowStyle);
+ }
+ }
+ mergeArray[i][j] = v;
+ }
+ }
+ // 鍚堝苟鍗曞厓鏍�
+ mergeCells(sheet, mergeArray);
+ // 璁剧疆涓嬫媺鍒楄〃
+ setSelect(sheet, selectMap);
+ }
+ // 鍐欐暟鎹�
+ if (response != null) {
+ // 鍓嶇瀵煎嚭
+ try {
+ write(response, book, fileName);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ } else {
+ // 鏈湴瀵煎嚭
+ FileOutputStream fos;
+ try {
+ fos = new FileOutputStream(file);
+ ByteArrayOutputStream ops = new ByteArrayOutputStream();
+ book.write(ops);
+ fos.write(ops.toByteArray());
+ fos.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * 鍚堝苟褰撳墠Sheet椤电殑鍗曞厓鏍�
+ *
+ * @param sheet 褰撳墠 sheet 椤�
+ * @param mergeArray 鍚堝苟鍗曞厓鏍肩畻娉�
+ */
+ private static void mergeCells(Sheet sheet, int[][] mergeArray) {
+ // 妯悜鍚堝苟
+ for (int x = 0; x < mergeArray.length; x++) {
+ int[] arr = mergeArray[x];
+ boolean merge = false;
+ int y1 = 0;
+ int y2 = 0;
+ for (int y = 0; y < arr.length; y++) {
+ int value = arr[y];
+ if (value == CELL_COLUMN_MERGE) {
+ if (!merge) {
+ y1 = y;
+ }
+ y2 = y;
+ merge = true;
+ } else {
+ merge = false;
+ if (y1 > 0) {
+ sheet.addMergedRegion(new CellRangeAddress(x, x, (y1 - 1), y2));
+ }
+ y1 = 0;
+ y2 = 0;
+ }
+ }
+ if (y1 > 0) {
+ sheet.addMergedRegion(new CellRangeAddress(x, x, (y1 - 1), y2));
+ }
+ }
+ // 绾靛悜鍚堝苟
+ int xLen = mergeArray.length;
+ int yLen = mergeArray[0].length;
+ for (int y = 0; y < yLen; y++) {
+ boolean merge = false;
+ int x1 = 0;
+ int x2 = 0;
+ for (int x = 0; x < xLen; x++) {
+ int value = mergeArray[x][y];
+ if (value == CELL_ROW_MERGE) {
+ if (!merge) {
+ x1 = x;
+ }
+ x2 = x;
+ merge = true;
+ } else {
+ merge = false;
+ if (x1 > 0) {
+ // 妫�鏌ユ槸鍚︿笌鐜版湁鍚堝苟鍖哄煙閲嶅彔锛屽鏋滄湁鍒欏垹闄ゆ棫鍖哄煙锛屽啀鍚堝苟鏂板尯鍩�
+ CellRangeAddress newRegion = new CellRangeAddress((x1 - 1), x2, y, y);
+ handleOverlappingRegions(sheet, newRegion);
+ }
+ x1 = 0;
+ x2 = 0;
+ }
+ }
+ if (x1 > 0) {
+ // 妫�鏌ユ槸鍚︿笌鐜版湁鍚堝苟鍖哄煙閲嶅彔锛屽鏋滄湁鍒欏垹闄ゆ棫鍖哄煙锛屽啀鍚堝苟鏂板尯鍩�
+ CellRangeAddress newRegion = new CellRangeAddress((x1 - 1), x2, y, y);
+ handleOverlappingRegions(sheet, newRegion);
+ }
+ }
+ }
+
+ /**
+ * 妫�鏌ユ槸鍚︿笌鐜版湁鍚堝苟鍖哄煙閲嶅彔锛屽鏋滄湁鍒欏垹闄ゆ棫鍖哄煙锛屽啀鍚堝苟鏂板尯鍩�
+ * @param sheet Excel宸ヤ綔琛�
+ * @param newRegion 鏂扮殑鍚堝苟鍖哄煙
+ */
+ private static void handleOverlappingRegions(Sheet sheet, CellRangeAddress newRegion) {
+ // 绉婚櫎閲嶅彔鐨勭幇鏈夊尯鍩�
+ List<CellRangeAddress> overlappingRegions = new ArrayList<>();
+ for (int i = sheet.getNumMergedRegions() - 1; i >= 0; i--) {
+ CellRangeAddress existingRegion = sheet.getMergedRegion(i);
+ if (newRegion.intersects(existingRegion)) {
+ overlappingRegions.add(existingRegion);
+ sheet.removeMergedRegion(i);
+ }
+ }
+ // 鍚堝苟鍒版柊鍖哄煙锛堣繖閲岀畝鍗曞湴灏嗗畠浠坊鍔犲埌鏂扮殑鍚堝苟鍖哄煙鍒楄〃涓紝瀹為檯搴旂敤涓彲鑳介渶瑕佹洿澶嶆潅鐨勯�昏緫鏉ョ湡姝b�滃悎骞垛�濆尯鍩燂級
+ // 娉ㄦ剰锛歅OI鐨凜ellRangeAddress娌℃湁鎻愪緵鐩存帴鍚堝苟涓や釜鍖哄煙鐨勬柟娉曪紝鎵�浠ヨ繖閲屽彧鏄ず渚�
+ // 濡傛灉闇�瑕佺湡姝g殑鍚堝苟锛屽彲鑳介渶瑕佽嚜瀹氫箟閫昏緫鏉ヨ绠楁柊鐨勮竟鐣�
+ for (CellRangeAddress overlappingRegion : overlappingRegions) {
+ sheet.addMergedRegion(overlappingRegion);
+ }
+ sheet.addMergedRegion(newRegion);
+ }
+
+
+ private static void write(HttpServletResponse response, SXSSFWorkbook book, String fileName) throws IOException {
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setCharacterEncoding("utf-8");
+ String name = new String(fileName.getBytes("GBK"), "ISO8859_1") + XLSX;
+ response.addHeader("Content-Disposition", "attachment;filename=" + name);
+ ServletOutputStream out = response.getOutputStream();
+ book.write(out);
+ out.flush();
+ out.close();
+ }
+
+ private static int setCellValue(Cell cell, Object o, CellStyle style) {
+ // 璁剧疆鏍峰紡
+ cell.setCellStyle(style);
+ // 鏁版嵁涓虹┖鏃�
+ if (o == null) {
+ cell.setCellType(CellType.STRING);
+ cell.setCellValue("");
+ return CELL_OTHER;
+ }
+ // 鏄惁涓哄瓧绗︿覆
+ if (o instanceof String) {
+ String s = o.toString();
+ // 褰撴暟瀛楃被鍨嬮暱搴﹁秴杩�8浣嶆椂锛屾敼涓哄瓧绗︿覆绫诲瀷鏄剧ず锛圗xcel鏁板瓧瓒呰繃涓�瀹氶暱搴︿細鏄剧ず涓虹瀛﹁鏁版硶锛�
+ if (isNumeric(s) && s.length() < 8) {
+ cell.setCellType(CellType.NUMERIC);
+ cell.setCellValue(Double.parseDouble(s));
+ return CELL_OTHER;
+ } else {
+ cell.setCellType(CellType.STRING);
+ cell.setCellValue(s);
+ }
+ if (s.equals(ROW_MERGE)) {
+ return CELL_ROW_MERGE;
+ } else if (s.equals(COLUMN_MERGE)) {
+ return CELL_COLUMN_MERGE;
+ } else {
+ return CELL_OTHER;
+ }
+ }
+ // 鏄惁涓哄瓧绗︿覆
+ if (o instanceof Integer || o instanceof Long || o instanceof Double || o instanceof Float) {
+ cell.setCellType(CellType.NUMERIC);
+ cell.setCellValue(Double.parseDouble(o.toString()));
+ return CELL_OTHER;
+ }
+ // 鏄惁涓築oolean
+ if (o instanceof Boolean) {
+ cell.setCellType(CellType.BOOLEAN);
+ cell.setCellValue((Boolean) o);
+ return CELL_OTHER;
+ }
+ // 濡傛灉鏄疊igDecimal锛屽垯榛樿3浣嶅皬鏁�
+ if (o instanceof BigDecimal) {
+ cell.setCellType(CellType.NUMERIC);
+ cell.setCellValue(((BigDecimal) o).setScale(3, RoundingMode.HALF_UP).doubleValue());
+ return CELL_OTHER;
+ }
+ // 濡傛灉鏄疍ate鏁版嵁锛屽垯鏄剧ず鏍煎紡鍖栨暟鎹�
+ if (o instanceof Date) {
+ cell.setCellType(CellType.STRING);
+ cell.setCellValue(formatDate((Date) o));
+ return CELL_OTHER;
+ }
+ // 濡傛灉鏄叾浠栵紝鍒欓粯璁ゅ瓧绗︿覆绫诲瀷
+ cell.setCellType(CellType.STRING);
+ cell.setCellValue(o.toString());
+ return CELL_OTHER;
+ }
+
+ private static void setCellPicture(SXSSFWorkbook wb, Row sr, Drawing<?> patriarch, int x, int y, URL url) {
+ // 璁剧疆鍥剧墖瀹介珮
+ sr.setHeight((short) (IMG_WIDTH * IMG_HEIGHT));
+ // 锛坖dk1.7鐗堟湰try涓畾涔夋祦鍙嚜鍔ㄥ叧闂級
+ try (InputStream is = url.openStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
+ byte[] buff = new byte[BYTES_DEFAULT_LENGTH];
+ int rc;
+ while ((rc = is.read(buff, 0, BYTES_DEFAULT_LENGTH)) > 0) {
+ outputStream.write(buff, 0, rc);
+ }
+ // 璁剧疆鍥剧墖浣嶇疆
+ XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, y, x, y + 1, x + 1);
+ // 璁剧疆杩欎釜锛屽浘鐗囦細鑷姩濉弧鍗曞厓鏍肩殑闀垮
+ anchor.setAnchorType(AnchorType.MOVE_AND_RESIZE);
+ patriarch.createPicture(anchor, wb.addPicture(outputStream.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static String formatDate(Date date) {
+ if (date == null) {
+ return "";
+ }
+ SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT);
+ return format.format(date);
+ }
+
+ private static void setSelect(Sheet sheet, Map<Integer, List<String>> selectMap) {
+ if (selectMap == null || selectMap.isEmpty()) {
+ return;
+ }
+ Set<Entry<Integer, List<String>>> entrySet = selectMap.entrySet();
+ for (Entry<Integer, List<String>> entry : entrySet) {
+ int y = entry.getKey();
+ List<String> list = entry.getValue();
+ if (list == null || list.isEmpty()) {
+ continue;
+ }
+ String[] arr = new String[list.size()];
+ for (int i = 0; i < list.size(); i++) {
+ arr[i] = list.get(i);
+ }
+ DataValidationHelper helper = sheet.getDataValidationHelper();
+ CellRangeAddressList addressList = new CellRangeAddressList(1, 65000, y, y);
+ DataValidationConstraint dvc = helper.createExplicitListConstraint(arr);
+ DataValidation dv = helper.createValidation(dvc, addressList);
+ if (dv instanceof HSSFDataValidation) {
+ dv.setSuppressDropDownArrow(false);
+ } else {
+ dv.setSuppressDropDownArrow(true);
+ dv.setShowErrorBox(true);
+ }
+ sheet.addValidationData(dv);
+ }
+ }
+
+ private static boolean isNumeric(String str) {
+ if(StringUtils.isEmpty(str)){
+ return false;
+ }
+ if (Objects.nonNull(str) && "0.0".equals(str)) {
+ return true;
+ }
+ for (int i = str.length(); --i >= 0; ) {
+ if (!Character.isDigit(str.charAt(i))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static String getString(String s) {
+ if (s == null) {
+ return "";
+ }
+ if (s.isEmpty()) {
+ return s;
+ }
+ return s.trim();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java b/src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java
index 1844b3e..84fdbe5 100644
--- a/src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java
+++ b/src/main/java/com/ruoyi/compensationperformance/controller/CompensationPerformanceController.java
@@ -2,12 +2,14 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.compensationperformance.pojo.CompensationPerformance;
import com.ruoyi.compensationperformance.service.CompensationPerformanceService;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.purchase.dto.PaymentRegistrationDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -15,6 +17,7 @@
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@@ -65,5 +68,13 @@
return delete ? AjaxResult.success("鍒犻櫎鎴愬姛") : AjaxResult.error("鍒犻櫎澶辫触");
}
+ @Log(title = "瀵煎嚭钖祫绠$悊鍒楄〃", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response ) {
+ List<CompensationPerformance> list = compensationPerformanceService.list();
+ ExcelUtil<CompensationPerformance> util = new ExcelUtil<CompensationPerformance>(CompensationPerformance.class);
+ util.exportExcel(response, list, "瀵煎嚭钖祫绠$悊鍒楄〃");
+ }
+
}
diff --git a/src/main/java/com/ruoyi/compensationperformance/pojo/CompensationPerformance.java b/src/main/java/com/ruoyi/compensationperformance/pojo/CompensationPerformance.java
index 5fb2c7a..499d75a 100644
--- a/src/main/java/com/ruoyi/compensationperformance/pojo/CompensationPerformance.java
+++ b/src/main/java/com/ruoyi/compensationperformance/pojo/CompensationPerformance.java
@@ -31,7 +31,6 @@
* 鍛樺伐id
*/
@ApiModelProperty("鍛樺伐id")
- @Excel(name = "鍛樺伐id")
private Long staffId;
/**
diff --git a/src/main/java/com/ruoyi/customervisits/controller/CustomerVisitsController.java b/src/main/java/com/ruoyi/customervisits/controller/CustomerVisitsController.java
new file mode 100644
index 0000000..3d26445
--- /dev/null
+++ b/src/main/java/com/ruoyi/customervisits/controller/CustomerVisitsController.java
@@ -0,0 +1,50 @@
+package com.ruoyi.customervisits.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.compensationperformance.pojo.CompensationPerformance;
+import com.ruoyi.customervisits.pojo.CustomerVisits;
+import com.ruoyi.customervisits.service.impl.CustomerVisitsServiceImpl;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author :yys
+ * @date : 2025/8/29 10:28
+ */
+@RestController
+@Api(tags = "瀹㈡埛鎷滆")
+@RequestMapping("/customerVisits")
+public class CustomerVisitsController extends BaseController {
+
+ @Autowired
+ private CustomerVisitsServiceImpl customerVisitsService;
+
+ @GetMapping("/listPage")
+ @Log(title = "瀹㈡埛鎷滆-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ @ApiOperation("瀹㈡埛鎷滆-鍒嗛〉鏌ヨ")
+ public AjaxResult listPage(Page page, CustomerVisits customerVisits){
+ IPage<CustomerVisits> listPage = customerVisitsService.listPage(page, customerVisits);
+ return AjaxResult.success(listPage);
+ }
+
+ @Log(title = "瀹㈡埛鎷滆-娣诲姞", businessType = BusinessType.INSERT)
+ @ApiOperation("瀹㈡埛鎷滆-娣诲姞")
+ @PostMapping("/add")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult add(@RequestBody CustomerVisits customerVisits){
+ boolean save = customerVisitsService.save(customerVisits);
+ if (save){
+ return AjaxResult.success("娣诲姞鎴愬姛");
+ }
+ return AjaxResult.error("娣诲姞澶辫触");
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/customervisits/mapper/CustomerVisitsMapper.java b/src/main/java/com/ruoyi/customervisits/mapper/CustomerVisitsMapper.java
new file mode 100644
index 0000000..24d4721
--- /dev/null
+++ b/src/main/java/com/ruoyi/customervisits/mapper/CustomerVisitsMapper.java
@@ -0,0 +1,11 @@
+package com.ruoyi.customervisits.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.customervisits.pojo.CustomerVisits;
+
+/**
+ * @author :yys
+ * @date : 2025/8/29 10:24
+ */
+public interface CustomerVisitsMapper extends BaseMapper<CustomerVisits> {
+}
diff --git a/src/main/java/com/ruoyi/customervisits/pojo/CustomerVisits.java b/src/main/java/com/ruoyi/customervisits/pojo/CustomerVisits.java
new file mode 100644
index 0000000..722ab60
--- /dev/null
+++ b/src/main/java/com/ruoyi/customervisits/pojo/CustomerVisits.java
@@ -0,0 +1,115 @@
+package com.ruoyi.customervisits.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/8/29 10:17
+ */
+@TableName("customer_visits")
+@Data
+@Builder
+@ApiModel
+public class CustomerVisits {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ @ApiModelProperty("瀹㈡埛鍚嶇О")
+ private String customerName;
+
+ /**
+ * 鑱旂郴浜�
+ */
+ @ApiModelProperty("鑱旂郴浜�")
+ private String contact;
+
+ /**
+ * 鑱旂郴鐢佃瘽
+ */
+ @ApiModelProperty("鑱旂郴鐢佃瘽")
+ private String contactPhone;
+
+ /**
+ * 浣嶇疆
+ */
+ @ApiModelProperty("浣嶇疆")
+ private String location;
+
+ /**
+ * 鎷滆浜�
+ */
+ @ApiModelProperty("鎷滆浜�")
+ private String visitingPeople;
+
+ /**
+ * 鎷滆鐩殑
+ */
+ @ApiModelProperty("鎷滆鐩殑")
+ private String purposeVisit;
+
+ /**
+ * 鎷滆鏃堕棿
+ */
+ @ApiModelProperty("鎷滆鏃堕棿")
+ private String purposeDate;
+
+ /**
+ * 鎷滆鍦板潃
+ */
+ @ApiModelProperty("鎷滆鍦板潃")
+ private String visitAddress;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 淇敼鑰�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/customervisits/service/CustomerVisitsService.java b/src/main/java/com/ruoyi/customervisits/service/CustomerVisitsService.java
new file mode 100644
index 0000000..f4463e2
--- /dev/null
+++ b/src/main/java/com/ruoyi/customervisits/service/CustomerVisitsService.java
@@ -0,0 +1,14 @@
+package com.ruoyi.customervisits.service;
+
+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.customervisits.pojo.CustomerVisits;
+
+/**
+ * @author :yys
+ * @date : 2025/8/29 10:26
+ */
+public interface CustomerVisitsService extends IService<CustomerVisits> {
+ IPage<CustomerVisits> listPage(Page page, CustomerVisits customerVisits);
+}
diff --git a/src/main/java/com/ruoyi/customervisits/service/impl/CustomerVisitsServiceImpl.java b/src/main/java/com/ruoyi/customervisits/service/impl/CustomerVisitsServiceImpl.java
new file mode 100644
index 0000000..5023c99
--- /dev/null
+++ b/src/main/java/com/ruoyi/customervisits/service/impl/CustomerVisitsServiceImpl.java
@@ -0,0 +1,35 @@
+package com.ruoyi.customervisits.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.customervisits.mapper.CustomerVisitsMapper;
+import com.ruoyi.customervisits.pojo.CustomerVisits;
+import com.ruoyi.customervisits.service.CustomerVisitsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author :yys
+ * @date : 2025/8/29 10:27
+ */
+@Service
+@Slf4j
+public class CustomerVisitsServiceImpl extends ServiceImpl<CustomerVisitsMapper, CustomerVisits> implements CustomerVisitsService {
+
+ @Autowired
+ private CustomerVisitsMapper customerVisitsMapper;
+
+ @Override
+ public IPage<CustomerVisits> listPage(Page page, CustomerVisits customerVisits) {
+ LambdaQueryWrapper<CustomerVisits> customerVisitsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ if(customerVisits != null && !StringUtils.isEmpty(customerVisits.getCustomerName())){
+ customerVisitsLambdaQueryWrapper.like(CustomerVisits::getCustomerName, customerVisits.getCustomerName());
+ }
+ Page page1 = customerVisitsMapper.selectPage(page, customerVisitsLambdaQueryWrapper);
+ return page1;
+ }
+}
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceDefectRecordController.java b/src/main/java/com/ruoyi/device/controller/DeviceDefectRecordController.java
new file mode 100644
index 0000000..dc103fb
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/controller/DeviceDefectRecordController.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.device.dto.DeviceDefectRecordDto;
+import com.ruoyi.device.dto.DeviceRepairDto;
+import com.ruoyi.device.pojo.DeviceDefectRecord;
+import com.ruoyi.device.pojo.DeviceLedger;
+import com.ruoyi.device.pojo.DeviceRepair;
+import com.ruoyi.device.service.DeviceDefectRecordService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@Api(tags = "璁惧缂洪櫡璁板綍绠$悊")
+@RequestMapping("/defect")
+@RestController
+public class DeviceDefectRecordController {
+ @Autowired
+ private DeviceDefectRecordService deviceDefectRecordService;
+ @ApiModelProperty("璁惧缂洪櫡璁板綍鍒楄〃")
+ @GetMapping("/page")
+ public AjaxResult page(Page page , DeviceDefectRecordDto deviceDefectRecordDto) {
+ return AjaxResult.success(deviceDefectRecordService.listPage(page,deviceDefectRecordDto));
+ }
+ @ApiModelProperty("璁惧id鏌ヨ璁惧缂洪櫡璁板綍鍒楄〃")
+ @GetMapping("/find/{deviceLedgerId}")
+ public AjaxResult find(@PathVariable Long deviceLedgerId) {
+ DeviceDefectRecordDto deviceDefectRecordDto = new DeviceDefectRecordDto();
+ deviceDefectRecordDto.setDeviceLedgerId(deviceLedgerId);
+ return AjaxResult.success(deviceDefectRecordService.listPage(new Page<>(1,-1),deviceDefectRecordDto));
+ }
+
+ @PostMapping("/add")
+ @ApiModelProperty("娣诲姞璁惧缂洪櫡璁板綍")
+ public AjaxResult add(@RequestBody DeviceDefectRecord deviceDefectRecord) {
+ return AjaxResult.success(deviceDefectRecordService.add(deviceDefectRecord));
+ }
+ @PostMapping("/update")
+ @ApiModelProperty("淇敼璁惧缂洪櫡璁板綍")
+ public AjaxResult update(@RequestBody DeviceDefectRecord deviceDefectRecord) {
+ return AjaxResult.success(deviceDefectRecordService.updateByDDR(deviceDefectRecord));
+ }
+ @DeleteMapping("/delete")
+ @ApiModelProperty("鍒犻櫎璁惧缂洪櫡璁板綍")
+ public AjaxResult delete(@PathVariable Long id) {
+ return AjaxResult.success(deviceDefectRecordService.removeById(id));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
index abac6a7..f00595f 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
@@ -2,14 +2,22 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.device.dto.DeviceLedgerDto;
+import com.ruoyi.device.mapper.DeviceLedgerMapper;
+import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
import com.ruoyi.device.pojo.DeviceLedger;
+import com.ruoyi.device.pojo.DeviceMaintenance;
import com.ruoyi.device.service.IDeviceLedgerService;
+import com.ruoyi.device.service.IDeviceMaintenanceService;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
import com.ruoyi.framework.web.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.ArrayUtils;
+import org.ehcache.spi.service.MaintainableService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -18,6 +26,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
@Api(tags = "璁惧鍙拌处绠$悊")
@RequestMapping("/device/ledger")
@@ -26,6 +35,14 @@
@Autowired
private IDeviceLedgerService deviceLedgerService;
+
+ @Autowired
+ private DeviceLedgerMapper deviceLedgerMapper;
+
+ @Autowired
+ private DeviceMaintenanceMapper deviceMaintenanceMapper;
+
+
@ApiModelProperty("璁惧鍙拌处鍒楄〃")
@GetMapping("/page")
@@ -85,4 +102,17 @@
return AjaxResult.success(deviceLedgerService.list(new QueryWrapper<DeviceLedger>().lambda()
.select(DeviceLedger::getId, DeviceLedger::getDeviceName,DeviceLedger::getDeviceModel)));
}
+
+ @GetMapping("scanDevice")
+ @ApiOperation("鑾峰彇璁惧鍙拌处")
+ @Anonymous
+ public AjaxResult scanDevice(Long id) {
+ List<DeviceMaintenance> list = deviceMaintenanceMapper.list1(id);
+ DeviceLedger deviceLedger = deviceLedgerMapper.selectById1(id);
+ if (list.size()>0){
+ deviceLedger.setUpdateTime(list.get(0).getMaintenanceActuallyTime());//鏈�鍚庣淮鎶ゆ椂闂�
+ }
+ deviceLedger.setCreateTime(deviceLedger.getUpdateTime().plusMonths(1));//涓嬫缁存姢鏃堕棿
+ return AjaxResult.success(deviceLedger);
+ }
}
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java b/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
index 8c103ed..5c3dd58 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
@@ -37,9 +37,6 @@
@PostMapping()
@ApiModelProperty("娣诲姞璁惧鎶ヤ慨")
public AjaxResult add( @RequestBody DeviceRepair deviceRepair) {
- DeviceLedger byId = deviceLedgerService.getById(deviceRepair.getDeviceLedgerId());
- deviceRepair.setDeviceName(byId.getDeviceName());
- deviceRepair.setDeviceModel(byId.getDeviceModel());
return deviceRepairService.saveDeviceRepair(deviceRepair);
}
diff --git a/src/main/java/com/ruoyi/device/dto/DeviceDefectRecordDto.java b/src/main/java/com/ruoyi/device/dto/DeviceDefectRecordDto.java
new file mode 100644
index 0000000..aa1e0aa
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/dto/DeviceDefectRecordDto.java
@@ -0,0 +1,14 @@
+package com.ruoyi.device.dto;
+
+import com.ruoyi.device.pojo.DeviceDefectRecord;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DeviceDefectRecordDto extends DeviceDefectRecord {
+ @ApiModelProperty("璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("璁惧鍨嬪彿")
+ private String deviceModel;
+}
diff --git a/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java b/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
index 65faef8..26bdc91 100644
--- a/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
+++ b/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
@@ -5,10 +5,12 @@
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.dto.DateQueryDto;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
+import java.time.LocalDate;
import java.time.LocalDateTime;
/**
@@ -99,4 +101,25 @@
* 绉熸埛ID
*/
private Long tenantId;
+
+ @ApiModelProperty("鐘舵��")
+ private String status;
+
+ @ApiModelProperty("璁″垝杩愯鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate planRuntimeTime;
+
+ @ApiModelProperty("寮�濮嬭繍琛屾椂闂�")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime startRuntimeTime;
+
+ @ApiModelProperty("缁撴潫杩愯鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime endRuntimeTime;
+
+ @ApiModelProperty("杩愯鏃堕暱")
+ private String runtimeDuration;
}
diff --git a/src/main/java/com/ruoyi/device/execl/DeviceMaintenanceExeclDto.java b/src/main/java/com/ruoyi/device/execl/DeviceMaintenanceExeclDto.java
index 92dd71a..6cd3316 100644
--- a/src/main/java/com/ruoyi/device/execl/DeviceMaintenanceExeclDto.java
+++ b/src/main/java/com/ruoyi/device/execl/DeviceMaintenanceExeclDto.java
@@ -21,7 +21,7 @@
@ApiModelProperty("瑙勬牸鍨嬪彿")
private String deviceModel;
- @Excel(name = "璁″垝淇濆吇鏃ユ湡")
+ @Excel(name = "璁″垝淇濆吇鏃ユ湡", dateFormat = "yyyy-MM-dd HH:mm:ss", width = 30)
@ApiModelProperty("璁″垝淇濆吇鏃ユ湡")
private Date maintenancePlanTime;
@@ -30,7 +30,7 @@
private String maintenanceActuallyName;
@ApiModelProperty("瀹為檯淇濆吇鏃ユ湡")
- @Excel(name = "瀹為檯淇濆吇鏃ユ湡")
+ @Excel(name = "瀹為檯淇濆吇鏃ユ湡", dateFormat = "yyyy-MM-dd HH:mm:ss", width = 30)
private LocalDateTime maintenanceActuallyTime;
@ApiModelProperty("淇濆吇缁撴灉 0 缁翠慨 1 瀹屽ソ")
@@ -42,11 +42,11 @@
private String status;
@ApiModelProperty("鍒涘缓鏃堕棿")
- @Excel(name = "褰曞叆鏃堕棿")
+ @Excel(name = "褰曞叆鏃堕棿", dateFormat = "yyyy-MM-dd HH:mm:ss", width = 30)
private Date createTime;
@ApiModelProperty("鍒涘缓浜�")
- @Excel(name = "褰曞叆浜�")
+// @Excel(name = "褰曞叆浜�")
private String createUser;
}
diff --git a/src/main/java/com/ruoyi/device/execl/DeviceRepairExeclDto.java b/src/main/java/com/ruoyi/device/execl/DeviceRepairExeclDto.java
index 958db15..a1b15f3 100644
--- a/src/main/java/com/ruoyi/device/execl/DeviceRepairExeclDto.java
+++ b/src/main/java/com/ruoyi/device/execl/DeviceRepairExeclDto.java
@@ -22,7 +22,7 @@
private String deviceModel;
@ApiModelProperty("鎶ヤ慨鏃堕棿")
- @Excel(name = "鎶ヤ慨鏃堕棿")
+ @Excel(name = "鎶ヤ慨鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
private Date repairTime;
@ApiModelProperty("鎶ヤ慨浜�")
@@ -38,7 +38,7 @@
private String maintenanceName;
@ApiModelProperty("缁翠慨鏃堕棿")
- @Excel(name = "缁翠慨鏃堕棿")
+ @Excel(name = "缁翠慨鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
private Date maintenanceTime;
@ApiModelProperty("缁翠慨缁撴灉")
@@ -50,10 +50,10 @@
private String statusStr;
@ApiModelProperty("鍒涘缓鏃堕棿")
- @Excel(name = "褰曞叆鏃堕棿")
+ @Excel(name = "褰曞叆鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
private LocalDateTime createTime;
- @Excel(name = "褰曞叆浜�")
+// @Excel(name = "褰曞叆浜�")
@ApiModelProperty("鍒涘缓浜�")
private String createUser;
diff --git a/src/main/java/com/ruoyi/device/mapper/DeviceDefectRecordMapper.java b/src/main/java/com/ruoyi/device/mapper/DeviceDefectRecordMapper.java
new file mode 100644
index 0000000..11d38ff
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/mapper/DeviceDefectRecordMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.device.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.device.dto.DeviceDefectRecordDto;
+import com.ruoyi.device.pojo.DeviceDefectRecord;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface DeviceDefectRecordMapper extends BaseMapper<DeviceDefectRecord> {
+ IPage<DeviceDefectRecordDto> listPage(Page page,@Param("deviceDefectRecordDto") DeviceDefectRecordDto deviceDefectRecordDto);
+}
diff --git a/src/main/java/com/ruoyi/device/mapper/DeviceLedgerMapper.java b/src/main/java/com/ruoyi/device/mapper/DeviceLedgerMapper.java
index 558b55b..17683d4 100644
--- a/src/main/java/com/ruoyi/device/mapper/DeviceLedgerMapper.java
+++ b/src/main/java/com/ruoyi/device/mapper/DeviceLedgerMapper.java
@@ -1,5 +1,6 @@
package com.ruoyi.device.mapper;
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -17,4 +18,7 @@
IPage<DeviceLedgerDto> queryPage(Page page, @Param("deviceLedger") DeviceLedgerDto deviceLedgerDto);
List<DeviceLedgerExeclDto> deviceLedgerExportList(DeviceLedger deviceLedger);
+
+ @InterceptorIgnore(tenantLine = "true")
+ DeviceLedger selectById1(Long id);
}
diff --git a/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java b/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java
index 5fde866..86c726b 100644
--- a/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java
+++ b/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java
@@ -1,6 +1,7 @@
package com.ruoyi.device.mapper;
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -9,10 +10,15 @@
import com.ruoyi.device.pojo.DeviceMaintenance;
import org.apache.ibatis.annotations.Mapper;
+import java.util.List;
+
@Mapper
public interface DeviceMaintenanceMapper extends BaseMapper<DeviceMaintenance> {
IPage<DeviceMaintenanceDto> queryPage(Page page, DeviceMaintenanceDto deviceMaintenanceDto);
DeviceMaintenanceDto detailById(Long id);
+
+ @InterceptorIgnore(tenantLine = "true")
+ List<DeviceMaintenance> list1(Long id);
}
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceDefectRecord.java b/src/main/java/com/ruoyi/device/pojo/DeviceDefectRecord.java
new file mode 100644
index 0000000..966b8ae
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceDefectRecord.java
@@ -0,0 +1,51 @@
+package com.ruoyi.device.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+@Data
+@TableName("device_defect_record")
+public class DeviceDefectRecord {
+ @ApiModelProperty("璁惧缂洪櫡璁板綍id")
+ private Long id;
+ @ApiModelProperty("璁惧鍙拌处id")
+ private Long deviceLedgerId;
+ @ApiModelProperty("缂洪櫡鎻忚堪")
+ private String defectDescription;
+ @ApiModelProperty("鐘舵��")
+ private String status;
+ @ApiModelProperty("娑堥櫎鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime eliminateTime;
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鏇存柊浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("绉熸埛id")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java b/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java
index 01233be..caa8f32 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java
@@ -108,4 +108,27 @@
*/
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
+
+ /* *************************** 杩愯绠$悊 *************************** */
+
+ @ApiModelProperty("鐘舵��")
+ private String status;
+
+ @ApiModelProperty("璁″垝杩愯鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate planRuntimeTime;
+
+ @ApiModelProperty("寮�濮嬭繍琛屾椂闂�")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime startRuntimeTime;
+
+ @ApiModelProperty("缁撴潫杩愯鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime endRuntimeTime;
+
+ @ApiModelProperty("杩愯鏃堕暱")
+ private String runtimeDuration;
}
diff --git a/src/main/java/com/ruoyi/device/service/DeviceDefectRecordService.java b/src/main/java/com/ruoyi/device/service/DeviceDefectRecordService.java
new file mode 100644
index 0000000..70852d0
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/service/DeviceDefectRecordService.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.service;
+
+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.device.dto.DeviceDefectRecordDto;
+import com.ruoyi.device.pojo.DeviceDefectRecord;
+
+public interface DeviceDefectRecordService extends IService<DeviceDefectRecord> {
+ IPage<DeviceDefectRecordDto> listPage(Page page, DeviceDefectRecordDto deviceDefectRecordDto);
+
+ boolean updateByDDR(DeviceDefectRecord deviceDefectRecord);
+
+ boolean add(DeviceDefectRecord deviceDefectRecord);
+}
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceDefectRecordServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceDefectRecordServiceImpl.java
new file mode 100644
index 0000000..2394982
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceDefectRecordServiceImpl.java
@@ -0,0 +1,67 @@
+package com.ruoyi.device.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.device.dto.DeviceDefectRecordDto;
+import com.ruoyi.device.mapper.DeviceDefectRecordMapper;
+import com.ruoyi.device.mapper.DeviceRepairMapper;
+import com.ruoyi.device.pojo.DeviceDefectRecord;
+import com.ruoyi.device.pojo.DeviceRepair;
+import com.ruoyi.device.service.DeviceDefectRecordService;
+import com.ruoyi.device.service.IDeviceRepairService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class DeviceDefectRecordServiceImpl extends ServiceImpl<DeviceDefectRecordMapper, DeviceDefectRecord> implements DeviceDefectRecordService {
+ @Autowired
+ private DeviceDefectRecordMapper deviceDefectRecordMapper;
+
+ @Autowired
+ private DeviceRepairMapper deviceRepairMapper;
+
+ @Override
+ public IPage<DeviceDefectRecordDto> listPage(Page page, DeviceDefectRecordDto deviceDefectRecordDto) {
+ return deviceDefectRecordMapper.listPage(page, deviceDefectRecordDto);
+ }
+ @Override
+ public boolean add(DeviceDefectRecord deviceDefectRecord) {
+ String status = deviceDefectRecord.getStatus();
+ if (status.equals("涓ラ噸缂洪櫡")) {
+ DeviceRepair deviceRepair = new DeviceRepair();
+ deviceRepair.setDeviceLedgerId(deviceDefectRecord.getDeviceLedgerId());
+ deviceRepair.setRemark(deviceDefectRecord.getDefectDescription());
+ //鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
+ deviceRepair.setRepairName(SecurityUtils.getUsername());
+ deviceRepair.setRepairTime(new Date());
+ deviceRepairMapper.insert(deviceRepair);
+ return deviceDefectRecordMapper.insert(deviceDefectRecord) > 0;
+ } else if (status.equals("涓�鑸己闄�")) {
+ return deviceDefectRecordMapper.insert(deviceDefectRecord) > 0;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean updateByDDR(DeviceDefectRecord deviceDefectRecord) {
+ String status = deviceDefectRecord.getStatus();
+ if (status.equals("涓ラ噸缂洪櫡")) {
+// deviceDefectRecord.setStatus("姝e父");
+// deviceDefectRecord.setEliminateTime(LocalDateTime.now());
+ throw new RuntimeException("涓ラ噸缂洪櫡-璁惧缁翠慨鍚庢洿鏂颁负姝e父鐘舵��");
+ } else if (status.equals("涓�鑸己闄�")) {
+ deviceDefectRecord.setStatus("姝e父");
+ }
+ deviceDefectRecord.setEliminateTime(LocalDateTime.now());
+ return updateById(deviceDefectRecord);
+ }
+
+
+}
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 0687aad..420ed9a 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.SecurityUtils;
@@ -23,6 +24,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
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 9c92254..011d32b 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -54,17 +54,13 @@
@Override
public void export(HttpServletResponse response, Long[] ids) {
- ArrayList<Long> arrayList = new ArrayList<>();
- Arrays.stream(ids).map(id -> {
- return arrayList.add( id);
- });
- List<DeviceMaintenance> supplierManageList = deviceMaintenanceMapper.selectBatchIds(arrayList);
+ List<DeviceMaintenance> supplierManageList = deviceMaintenanceMapper.selectList(null);
ArrayList<DeviceMaintenanceExeclDto> deviceLedgerExeclDtos = new ArrayList<>();
- supplierManageList.stream().forEach(deviceMaintenance -> {
+ supplierManageList.forEach(deviceMaintenance -> {
DeviceMaintenanceExeclDto deviceRepairExeclDto = new DeviceMaintenanceExeclDto();
BeanUtils.copyProperties(deviceMaintenance,deviceRepairExeclDto);
deviceRepairExeclDto.setStatus(deviceMaintenance.getStatus() == 0 ? "寰呯淮淇�" : "瀹岀粨");
- deviceRepairExeclDto.setMaintenanceResult(deviceMaintenance.getMaintenanceResult() == 0 ? "缁翠慨" : "瀹屽ソ");
+ deviceRepairExeclDto.setMaintenanceResult(deviceMaintenance.getMaintenanceResult() != null && deviceMaintenance.getMaintenanceResult() == 0 ? "缁翠慨" : "瀹屽ソ");
deviceLedgerExeclDtos.add(deviceRepairExeclDto);
});
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 a4f148c..1f09d07 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -5,10 +5,16 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.device.dto.DeviceDefectRecordDto;
import com.ruoyi.device.dto.DeviceRepairDto;
import com.ruoyi.device.execl.DeviceRepairExeclDto;
+import com.ruoyi.device.mapper.DeviceDefectRecordMapper;
import com.ruoyi.device.mapper.DeviceRepairMapper;
+import com.ruoyi.device.pojo.DeviceDefectRecord;
+import com.ruoyi.device.pojo.DeviceLedger;
import com.ruoyi.device.pojo.DeviceRepair;
+import com.ruoyi.device.service.DeviceDefectRecordService;
+import com.ruoyi.device.service.IDeviceLedgerService;
import com.ruoyi.device.service.IDeviceRepairService;
import com.ruoyi.framework.web.domain.AjaxResult;
import lombok.AllArgsConstructor;
@@ -26,10 +32,12 @@
@Slf4j
public class DeviceRepairServiceImpl extends ServiceImpl<DeviceRepairMapper, DeviceRepair> implements IDeviceRepairService {
-
+ @Autowired
+ private DeviceDefectRecordService deviceDefectRecordService;
@Autowired
private DeviceRepairMapper deviceRepairMapper;
-
+ @Autowired
+ private IDeviceLedgerService deviceLedgerService;
@Override
public IPage<DeviceRepairDto> queryPage(Page page, DeviceRepairDto deviceRepairDto) {
@@ -38,6 +46,9 @@
@Override
public AjaxResult saveDeviceRepair(DeviceRepair deviceRepair) {
+ DeviceLedger byId = deviceLedgerService.getById(deviceRepair.getDeviceLedgerId());
+ deviceRepair.setDeviceName(byId.getDeviceName());
+ deviceRepair.setDeviceModel(byId.getDeviceModel());
boolean save = this.save(deviceRepair);
if (save){
return AjaxResult.success();
@@ -48,6 +59,18 @@
@Override
public AjaxResult updateDeviceRepair(DeviceRepair deviceRepair) {
if (this.updateById(deviceRepair)) {
+ Long id = deviceRepair.getId();
+ //
+ DeviceDefectRecordDto deviceDefectRecordDto = new DeviceDefectRecordDto();
+ deviceDefectRecordDto.setDeviceLedgerId(id);
+ deviceDefectRecordDto.setStatus("涓ラ噸缂洪櫡");
+ List<DeviceDefectRecordDto> records = deviceDefectRecordService.listPage(new Page<>(1, -1), deviceDefectRecordDto).getRecords();
+ if (!records.isEmpty()){
+ records.forEach(deviceDefectRecord -> {
+ deviceDefectRecord.setStatus("姝e父");
+ deviceDefectRecordService.updateByDDR(deviceDefectRecord);
+ });
+ }
return AjaxResult.success();
}
return AjaxResult.error();
diff --git a/src/main/java/com/ruoyi/dto/PageDto.java b/src/main/java/com/ruoyi/dto/PageDto.java
new file mode 100644
index 0000000..7c6f399
--- /dev/null
+++ b/src/main/java/com/ruoyi/dto/PageDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/3
+ * @email 3038525872@qq.com
+ */
+@Getter
+@Setter
+public class PageDto implements Serializable {
+ private Integer current = 1;
+ private Integer size = 100;
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/ElectricityConsumptionAreaController.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/ElectricityConsumptionAreaController.java
new file mode 100644
index 0000000..e6babfe
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/ElectricityConsumptionAreaController.java
@@ -0,0 +1,66 @@
+package com.ruoyi.equipmentenergyconsumption.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.ProductDto;
+import com.ruoyi.basic.dto.ProductTreeDto;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.device.pojo.DeviceLedger;
+import com.ruoyi.equipmentenergyconsumption.dto.ElectricityConsumptionAreaTreeDto;
+import com.ruoyi.equipmentenergyconsumption.pojo.ElectricityConsumptionArea;
+import com.ruoyi.equipmentenergyconsumption.service.ElectricityConsumptionAreaService;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@RestController
+@Api(tags = "鐢ㄧ數鍖哄煙")
+@RequestMapping("/electricityConsumptionArea")
+public class ElectricityConsumptionAreaController extends BaseController {
+
+ @Autowired
+ private ElectricityConsumptionAreaService electricityConsumptionAreaService;
+
+ /**
+ * 鏌ヨ鏍戠粨鏋�
+ */
+ @GetMapping("/list")
+ public List<ElectricityConsumptionAreaTreeDto> selectElectricityConsumptionAreaList() {
+ return electricityConsumptionAreaService.selectElectricityConsumptionAreaList();
+ }
+
+ @GetMapping("/listPage")
+ @ApiOperation("鐢ㄧ數鍖哄煙-鍒嗛〉鏌ヨ")
+ @Log(title = "鐢ㄧ數鍖哄煙-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult listPage(Page page, ElectricityConsumptionArea electricityConsumptionArea) {
+ IPage<ElectricityConsumptionArea> listPage = electricityConsumptionAreaService.listPage(page, electricityConsumptionArea);
+ return AjaxResult.success(listPage);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("鐢ㄧ數鍖哄煙-鏂板")
+ @Log(title = "鐢ㄧ數鍖哄煙-鏂板", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody ElectricityConsumptionArea electricityConsumptionArea) {
+ boolean save = electricityConsumptionAreaService.saveOrUpdate(electricityConsumptionArea);
+ return save ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @DeleteMapping("/delete")
+ @ApiOperation("鐢ㄧ數鍖哄煙-鍒犻櫎")
+ @Log(title = "鐢ㄧ數鍖哄煙-鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ boolean remove = electricityConsumptionAreaService.removeBatchByIds(ids);
+ return remove ? AjaxResult.success() : AjaxResult.error();
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EnergyPeriodController.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EnergyPeriodController.java
new file mode 100644
index 0000000..1c4842f
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EnergyPeriodController.java
@@ -0,0 +1,84 @@
+package com.ruoyi.equipmentenergyconsumption.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.equipmentenergyconsumption.pojo.ElectricityConsumptionArea;
+import com.ruoyi.equipmentenergyconsumption.pojo.EnergyPeriod;
+import com.ruoyi.equipmentenergyconsumption.service.EnergyPeriodService;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@RestController
+@RequestMapping("/energyPeriod")
+@Api(tags = "鐢ㄧ數鏃舵")
+public class EnergyPeriodController extends BaseController {
+ @Autowired
+ private EnergyPeriodService energyPeriodService;
+ @GetMapping("/listPage")
+ @ApiOperation("鐢ㄧ數鏃舵-鍒嗛〉鏌ヨ")
+ @Log(title = "鐢ㄧ數鏃舵-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult listPage(Page page, EnergyPeriod energyPeriod) {
+ IPage<EnergyPeriod> listPage = energyPeriodService.listPage(page, energyPeriod);
+ return AjaxResult.success(listPage);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("鐢ㄧ數鏃舵-鏂板")
+ @Log(title = "鐢ㄧ數鏃舵-鏂板", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody EnergyPeriod energyPeriod) {
+ boolean save = energyPeriodService.save(energyPeriod);
+ return save ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @PostMapping("/addBatch")
+ @ApiOperation("鐢ㄧ數鏃舵-鎵归噺鏂板")
+ @Log(title = "鐢ㄧ數鏃舵-鎵归噺鏂板", businessType = BusinessType.INSERT)
+ public AjaxResult addBatch(@RequestBody List<EnergyPeriod> energyPeriods) {
+ boolean save = energyPeriodService.saveBatch(energyPeriods);
+ return save ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("鐢ㄧ數鏃舵-淇敼")
+ @Log(title = "鐢ㄧ數鏃舵-淇敼", businessType = BusinessType.UPDATE)
+ public AjaxResult update(@RequestBody EnergyPeriod energyPeriod) {
+ boolean update = energyPeriodService.updateById(energyPeriod);
+ return update ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @DeleteMapping("/delete")
+ @ApiOperation("鐢ㄧ數鏃舵-鍒犻櫎")
+ @Log(title = "鐢ㄧ數鏃舵-鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ boolean remove = energyPeriodService.removeBatchByIds(ids);
+ return remove ? AjaxResult.success() : AjaxResult.error("鍒犻櫎澶辫触");
+ }
+
+
+ /**
+ * 瀵煎嚭鐢ㄧ數鏃舵
+ */
+ @Log(title = "瀵煎嚭鐢ㄧ數鏃舵", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ @ApiOperation("瀵煎嚭鐢ㄧ數鏃舵")
+ public void export(HttpServletResponse response) {
+ Page page = new Page(-1,-1);
+ EnergyPeriod energyPeriod = new EnergyPeriod();
+ IPage<EnergyPeriod> listPage = energyPeriodService.listPage(page, energyPeriod);
+ ExcelUtil<EnergyPeriod> util = new ExcelUtil<EnergyPeriod>(EnergyPeriod.class);
+ util.exportExcel(response, listPage.getRecords() , "鐢ㄧ數鏃舵鏁版嵁");
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java
index 5dc5686..e71fe31 100644
--- a/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/controller/EquipmentEnergyConsumptionController.java
@@ -6,6 +6,7 @@
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.device.pojo.DeviceLedger;
+import com.ruoyi.equipmentenergyconsumption.dto.EquipmentEnergyConsumptionDto;
import com.ruoyi.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption;
import com.ruoyi.equipmentenergyconsumption.service.EquipmentEnergyConsumptionService;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
@@ -14,12 +15,14 @@
import com.ruoyi.framework.web.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -59,6 +62,14 @@
return save ? AjaxResult.success() : AjaxResult.error();
}
+ @PostMapping("/addBatch")
+ @ApiOperation("璁惧鑳借��-鎵归噺鏂板")
+ @Log(title = "璁惧鑳借��-鎵归噺鏂板", businessType = BusinessType.INSERT)
+ public AjaxResult addBatch(@RequestBody List<EquipmentEnergyConsumption> list) {
+ boolean save = equipmentEnergyConsumptionService.saveBatch(list);
+ return save ? AjaxResult.success() : AjaxResult.error();
+ }
+
@PostMapping("/update")
@ApiOperation("璁惧鑳借��-淇敼")
@Log(title = "璁惧鑳借��-淇敼", businessType = BusinessType.UPDATE)
@@ -93,8 +104,11 @@
@PostMapping("/export")
@ApiOperation("瀵煎嚭璁惧鑳借��")
public void export(HttpServletResponse response) {
+ Page page = new Page<>(-1,-1);
+ EquipmentEnergyConsumption equipmentEnergyConsumption = new EquipmentEnergyConsumption();
+ IPage<EquipmentEnergyConsumption> listPage = equipmentEnergyConsumptionService.listPage(page, equipmentEnergyConsumption);
ExcelUtil<EquipmentEnergyConsumption> util = new ExcelUtil<EquipmentEnergyConsumption>(EquipmentEnergyConsumption.class);
- util.exportExcel(response, null , "瀹㈡埛妗f鏁版嵁");
+ util.exportExcel(response, listPage.getRecords() , "瀵煎嚭璁惧鑳借��");
}
@GetMapping("/listPageByTrend")
@@ -105,6 +119,26 @@
return AjaxResult.success(listPage);
}
+ /**
+ * 瀵煎嚭鑳芥簮瓒嬪娍
+ */
+ @Log(title = "瀵煎嚭鑳芥簮瓒嬪娍", businessType = BusinessType.EXPORT)
+ @PostMapping("/exportTwo")
+ @ApiOperation("瀵煎嚭鑳芥簮瓒嬪娍")
+ public void exportTwo(HttpServletResponse response) {
+ Page page = new Page<>(-1,-1);
+ EquipmentEnergyConsumption equipmentEnergyConsumption = new EquipmentEnergyConsumption();
+ IPage<EquipmentEnergyConsumption> listPage = equipmentEnergyConsumptionService.listPageByTrend(page, equipmentEnergyConsumption);
+ List<EquipmentEnergyConsumptionDto> list = new ArrayList<>();
+ listPage.getRecords().forEach(item -> {
+ EquipmentEnergyConsumptionDto dto = new EquipmentEnergyConsumptionDto();
+ BeanUtils.copyProperties(item, dto);
+ list.add(dto);
+ });
+ ExcelUtil<EquipmentEnergyConsumptionDto> util = new ExcelUtil<EquipmentEnergyConsumptionDto>(EquipmentEnergyConsumptionDto.class);
+ util.exportExcel(response, list , "瀵煎嚭鑳芥簮瓒嬪娍");
+ }
+
}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/dto/ElectricityConsumptionAreaTreeDto.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/dto/ElectricityConsumptionAreaTreeDto.java
new file mode 100644
index 0000000..b481090
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/dto/ElectricityConsumptionAreaTreeDto.java
@@ -0,0 +1,22 @@
+package com.ruoyi.equipmentenergyconsumption.dto;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.basic.dto.ProductTreeDto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+public class ElectricityConsumptionAreaTreeDto {
+
+ private Long id;
+ private Long parentId;
+ private String productName;
+ private String label; // 鐢ㄤ簬鏍戝舰缁撴瀯鐨勬樉绀哄悕绉�
+ private List<ElectricityConsumptionAreaTreeDto> children;
+
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/dto/EquipmentEnergyConsumptionDto.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/dto/EquipmentEnergyConsumptionDto.java
new file mode 100644
index 0000000..15689d0
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/dto/EquipmentEnergyConsumptionDto.java
@@ -0,0 +1,111 @@
+package com.ruoyi.equipmentenergyconsumption.dto;
+
+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.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/11/3 15:22
+ */
+@Data
+public class EquipmentEnergyConsumptionDto {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 璁惧缂栧彿
+ */
+ @ApiModelProperty("璁惧缂栧彿")
+ @Excel(name = "瑙勬牸鍨嬪彿")
+ private String code;
+
+ /**
+ * 璁惧鍚嶇О
+ */
+ @ApiModelProperty("璁惧鍚嶇О")
+ @Excel(name = "璁惧鍚嶇О")
+ private String name;
+
+ /**
+ * 棰濆畾鍔熺巼
+ */
+ @ApiModelProperty("棰濆畾鍔熺巼")
+// @Excel(name = "棰濆畾鍔熺巼")
+ private String powerRating;
+
+ /**
+ * 瀹為檯鍔熺巼
+ */
+ @ApiModelProperty("瀹為檯鍔熺巼")
+// @Excel(name = "瀹為檯鍔熺巼")
+ private String powerActual;
+
+
+ /**
+ * 褰撴棩鐢ㄧ數閲�
+ */
+ @ApiModelProperty("褰撴棩鐢ㄧ數閲�")
+// @Excel(name = "褰撴棩鐢ㄧ數閲�")
+ private BigDecimal dayNum;
+
+ /**
+ * 鏄ㄧ敤鐢甸噺
+ */
+ @ApiModelProperty("鏄ㄧ敤鐢甸噺")
+ @TableField(exist = false)
+ @Excel(name = "鏄ㄧ敤鐢甸噺")
+ private BigDecimal toDayNum;
+
+ /**
+ * 鏈湀骞冲潎鐢甸噺锛�30澶╄绠楋級
+ */
+ @ApiModelProperty("鏈湀骞冲潎鐢甸噺锛�30澶╄绠楋級")
+ @TableField(exist = false)
+ @Excel(name = "鏈湀骞冲潎鐢甸噺")
+ private BigDecimal avgNum;
+
+
+ /**
+ * 瓒嬪娍
+ */
+ @ApiModelProperty("瓒嬪娍")
+ @TableField(exist = false)
+ @Excel(name = "瓒嬪娍")
+ private String trend;
+
+ /**
+ * 绱鐢ㄧ數閲�
+ */
+ @ApiModelProperty("绱鐢ㄧ數閲�")
+// @Excel(name = "绱鐢ㄧ數閲�")
+ private BigDecimal sumNum;
+ /**
+ * 杩愯鏃堕棿
+ */
+ @ApiModelProperty("杩愯鏃堕棿")
+ @Excel(name = "杩愯鏃堕棿" , width = 30, dateFormat = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date runDate;
+
+ /**
+ * 姣忔棩闄愬埗鐢甸噺
+ */
+ @ApiModelProperty("姣忔棩闄愬埗鐢甸噺")
+// @Excel(name = "姣忔棩闄愬埗鐢甸噺")
+ private BigDecimal everyNum;
+
+
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/mapper/ElectricityConsumptionAreaMapper.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/mapper/ElectricityConsumptionAreaMapper.java
new file mode 100644
index 0000000..337ae70
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/mapper/ElectricityConsumptionAreaMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.equipmentenergyconsumption.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.equipmentenergyconsumption.pojo.ElectricityConsumptionArea;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+@Mapper
+public interface ElectricityConsumptionAreaMapper extends BaseMapper<ElectricityConsumptionArea> {
+
+ IPage<ElectricityConsumptionArea> listPage(Page page, @Param("electricityConsumptionArea") ElectricityConsumptionArea electricityConsumptionArea);
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/mapper/EnergyPeriodMapper.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/mapper/EnergyPeriodMapper.java
new file mode 100644
index 0000000..468c7c0
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/mapper/EnergyPeriodMapper.java
@@ -0,0 +1,12 @@
+package com.ruoyi.equipmentenergyconsumption.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.equipmentenergyconsumption.pojo.EnergyPeriod;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface EnergyPeriodMapper extends BaseMapper<EnergyPeriod> {
+ IPage<EnergyPeriod> listPage(Page page, EnergyPeriod energyPeriod);
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/ElectricityConsumptionArea.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/ElectricityConsumptionArea.java
new file mode 100644
index 0000000..4911305
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/ElectricityConsumptionArea.java
@@ -0,0 +1,43 @@
+package com.ruoyi.equipmentenergyconsumption.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+@TableName("electricity_consumption_area")
+@ApiModel
+public class ElectricityConsumptionArea {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鍖哄煙鍚嶇О
+ */
+ @ApiModelProperty("鍖哄煙鍚嶇О")
+ private String areaName;
+
+ /**
+ * 鍖哄煙绫诲瀷
+ */
+ @ApiModelProperty("鍖哄煙绫诲瀷")
+ private String areaType;
+ /**
+ * 鎺掑簭
+ */
+ private Long sort;
+
+ /**
+ * 鐖剁被id
+ */
+ private Long fuId;
+ /**
+ * 绉熸埛id
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/EnergyPeriod.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/EnergyPeriod.java
new file mode 100644
index 0000000..20c9e8f
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/EnergyPeriod.java
@@ -0,0 +1,59 @@
+package com.ruoyi.equipmentenergyconsumption.pojo;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("energy_period")
+@ApiModel
+public class EnergyPeriod {
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鏃ユ湡
+ */
+ @ApiModelProperty("鏃ユ湡")
+ @Excel(name = "鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date date;
+ /**
+ * 鍗曚环
+ */
+ @ApiModelProperty("鍗曚环")
+ @Excel(name = "鍗曚环")
+ private Double price;
+ /**
+ * 绉熸埛id
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+ /**
+ * 宄版
+ */
+ @ApiModelProperty("宄版")
+ @Excel(name = "宄版")
+ private Double peak;
+ /**
+ * 璋锋
+ */
+ @ApiModelProperty("璋锋")
+ @Excel(name = "璋锋")
+ private Double valley;
+ /**
+ * 骞虫
+ */
+ @ApiModelProperty("骞虫")
+ @Excel(name = "骞虫")
+ private Double flat;
+ /**
+ * 灏栨
+ */
+ @ApiModelProperty("灏栨")
+ @Excel(name = "灏栨")
+ private Double sharp;
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/EquipmentEnergyConsumption.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/EquipmentEnergyConsumption.java
index c6562aa..846fc8a 100644
--- a/src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/EquipmentEnergyConsumption.java
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/pojo/EquipmentEnergyConsumption.java
@@ -135,5 +135,8 @@
*/
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
-
+ /**
+ *鎵�灞炵敤鐢靛尯鍩焛d
+ */
+ private Long electricityConsumptionAreaId;
}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/service/ElectricityConsumptionAreaService.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/service/ElectricityConsumptionAreaService.java
new file mode 100644
index 0000000..87c4e0d
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/service/ElectricityConsumptionAreaService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.equipmentenergyconsumption.service;
+
+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.basic.dto.ProductTreeDto;
+import com.ruoyi.equipmentenergyconsumption.dto.ElectricityConsumptionAreaTreeDto;
+import com.ruoyi.equipmentenergyconsumption.pojo.ElectricityConsumptionArea;
+
+import java.util.List;
+
+public interface ElectricityConsumptionAreaService extends IService<ElectricityConsumptionArea> {
+ IPage<ElectricityConsumptionArea> listPage(Page page, ElectricityConsumptionArea electricityConsumptionArea);
+
+ List<ElectricityConsumptionAreaTreeDto> selectElectricityConsumptionAreaList();
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/service/EnergyPeriodService.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/service/EnergyPeriodService.java
new file mode 100644
index 0000000..9da49fb
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/service/EnergyPeriodService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.equipmentenergyconsumption.service;
+
+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.equipmentenergyconsumption.pojo.EnergyPeriod;
+
+public interface EnergyPeriodService extends IService<EnergyPeriod> {
+ IPage<EnergyPeriod> listPage(Page page, EnergyPeriod energyPeriod);
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/service/impl/ElectricityConsumptionAreaServiceImpl.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/service/impl/ElectricityConsumptionAreaServiceImpl.java
new file mode 100644
index 0000000..abccda9
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/service/impl/ElectricityConsumptionAreaServiceImpl.java
@@ -0,0 +1,80 @@
+package com.ruoyi.equipmentenergyconsumption.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.ProductTreeDto;
+import com.ruoyi.basic.pojo.Product;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.equipmentenergyconsumption.dto.ElectricityConsumptionAreaTreeDto;
+import com.ruoyi.equipmentenergyconsumption.mapper.ElectricityConsumptionAreaMapper;
+import com.ruoyi.equipmentenergyconsumption.pojo.ElectricityConsumptionArea;
+import com.ruoyi.equipmentenergyconsumption.service.ElectricityConsumptionAreaService;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Service
+@Slf4j
+public class ElectricityConsumptionAreaServiceImpl extends ServiceImpl<ElectricityConsumptionAreaMapper, ElectricityConsumptionArea> implements ElectricityConsumptionAreaService {
+
+ @Autowired
+ private ElectricityConsumptionAreaMapper electricityConsumptionAreaMapper;
+
+ @Override
+ public IPage<ElectricityConsumptionArea> listPage(Page page, ElectricityConsumptionArea electricityConsumptionArea) {
+ return electricityConsumptionAreaMapper.listPage(page,electricityConsumptionArea);
+ }
+
+
+ //宸︿晶鏍戠粨鏋�
+ @Override
+ public List<ElectricityConsumptionAreaTreeDto> selectElectricityConsumptionAreaList() {
+ // 鏌ヨ鏍硅妭鐐癸紙parentId 涓� null锛�
+ LambdaQueryWrapper<ElectricityConsumptionArea> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.isNull(ElectricityConsumptionArea::getFuId);
+ // 鏌ヨ鏍硅妭鐐瑰垪琛�
+ List<ElectricityConsumptionArea> rootProducts = electricityConsumptionAreaMapper.selectList(queryWrapper);
+
+ // 杞崲涓烘爲鑺傜偣骞堕�掑綊鏋勫缓瀛愭爲
+ List<ElectricityConsumptionAreaTreeDto> tree = new ArrayList<>();
+ for (ElectricityConsumptionArea electricityConsumptionArea : rootProducts) {
+ ElectricityConsumptionAreaTreeDto node = convertToTreeDto(electricityConsumptionArea);
+ node.setChildren(buildChildrenNodes(electricityConsumptionArea.getId()));
+ tree.add(node);
+ }
+ return tree;
+ }
+
+ // 灏� Product 杞崲涓� ProductTreeDto
+ private ElectricityConsumptionAreaTreeDto convertToTreeDto(ElectricityConsumptionArea electricityConsumptionArea) {
+ ElectricityConsumptionAreaTreeDto dto = new ElectricityConsumptionAreaTreeDto();
+ BeanUtils.copyProperties(electricityConsumptionArea, dto);
+ dto.setLabel(electricityConsumptionArea.getAreaName()); // 璁剧疆 label 涓轰骇鍝佸悕绉�
+ dto.setChildren(new ArrayList<>());
+ return dto;
+ }
+
+ // 閫掑綊鏋勫缓瀛愯妭鐐�
+ private List<ElectricityConsumptionAreaTreeDto> buildChildrenNodes(Long parentId) {
+ // 鏌ヨ褰撳墠鐖惰妭鐐圭殑瀛愯妭鐐�
+ LambdaQueryWrapper<ElectricityConsumptionArea> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(ElectricityConsumptionArea::getFuId, parentId);
+ List<ElectricityConsumptionArea> childProducts = electricityConsumptionAreaMapper.selectList(queryWrapper);
+
+ // 杞崲瀛愯妭鐐瑰苟閫掑綊鏋勫缓瀹冧滑鐨勫瓙鏍�
+ List<ElectricityConsumptionAreaTreeDto> children = new ArrayList<>();
+ for (ElectricityConsumptionArea child : childProducts) {
+ ElectricityConsumptionAreaTreeDto childNode = convertToTreeDto(child);
+ childNode.setChildren(buildChildrenNodes(child.getId()));
+ children.add(childNode);
+ }
+ return children;
+ }
+}
diff --git a/src/main/java/com/ruoyi/equipmentenergyconsumption/service/impl/EnergyPeriodServiceImpl.java b/src/main/java/com/ruoyi/equipmentenergyconsumption/service/impl/EnergyPeriodServiceImpl.java
new file mode 100644
index 0000000..4eabf91
--- /dev/null
+++ b/src/main/java/com/ruoyi/equipmentenergyconsumption/service/impl/EnergyPeriodServiceImpl.java
@@ -0,0 +1,24 @@
+package com.ruoyi.equipmentenergyconsumption.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.equipmentenergyconsumption.mapper.EnergyPeriodMapper;
+import com.ruoyi.equipmentenergyconsumption.pojo.EnergyPeriod;
+import com.ruoyi.equipmentenergyconsumption.service.EnergyPeriodService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+@Slf4j
+public class EnergyPeriodServiceImpl extends ServiceImpl<EnergyPeriodMapper, EnergyPeriod> implements EnergyPeriodService {
+ @Autowired
+ private EnergyPeriodMapper energyPeriodMapper;
+
+ @Override
+ public IPage<EnergyPeriod> listPage(Page page, EnergyPeriod energyPeriod) {
+ IPage<EnergyPeriod> listPage = energyPeriodMapper.listPage(page, energyPeriod);
+ return listPage;
+ }
+}
diff --git a/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java b/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java
index d84b370..ccf8d65 100644
--- a/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java
+++ b/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java
@@ -63,8 +63,8 @@
.build()
/* 璁剧疆瀹夊叏妯″紡锛宻wagger鍙互璁剧疆璁块棶token */
.securitySchemes(securitySchemes())
- .securityContexts(securityContexts())
- .pathMapping(pathMapping);
+ .securityContexts(securityContexts());
+// .pathMapping(pathMapping);
}
/**
diff --git a/src/main/java/com/ruoyi/home/controller/HomeController.java b/src/main/java/com/ruoyi/home/controller/HomeController.java
index 137b4b8..d0af0b5 100644
--- a/src/main/java/com/ruoyi/home/controller/HomeController.java
+++ b/src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -21,6 +21,7 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import java.text.ParseException;
import java.util.List;
/**
@@ -63,7 +64,7 @@
@GetMapping("/todos")
@Log(title = "寰呭姙浜嬮」", businessType = BusinessType.OTHER)
@ApiOperation("寰呭姙浜嬮」")
- public AjaxResult todos(ApproveProcess req) {
+ public AjaxResult todos(ApproveProcess req) throws ParseException {
List<ApproveProcess> approveProcessList = homeService.todos();
return AjaxResult.success(approveProcessList);
}
diff --git a/src/main/java/com/ruoyi/home/service/HomeService.java b/src/main/java/com/ruoyi/home/service/HomeService.java
index 49e7530..1902488 100644
--- a/src/main/java/com/ruoyi/home/service/HomeService.java
+++ b/src/main/java/com/ruoyi/home/service/HomeService.java
@@ -6,6 +6,7 @@
import com.ruoyi.home.dto.QualityStatisticsDto;
import com.ruoyi.home.dto.StatisticsReceivablePayableDto;
+import java.text.ParseException;
import java.util.List;
/**
@@ -22,7 +23,7 @@
QualityStatisticsDto qualityStatistics();
- List<ApproveProcess> todos();
+ List<ApproveProcess> todos() throws ParseException;
StatisticsReceivablePayableDto statisticsReceivablePayable(Integer type);
}
diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index 606388c..ad6ca2f 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -8,6 +8,8 @@
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.home.dto.*;
import com.ruoyi.home.service.HomeService;
+import com.ruoyi.lavorissue.mapper.LavorIssueMapper;
+import com.ruoyi.lavorissue.pojo.LaborIssue;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
@@ -33,6 +35,8 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.time.*;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
@@ -73,6 +77,9 @@
@Autowired
private PaymentRegistrationMapper paymentRegistrationMapper;
+
+ @Autowired
+ private LavorIssueMapper lavorIssueMapper;
@Autowired
private SysDeptMapper sysDeptMapper;
@@ -302,14 +309,35 @@
}
@Override
- public List<ApproveProcess> todos() {
+ public List<ApproveProcess> todos() throws ParseException {
LoginUser loginUser = SecurityUtils.getLoginUser();
LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveDelete, 0)
.eq(ApproveProcess::getApproveUserCurrentId, loginUser.getUserId())
.ne(ApproveProcess::getApproveStatus, 2)
.eq(ApproveProcess::getTenantId, loginUser.getTenantId());
- return approveProcessMapper.selectList(approveProcessLambdaQueryWrapper);
+ List<ApproveProcess> approveProcesses = approveProcessMapper.selectList(approveProcessLambdaQueryWrapper);
+ if(CollectionUtils.isEmpty(approveProcesses)){
+ approveProcesses = new ArrayList<>();
+ }
+ // 鏌ヨ鏈鐢ㄥ姵淇濊褰�
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+ LaborIssue laborIssue1 = new LaborIssue();
+ laborIssue1.setAdoptedDate(new Date());
+ laborIssue1.setIssueDate(sdf.parse(sdf.format(new Date())));
+ List<LaborIssue> laborIssues = lavorIssueMapper.list(laborIssue1);
+ if(!CollectionUtils.isEmpty(laborIssues)){
+ for (LaborIssue laborIssue : laborIssues) {
+ ApproveProcess approveProcess = new ApproveProcess();
+ approveProcess.setApproveId(laborIssue.getOrderNo());
+ approveProcess.setApproveDeptName(sysDeptMapper.selectDeptById(loginUser.getTenantId()).getDeptName());
+ approveProcess.setApproveTime(laborIssue.getIssueDate());
+ approveProcess.setApproveReason(laborIssue.getDictTypeName() + "-" + laborIssue.getDictName() + "瓒呮椂鏈鍙�");
+ approveProcesses.add(approveProcess);
+ }
+ }
+ return approveProcesses;
}
/**
@@ -346,29 +374,31 @@
}
// 搴旀敹
List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
- .ge(SalesLedger::getEntryDate, startDate)
- .lt(SalesLedger::getEntryDate, endDate)
+// .ge(SalesLedger::getEntryDate, startDate)
+// .lt(SalesLedger::getEntryDate, endDate)
);
BigDecimal receivableMoney = salesLedgers.stream().map(SalesLedger::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
// 搴斾粯
List<PurchaseLedger> procurementRecords = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>()
- .ge(PurchaseLedger::getEntryDate, startDate)
- .lt(PurchaseLedger::getEntryDate, endDate)
+// .ge(PurchaseLedger::getEntryDate, startDate)
+// .lt(PurchaseLedger::getEntryDate, endDate)
);
BigDecimal payableMoney = procurementRecords.stream().map(PurchaseLedger::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
// 棰勬敹
List<ReceiptPayment> receiptPayments = receiptPaymentMapper.selectList(new LambdaQueryWrapper<ReceiptPayment>()
- .ge(ReceiptPayment::getReceiptPaymentDate, startDate)
- .lt(ReceiptPayment::getReceiptPaymentDate, endDate));
+// .ge(ReceiptPayment::getReceiptPaymentDate, startDate)
+// .lt(ReceiptPayment::getReceiptPaymentDate, endDate)
+ );
BigDecimal advanceMoney = receiptPayments.stream().map(ReceiptPayment::getReceiptPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
// 棰勪粯
List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper.selectList(new LambdaQueryWrapper<PaymentRegistration>()
- .ge(PaymentRegistration::getPaymentDate, startDate)
- .lt(PaymentRegistration::getPaymentDate, endDate));
+// .ge(PaymentRegistration::getPaymentDate, startDate)
+// .lt(PaymentRegistration::getPaymentDate, endDate)
+ );
BigDecimal prepayMoney = paymentRegistrations.stream().map(PaymentRegistration::getCurrentPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
StatisticsReceivablePayableDto statisticsReceivablePayableDto = new StatisticsReceivablePayableDto();
- statisticsReceivablePayableDto.setPayableMoney(payableMoney);
- statisticsReceivablePayableDto.setReceivableMoney(receivableMoney);
+ statisticsReceivablePayableDto.setPayableMoney(payableMoney.subtract(prepayMoney));
+ statisticsReceivablePayableDto.setReceivableMoney(receivableMoney.subtract(advanceMoney));
statisticsReceivablePayableDto.setAdvanceMoney(advanceMoney);
statisticsReceivablePayableDto.setPrepayMoney(prepayMoney);
diff --git a/src/main/java/com/ruoyi/inspectiontask/StorageAttachmentRecordType.java b/src/main/java/com/ruoyi/inspectiontask/StorageAttachmentRecordType.java
new file mode 100644
index 0000000..e15b741
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/StorageAttachmentRecordType.java
@@ -0,0 +1,23 @@
+package com.ruoyi.inspectiontask;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 闄勪欢璁板綍绫诲瀷鏋氫妇
+ *
+ */
+@Getter
+@AllArgsConstructor
+public enum StorageAttachmentRecordType {
+ // 渚嬪瓙 瀹為檯寮�鍙戣鍒犻櫎
+ Template("Template","鑼冧緥"),
+ Archives("Archives","鏂囨。绠$悊"),
+ InspectionTasks("InspectionTasks","鐢熶骇宸℃"),
+ QrCodeScanRecords("QrCodeScanRecords","浜岀淮鐮佹壂鐮佽褰曟枃浠�");
+
+
+ private final String code;
+ private final String info;
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java b/src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java
new file mode 100644
index 0000000..ce8e057
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/controller/InspectionTaskController.java
@@ -0,0 +1,77 @@
+package com.ruoyi.inspectiontask.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.inspectiontask.dto.InspectionTaskDto;
+import com.ruoyi.inspectiontask.dto.TimingTaskDto;
+import com.ruoyi.inspectiontask.pojo.InspectionTask;
+import com.ruoyi.inspectiontask.service.InspectionTaskService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:52
+ */
+@RestController
+@Api(tags = "宸℃浠诲姟绠$悊")
+@RequestMapping("/inspectionTask")
+public class InspectionTaskController extends BaseController {
+
+ @Autowired
+ private InspectionTaskService inspectionTaskService;
+
+ /**
+ * 宸℃浠诲姟琛ㄨ〃鏌ヨ
+ */
+ @GetMapping("/list")
+ @ApiOperation("宸℃浠诲姟琛ㄨ〃鏌ヨ")
+ public R<IPage<InspectionTaskDto>> list(Page<InspectionTask> page, InspectionTaskDto inspectionTaskDto) {
+ IPage<InspectionTaskDto> list = inspectionTaskService.selectInspectionTaskList(page,inspectionTaskDto);
+ return R.ok(list);
+ }
+
+
+ /**
+ * 瀵煎嚭
+ */
+ @PostMapping("/export")
+ @ApiOperation(value = "瀵煎嚭瀹氭椂浠诲姟璁板綍")
+ public void export(HttpServletResponse response) {
+ Page page = new Page<>(-1,-1);
+ InspectionTaskDto timingTask = new InspectionTaskDto();
+ IPage<InspectionTaskDto> list = inspectionTaskService.selectInspectionTaskList(page,timingTask);
+ ExcelUtil<InspectionTaskDto> util = new ExcelUtil<>(InspectionTaskDto.class);
+ util.exportExcel(response, list.getRecords(), "瀵煎嚭瀹氭椂浠诲姟璁板綍");
+ }
+
+ /**
+ * 宸℃浠诲姟琛ㄦ柊澧炰慨鏀�
+ */
+ @PostMapping("/addOrEditInspectionTask")
+ @ApiOperation("宸℃浠诲姟琛ㄦ柊澧炰慨鏀�")
+ @Transactional(rollbackFor = Exception.class)
+ public R addOrEditInspectionTask(@RequestBody InspectionTaskDto inspectionTaskDto) {
+ return R.ok(inspectionTaskService.addOrEditInspectionTask(inspectionTaskDto));
+ }
+
+ /**
+ * 宸℃浠诲姟琛ㄥ垹闄�
+ */
+ @DeleteMapping("/delInspectionTask")
+ @ApiOperation("宸℃浠诲姟琛ㄥ垹闄�")
+ @Transactional(rollbackFor = Exception.class)
+ public R remove(@RequestBody Long[] ids) {
+ return R.ok(inspectionTaskService.delByIds(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/controller/QrCodeController.java b/src/main/java/com/ruoyi/inspectiontask/controller/QrCodeController.java
new file mode 100644
index 0000000..3d35be5
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/controller/QrCodeController.java
@@ -0,0 +1,56 @@
+package com.ruoyi.inspectiontask.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.inspectiontask.dto.QrCodeDto;
+import com.ruoyi.inspectiontask.pojo.QrCode;
+import com.ruoyi.inspectiontask.service.QrCodeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:52
+ */
+@RestController
+@Api(tags = "浜岀淮鐮佺鐞�")
+@RequestMapping("/qrCode")
+public class QrCodeController extends BaseController {
+
+ @Autowired
+ private QrCodeService qrCodeService;
+
+ /**
+ * 浜岀淮鐮佺鐞嗚〃鏌ヨ
+ */
+ @GetMapping("/list")
+ @ApiOperation("浜岀淮鐮佺鐞嗚〃鏌ヨ")
+ public R<IPage<QrCode>> list(Page page, QrCodeDto qrCodeDto) {
+ IPage<QrCode> list = qrCodeService.selectQrCodeList(page, qrCodeDto);
+ return R.ok(list);
+ }
+
+ /**
+ * 浜岀淮鐮佺鐞嗚〃鏂板淇敼
+ */
+ @PostMapping("/addOrEditQrCode")
+ @ApiOperation("浜岀淮鐮佺鐞嗚〃鏂板淇敼")
+ public R<Long> addOrEditQrCode(@RequestBody QrCodeDto qrCodeDto) {
+ return R.ok(qrCodeService.addOrEditQrCode(qrCodeDto));
+ }
+
+ /**
+ * 浜岀淮鐮佺鐞嗚〃鍒犻櫎
+ */
+ @DeleteMapping("/delQrCode")
+ @ApiOperation("浜岀淮鐮佺鐞嗚〃鍒犻櫎")
+ public R remove(@RequestBody Long[] ids) {
+ return R.ok(qrCodeService.delByIds(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/controller/QrCodeScanRecordController.java b/src/main/java/com/ruoyi/inspectiontask/controller/QrCodeScanRecordController.java
new file mode 100644
index 0000000..00329b6
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/controller/QrCodeScanRecordController.java
@@ -0,0 +1,56 @@
+package com.ruoyi.inspectiontask.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.inspectiontask.dto.QrCodeScanRecordDto;
+import com.ruoyi.inspectiontask.pojo.QrCodeScanRecord;
+import com.ruoyi.inspectiontask.service.QrCodeScanRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:53
+ */
+@RestController
+@Api(tags = "浜岀淮鐮佹壂鎻忚褰曠鐞�")
+@RequestMapping("/qrCodeScanRecord")
+public class QrCodeScanRecordController extends BaseController {
+
+ @Autowired
+ private QrCodeScanRecordService qrCodeScanRecordService;
+
+ /**
+ * 浜岀淮鐮佹壂鐮佽褰曡〃鏌ヨ
+ */
+ @GetMapping("/list")
+ @ApiOperation("浜岀淮鐮佹壂鐮佽褰曡〃鏌ヨ")
+ public R<IPage<QrCodeScanRecordDto>> list(Page<QrCodeScanRecord> page, QrCodeScanRecordDto qrCodeScanRecordDto) {
+ IPage<QrCodeScanRecordDto> list = qrCodeScanRecordService.selectQrCodeScanRecordList(page, qrCodeScanRecordDto);
+ return R.ok(list);
+ }
+
+ /**
+ * 浜岀淮鐮佹壂鐮佽褰曡〃鏂板淇敼
+ */
+ @PostMapping("/addOrEditQrCodeRecord")
+ @ApiOperation("浜岀淮鐮佹壂鐮佽褰曡〃鏂板淇敼")
+ public R addOrEditQrCodeRecord(@RequestBody QrCodeScanRecordDto qrCodeScanRecordDto) {
+ return R.ok(qrCodeScanRecordService.addOrEditQrCodeRecord(qrCodeScanRecordDto));
+ }
+
+ /**
+ * 浜岀淮鐮佹壂鐮佽褰曡〃鍒犻櫎
+ */
+ @DeleteMapping("/delSalesRecord")
+ @ApiOperation("浜岀淮鐮佹壂鐮佽褰曡〃鍒犻櫎")
+ public R remove(@RequestBody Long[] ids) {
+ return R.ok(qrCodeScanRecordService.delByIds(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/controller/TimingTaskController.java b/src/main/java/com/ruoyi/inspectiontask/controller/TimingTaskController.java
new file mode 100644
index 0000000..e802ccc
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/controller/TimingTaskController.java
@@ -0,0 +1,74 @@
+package com.ruoyi.inspectiontask.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.inspectiontask.dto.TimingTaskDto;
+import com.ruoyi.inspectiontask.pojo.TimingTask;
+import com.ruoyi.inspectiontask.service.TimingTaskService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:53
+ */
+@RestController
+@Api(tags = "瀹氭椂浠诲姟绠$悊")
+@RequestMapping("/timingTask")
+public class TimingTaskController extends BaseController {
+
+
+ @Autowired
+ private TimingTaskService timingTaskService;
+
+ /**
+ * 瀹氭椂宸℃浠诲姟琛ㄦ煡璇�
+ */
+ @GetMapping("/list")
+ @ApiOperation(value = "瀹氭椂浠诲姟鍒楄〃")
+ public R<IPage<TimingTaskDto>> list(Page<TimingTask> page, TimingTask timingTask) {
+ IPage<TimingTaskDto> list = timingTaskService.selectTimingTaskList(page,timingTask);
+ return R.ok(list);
+ }
+
+ /**
+ * 瀵煎嚭
+ */
+ @PostMapping("/export")
+ @ApiOperation(value = "瀵煎嚭瀹氭椂浠诲姟")
+ public void export(HttpServletResponse response) {
+ Page page = new Page<>(-1,-1);
+ TimingTaskDto timingTask = new TimingTaskDto();
+ IPage<TimingTaskDto> list = timingTaskService.selectTimingTaskList(page,timingTask);
+ ExcelUtil<TimingTaskDto> util = new ExcelUtil<>(TimingTaskDto.class);
+ util.exportExcel(response, list.getRecords(), "瀵煎嚭瀹氭椂浠诲姟");
+ }
+
+ /**
+ * 瀹氭椂宸℃浠诲姟琛ㄦ柊澧炰慨鏀�
+ */
+ @PostMapping("/addOrEditTimingTask")
+ @ApiOperation(value = "鏂板淇敼瀹氭椂浠诲姟")
+ public R addOrEditTimingTask(@RequestBody TimingTaskDto timingTaskDto) throws SchedulerException {
+ return R.ok(timingTaskService.addOrEditTimingTask(timingTaskDto));
+ }
+
+ /**
+ * 瀹氭椂宸℃浠诲姟琛ㄥ垹闄�
+ */
+ @DeleteMapping("/delTimingTask")
+ @ApiOperation(value = "鍒犻櫎瀹氭椂浠诲姟")
+ public R remove(@RequestBody Long[] ids) {
+ return R.ok(timingTaskService.delByIds(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java b/src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
new file mode 100644
index 0000000..f92bde5
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/dto/InspectionTaskDto.java
@@ -0,0 +1,20 @@
+package com.ruoyi.inspectiontask.dto;
+
+import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.basic.pojo.StorageAttachment;
+import com.ruoyi.inspectiontask.pojo.InspectionTask;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class InspectionTaskDto extends InspectionTask {
+
+ private List<StorageBlobDTO> storageBlobDTO;
+ private List<StorageBlobDTO> beforeProduction;
+ private List<StorageBlobDTO> afterProduction;
+ private List<StorageBlobDTO> productionIssues;
+
+ private List<StorageAttachment> attachments;
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/dto/QrCodeDto.java b/src/main/java/com/ruoyi/inspectiontask/dto/QrCodeDto.java
new file mode 100644
index 0000000..2badd86
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/dto/QrCodeDto.java
@@ -0,0 +1,8 @@
+package com.ruoyi.inspectiontask.dto;
+
+import com.ruoyi.inspectiontask.pojo.QrCode;
+import lombok.Data;
+
+@Data
+public class QrCodeDto extends QrCode {
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/dto/QrCodeScanRecordDto.java b/src/main/java/com/ruoyi/inspectiontask/dto/QrCodeScanRecordDto.java
new file mode 100644
index 0000000..4247330
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/dto/QrCodeScanRecordDto.java
@@ -0,0 +1,20 @@
+package com.ruoyi.inspectiontask.dto;
+
+
+import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.inspectiontask.pojo.QrCode;
+import com.ruoyi.inspectiontask.pojo.QrCodeScanRecord;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class QrCodeScanRecordDto extends QrCodeScanRecord {
+
+ private QrCode qrCode;
+
+ private String scanner;
+
+ private List<StorageBlobDTO> storageBlobDTO;
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/dto/TimingTaskDto.java b/src/main/java/com/ruoyi/inspectiontask/dto/TimingTaskDto.java
new file mode 100644
index 0000000..ad26f89
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/dto/TimingTaskDto.java
@@ -0,0 +1,12 @@
+package com.ruoyi.inspectiontask.dto;
+
+import com.ruoyi.inspectiontask.pojo.TimingTask;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TimingTaskDto extends TimingTask {
+
+ private List<String> inspector;
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/mapper/InspectionTaskMapper.java b/src/main/java/com/ruoyi/inspectiontask/mapper/InspectionTaskMapper.java
new file mode 100644
index 0000000..9c79059
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/mapper/InspectionTaskMapper.java
@@ -0,0 +1,11 @@
+package com.ruoyi.inspectiontask.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspectiontask.pojo.InspectionTask;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:46
+ */
+public interface InspectionTaskMapper extends BaseMapper<InspectionTask> {
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/mapper/QrCodeMapper.java b/src/main/java/com/ruoyi/inspectiontask/mapper/QrCodeMapper.java
new file mode 100644
index 0000000..e2a9c6b
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/mapper/QrCodeMapper.java
@@ -0,0 +1,11 @@
+package com.ruoyi.inspectiontask.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspectiontask.pojo.QrCode;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:46
+ */
+public interface QrCodeMapper extends BaseMapper<QrCode> {
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/mapper/QrCodeScanRecordMapper.java b/src/main/java/com/ruoyi/inspectiontask/mapper/QrCodeScanRecordMapper.java
new file mode 100644
index 0000000..595a1f5
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/mapper/QrCodeScanRecordMapper.java
@@ -0,0 +1,11 @@
+package com.ruoyi.inspectiontask.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspectiontask.pojo.QrCodeScanRecord;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:46
+ */
+public interface QrCodeScanRecordMapper extends BaseMapper<QrCodeScanRecord> {
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/mapper/TimingTaskMapper.java b/src/main/java/com/ruoyi/inspectiontask/mapper/TimingTaskMapper.java
new file mode 100644
index 0000000..13a011b
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/mapper/TimingTaskMapper.java
@@ -0,0 +1,17 @@
+package com.ruoyi.inspectiontask.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspectiontask.pojo.TimingTask;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:47
+ */
+@Mapper
+public interface TimingTaskMapper extends BaseMapper<TimingTask> {
+
+ TimingTask getTaskById(@Param("id") Long id);
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java b/src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java
new file mode 100644
index 0000000..d6fc797
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/pojo/InspectionTask.java
@@ -0,0 +1,92 @@
+package com.ruoyi.inspectiontask.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:25
+ */
+@Data
+@ApiModel
+@TableName("inspection_task")
+public class InspectionTask {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 宸℃浠诲姟鍞竴鏍囪瘑
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "璁惧鍚嶇О")
+ @Excel(name = "宸℃浠诲姟鍚嶇О")
+ private String taskName;
+
+ @ApiModelProperty(value = "璁惧id")
+ private Integer taskId;
+
+ @ApiModelProperty(value = "宸℃浜篒D")
+ private String inspectorId;
+
+ @ApiModelProperty(value = "鎵ц宸℃鐨勪汉鍛樺鍚�")
+ @Excel(name = "鎵ц宸℃浜哄憳")
+ private String inspector;
+
+ @ApiModelProperty(value = "浠诲姟闄勫姞璇存槑鎴栫壒娈婃儏鍐佃褰�")
+ @Excel(name = "澶囨敞")
+ private String remarks;
+
+ @ApiModelProperty(value = "浠诲姟鐧昏浜篒D")
+ private Long registrantId;
+
+ @ApiModelProperty(value = "浠诲姟鐧昏浜哄鍚�")
+ @Excel(name = "鐧昏浜�")
+ private String registrant;
+
+ @ApiModelProperty(value = "棰戞")
+ @Excel(name = "棰戞")
+ private String frequencyType;
+
+ @ApiModelProperty(value = "鏃堕棿缁嗚妭")
+ @Excel(name = "寮�濮嬫棩鏈熶笌鏃堕棿")
+ private String frequencyDetail;
+
+ @ApiModelProperty(value = "宸℃鍦扮偣璇︾粏鎻忚堪")
+ private String inspectionLocation;
+
+ @ApiModelProperty(value = "杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�")
+ private Integer deleted;
+
+ @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")
+ @Excel(name = "鐧昏鏃ユ湡", width = 30, dateFormat = "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;
+
+ @ApiModelProperty(value = "绉熸埛")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/pojo/QrCode.java b/src/main/java/com/ruoyi/inspectiontask/pojo/QrCode.java
new file mode 100644
index 0000000..2065e2e
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/pojo/QrCode.java
@@ -0,0 +1,63 @@
+package com.ruoyi.inspectiontask.pojo;
+
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:29
+ */
+@Data
+@ApiModel
+@TableName("qr_code")
+public class QrCode {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 浜岀淮鐮佸敮涓�鏍囪瘑
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty(value = "鎵�鍦ㄤ綅缃弿杩�")
+ private String location;
+
+ @ApiModelProperty(value = "绉熸埛ID锛岀敤浜庡绉熸埛闅旂")
+ @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT)
+ private Long tenantId;
+
+ @ApiModelProperty(value = "杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�")
+ private Integer deleted;
+
+ @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;
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/pojo/QrCodeScanRecord.java b/src/main/java/com/ruoyi/inspectiontask/pojo/QrCodeScanRecord.java
new file mode 100644
index 0000000..2c1e3fe
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/pojo/QrCodeScanRecord.java
@@ -0,0 +1,73 @@
+package com.ruoyi.inspectiontask.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:29
+ */
+@Data
+@TableName("qr_code_scan_record")
+@ApiModel
+public class QrCodeScanRecord {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 鎵爜璁板綍鍞竴鏍囪瘑
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "鍏宠仈鐨勪簩缁寸爜ID")
+ private Long qrCodeId;
+
+ @ApiModelProperty(value = "鎵爜浜虹敤鎴稩D")
+ private Long scannerId;
+
+ @ApiModelProperty(value = "璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty(value = "璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty(value = "瀹為檯鎵爜鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime scanTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ @ApiModelProperty(value = "杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�")
+ private Integer deleted;
+
+ @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;
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/pojo/TimingTask.java b/src/main/java/com/ruoyi/inspectiontask/pojo/TimingTask.java
new file mode 100644
index 0000000..8d03b06
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/pojo/TimingTask.java
@@ -0,0 +1,108 @@
+package com.ruoyi.inspectiontask.pojo;
+
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:27
+ */
+@Data
+@ApiModel
+@TableName("timing_task")
+public class TimingTask {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "璁惧鍚嶇О")
+ @Excel(name = "宸℃浠诲姟鍚嶇О")
+ private String taskName;
+
+ @ApiModelProperty(value = "璁惧id")
+ private Integer taskId;
+
+ @ApiModelProperty(value = "宸℃浜�")
+ @Excel(name = "鎵ц宸℃浜�")
+ private String inspectorIds;
+
+ @ApiModelProperty(value = "宸℃鍦扮偣")
+ private String inspectionLocation;
+
+ @ApiModelProperty(value = "棰戞")
+ @Excel(name = "棰戞")
+ private String frequencyType;
+
+ @ApiModelProperty(value = "棰戞璇︽儏")
+ @Excel(name = "寮�濮嬫棩鏈熶笌鏃堕棿")
+ private String frequencyDetail;
+
+ @ApiModelProperty(value = "涓嬫鎵ц鏃堕棿")
+ private LocalDateTime nextExecutionTime;
+
+ @ApiModelProperty(value = "鏈�鍚庢墽琛屾椂闂�")
+ private LocalDateTime lastExecutionTime;
+
+ @ApiModelProperty(value = "鏄惁婵�娲�")
+ private boolean isActive;
+
+ @ApiModelProperty(value = "澶囨敞")
+ @Excel(name = "澶囨敞")
+ private String remarks;
+
+ @ApiModelProperty(value = "鐧昏浜篿d")
+ private Long registrantId;
+
+ @ApiModelProperty(value = "鐧昏浜�")
+ @Excel(name = "鐧昏浜�")
+ private String registrant;
+
+ @ApiModelProperty(value = "鐧昏鏃ユ湡")
+ @Excel(name = "鐧昏鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private LocalDate registrationDate;
+
+ @ApiModelProperty(value = "鐘舵��")
+ private String status;
+
+ @ApiModelProperty(value = "杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�")
+ private Integer deleted;
+
+ @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;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/InspectionTaskService.java b/src/main/java/com/ruoyi/inspectiontask/service/InspectionTaskService.java
new file mode 100644
index 0000000..de175f2
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/InspectionTaskService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.inspectiontask.service;
+
+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.inspectiontask.dto.InspectionTaskDto;
+import com.ruoyi.inspectiontask.pojo.InspectionTask;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:49
+ */
+public interface InspectionTaskService extends IService<InspectionTask> {
+
+ IPage<InspectionTaskDto> selectInspectionTaskList(Page<InspectionTask> page, InspectionTaskDto inspectionTaskDto);
+
+ int addOrEditInspectionTask(InspectionTaskDto inspectionTaskDto);
+
+ int delByIds(Long[] ids);
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/QrCodeScanRecordService.java b/src/main/java/com/ruoyi/inspectiontask/service/QrCodeScanRecordService.java
new file mode 100644
index 0000000..8d3cbab
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/QrCodeScanRecordService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.inspectiontask.service;
+
+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.inspectiontask.dto.QrCodeScanRecordDto;
+import com.ruoyi.inspectiontask.pojo.QrCodeScanRecord;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:50
+ */
+public interface QrCodeScanRecordService extends IService<QrCodeScanRecord> {
+
+ IPage<QrCodeScanRecordDto> selectQrCodeScanRecordList(Page<QrCodeScanRecord> page, QrCodeScanRecordDto qrCodeScanRecordDto);
+
+ int addOrEditQrCodeRecord(QrCodeScanRecordDto qrCodeScanRecordDto);
+
+ int delByIds(Long[] ids);
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/QrCodeService.java b/src/main/java/com/ruoyi/inspectiontask/service/QrCodeService.java
new file mode 100644
index 0000000..0eeecd2
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/QrCodeService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.inspectiontask.service;
+
+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.inspectiontask.dto.QrCodeDto;
+import com.ruoyi.inspectiontask.pojo.QrCode;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:50
+ */
+public interface QrCodeService extends IService<QrCode>{
+ IPage<QrCode> selectQrCodeList(Page page, QrCodeDto qrCodeDto);
+
+ Long addOrEditQrCode(QrCodeDto qrCodeDto);
+
+ int delByIds(Long[] ids);
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/TimingTaskService.java b/src/main/java/com/ruoyi/inspectiontask/service/TimingTaskService.java
new file mode 100644
index 0000000..8d00032
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/TimingTaskService.java
@@ -0,0 +1,23 @@
+package com.ruoyi.inspectiontask.service;
+
+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.inspectiontask.dto.TimingTaskDto;
+import com.ruoyi.inspectiontask.pojo.TimingTask;
+import org.quartz.SchedulerException;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:51
+ */
+public interface TimingTaskService extends IService<TimingTask> {
+
+ IPage<TimingTaskDto> selectTimingTaskList(Page<TimingTask> page, TimingTask timingTask);
+
+ int addOrEditTimingTask(TimingTaskDto timingTaskDto) throws SchedulerException;
+
+ int delByIds(Long[] ids);
+
+ void updateTaskExecutionTime(Long taskId);
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
new file mode 100644
index 0000000..6439f69
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
@@ -0,0 +1,257 @@
+package com.ruoyi.inspectiontask.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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;
+import com.ruoyi.basic.pojo.StorageBlob;
+import com.ruoyi.basic.service.StorageAttachmentService;
+import com.ruoyi.common.utils.MinioUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.inspectiontask.dto.InspectionTaskDto;
+import com.ruoyi.inspectiontask.mapper.InspectionTaskMapper;
+import com.ruoyi.inspectiontask.pojo.InspectionTask;
+import com.ruoyi.inspectiontask.service.InspectionTaskService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+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
+ * @date : 2025/9/19 10:54
+ */
+@Service
+@Slf4j
+public class InspectionTaskServiceImpl extends ServiceImpl<InspectionTaskMapper, InspectionTask> implements InspectionTaskService {
+
+
+ @Autowired
+ private InspectionTaskMapper inspectionTaskMapper;
+
+ @Autowired
+ private StorageAttachmentService storageAttachmentService;
+
+ @Autowired
+ private StorageBlobMapper storageBlobMapper;
+
+ @Autowired
+ private StorageAttachmentMapper storageAttachmentMapper;
+
+ @Autowired
+ private MinioUtils minioUtils;
+
+ @Autowired
+ private SysUserMapper sysUserMapper;
+
+ @Override
+ public IPage<InspectionTaskDto> selectInspectionTaskList(Page<InspectionTask> page, InspectionTaskDto inspectionTaskDto) {
+ LambdaQueryWrapper<InspectionTask> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.orderByDesc(InspectionTask::getCreateTime);
+ IPage<InspectionTask> entityPage = inspectionTaskMapper.selectPage(page, queryWrapper);
+
+ // 鏃犳暟鎹彁鍓嶈繑鍥�
+ if (CollectionUtils.isEmpty(entityPage.getRecords())) {
+ return new Page<>(entityPage.getCurrent(), entityPage.getSize(), entityPage.getTotal());
+ }
+ // 鑾峰彇id闆嗗悎
+ List<Long> ids = entityPage.getRecords().stream().map(InspectionTask::getId).collect(Collectors.toList());
+ //鐧昏浜篿ds
+ List<Long> registrantIds = entityPage.getRecords().stream().map(InspectionTask::getRegistrantId).collect(Collectors.toList());
+ // 鎵归噺鏌ヨ鐧昏浜�
+ Map<Long, SysUser> sysUserMap;
+ if (!registrantIds.isEmpty()) {
+ List<SysUser> sysUsers = sysUserMapper.selectList(registrantIds);
+ sysUserMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
+ } else {
+ sysUserMap = new HashMap<>();
+ }
+ //宸℃浜篿ds
+ List<String> inspectorIds = entityPage.getRecords().stream().map(InspectionTask::getInspectorId).collect(Collectors.toList());
+
+ //鑾峰彇鎵�鏈変笉閲嶅鐨勭敤鎴稩D
+ Set<Long> allUserIds = entityPage.getRecords().stream()
+ .map(InspectionTask::getInspectorId) // 鑾峰彇"2,3"杩欐牱鐨勫瓧绗︿覆
+ .filter(StringUtils::isNotBlank)
+ .flatMap(idsStr -> Arrays.stream(idsStr.split(",")))
+ .map(idStr -> {
+ try {
+ return Long.parseLong(idStr.trim());
+ } catch (NumberFormatException e) {
+ return null;
+ }
+ })
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+
+ // 浣跨敤SQL鎵归噺鏌ヨ鐢ㄦ埛淇℃伅
+ Map<Long, String> userIdToNameMap = allUserIds.isEmpty()
+ ? Collections.emptyMap()
+ : sysUserMapper.selectUsersByIds(new ArrayList<>(allUserIds))
+ .stream()
+ .collect(Collectors.toMap(
+ SysUser::getUserId,
+ SysUser::getNickName,
+ (existing, replacement) -> existing));
+
+ //澶勭悊闄勪欢
+ Map<Long, List<StorageAttachment>> attachmentsMap = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>().in(StorageAttachment::getRecordId, ids)
+ .eq(StorageAttachment::getRecordType, InspectionTasks.ordinal()))
+ .stream()
+ .collect(Collectors.groupingBy(StorageAttachment::getRecordId));
+ // 鎵归噺鏌ヨ鎵�鏈夐渶瑕佺殑鏂囦欢鏁版嵁
+ Set<Long> blobIds = attachmentsMap.values()
+ .stream()
+ .flatMap(List::stream)
+ .map(StorageAttachment::getStorageBlobId)
+ .collect(Collectors.toSet());
+ Map<Long, StorageBlob> blobMap = blobIds.isEmpty()
+ ? Collections.emptyMap()
+ : storageBlobMapper.selectList(new LambdaQueryWrapper<StorageBlob>().in(StorageBlob::getId, blobIds))
+ .stream()
+ .collect(Collectors.toMap(StorageBlob::getId, Function.identity()));
+
+ List<InspectionTaskDto> dtoList = entityPage.getRecords().stream().map(inspectionTask -> {
+ InspectionTaskDto dto = new InspectionTaskDto();
+ BeanUtils.copyProperties(inspectionTask, dto); // 澶嶅埗涓诲璞″睘鎬�
+
+ // 璁剧疆鐧昏浜�
+ SysUser sysUser = sysUserMap.get(inspectionTask.getRegistrantId());
+ if (sysUser != null) {
+ dto.setRegistrant(sysUser.getNickName());
+ }
+ // 澶勭悊宸℃浜哄悕绉�
+ if (StringUtils.isNotBlank(inspectionTask.getInspectorId())) {
+ String inspectorNames = Arrays.stream(inspectionTask.getInspectorId().split(","))
+ .map(String::trim)
+ .map(idStr -> {
+ try {
+ Long userId = Long.parseLong(idStr);
+ return userIdToNameMap.getOrDefault(userId, "鏈煡鐢ㄦ埛(" + idStr + ")");
+ } catch (NumberFormatException e) {
+ return "鏃犳晥ID(" + idStr + ")";
+ }
+ })
+ .collect(Collectors.joining(","));
+ dto.setInspector(inspectorNames);
+ }
+
+ // 鍒濆鍖栦笁涓檮浠跺垪琛�
+ dto.setBeforeProduction(new ArrayList<>());
+ dto.setAfterProduction(new ArrayList<>());
+ dto.setProductionIssues(new ArrayList<>());
+
+ // 澶勭悊闄勪欢鍒嗙被
+ Optional.ofNullable(attachmentsMap.get(inspectionTask.getId()))
+ .orElse(Collections.emptyList())
+ .forEach(attachment -> {
+ StorageBlob blob = blobMap.get(attachment.getStorageBlobId());
+ if (blob != null) {
+ // 鍒涘缓闄勪欢DTO
+ StorageBlobDTO blobDto = createBlobDto(blob);
+
+ // 鏍规嵁type鍒嗙被
+ switch ((int) blob.getType().longValue()) {
+ case 0:
+ dto.getBeforeProduction().add(blobDto);
+ break;
+ case 1:
+ dto.getAfterProduction().add(blobDto);
+ break;
+ case 2:
+ dto.getProductionIssues().add(blobDto);
+ break;
+ default:
+ // 鍙�夛細璁板綍鏈垎绫荤被鍨�
+ break;
+ }
+ }
+ });
+
+ return dto;
+ }).collect(Collectors.toList());
+
+ // 7. 鏋勫缓杩斿洖鍒嗛〉瀵硅薄
+ IPage<InspectionTaskDto> resultPage = new Page<>();
+ BeanUtils.copyProperties(entityPage, resultPage);
+ resultPage.setRecords(dtoList);
+ return resultPage;
+ }
+
+ // 鎻愬彇鍒涘缓BlobDTO鐨勫叕鍏辨柟娉�
+ private StorageBlobDTO createBlobDto(StorageBlob blob) {
+ StorageBlobDTO dto = new StorageBlobDTO();
+ 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
+ ));
+ return dto;
+ }
+
+ @Override
+ public int addOrEditInspectionTask(InspectionTaskDto inspectionTaskDto) {
+ InspectionTask inspectionTask = new InspectionTask();
+ BeanUtils.copyProperties(inspectionTaskDto, inspectionTask);
+ inspectionTask.setRegistrantId(SecurityUtils.getLoginUser().getUserId());
+ inspectionTask.setRegistrant(SecurityUtils.getLoginUser().getUsername());
+ int i;
+ if (Objects.isNull(inspectionTaskDto.getId())) {
+ i = inspectionTaskMapper.insert(inspectionTask);
+ } else {
+ i = inspectionTaskMapper.updateById(inspectionTask);
+ }
+
+ if (inspectionTaskDto.getStorageBlobDTO() != null && !inspectionTaskDto.getStorageBlobDTO().isEmpty()) {
+ List<StorageAttachment> attachments = new ArrayList<>();
+
+ for (StorageBlobDTO storageBlobDTO : inspectionTaskDto.getStorageBlobDTO()) {
+ StorageAttachment storageAttachment = new StorageAttachment(
+ StorageAttachmentFile,
+ (long) InspectionTasks.ordinal(),
+ inspectionTask.getId()
+ );
+ storageAttachment.setStorageBlobDTO(storageBlobDTO);
+ attachments.add(storageAttachment);
+ }
+ storageAttachmentService.saveStorageAttachment(attachments, inspectionTask.getId(), InspectionTasks, StorageAttachmentFile);
+ }
+ return i;
+ }
+
+ @Override
+ public int delByIds(Long[] ids) {
+ // 妫�鏌ュ弬鏁�
+ if (ids == null || ids.length == 0) {
+ return 0;
+ }
+ return inspectionTaskMapper.deleteBatchIds(Arrays.asList(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java
new file mode 100644
index 0000000..5ac3038
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java
@@ -0,0 +1,194 @@
+package com.ruoyi.inspectiontask.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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;
+import com.ruoyi.basic.pojo.StorageBlob;
+import com.ruoyi.basic.service.StorageAttachmentService;
+import com.ruoyi.common.constant.StorageAttachmentConstants;
+import com.ruoyi.common.utils.MinioUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.inspectiontask.dto.QrCodeScanRecordDto;
+import com.ruoyi.inspectiontask.mapper.QrCodeMapper;
+import com.ruoyi.inspectiontask.mapper.QrCodeScanRecordMapper;
+import com.ruoyi.inspectiontask.pojo.QrCode;
+import com.ruoyi.inspectiontask.pojo.QrCodeScanRecord;
+import com.ruoyi.inspectiontask.service.QrCodeScanRecordService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+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.QrCodeScanRecords;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:54
+ */
+@Service
+@Slf4j
+public class QrCodeScanRecordServiceImpl extends ServiceImpl<QrCodeScanRecordMapper, QrCodeScanRecord> implements QrCodeScanRecordService {
+
+ @Autowired
+ private QrCodeScanRecordMapper qrCodeScanRecordMapper;
+
+ @Autowired
+ private QrCodeMapper qrCodeMapper;
+
+ @Autowired
+ private StorageAttachmentService storageAttachmentService;
+
+ @Autowired
+ private StorageBlobMapper storageBlobMapper;
+
+ @Autowired
+ private StorageAttachmentMapper storageAttachmentMapper;
+
+ @Autowired
+ private MinioUtils minioUtils;
+
+ @Autowired
+ private SysUserMapper sysUserMapper;
+
+ @Override
+ public IPage<QrCodeScanRecordDto> selectQrCodeScanRecordList(Page<QrCodeScanRecord> page, QrCodeScanRecordDto qrCodeScanRecordDto) {
+ // 1. 鏋勫缓鍩虹鏌ヨ鏉′欢
+ LambdaQueryWrapper<QrCodeScanRecord> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.orderByDesc(QrCodeScanRecord::getCreateTime);
+
+ // 2. 鎵ц鍒嗛〉鏌ヨ
+ IPage<QrCodeScanRecord> scanRecordIPage = qrCodeScanRecordMapper.selectPage(page, queryWrapper);
+
+ // 3. 鏃犳暟鎹彁鍓嶈繑鍥�
+ if (CollectionUtils.isEmpty(scanRecordIPage.getRecords())) {
+ return new Page<>(scanRecordIPage.getCurrent(), scanRecordIPage.getSize(), scanRecordIPage.getTotal());
+ }
+
+ // 4. 鎵归噺鑾峰彇鎵�鏈夎褰旾D鍜屼簩缁寸爜ID
+ List<Long> recordIds = scanRecordIPage.getRecords().stream()
+ .map(QrCodeScanRecord::getId)
+ .collect(Collectors.toList());
+
+ Set<Long> qrCodeIds = scanRecordIPage.getRecords().stream()
+ .map(QrCodeScanRecord::getQrCodeId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+
+ // 5. 鎵归噺鏌ヨ鍏宠仈鏁版嵁锛堜娇鐢ㄦ渶鏂癆PI锛�
+ // 5.1 鏌ヨ浜岀淮鐮佷俊鎭紙鏇挎崲selectBatchIds涓簊electByIds锛�
+ Map<Long, QrCode> qrCodeMap = qrCodeIds.isEmpty()
+ ? Collections.emptyMap()
+ : qrCodeMapper.selectBatchIds(qrCodeIds).stream()
+ .collect(Collectors.toMap(QrCode::getId, Function.identity()));
+
+ // 5.2 鏌ヨ闄勪欢鍏宠仈鍏崇郴
+ Map<Long, List<StorageAttachment>> attachmentsMap = storageAttachmentMapper
+ .selectList(new LambdaQueryWrapper<StorageAttachment>()
+ .in(StorageAttachment::getRecordId, recordIds)
+ .eq(StorageAttachment::getRecordType, QrCodeScanRecords.ordinal()))
+ .stream()
+ .collect(Collectors.groupingBy(StorageAttachment::getRecordId));
+
+ // 5.3 鏌ヨ鏂囦欢鏁版嵁锛堜娇鐢╯electByIds锛�
+ Set<Long> blobIds = attachmentsMap.values().stream()
+ .flatMap(List::stream)
+ .map(StorageAttachment::getStorageBlobId)
+ .collect(Collectors.toSet());
+
+ Map<Long, StorageBlob> blobMap = blobIds.isEmpty()
+ ? Collections.emptyMap()
+ : storageBlobMapper.selectBatchIds(blobIds).stream()
+ .collect(Collectors.toMap(StorageBlob::getId, Function.identity()));
+
+ // 6. 缁勮DTO鏁版嵁
+ List<QrCodeScanRecordDto> dtoList = scanRecordIPage.getRecords().stream().map(record -> {
+ QrCodeScanRecordDto dto = new QrCodeScanRecordDto();
+ BeanUtils.copyProperties(record, dto);
+
+ SysUser sysUser = sysUserMapper.selectUserById(record.getScannerId());
+ dto.setScanner(sysUser.getNickName());
+
+ // 6.1 璁剧疆浜岀淮鐮佷俊鎭�
+ Optional.ofNullable(qrCodeMap.get(record.getQrCodeId()))
+ .ifPresent(qrCode -> {
+ BeanUtils.copyProperties(qrCode, dto); // 澶嶅埗鍒扮埗绫�
+ dto.setQrCode(qrCode); // 璁剧疆瀹屾暣瀵硅薄
+ });
+
+ // 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())
+ );
+ return dto;
+ }).collect(Collectors.toList());
+
+ // 7. 鏋勫缓杩斿洖鍒嗛〉瀵硅薄
+ IPage<QrCodeScanRecordDto> resultPage = new Page<>();
+ BeanUtils.copyProperties(scanRecordIPage, resultPage);
+ resultPage.setRecords(dtoList);
+
+ return resultPage;
+ }
+
+ @Override
+ public int addOrEditQrCodeRecord(QrCodeScanRecordDto qrCodeScanRecordDto) {
+ QrCodeScanRecord qrCodeScanRecord = new QrCodeScanRecord();
+ BeanUtils.copyProperties(qrCodeScanRecordDto, qrCodeScanRecord);
+ int i;
+ if (Objects.isNull(qrCodeScanRecordDto.getId())) {
+ i = qrCodeScanRecordMapper.insert(qrCodeScanRecord);
+ } else {
+ i = qrCodeScanRecordMapper.updateById(qrCodeScanRecord);
+ }
+
+ if (qrCodeScanRecordDto.getStorageBlobDTO() != null && !qrCodeScanRecordDto.getStorageBlobDTO().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);
+ }
+ storageAttachmentService.saveStorageAttachment(attachments, qrCodeScanRecord.getId(), QrCodeScanRecords, StorageAttachmentFile);
+ }
+ return i;
+ }
+
+ @Override
+ public int delByIds(Long[] ids) {
+ return qrCodeScanRecordMapper.deleteBatchIds(Arrays.asList(ids));
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeServiceImpl.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeServiceImpl.java
new file mode 100644
index 0000000..e88a5d1
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeServiceImpl.java
@@ -0,0 +1,54 @@
+package com.ruoyi.inspectiontask.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.inspectiontask.dto.QrCodeDto;
+import com.ruoyi.inspectiontask.mapper.QrCodeMapper;
+import com.ruoyi.inspectiontask.pojo.QrCode;
+import com.ruoyi.inspectiontask.service.QrCodeService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.Objects;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:55
+ */
+@Service
+@Slf4j
+public class QrCodeServiceImpl extends ServiceImpl<QrCodeMapper, QrCode> implements QrCodeService {
+
+ @Autowired
+ private QrCodeMapper qrCodeMapper;
+
+ @Override
+ public IPage<QrCode> selectQrCodeList(Page page, QrCodeDto qrCodeDto) {
+ LambdaQueryWrapper<QrCode> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.orderByDesc(QrCode::getCreateTime);
+ return qrCodeMapper.selectPage(page, queryWrapper);
+ }
+
+ @Override
+ public Long addOrEditQrCode(QrCodeDto qrCodeDto) {
+ QrCode qrCode = new QrCode();
+ BeanUtils.copyProperties(qrCodeDto, qrCode);
+ if (Objects.isNull(qrCodeDto.getId())) {
+ qrCodeMapper.insert(qrCode);
+ } else {
+ qrCodeMapper.updateById(qrCode);
+ }
+ return qrCode.getId();
+ }
+
+ @Override
+ public int delByIds(Long[] ids) {
+ return qrCodeMapper.deleteBatchIds(Arrays.asList(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/QuartzConfig.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/QuartzConfig.java
new file mode 100644
index 0000000..da332f1
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/QuartzConfig.java
@@ -0,0 +1,50 @@
+package com.ruoyi.inspectiontask.service.impl;
+
+import org.quartz.spi.TriggerFiredBundle;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.quartz.SchedulerFactoryBean;
+import org.springframework.scheduling.quartz.SpringBeanJobFactory;
+
+@Configuration
+public class QuartzConfig {
+ @Autowired
+ private ApplicationContext applicationContext;
+
+ @Bean
+ public SchedulerFactoryBean schedulerFactoryBean() {
+ SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
+
+ // 閰嶇疆SpringBeanJobFactory锛岀敤浜庢敮鎸丣ob涓殑渚濊禆娉ㄥ叆
+ AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
+ jobFactory.setApplicationContext(applicationContext);
+ schedulerFactory.setJobFactory(jobFactory);
+
+ // 鍏朵粬閰嶇疆...
+ return schedulerFactory;
+ }
+
+ // 鑷畾涔塉obFactory锛屾敮鎸佽嚜鍔ㄦ敞鍏�
+ public static class AutowiringSpringBeanJobFactory extends SpringBeanJobFactory
+ implements ApplicationContextAware {
+
+ private transient AutowireCapableBeanFactory beanFactory;
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) {
+ this.beanFactory = applicationContext.getAutowireCapableBeanFactory();
+ }
+
+ @Override
+ protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
+ Object jobInstance = super.createJobInstance(bundle);
+ // 灏咼ob瀹炰緥浜ょ粰Spring瀹瑰櫒绠$悊锛屼娇鍏惰兘澶熻繘琛屼緷璧栨敞鍏�
+ beanFactory.autowireBean(jobInstance);
+ return jobInstance;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/SpringContextHolder.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/SpringContextHolder.java
new file mode 100644
index 0000000..e245130
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/SpringContextHolder.java
@@ -0,0 +1,20 @@
+package com.ruoyi.inspectiontask.service.impl;
+
+import org.quartz.JobExecutionContext;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SpringContextHolder implements ApplicationContextAware {
+ private static ApplicationContext applicationContext;
+
+ @Override
+ public void setApplicationContext(ApplicationContext context) {
+ applicationContext = context;
+ }
+
+ public static <T> T getBean(Class<T> clazz) {
+ return applicationContext.getBean(clazz);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java
new file mode 100644
index 0000000..1cfc748
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java
@@ -0,0 +1,259 @@
+package com.ruoyi.inspectiontask.service.impl;
+
+import com.ruoyi.inspectiontask.mapper.InspectionTaskMapper;
+import com.ruoyi.inspectiontask.mapper.TimingTaskMapper;
+import com.ruoyi.inspectiontask.pojo.InspectionTask;
+import com.ruoyi.inspectiontask.pojo.TimingTask;
+import com.ruoyi.inspectiontask.service.TimingTaskService;
+import org.quartz.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+import java.time.DayOfWeek;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.YearMonth;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Component
+@DisallowConcurrentExecution // 绂佹骞跺彂鎵ц鍚屼竴涓狫ob
+public class TimingTaskJob implements Job {
+
+ @Autowired
+ private TimingTaskMapper timingTaskMapper;
+
+ @Autowired
+ private TimingTaskService timingTaskService;
+
+ @Autowired
+ private InspectionTaskMapper inspectionTaskMapper;
+
+ @Autowired
+ private JdbcTemplate jdbcTemplate;
+
+ @Override
+ public void execute(JobExecutionContext context) throws JobExecutionException {
+ JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
+ // 淇绫诲瀷杞崲閿欒锛屾纭幏鍙杢askId
+ Long taskId = jobDataMap.getLong("taskId");
+
+ try {
+ // 3. 灏濊瘯鏌ヨ浣犵殑涓氬姟鏁版嵁
+ // 閫氳繃JDBC妯℃澘鏌ヨ瀹氭椂浠诲姟淇℃伅锛屼娇鐢ㄥ弬鏁板寲鏌ヨ闃叉SQL娉ㄥ叆
+ String yourSql = "SELECT * FROM timing_task where id = ?";
+ List<TimingTask> tasks = jdbcTemplate.query(
+ yourSql,
+ new BeanPropertyRowMapper<>(TimingTask.class),
+ taskId
+ );
+ TimingTask timingTask = tasks.isEmpty() ? null : tasks.get(0);
+ if (timingTask == null) {
+ throw new JobExecutionException("鎵句笉鍒板畾鏃朵换鍔�: " + taskId);
+ }
+
+// if (!timingTask.isActive()) {
+// throw new JobExecutionException("瀹氭椂浠诲姟宸茬鐢�: " + taskId);
+// }
+
+ // 2. 鍒涘缓骞朵繚瀛樺贰妫�浠诲姟璁板綍 - 杩欏氨鏄偍鎻愪緵鐨勪唬鐮佸簲璇ユ斁鐨勪綅缃�
+ InspectionTask inspectionTask = createInspectionTask(timingTask);
+ inspectionTaskMapper.insert(inspectionTask);
+
+ // 3. 鏇存柊瀹氭椂浠诲姟鐨勬墽琛屾椂闂�
+ if (!tasks.isEmpty()) {
+ TimingTask task = tasks.get(0);
+
+ // 鏇存柊鏈�鍚庢墽琛屾椂闂翠负褰撳墠鏃堕棿
+ LocalDateTime lastExecutionTime = LocalDateTime.now();
+
+ // 璁$畻涓嬫鎵ц鏃堕棿
+ LocalDateTime nextExecutionTime = calculateNextExecutionTime(
+ task.getFrequencyType(),
+ task.getFrequencyDetail(),
+ lastExecutionTime
+ );
+
+ // 鎵ц鏇存柊鎿嶄綔
+ String updateSql = "UPDATE timing_task " +
+ "SET last_execution_time = ?, next_execution_time = ? " +
+ "WHERE id = ?";
+
+ jdbcTemplate.update(
+ updateSql,
+ lastExecutionTime,
+ nextExecutionTime,
+ taskId
+ );
+ }
+// timingTaskService.updateTaskExecutionTime(taskId);
+
+ // 4. 璁板綍鎵ц鏃ュ織
+// timingTaskService.recordExecutionLog(taskId, true, "浠诲姟鎵ц鎴愬姛锛岀敓鎴愬贰妫�浠诲姟ID: " + inspectionTask.getId());
+
+ } catch (Exception e) {
+// timingTaskService.recordExecutionLog(taskId, false, "浠诲姟鎵ц澶辫触: " + e.getMessage());
+ throw new JobExecutionException(e);
+ }
+ }
+
+ // 杩欏氨鏄偍鎻愪緵鐨勪唬鐮佸皝瑁呮垚鐨勬柟娉�
+ private InspectionTask createInspectionTask(TimingTask timingTask) {
+ InspectionTask inspectionTask = new InspectionTask();
+
+ // 澶嶅埗鍩烘湰灞炴��
+ inspectionTask.setTaskName(timingTask.getTaskName());
+ inspectionTask.setTaskId(timingTask.getTaskId());
+ inspectionTask.setInspectorId(timingTask.getInspectorIds());
+ inspectionTask.setInspectionLocation(timingTask.getInspectionLocation());
+ inspectionTask.setRemarks("鑷姩鐢熸垚鑷畾鏃朵换鍔D: " + timingTask.getId());
+ inspectionTask.setRegistrantId(timingTask.getRegistrantId());
+ inspectionTask.setFrequencyType(timingTask.getFrequencyType());
+ inspectionTask.setFrequencyDetail(timingTask.getFrequencyDetail());
+ inspectionTask.setTenantId(timingTask.getTenantId());
+
+ return inspectionTask;
+ }
+
+
+ /**
+ * 璁$畻涓嬫鎵ц鏃堕棿
+ */
+ private LocalDateTime calculateNextExecutionTime(String frequencyType,
+ String frequencyDetail,
+ LocalDateTime currentTime) {
+ try {
+ switch (frequencyType) {
+ case "DAILY":
+ return calculateDailyNextTime(frequencyDetail, currentTime);
+ case "WEEKLY":
+ return calculateWeeklyNextTime(frequencyDetail, currentTime);
+ case "MONTHLY":
+ return calculateMonthlyNextTime(frequencyDetail, currentTime);
+ case "QUARTERLY":
+ return calculateQuarterlyNextTime(frequencyDetail, currentTime);
+ default:
+ throw new IllegalArgumentException("涓嶆敮鎸佺殑棰戠巼绫诲瀷: " + frequencyType);
+ }
+ } catch (Exception e) {
+ throw new RuntimeException("璁$畻涓嬫鎵ц鏃堕棿澶辫触: " + e.getMessage(), e);
+ }
+ }
+
+ /**
+ * 璁$畻姣忔棩浠诲姟鐨勪笅娆℃墽琛屾椂闂�
+ */
+ private LocalDateTime calculateDailyNextTime(String timeStr, LocalDateTime current) {
+ LocalTime executionTime = LocalTime.parse(timeStr); // 瑙f瀽鏍煎紡 "HH:mm"
+ LocalDateTime nextTime = LocalDateTime.of(current.toLocalDate(), executionTime);
+
+ // 濡傛灉浠婂ぉ鐨勬椂闂村凡杩囷紝鍒欏畨鎺掓槑澶�
+ return current.isBefore(nextTime) ? nextTime : nextTime.plusDays(1);
+ }
+
+ /**
+ * 璁$畻姣忓懆浠诲姟鐨勪笅娆℃墽琛屾椂闂�
+ */
+ private LocalDateTime calculateWeeklyNextTime(String detail, LocalDateTime current) {
+ String[] parts = detail.split(",");
+ String dayOfWeekStr = parts[0]; // 濡� "MON" 鎴� "MON|WED|FRI"
+ LocalTime time = LocalTime.parse(parts[1]); // 鏃堕棿閮ㄥ垎
+
+ // 瑙f瀽鏄熸湡鍑�(鏀寔澶氫釜鏄熸湡)
+ Set<DayOfWeek> targetDays = parseDayOfWeeks(dayOfWeekStr);
+
+ // 浠庡綋鍓嶆椂闂村紑濮嬫壘涓嬩竴涓鍚堟潯浠剁殑鏄熸湡鍑�
+ LocalDateTime nextTime = current;
+ while (true) {
+ nextTime = nextTime.plusDays(1);
+ if (targetDays.contains(nextTime.getDayOfWeek())) {
+ return LocalDateTime.of(nextTime.toLocalDate(), time);
+ }
+
+ // 闃叉鏃犻檺寰幆(鐞嗚涓婁笉浼氬彂鐢�)
+ if (nextTime.isAfter(current.plusYears(1))) {
+ throw new RuntimeException("鏃犳硶鎵惧埌涓嬫鎵ц鏃堕棿");
+ }
+ }
+ }
+
+ /**
+ * 璁$畻姣忔湀浠诲姟鐨勪笅娆℃墽琛屾椂闂�
+ */
+ private LocalDateTime calculateMonthlyNextTime(String detail, LocalDateTime current) {
+ String[] parts = detail.split(",");
+ int dayOfMonth = Integer.parseInt(parts[0]);
+ LocalTime time = LocalTime.parse(parts[1]);
+
+ // 浠庝笅涓湀寮�濮嬭绠�
+ LocalDateTime nextTime = current.plusMonths(1)
+ .withDayOfMonth(Math.min(dayOfMonth, current.plusMonths(1).toLocalDate().lengthOfMonth()))
+ .with(time);
+
+ return nextTime;
+ }
+
+ /**
+ * 璁$畻姣忓搴︿换鍔$殑涓嬫鎵ц鏃堕棿
+ */
+ private LocalDateTime calculateQuarterlyNextTime(String detail, LocalDateTime current) {
+ String[] parts = detail.split(",");
+ int quarterMonth = Integer.parseInt(parts[0]); // 1=绗�1涓湀锛�2=绗�2涓湀锛�3=绗�3涓湀
+ int dayOfMonth = Integer.parseInt(parts[1]);
+ LocalTime time = LocalTime.parse(parts[2]);
+
+ // 璁$畻褰撳墠瀛e害
+ int currentQuarter = (current.getMonthValue() - 1) / 3 + 1;
+ int currentMonthInQuarter = (current.getMonthValue() - 1) % 3 + 1;
+
+ YearMonth targetYearMonth;
+ if (currentMonthInQuarter < quarterMonth) {
+ // 鏈搴﹀唴杩樻湁鎵ц鏈轰細
+ targetYearMonth = YearMonth.from(current)
+ .plusMonths(quarterMonth - currentMonthInQuarter);
+ } else {
+ // 闇�瑕佸埌涓嬩釜瀛e害
+ targetYearMonth = YearMonth.from(current)
+ .plusMonths(3 - currentMonthInQuarter + quarterMonth);
+ }
+
+ // 澶勭悊鏈堟湯鏃ユ湡
+ int adjustedDay = Math.min(dayOfMonth, targetYearMonth.lengthOfMonth());
+
+ return LocalDateTime.of(
+ targetYearMonth.getYear(),
+ targetYearMonth.getMonthValue(),
+ adjustedDay,
+ time.getHour(),
+ time.getMinute()
+ );
+ }
+
+ /**
+ * 瑙f瀽鏄熸湡鍑犲瓧绗︿覆
+ */
+ private Set<DayOfWeek> parseDayOfWeeks(String dayOfWeekStr) {
+ Set<DayOfWeek> days = new HashSet<>();
+ String[] dayStrs = dayOfWeekStr.split("\\|");
+
+ for (String dayStr : dayStrs) {
+ switch (dayStr) {
+ case "MON": days.add(DayOfWeek.MONDAY); break;
+ case "TUE": days.add(DayOfWeek.TUESDAY); break;
+ case "WED": days.add(DayOfWeek.WEDNESDAY); break;
+ case "THU": days.add(DayOfWeek.THURSDAY); break;
+ case "FRI": days.add(DayOfWeek.FRIDAY); break;
+ case "SAT": days.add(DayOfWeek.SATURDAY); break;
+ case "SUN": days.add(DayOfWeek.SUNDAY); break;
+ default: throw new IllegalArgumentException("鏃犳晥鐨勬槦鏈熷嚑: " + dayStr);
+ }
+ }
+
+ return days;
+ }
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskScheduler.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskScheduler.java
new file mode 100644
index 0000000..34d1467
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskScheduler.java
@@ -0,0 +1,239 @@
+package com.ruoyi.inspectiontask.service.impl;
+
+import com.ruoyi.inspectiontask.pojo.TimingTask;
+import org.quartz.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeParseException;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.stream.Collectors;
+
+@Service
+public class TimingTaskScheduler {
+
+ @Autowired
+ private Scheduler scheduler;
+
+ /**
+ * 娣诲姞鏂颁换鍔″埌璋冨害鍣�
+ */
+ public void scheduleTimingTask(TimingTask task) throws SchedulerException {
+ JobDetail jobDetail = buildJobDetail(task);
+ Trigger trigger = buildJobTrigger(task, jobDetail);
+ scheduler.scheduleJob(jobDetail, trigger);
+ }
+
+ /**
+ * 鏇存柊宸叉湁浠诲姟
+ */
+ public void rescheduleTimingTask(TimingTask task) throws SchedulerException {
+ TriggerKey triggerKey = new TriggerKey("trigger_" + task.getId());
+
+ // 鑾峰彇鐜版湁瑙﹀彂鍣ㄥ苟杞崲涓� CronTrigger
+ Trigger oldTrigger = scheduler.getTrigger(triggerKey);
+ if (!(oldTrigger instanceof CronTrigger)) {
+ throw new SchedulerException("Existing trigger is not a CronTrigger");
+ }
+
+ // 鏋勫缓鏂拌Е鍙戝櫒
+ Trigger newTrigger = TriggerBuilder.newTrigger()
+ .withIdentity(triggerKey)
+ .withDescription(task.getTaskName())
+ .withSchedule(CronScheduleBuilder.cronSchedule(convertToCronExpression(task)))
+ .startAt(Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant()))
+ .forJob(oldTrigger.getJobKey())
+ .build();
+
+ scheduler.rescheduleJob(triggerKey, newTrigger);
+ }
+
+ /**
+ * 鏆傚仠浠诲姟
+ */
+ public void pauseTimingTask(Long taskId) throws SchedulerException {
+ JobKey jobKey = new JobKey("timingTask_" + taskId);
+ scheduler.pauseJob(jobKey);
+ }
+
+ /**
+ * 鎭㈠浠诲姟
+ */
+ public void resumeTimingTask(Long taskId) throws SchedulerException {
+ JobKey jobKey = new JobKey("timingTask_" + taskId);
+ scheduler.resumeJob(jobKey);
+ }
+
+ /**
+ * 鍒犻櫎浠诲姟
+ */
+ public void unscheduleTimingTask(Long taskId) throws SchedulerException {
+ JobKey jobKey = new JobKey("timingTask_" + taskId);
+ scheduler.deleteJob(jobKey);
+ }
+
+ private JobDetail buildJobDetail(TimingTask task) {
+ JobDataMap jobDataMap = new JobDataMap();
+ jobDataMap.put("taskId", task.getId());
+
+ return JobBuilder.newJob(TimingTaskJob.class)
+ .withIdentity("timingTask_" + task.getId())
+ .withDescription(task.getTaskName())
+ .usingJobData(jobDataMap)
+ .storeDurably()
+ .build();
+ }
+
+ private Trigger buildJobTrigger(TimingTask task, JobDetail jobDetail) {
+ String cronExpression = convertToCronExpression(task);
+
+ TriggerBuilder<CronTrigger> triggerBuilder = TriggerBuilder.newTrigger()
+ .withIdentity("trigger_" + task.getId())
+ .withDescription(task.getTaskName())
+ .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression));
+
+ if (jobDetail != null) {
+ triggerBuilder.forJob(jobDetail);
+ }
+
+ if (task.getNextExecutionTime() != null) {
+ triggerBuilder.startAt(Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant()));
+ }
+
+ return triggerBuilder.build();
+ }
+ private String convertToCronExpression(TimingTask task) {
+ // 鍙傛暟鏍¢獙
+ if (task == null || task.getFrequencyType() == null || task.getFrequencyDetail() == null) {
+ throw new IllegalArgumentException("浠诲姟鍙傛暟涓嶈兘涓虹┖");
+ }
+
+ // 浣跨敤switch纭繚鏉′欢浜掓枼
+ String frequencyType = task.getFrequencyType().toUpperCase(); // 缁熶竴杞负澶у啓姣旇緝
+ switch (frequencyType) {
+ case "DAILY":
+ return convertDailyToCron(task.getFrequencyDetail());
+ case "WEEKLY":
+ return convertWeeklyToCron(task.getFrequencyDetail());
+ case "MONTHLY":
+ return convertMonthlyToCron(task.getFrequencyDetail());
+ case "QUARTERLY":
+ return convertQuarterlyToCron(task.getFrequencyDetail());
+ default:
+ throw new IllegalArgumentException("涓嶆敮鎸佺殑棰戠巼绫诲瀷: " + task.getFrequencyType());
+ }
+ }
+
+ // 姣忔棩浠诲姟杞崲
+ private String convertDailyToCron(String frequencyDetail) {
+ LocalTime time = parseTime(frequencyDetail);
+ return String.format("0 %d %d * * ?", time.getMinute(), time.getHour());
+ }
+
+ // 姣忓懆浠诲姟杞崲
+ private String convertWeeklyToCron(String frequencyDetail) {
+ String[] parts = validateAndSplit(frequencyDetail, ",", 2);
+ String daysOfWeek = convertDayNamesToCron(parts[0]);
+ LocalTime time = parseTime(parts[1]);
+ return String.format("0 %d %d ? * %s", time.getMinute(), time.getHour(), daysOfWeek);
+ }
+
+ // 姣忔湀浠诲姟杞崲
+ private String convertMonthlyToCron(String frequencyDetail) {
+ String[] parts = validateAndSplit(frequencyDetail, ",", 2);
+ int day = validateDayOfMonth(parts[0]);
+ LocalTime time = parseTime(parts[1]);
+ return String.format("0 %d %d %d * ?", time.getMinute(), time.getHour(), day);
+ }
+
+ // 姣忓搴︿换鍔¤浆鎹�
+ private String convertQuarterlyToCron(String frequencyDetail) {
+ String[] parts = validateAndSplit(frequencyDetail, ",", 3);
+ int month = validateMonth(parts[0]); // 楠岃瘉鏈堜唤(1-12)
+ int day = validateDayOfMonth(parts[1]); // 楠岃瘉鏃ユ湡
+ LocalTime time = parseTime(parts[2]); // 瑙f瀽鏃堕棿
+
+ // 璁$畻瀛e害璧峰鏈堜唤(1鏈�=1, 4鏈�=4, 7鏈�=7, 10鏈�=10)
+ int quarterStartMonth = ((month - 1) / 3) * 3 + 1;
+
+ return String.format("0 %d %d %d %d/3 ?",
+ time.getMinute(),
+ time.getHour(),
+ day,
+ quarterStartMonth);
+ }
+
+ // 鏂板楠岃瘉鏈堜唤鐨勬柟娉�(1-12)
+ private int validateMonth(String monthStr) {
+ try {
+ int month = Integer.parseInt(monthStr);
+ if (month < 1 || month > 12) {
+ throw new IllegalArgumentException("鏈堜唤蹇呴』鍦�1-12涔嬮棿");
+ }
+ return month;
+ } catch (NumberFormatException e) {
+ throw new IllegalArgumentException("鏃犳晥鐨勬湀浠芥牸寮�");
+ }
+ }
+
+ // 杈呭姪鏂规硶锛氳В鏋愭椂闂�
+ private LocalTime parseTime(String timeStr) {
+ try {
+ return LocalTime.parse(timeStr);
+ } catch (DateTimeParseException e) {
+ throw new IllegalArgumentException("鏃堕棿鏍煎紡蹇呴』涓篐H:mm", e);
+ }
+ }
+
+ // 杈呭姪鏂规硶锛氶獙璇佸苟鍒嗗壊瀛楃涓�
+ private String[] validateAndSplit(String input, String delimiter, int expectedParts) {
+ String[] parts = input.split(delimiter);
+ if (parts.length != expectedParts) {
+ throw new IllegalArgumentException(
+ String.format("鏍煎紡閿欒锛屽簲涓�%d閮ㄥ垎鐢�'%s'鍒嗛殧", expectedParts, delimiter));
+ }
+ return parts;
+ }
+
+ // 杈呭姪鏂规硶锛氶獙璇佹湀浠戒腑鐨勬棩
+ private int validateDayOfMonth(String dayStr) {
+ int day = Integer.parseInt(dayStr);
+ if (day < 1 || day > 31) {
+ throw new IllegalArgumentException("鏃ユ湡蹇呴』鍦�1-31涔嬮棿");
+ }
+ return day;
+ }
+
+ // 杈呭姪鏂规硶锛氶獙璇佸搴︿腑鐨勬湀
+ private int validateMonthInQuarter(String monthStr) {
+ int month = Integer.parseInt(monthStr);
+ if (month < 1 || month > 3) {
+ throw new IllegalArgumentException("瀛e害鏈堜唤蹇呴』鏄�1銆�2鎴�3");
+ }
+ return month;
+ }
+
+ // 杞崲鏄熸湡鍑犲悕绉�
+ private String convertDayNamesToCron(String dayNames) {
+ return Arrays.stream(dayNames.split("\\|"))
+ .map(this::convertSingleDayName)
+ .collect(Collectors.joining(","));
+ }
+
+ // 杞崲鍗曚釜鏄熸湡鍑犲悕绉�
+ private String convertSingleDayName(String dayName) {
+ switch (dayName.toUpperCase()) {
+ case "MON": return "MON";
+ case "TUE": return "TUE";
+ case "WED": return "WED";
+ case "THU": return "THU";
+ case "FRI": return "FRI";
+ case "SAT": return "SAT";
+ case "SUN": return "SUN";
+ default: throw new IllegalArgumentException("鏃犳晥鐨勬槦鏈熷嚑: " + dayName);
+ }
+ }
+}
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
new file mode 100644
index 0000000..33c815e
--- /dev/null
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
@@ -0,0 +1,450 @@
+package com.ruoyi.inspectiontask.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.inspectiontask.dto.TimingTaskDto;
+import com.ruoyi.inspectiontask.mapper.InspectionTaskMapper;
+import com.ruoyi.inspectiontask.mapper.TimingTaskMapper;
+import com.ruoyi.inspectiontask.pojo.TimingTask;
+import com.ruoyi.inspectiontask.service.TimingTaskService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.*;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author :yys
+ * @date : 2025/9/19 10:55
+ */
+@Service
+@Slf4j
+public class TimingTaskServiceImpl extends ServiceImpl<TimingTaskMapper, TimingTask> implements TimingTaskService {
+
+ @Autowired
+ private TimingTaskMapper timingTaskMapper;
+
+ @Autowired
+ private InspectionTaskMapper inspectionTaskMapper;
+
+ @Autowired
+ private TimingTaskScheduler timingTaskScheduler;
+
+ @Autowired
+ private SysUserMapper sysUserMapper;
+
+
+ @Override
+ public IPage<TimingTaskDto> selectTimingTaskList(Page<TimingTask> page, TimingTask timingTask) {
+ // 1. 鍏堝垎椤垫煡璇㈠畾鏃朵换鍔℃暟鎹�
+ IPage<TimingTask> taskPage = timingTaskMapper.selectPage(page, null);
+
+ // 2. 濡傛灉娌℃湁鏁版嵁锛岀洿鎺ヨ繑鍥炵┖鍒嗛〉
+ if (taskPage.getRecords().isEmpty()) {
+ return new Page<>(taskPage.getCurrent(), taskPage.getSize(), taskPage.getTotal());
+ }
+
+ // 3. 鏀堕泦鎵�鏈夐渶瑕佹煡璇㈢殑鐢ㄦ埛ID
+ Set<Long> userIds = new HashSet<>();
+
+ // 鏀堕泦鐧昏浜篒D
+ taskPage.getRecords().forEach(task -> {
+ if (task.getRegistrantId() != null) {
+ userIds.add(task.getRegistrantId());
+ }
+ });
+
+ // 鏀堕泦宸℃浜篒D锛堝涓狪D浠ラ�楀彿鍒嗛殧锛�
+ taskPage.getRecords().forEach(task -> {
+ if (StringUtils.isNotBlank(task.getInspectorIds())) {
+ Arrays.stream(task.getInspectorIds().split(","))
+ .filter(StringUtils::isNotBlank)
+ .map(Long::valueOf)
+ .forEach(userIds::add);
+ }
+ });
+
+ // 4. 鎵归噺鏌ヨ鐢ㄦ埛淇℃伅
+ Map<Long, String> userNickNameMap = new HashMap<>();
+ if (!userIds.isEmpty()) {
+ List<SysUser> users = sysUserMapper.selectUserByIds((new ArrayList<>(userIds)));
+ users.forEach(user -> userNickNameMap.put(user.getUserId(), user.getNickName()));
+ }
+
+ // 5. 杞崲涓篋TO
+ List<TimingTaskDto> dtoList = taskPage.getRecords().stream().map(task -> {
+ TimingTaskDto dto = new TimingTaskDto();
+ // 澶嶅埗鍩烘湰灞炴��
+ BeanUtils.copyProperties(task, dto);
+
+ // 璁剧疆鐧昏浜烘樀绉�
+ if (task.getRegistrantId() != null) {
+ dto.setRegistrant(userNickNameMap.getOrDefault(task.getRegistrantId(), "鏈煡鐢ㄦ埛"));
+ }
+
+ // 璁剧疆宸℃浜烘樀绉板垪琛�
+ if (StringUtils.isNotBlank(task.getInspectorIds())) {
+ List<String> inspectorNickNames = new ArrayList<>();
+ for (String idStr : task.getInspectorIds().split(",")) {
+ if (StringUtils.isNotBlank(idStr)) {
+ Long id = Long.valueOf(idStr);
+ inspectorNickNames.add(userNickNameMap.getOrDefault(id, "鏈煡鐢ㄦ埛"));
+ }
+ }
+ dto.setInspector(inspectorNickNames);
+ }
+
+ return dto;
+ }).collect(Collectors.toList());
+
+ // 6. 鏋勫缓杩斿洖鐨勫垎椤靛璞�
+ Page<TimingTaskDto> resultPage = new Page<>(taskPage.getCurrent(), taskPage.getSize(), taskPage.getTotal());
+ resultPage.setRecords(dtoList);
+ return resultPage;
+ }
+
+ @Override
+ @Transactional
+ public int addOrEditTimingTask(TimingTaskDto timingTaskDto) throws SchedulerException {
+ TimingTask timingTask = new TimingTask();
+ BeanUtils.copyProperties(timingTaskDto, timingTask);
+
+ // 璁剧疆鍒涘缓浜轰俊鎭拰榛樿鍊�
+ if (Objects.isNull(timingTaskDto.getId())) {
+ timingTask.setRegistrationDate(LocalDate.now());
+ timingTask.setActive(true);
+
+ // 璁$畻棣栨鎵ц鏃堕棿
+ LocalDateTime firstExecutionTime = calculateFirstExecutionTime(timingTask);
+ timingTask.setNextExecutionTime(firstExecutionTime);
+
+ int result = timingTaskMapper.insert(timingTask);
+ if (result > 0) {
+ // 鏂板鎴愬姛鍚庢坊鍔犲埌璋冨害鍣�
+ timingTaskScheduler.scheduleTimingTask(timingTask);
+ }
+ return result;
+ } else {
+ int result = timingTaskMapper.updateById(timingTask);
+ if (result > 0) {
+ // 鏇存柊鎴愬姛鍚庨噸鏂拌皟搴︿换鍔�
+ timingTaskScheduler.rescheduleTimingTask(timingTask);
+ }
+ return result;
+ }
+ }
+
+ private LocalDateTime calculateFirstExecutionTime(TimingTask task) {
+ // 鏍规嵁棰戠巼绫诲瀷鍜岃鎯呰绠楅娆℃墽琛屾椂闂�
+ String frequencyType = task.getFrequencyType();
+ if ("DAILY".equals(frequencyType)) {
+ // 濡傛灉鏄瘡澶╂墽琛岋紝璁$畻浠婂ぉ鎴栨槑澶╃殑鍏蜂綋鏃堕棿
+ return calculateDailyFirstExecution(task.getFrequencyDetail());
+ } else if ("WEEKLY".equals(frequencyType)) {
+ // 濡傛灉鏄瘡鍛ㄦ墽琛岋紝璁$畻涓嬪懆鐨勫叿浣撴槦鏈熷嚑
+ return calculateWeeklyFirstExecution(task.getFrequencyDetail());
+ } else if ("MONTHLY".equals(frequencyType)) {
+ // 濡傛灉鏄瘡鏈堟墽琛岋紝璁$畻涓嬩釜鏈堢殑鍏蜂綋鏃ユ湡
+ return calculateMonthlyFirstExecution(task.getFrequencyDetail());
+ } else if ("QUARTERLY".equals(frequencyType)) {
+ // 鑷畾涔夐鐜囷紝濡傛瘡灏忔椂銆佹瘡30鍒嗛挓绛�
+ return calculateCustomFirstExecution(task.getFrequencyDetail());
+ } else {
+ throw new IllegalArgumentException("涓嶆敮鎸佺殑棰戠巼绫诲瀷: " + task.getFrequencyType());
+ }
+ }
+
+ private LocalDateTime calculateDailyFirstExecution(String frequencyDetail) {
+ // frequencyDetail鍙兘鏄叿浣撴椂闂达紝濡� "14:30"
+ LocalTime executionTime = LocalTime.parse(frequencyDetail);
+ LocalDateTime now = LocalDateTime.now();
+ LocalDateTime todayExecution = LocalDateTime.of(now.toLocalDate(), executionTime);
+
+ // 濡傛灉浠婂ぉ鐨勬椂闂村凡杩囷紝鍒欏畨鎺掓槑澶╂墽琛�
+ return now.isBefore(todayExecution) ? todayExecution : todayExecution.plusDays(1);
+ }
+
+ // 鏄犲皠鏄熸湡绠�鍐欎笌DayOfWeek
+ private static final Map<String, DayOfWeek> WEEK_DAY_MAP = new HashMap<>();
+ static {
+ WEEK_DAY_MAP.put("MON", DayOfWeek.MONDAY);
+ WEEK_DAY_MAP.put("TUE", DayOfWeek.TUESDAY);
+ WEEK_DAY_MAP.put("WED", DayOfWeek.WEDNESDAY);
+ WEEK_DAY_MAP.put("THU", DayOfWeek.THURSDAY);
+ WEEK_DAY_MAP.put("FRI", DayOfWeek.FRIDAY);
+ WEEK_DAY_MAP.put("SAT", DayOfWeek.SATURDAY);
+ WEEK_DAY_MAP.put("SUN", DayOfWeek.SUNDAY);
+ }
+
+ private LocalDateTime calculateWeeklyFirstExecution(String frequencyDetail) {
+ // 瑙f瀽杈撳叆鍙傛暟
+ String[] parts = frequencyDetail.split(",");
+ if (parts.length != 2) {
+ throw new IllegalArgumentException("鍙傛暟鏍煎紡閿欒锛屽簲涓�'MON,13:43'鏍煎紡");
+ }
+
+ String weekDayStr = parts[0].trim();
+ String timeStr = parts[1].trim();
+
+ // 鑾峰彇瀵瑰簲鐨勬槦鏈熷嚑
+ DayOfWeek targetDay = WEEK_DAY_MAP.get(weekDayStr);
+ if (targetDay == null) {
+ throw new IllegalArgumentException("鏃犳晥鐨勬槦鏈熺畝鍐�: " + weekDayStr);
+ }
+
+ // 瑙f瀽鏃堕棿
+ LocalTime targetTime = LocalTime.parse(timeStr, DateTimeFormatter.ofPattern("HH:mm"));
+
+ // 鑾峰彇褰撳墠鏃堕棿
+ LocalDateTime now = LocalDateTime.now();
+ LocalDateTime targetDateTime = now.with(targetDay).with(targetTime);
+
+ // 濡傛灉璁$畻鍑虹殑鏃堕棿鍦ㄥ綋鍓嶆椂闂翠箣鍓嶏紝鍒欏姞涓�鍛�
+ if (targetDateTime.isBefore(now)) {
+ targetDateTime = targetDateTime.plusWeeks(1);
+ }
+
+ return targetDateTime;
+ }
+
+ private LocalDateTime calculateMonthlyFirstExecution(String frequencyDetail) {
+ // 瑙f瀽杈撳叆鍙傛暟
+ String[] parts = frequencyDetail.split(",");
+ if (parts.length != 2) {
+ throw new IllegalArgumentException("鍙傛暟鏍煎紡閿欒锛屽簲涓�'03,17:00'鏍煎紡");
+ }
+
+ String dayStr = parts[0].trim();
+ String timeStr = parts[1].trim();
+
+ // 瑙f瀽鏃ユ湡
+ int dayOfMonth;
+ try {
+ dayOfMonth = Integer.parseInt(dayStr);
+ } catch (NumberFormatException e) {
+ throw new IllegalArgumentException("鏃犳晥鐨勬棩鏈熸牸寮�: " + dayStr, e);
+ }
+
+ // 楠岃瘉鏃ユ湡鏈夋晥鎬э紙1-31涔嬮棿锛�
+ if (dayOfMonth < 1 || dayOfMonth > 31) {
+ throw new IllegalArgumentException("鏃ユ湡蹇呴』鍦�1-31涔嬮棿: " + dayOfMonth);
+ }
+
+ // 瑙f瀽鏃堕棿
+ LocalTime targetTime;
+ try {
+ targetTime = LocalTime.parse(timeStr, DateTimeFormatter.ofPattern("HH:mm"));
+ } catch (DateTimeException e) {
+ throw new IllegalArgumentException("鏃犳晥鐨勬椂闂存牸寮�: " + timeStr, e);
+ }
+
+ // 鑾峰彇褰撳墠鏃堕棿
+ LocalDateTime now = LocalDateTime.now();
+ LocalDateTime targetDateTime = now.withDayOfMonth(dayOfMonth).with(targetTime);
+
+ // 妫�鏌ユ棩鏈熸槸鍚﹁鑷姩璋冩暣锛堝31鏃ュ湪灏忔湀浼氳璋冩暣锛�
+ boolean isDateAdjusted = targetDateTime.getDayOfMonth() != dayOfMonth;
+
+ // 濡傛灉鐩爣鏃堕棿鍦ㄥ綋鍓嶆椂闂翠箣鍓嶏紝鎴栬�呮棩鏈熻绯荤粺鑷姩璋冩暣浜�
+ if (targetDateTime.isBefore(now) || isDateAdjusted) {
+ // 璁$畻涓嬩釜鏈堢殑鏃ユ湡
+ LocalDateTime nextMonth = now.plusMonths(1);
+ // 灏濊瘯璁剧疆涓嬩釜鏈堢殑鐩爣鏃ユ湡
+ LocalDateTime nextMonthTarget = nextMonth.withDayOfMonth(dayOfMonth).with(targetTime);
+
+ // 濡傛灉涓嬩釜鏈堢殑鏃ユ湡涔熻璋冩暣浜嗭紝灏辩敤涓嬩釜鏈堢殑鏈�鍚庝竴澶�
+ if (nextMonthTarget.getDayOfMonth() != dayOfMonth) {
+ // 姝g‘鑾峰彇涓嬩釜鏈堢殑鏈�鍚庝竴澶╋紙淇isLeapYear璋冪敤闂锛�
+ int lastDayOfMonth = nextMonth.getMonth().length(
+ Year.of(nextMonth.getYear()).isLeap()
+ );
+ nextMonthTarget = nextMonth.withDayOfMonth(lastDayOfMonth).with(targetTime);
+ }
+
+ targetDateTime = nextMonthTarget;
+ }
+
+ return targetDateTime;
+ }
+
+ private LocalDateTime calculateCustomFirstExecution(String frequencyDetail) {
+ return null;
+ }
+
+ @Override
+ @Transactional
+ public void updateTaskExecutionTime(Long taskId) {
+ TimingTask task = timingTaskMapper.selectById(taskId);
+ if (task == null) {
+ throw new RuntimeException("瀹氭椂浠诲姟涓嶅瓨鍦紝ID: " + taskId);
+ }
+
+ // 鏇存柊鏈�鍚庢墽琛屾椂闂翠负褰撳墠鏃堕棿
+ task.setLastExecutionTime(LocalDateTime.now());
+
+ // 璁$畻涓嬫鎵ц鏃堕棿
+ LocalDateTime nextExecutionTime = calculateNextExecutionTime(
+ task.getFrequencyType(),
+ task.getFrequencyDetail(),
+ LocalDateTime.now()
+ );
+ task.setNextExecutionTime(nextExecutionTime);
+
+ // 鏇存柊鏁版嵁搴�
+ timingTaskMapper.updateById(task);
+ }
+
+ /**
+ * 璁$畻涓嬫鎵ц鏃堕棿
+ */
+ private LocalDateTime calculateNextExecutionTime(String frequencyType,
+ String frequencyDetail,
+ LocalDateTime currentTime) {
+ try {
+ switch (frequencyType) {
+ case "DAILY":
+ return calculateDailyNextTime(frequencyDetail, currentTime);
+ case "WEEKLY":
+ return calculateWeeklyNextTime(frequencyDetail, currentTime);
+ case "MONTHLY":
+ return calculateMonthlyNextTime(frequencyDetail, currentTime);
+ case "QUARTERLY":
+ return calculateQuarterlyNextTime(frequencyDetail, currentTime);
+ default:
+ throw new IllegalArgumentException("涓嶆敮鎸佺殑棰戠巼绫诲瀷: " + frequencyType);
+ }
+ } catch (Exception e) {
+ throw new RuntimeException("璁$畻涓嬫鎵ц鏃堕棿澶辫触: " + e.getMessage(), e);
+ }
+ }
+
+ /**
+ * 璁$畻姣忔棩浠诲姟鐨勪笅娆℃墽琛屾椂闂�
+ */
+ private LocalDateTime calculateDailyNextTime(String timeStr, LocalDateTime current) {
+ LocalTime executionTime = LocalTime.parse(timeStr); // 瑙f瀽鏍煎紡 "HH:mm"
+ LocalDateTime nextTime = LocalDateTime.of(current.toLocalDate(), executionTime);
+
+ // 濡傛灉浠婂ぉ鐨勬椂闂村凡杩囷紝鍒欏畨鎺掓槑澶�
+ return current.isBefore(nextTime) ? nextTime : nextTime.plusDays(1);
+ }
+
+ /**
+ * 璁$畻姣忓懆浠诲姟鐨勪笅娆℃墽琛屾椂闂�
+ */
+ private LocalDateTime calculateWeeklyNextTime(String detail, LocalDateTime current) {
+ String[] parts = detail.split(",");
+ String dayOfWeekStr = parts[0]; // 濡� "MON" 鎴� "MON|WED|FRI"
+ LocalTime time = LocalTime.parse(parts[1]); // 鏃堕棿閮ㄥ垎
+
+ // 瑙f瀽鏄熸湡鍑�(鏀寔澶氫釜鏄熸湡)
+ Set<DayOfWeek> targetDays = parseDayOfWeeks(dayOfWeekStr);
+
+ // 浠庡綋鍓嶆椂闂村紑濮嬫壘涓嬩竴涓鍚堟潯浠剁殑鏄熸湡鍑�
+ LocalDateTime nextTime = current;
+ while (true) {
+ nextTime = nextTime.plusDays(1);
+ if (targetDays.contains(nextTime.getDayOfWeek())) {
+ return LocalDateTime.of(nextTime.toLocalDate(), time);
+ }
+
+ // 闃叉鏃犻檺寰幆(鐞嗚涓婁笉浼氬彂鐢�)
+ if (nextTime.isAfter(current.plusYears(1))) {
+ throw new RuntimeException("鏃犳硶鎵惧埌涓嬫鎵ц鏃堕棿");
+ }
+ }
+ }
+
+ /**
+ * 璁$畻姣忔湀浠诲姟鐨勪笅娆℃墽琛屾椂闂�
+ */
+ private LocalDateTime calculateMonthlyNextTime(String detail, LocalDateTime current) {
+ String[] parts = detail.split(",");
+ int dayOfMonth = Integer.parseInt(parts[0]);
+ LocalTime time = LocalTime.parse(parts[1]);
+
+ // 浠庝笅涓湀寮�濮嬭绠�
+ LocalDateTime nextTime = current.plusMonths(1)
+ .withDayOfMonth(Math.min(dayOfMonth, current.plusMonths(1).toLocalDate().lengthOfMonth()))
+ .with(time);
+
+ return nextTime;
+ }
+
+ /**
+ * 璁$畻姣忓搴︿换鍔$殑涓嬫鎵ц鏃堕棿
+ */
+ private LocalDateTime calculateQuarterlyNextTime(String detail, LocalDateTime current) {
+ String[] parts = detail.split(",");
+ int quarterMonth = Integer.parseInt(parts[0]); // 1=绗�1涓湀锛�2=绗�2涓湀锛�3=绗�3涓湀
+ int dayOfMonth = Integer.parseInt(parts[1]);
+ LocalTime time = LocalTime.parse(parts[2]);
+
+ // 璁$畻褰撳墠瀛e害
+ int currentQuarter = (current.getMonthValue() - 1) / 3 + 1;
+ int currentMonthInQuarter = (current.getMonthValue() - 1) % 3 + 1;
+
+ YearMonth targetYearMonth;
+ if (currentMonthInQuarter < quarterMonth) {
+ // 鏈搴﹀唴杩樻湁鎵ц鏈轰細
+ targetYearMonth = YearMonth.from(current)
+ .plusMonths(quarterMonth - currentMonthInQuarter);
+ } else {
+ // 闇�瑕佸埌涓嬩釜瀛e害
+ targetYearMonth = YearMonth.from(current)
+ .plusMonths(3 - currentMonthInQuarter + quarterMonth);
+ }
+
+ // 澶勭悊鏈堟湯鏃ユ湡
+ int adjustedDay = Math.min(dayOfMonth, targetYearMonth.lengthOfMonth());
+
+ return LocalDateTime.of(
+ targetYearMonth.getYear(),
+ targetYearMonth.getMonthValue(),
+ adjustedDay,
+ time.getHour(),
+ time.getMinute()
+ );
+ }
+
+ /**
+ * 瑙f瀽鏄熸湡鍑犲瓧绗︿覆
+ */
+ private Set<DayOfWeek> parseDayOfWeeks(String dayOfWeekStr) {
+ Set<DayOfWeek> days = new HashSet<>();
+ String[] dayStrs = dayOfWeekStr.split("\\|");
+
+ for (String dayStr : dayStrs) {
+ switch (dayStr) {
+ case "MON": days.add(DayOfWeek.MONDAY); break;
+ case "TUE": days.add(DayOfWeek.TUESDAY); break;
+ case "WED": days.add(DayOfWeek.WEDNESDAY); break;
+ case "THU": days.add(DayOfWeek.THURSDAY); break;
+ case "FRI": days.add(DayOfWeek.FRIDAY); break;
+ case "SAT": days.add(DayOfWeek.SATURDAY); break;
+ case "SUN": days.add(DayOfWeek.SUNDAY); break;
+ default: throw new IllegalArgumentException("鏃犳晥鐨勬槦鏈熷嚑: " + dayStr);
+ }
+ }
+
+ return days;
+ }
+
+
+
+ @Override
+ public int delByIds(Long[] ids) {
+ return timingTaskMapper.deleteBatchIds(Arrays.asList(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java b/src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java
new file mode 100644
index 0000000..f0c861a
--- /dev/null
+++ b/src/main/java/com/ruoyi/lavorissue/controller/LavorIssueController.java
@@ -0,0 +1,150 @@
+package com.ruoyi.lavorissue.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.ApproveProcess;
+import com.ruoyi.approve.utils.DailyRedisCounter;
+import com.ruoyi.approve.utils.StartAndEndDateDto;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.lavorissue.dto.StatisticsLaborIssue;
+import com.ruoyi.lavorissue.mapper.LavorIssueMapper;
+import com.ruoyi.lavorissue.pojo.LaborIssue;
+import com.ruoyi.lavorissue.service.LavorIssueService;
+import com.ruoyi.project.system.domain.SysDept;
+import com.ruoyi.project.system.mapper.SysDeptMapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.UnsupportedEncodingException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author :yys
+ * @date : 2025/8/13 11:19
+ */
+@RestController
+@Api(tags = "鍔充繚鍙戞斁")
+@RequestMapping("/lavorIssue")
+public class LavorIssueController extends BaseController {
+
+ @Autowired
+ private LavorIssueService laborIssueService;
+
+ @Autowired
+ private LavorIssueMapper lavorIssueMapper;
+
+ @Autowired
+ private SysDeptMapper sysDeptMapper;
+
+ @GetMapping("/listPage")
+ @Log(title = "鍔充繚鍙戞斁-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ @ApiOperation("鍔充繚鍙戞斁-鍒嗛〉鏌ヨ")
+ public AjaxResult listPage(Page page, LaborIssue laborIssue){
+ IPage<LaborIssue> listPage = laborIssueService.listPage(page, laborIssue);
+ return AjaxResult.success(listPage);
+ }
+
+ @GetMapping("/statisticsList")
+ @Log(title = "鍔充繚鍙戞斁-缁熻鏌ヨ", businessType = BusinessType.OTHER)
+ @ApiOperation("鍔充繚鍙戞斁-缁熻鏌ヨ")
+ public AjaxResult statisticsList(LaborIssue laborIssue){
+ List<Map<String, Object>> listPage = laborIssueService.statisticsList(laborIssue);
+ return AjaxResult.success(listPage);
+ }
+
+ @PostMapping("/add")
+ @Log(title = "鍔充繚鍙戞斁-娣诲姞", businessType = BusinessType.INSERT)
+ @ApiOperation("鍔充繚鍙戞斁-娣诲姞")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult add(@RequestBody LaborIssue laborIssue){
+ String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+ StartAndEndDateDto dateTime = DailyRedisCounter.getDateTime();
+ Long approveId = lavorIssueMapper.selectCount(new LambdaQueryWrapper<LaborIssue>()
+ .gt(LaborIssue::getCreateTime, dateTime.getStartDate())
+ .lt(LaborIssue::getCreateTime, dateTime.getEndDate()));
+ String formattedCount = String.format("%03d", approveId + 1);
+ laborIssue.setOrderNo(today + formattedCount);
+ List<LaborIssue> laborIssues = lavorIssueMapper.selectList(new LambdaQueryWrapper<LaborIssue>()
+ .like(LaborIssue::getOrderNo, today));
+ if(!CollectionUtils.isEmpty(laborIssues)){
+ long l = Long.parseLong(laborIssues.get(laborIssues.size() - 1).getOrderNo());
+ laborIssue.setOrderNo(String.format("%03d", l + 1));
+ }
+ boolean save = laborIssueService.save(laborIssue);
+ return save ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @PostMapping("/update")
+ @Log(title = "鍔充繚鍙戞斁-淇敼", businessType = BusinessType.UPDATE)
+ @ApiOperation("鍔充繚鍙戞斁-淇敼")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult update(@RequestBody LaborIssue laborIssue){
+ boolean update = laborIssueService.updateById(laborIssue);
+ return update ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @DeleteMapping("/delete")
+ @Log(title = "鍔充繚鍙戞斁-鍒犻櫎", businessType = BusinessType.DELETE)
+ @ApiOperation("鍔充繚鍙戞斁-鍒犻櫎")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult delete(@RequestBody List<Long> ids){
+ boolean delete = laborIssueService.removeBatchByIds(ids);
+ return delete ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @GetMapping("/statistics")
+ @ApiOperation("鍔充繚鍙戞斁-缁熻")
+ public AjaxResult statistics(StatisticsLaborIssue req) throws Exception {
+ StatisticsLaborIssue statisticsLaborIssue = laborIssueService.statistics(req);
+ return AjaxResult.success(statisticsLaborIssue);
+ }
+
+
+
+ /**
+ * 鍔充繚鍙戞斁-瀵煎嚭
+ */
+ @Log(title = "鍔充繚鍙戞斁-瀵煎嚭", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ @ApiOperation("鍔充繚鍙戞斁-瀵煎嚭")
+ public void export(HttpServletResponse response) {
+ Long tenantId = SecurityUtils.getLoginUser().getTenantId();
+ ExcelUtil<LaborIssue> util = new ExcelUtil<LaborIssue>(LaborIssue.class);
+ List<LaborIssue> list = lavorIssueMapper.list(new LaborIssue());
+ SysDept sysDept = sysDeptMapper.selectDeptById(tenantId);
+ if(sysDept == null){
+ throw new RuntimeException("閮ㄩ棬涓嶅瓨鍦�!");
+ }
+ list.forEach(item -> {
+ item.setDeptName(sysDept.getDeptName());
+ });
+ util.exportExcel(response, list , "鍔充繚鍙拌处");
+ }
+
+ /**
+ * 鍔充繚鍙戞斁-瀵煎嚭
+ */
+ @Log(title = "鍔充繚鍙戞斁-瀵煎嚭", businessType = BusinessType.EXPORT)
+ @PostMapping("/exportCopy")
+ @ApiOperation("鍔充繚鍙戞斁-瀵煎嚭")
+ public void exportCopy(HttpServletResponse response,LaborIssue laborIssue) throws UnsupportedEncodingException {
+ laborIssueService.exportCopy(response,laborIssue);
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/lavorissue/dto/StatisticsLaborIssue.java b/src/main/java/com/ruoyi/lavorissue/dto/StatisticsLaborIssue.java
new file mode 100644
index 0000000..7e7a4a2
--- /dev/null
+++ b/src/main/java/com/ruoyi/lavorissue/dto/StatisticsLaborIssue.java
@@ -0,0 +1,30 @@
+package com.ruoyi.lavorissue.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/8/14 11:53
+ */
+@Data
+@ApiModel
+public class StatisticsLaborIssue {
+
+ private Integer season;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date issueDate;
+
+ private Long ylqNum = 0L;
+
+ private Long wlqNum = 0L;
+
+ private Long csylqNum = 0L;
+
+ private Long cswlqNum = 0L;
+
+}
diff --git a/src/main/java/com/ruoyi/lavorissue/mapper/LavorIssueMapper.java b/src/main/java/com/ruoyi/lavorissue/mapper/LavorIssueMapper.java
new file mode 100644
index 0000000..8fa8999
--- /dev/null
+++ b/src/main/java/com/ruoyi/lavorissue/mapper/LavorIssueMapper.java
@@ -0,0 +1,27 @@
+package com.ruoyi.lavorissue.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.lavorissue.pojo.LaborIssue;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/8/13 11:17
+ */
+public interface LavorIssueMapper extends BaseMapper<LaborIssue> {
+
+ /**
+ * 鑾峰彇鍒楄〃
+ *
+ * @param page
+ * @param laborIssue
+ * @return
+ */
+ IPage<LaborIssue> listPage(Page page, @Param("req") LaborIssue laborIssue);
+
+ List<LaborIssue> list(@Param("req") LaborIssue laborIssue);
+}
diff --git a/src/main/java/com/ruoyi/lavorissue/pojo/LaborIssue.java b/src/main/java/com/ruoyi/lavorissue/pojo/LaborIssue.java
new file mode 100644
index 0000000..3994833
--- /dev/null
+++ b/src/main/java/com/ruoyi/lavorissue/pojo/LaborIssue.java
@@ -0,0 +1,172 @@
+package com.ruoyi.lavorissue.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.StartAndEndDateDto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/8/13 11:12
+ */
+@Data
+@TableName("labor_issue")
+@ApiModel
+public class LaborIssue extends StartAndEndDateDto {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @TableField(exist = false)
+ @ApiModelProperty("1-宸查鍙栧姵淇濇暟閲� 2-鏈鍙栧姵淇濇暟閲� 3-瓒呮椂宸查鍙栧姵淇濇暟閲� 4-瓒呮椂鏈鍙栧姵淇濇暟閲�")
+ private Integer status;
+
+ @TableField(exist = false)
+ private Integer season;
+
+ /**
+ * 閮ㄩ棬鍚嶇О
+ */
+ @ApiModelProperty("閮ㄩ棬鍚嶇О")
+ @Excel(name = "閮ㄩ棬鍚嶇О")
+ @TableField(exist = false)
+ private String deptName;
+
+ /**
+ * 鍔充繚鍗曞彿
+ */
+ @ApiModelProperty("鍔充繚鍗曞彿")
+ @Excel(name = "鍔充繚鍗曞彿")
+ private String orderNo;
+
+ /**
+ * 鍛樺伐id
+ */
+ @ApiModelProperty("鍛樺伐id")
+ private Long staffId;
+
+ /**
+ * 鍛樺伐鍚嶇О
+ */
+ @ApiModelProperty("鍛樺伐鍚嶇О")
+ @Excel(name = "鍛樺伐鍚嶇О")
+ @TableField(exist = false)
+ private String staffName;
+
+ /**
+ * 鍛樺伐缂栧彿
+ */
+ @ApiModelProperty("鍛樺伐缂栧彿")
+ @Excel(name = "鍛樺伐缂栧彿")
+ @TableField(exist = false)
+ private String staffNo;
+
+ /**
+ * 鍔充繚绫诲瀷-瀛楀吀
+ */
+ @ApiModelProperty("鍔充繚绫诲瀷-瀛楀吀")
+ private String dictType;
+
+ /**
+ * 鍔充繚绫诲瀷
+ */
+ @ApiModelProperty("鍔充繚绫诲瀷")
+ @Excel(name = "鍔充繚绫诲瀷")
+ @TableField(exist = false)
+ private String dictTypeName;
+
+ /**
+ * 闃插叿鍚嶇О-瀛楀吀
+ */
+ @ApiModelProperty("闃插叿鍚嶇О-瀛楀吀")
+ private String dictId;
+
+ /**
+ * 闃插叿鍚嶇О
+ */
+ @ApiModelProperty("闃插叿鍚嶇О")
+ @Excel(name = "闃插叿鍚嶇О")
+ @TableField(exist = false)
+ private String dictName;
+
+ /**
+ * 棰嗙敤鏁伴噺
+ */
+ @ApiModelProperty("棰嗙敤鏁伴噺")
+ @Excel(name = "棰嗙敤鏁伴噺")
+ private Long num;
+
+ /**
+ * 杩涘巶鏃ユ湡
+ */
+ @ApiModelProperty("杩涘巶鏃ユ湡")
+ @Excel(name = "杩涘巶鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date factoryDate;
+
+ /**
+ * 鍙戞斁鏃ユ湡
+ */
+ @ApiModelProperty("鍙戞斁鏃ユ湡")
+ @Excel(name = "鍙戞斁鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date issueDate;
+
+ /**
+ * 棰嗙敤鏃ユ湡
+ */
+ @ApiModelProperty("棰嗙敤鏃ユ湡")
+ @Excel(name = "棰嗙敤鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date adoptedDate;
+
+ /**
+ * 绛惧悕
+ */
+ @Excel(name = "绛惧悕")
+ @TableField(exist = false)
+ private String sign;
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 淇敼鑰�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java b/src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java
new file mode 100644
index 0000000..a0fd247
--- /dev/null
+++ b/src/main/java/com/ruoyi/lavorissue/service/LavorIssueService.java
@@ -0,0 +1,34 @@
+package com.ruoyi.lavorissue.service;
+
+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.lavorissue.dto.StatisticsLaborIssue;
+import com.ruoyi.lavorissue.pojo.LaborIssue;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.UnsupportedEncodingException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author :yys
+ * @date : 2025/8/13 11:18
+ */
+public interface LavorIssueService extends IService<LaborIssue> {
+
+ /**
+ * 鏌ヨ鍒楄〃
+ *
+ * @param page
+ * @param laborIssue
+ * @return
+ */
+ IPage<LaborIssue> listPage(Page page, LaborIssue laborIssue);
+
+ StatisticsLaborIssue statistics(StatisticsLaborIssue req) throws Exception;
+
+ void exportCopy(HttpServletResponse response, LaborIssue laborIssue) throws UnsupportedEncodingException;
+
+ List<Map<String, Object>> statisticsList(LaborIssue laborIssue);
+}
diff --git a/src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java b/src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java
new file mode 100644
index 0000000..9e66121
--- /dev/null
+++ b/src/main/java/com/ruoyi/lavorissue/service/impl/LavorIssueServiceImpl.java
@@ -0,0 +1,365 @@
+package com.ruoyi.lavorissue.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.approve.utils.StartAndEndDateDto;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.excel.ConfigurableMergeStrategy;
+import com.ruoyi.common.utils.excel.CustomCellStyleHandler;
+import com.ruoyi.lavorissue.dto.StatisticsLaborIssue;
+import com.ruoyi.lavorissue.mapper.LavorIssueMapper;
+import com.ruoyi.lavorissue.pojo.LaborIssue;
+import com.ruoyi.lavorissue.service.LavorIssueService;
+import com.ruoyi.project.system.domain.SysDept;
+import com.ruoyi.project.system.domain.SysDictData;
+import com.ruoyi.project.system.mapper.SysDeptMapper;
+import com.ruoyi.project.system.mapper.SysDictDataMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+/**
+ * @author :yys
+ * @date : 2025/8/13 11:18
+ */
+@Service
+@Slf4j
+public class LavorIssueServiceImpl extends ServiceImpl<LavorIssueMapper, LaborIssue> implements LavorIssueService {
+
+ @Autowired
+ private LavorIssueMapper lavorIssueMapper;
+
+ @Override
+ public IPage<LaborIssue> listPage(Page page, LaborIssue laborIssue) {
+ StartAndEndDateDto startAndEndDateDto = getStartAndEndDateDto(laborIssue.getSeason(), laborIssue.getIssueDate());
+ laborIssue.setStartDate(startAndEndDateDto.getStartDate());
+ laborIssue.setEndDate(startAndEndDateDto.getEndDate());
+ return lavorIssueMapper.listPage(page, laborIssue);
+ }
+
+ @Override
+ public List<Map<String, Object>> statisticsList(LaborIssue laborIssue){
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ StartAndEndDateDto startAndEndDateDto = getStartAndEndDateDto(laborIssue.getSeason(), laborIssue.getIssueDate());
+ laborIssue.setStartDate(startAndEndDateDto.getStartDate());
+ laborIssue.setEndDate(startAndEndDateDto.getEndDate());
+ List<LaborIssue> laborIssueIPage = lavorIssueMapper.list(laborIssue);
+
+ // 浣跨敤鍙彉鐨凙rrayList鏇挎崲榛樿鐨勪笉鍙彉鍒楄〃
+ List<Map<String, Object>> records = new ArrayList<>();
+
+ Map<String, List<LaborIssue>> collect = laborIssueIPage.stream().collect(Collectors.groupingBy(LaborIssue::getStaffNo));
+ collect.forEach((k, v) -> {
+ HashMap<String, Object> hashMap = new HashMap<>();
+ LaborIssue laborIssue1 = v.get(0);
+ hashMap.put("id", v.stream().map(LaborIssue::getId));
+ hashMap.put("deptName", laborIssue1.getDeptName());
+ hashMap.put("orderNo", laborIssue1.getOrderNo());
+ hashMap.put("staffId", laborIssue1.getStaffId());
+ hashMap.put("staffName", laborIssue1.getStaffName());
+ hashMap.put("staffNo", laborIssue1.getStaffNo());
+ hashMap.put("dictType", laborIssue1.getDictType());
+ hashMap.put("dictTypeName", laborIssue1.getDictTypeName());
+ hashMap.put("factoryDate", laborIssue1.getFactoryDate() == null ? "" : sdf.format(laborIssue1.getFactoryDate()));
+ hashMap.put("issueDate", laborIssue1.getIssueDate() == null ? "" : sdf.format(laborIssue1.getIssueDate()));
+ hashMap.put("adoptedDate", laborIssue1.getAdoptedDate() == null ? "" : sdf.format(laborIssue1.getAdoptedDate()));
+ hashMap.put("tenantId", laborIssue1.getTenantId());
+ Map<String, List<LaborIssue>> collect1 = v.stream().collect(Collectors.groupingBy(LaborIssue::getDictId));
+ collect1.forEach((k1, v1) -> {
+ hashMap.put(k1, v1.stream()
+ .mapToLong(LaborIssue::getNum)
+ .sum());
+ });
+ records.add(hashMap);
+ });
+ return records;
+ }
+
+ public StartAndEndDateDto getStartAndEndDateDto(Integer season,Date payDate){
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ StartAndEndDateDto startAndEndDateDto = new StartAndEndDateDto();
+ Calendar calendar = Calendar.getInstance();
+ int currentYear = calendar.get(Calendar.YEAR);
+ startAndEndDateDto.setYear(currentYear);
+ if(season != null){
+ switch (season){
+ case 1:
+ startAndEndDateDto.setStartDate(currentYear + "-01-01");
+ startAndEndDateDto.setEndDate(currentYear + "-03-31");
+ startAndEndDateDto.setStartMonth(1);
+ startAndEndDateDto.setEndMonth(3);
+ break;
+ case 2:
+ startAndEndDateDto.setStartDate(currentYear + "-04-01");
+ startAndEndDateDto.setEndDate(currentYear + "-06-30");
+ startAndEndDateDto.setStartMonth(4);
+ startAndEndDateDto.setEndMonth(6);
+ break;
+ case 3:
+ startAndEndDateDto.setStartDate(currentYear + "-07-01");
+ startAndEndDateDto.setEndDate(currentYear + "-09-30");
+ startAndEndDateDto.setStartMonth(7);
+ startAndEndDateDto.setEndMonth(9);
+ break;
+ case 4:
+ startAndEndDateDto.setStartDate(currentYear + "-10-01");
+ startAndEndDateDto.setEndDate(currentYear + "-12-31");
+ startAndEndDateDto.setStartMonth(10);
+ startAndEndDateDto.setEndMonth(12);
+ break;
+ }
+ }
+ if(payDate != null){
+ Date lastDayOfMonth = getLastDayOfMonth(payDate);
+ Date firstDayOfMonth = getFirstDayOfMonth(payDate);
+ startAndEndDateDto.setStartDate(sdf.format(firstDayOfMonth));
+ startAndEndDateDto.setEndDate(sdf.format(lastDayOfMonth));
+ startAndEndDateDto.setStartMonth(payDate.getMonth() + 1);
+ startAndEndDateDto.setEndMonth(payDate.getMonth() + 1);
+ }
+ return startAndEndDateDto;
+ }
+
+ @Override
+ public StatisticsLaborIssue statistics(StatisticsLaborIssue req) throws Exception{
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ StatisticsLaborIssue statisticsLaborIssue = new StatisticsLaborIssue();
+ StartAndEndDateDto startAndEndDateDto = getStartAndEndDateDto(req.getSeason(), req.getIssueDate());
+ LambdaQueryWrapper<LaborIssue> laborIssueLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ if(req.getSeason() != null || req.getIssueDate() != null){
+ laborIssueLambdaQueryWrapper.ge(LaborIssue::getIssueDate, startAndEndDateDto.getStartDate())
+ .le(LaborIssue::getIssueDate, startAndEndDateDto.getEndDate());
+ }
+ List<LaborIssue> laborIssues = lavorIssueMapper.selectList(laborIssueLambdaQueryWrapper);
+ if(!CollectionUtils.isEmpty(laborIssues)){
+ Long sum = laborIssues.stream()
+ .filter(laborIssue -> laborIssue.getAdoptedDate() != null)
+ .mapToLong(LaborIssue::getNum)
+ .sum();
+ statisticsLaborIssue.setYlqNum(sum);
+ statisticsLaborIssue.setWlqNum(laborIssues.stream()
+ .filter(laborIssue -> laborIssue.getAdoptedDate() == null)
+ .mapToLong(LaborIssue::getNum)
+ .sum());
+ Date currentDate = new Date();
+ Date parse = sdf.parse(sdf.format(currentDate));
+ statisticsLaborIssue.setCsylqNum(laborIssues.stream()
+ .filter(laborIssue -> laborIssue.getIssueDate() != null
+ && laborIssue.getAdoptedDate() != null
+ && (laborIssue.getIssueDate().before(laborIssue.getAdoptedDate())))
+ .mapToLong(LaborIssue::getNum)
+ .sum());
+ statisticsLaborIssue.setCswlqNum(laborIssues.stream()
+ .filter(laborIssue -> laborIssue.getIssueDate() != null
+ && laborIssue.getIssueDate().before(parse)
+ && laborIssue.getAdoptedDate() == null)
+ .mapToLong(LaborIssue::getNum)
+ .sum());
+ }
+ return statisticsLaborIssue;
+ }
+
+ @Autowired
+ private SysDictDataMapper sysDictDataMapper;
+
+ @Override
+ public void exportCopy(HttpServletResponse response, LaborIssue laborIssue) throws UnsupportedEncodingException {
+ List<SysDictData> sys_lavor_issue = sysDictDataMapper.selectDictDataByType("sys_lavor_issue");
+ if(CollectionUtils.isEmpty(sys_lavor_issue)){
+ throw new RuntimeException("瀛楀吀鏁版嵁涓虹┖");
+ }
+ StartAndEndDateDto startAndEndDateDto = getStartAndEndDateDto(laborIssue.getSeason(), laborIssue.getIssueDate());
+ BeanUtils.copyProperties(startAndEndDateDto, laborIssue);
+ List<LaborIssue> laborIssues = lavorIssueMapper.list(laborIssue);
+ if (CollectionUtils.isEmpty(laborIssues)) {
+ throw new RuntimeException("鏁版嵁涓虹┖");
+ }
+ Map<String, List<LaborIssue>> laborIssueMap = laborIssues.stream()
+ .collect(Collectors.groupingBy(LaborIssue::getStaffNo));
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("UTF-8");
+ // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
+ String fileName = URLEncoder.encode("鍔充繚鍙拌处", "UTF-8");
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+
+ try {
+ //鏂板缓ExcelWriter
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
+ .registerWriteHandler(new CustomCellStyleHandler())
+ .registerWriteHandler(new ConfigurableMergeStrategy(exportExternalPackingListGetMerge(4,sys_lavor_issue.size(),laborIssueMap.size())))
+ .build();
+
+ List<List<List<String>>> data = completeExternalPackingList(laborIssueMap, sys_lavor_issue,laborIssue);
+
+ for (int i = 0; i < data.size(); i++) {
+ List<List<String>> list = data.get(i);
+
+ //鑾峰彇sheet0瀵硅薄
+ WriteSheet mainSheet = EasyExcel.writerSheet(i, "鍔充繚鍙拌处" + i).build();
+ //鍚憇heet0鍐欏叆鏁版嵁 浼犲叆绌簂ist杩欐牱鍙鍑鸿〃澶�
+ excelWriter.write(list, mainSheet);
+ }
+
+ //鍏抽棴娴�
+ excelWriter.finish();
+ } catch (IOException e) {
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+
+ @Autowired
+ private SysDeptMapper sysDeptMapper;
+
+
+// 澶勭悊澶栭儴瑁呯鍗曟暟鎹�
+ private List<List<List<String>>> completeExternalPackingList(Map<String, List<LaborIssue>> listMap,List<SysDictData> sys_lavor_issue,LaborIssue obj) {
+ List<List<List<String>>> data = new ArrayList<>();
+ int num = sys_lavor_issue.size();
+
+ List<List<String>> item = new ArrayList<>();
+ List<String> list = new ArrayList<>();
+ list.add("閮ㄩ棬");
+ list.add("");
+ list.add("浼佷笟绠$悊绉�");
+ list.add("");
+ list.add("浼佷笟绠$悊绉�" + obj.getYear() + "骞�" + obj.getStartMonth() + "鏈�-" + obj.getYear() + "骞�" + obj.getEndMonth() +"鏈堝姵淇濆彂鏀捐鍒掕〃");
+ for (int i = 1; i <= num; i++){
+ list.add("");
+ }
+ item.add(list);
+
+ List<String> list1 = new ArrayList<>();
+ list1.add("寮�濮嬪勾/鏈�");
+ list1.add("");
+ list1.add("缁撴潫骞�/鏈�");
+ list1.add("");
+ for (int i = 0; i <= num; i++){
+ list1.add("");
+ }
+ item.add(list1);
+
+ List<String> list2 = new ArrayList<>();
+ list2.add(obj.getYear().toString());
+ list2.add(obj.getStartMonth().toString());
+ list2.add(obj.getYear().toString());
+ list2.add(obj.getEndMonth().toString());
+ for (int i = 0; i <= num; i++){
+ list.add("");
+ }
+ item.add(list2);
+
+ List<String> list3 = new ArrayList<>();
+ list3.add("閮ㄩ棬鍚嶇О");
+ list3.add("");
+ list3.add("濮撳悕");
+ list3.add("宸ュ彿");
+ for (SysDictData sysDictData : sys_lavor_issue) {
+ list3.add(sysDictData.getDictLabel());
+ }
+ list3.add("绛惧悕");
+ item.add(list3);
+
+ // 濉��
+ SysDept sysDept = sysDeptMapper.selectDeptById(SecurityUtils.getLoginUser().getTenantId());
+ List<String> sumList = new ArrayList<>();
+ AtomicInteger i = new AtomicInteger();
+ listMap.forEach((key, value) -> {
+ List<String> list4 = new ArrayList<>();
+ list4.add(sysDept.getDeptName());
+ list4.add("");
+ list4.add(value.get(0).getStaffName());
+ list4.add(value.get(0).getStaffNo());
+ int j = 0;
+ for (SysDictData sysDictData : sys_lavor_issue) {
+ list4.add(value.stream().filter(laborIssue -> laborIssue.getDictId().equals(sysDictData.getDictValue()))
+ .mapToLong(LaborIssue::getNum)
+ .sum()
+ + "");
+ if(i.get() == 0){
+ sumList.add(value.stream().filter(laborIssue -> laborIssue.getDictId().equals(sysDictData.getDictValue()))
+ .mapToLong(LaborIssue::getNum)
+ .sum()
+ + "");
+ }else {
+ sumList.set(j,(Long.parseLong(sumList.get(j)) + value.stream().filter(laborIssue -> laborIssue.getDictId().equals(sysDictData.getDictValue()))
+ .mapToLong(LaborIssue::getNum)
+ .sum())
+ + "");
+ }
+ j++;
+ }
+ i.getAndIncrement();
+ item.add(list4);
+ });
+ List<String> list5 = new ArrayList<>();
+ list5.add("鍚堣");
+ list5.add("");
+ list5.add("");
+ list5.add("");
+ for (int h = 0; h < sumList.size(); h++){
+ list5.add(sumList.get(h));
+ }
+ item.add(list5);
+ data.add(item);
+ return data;
+ }
+
+ /**
+ * 澶栭儴瑁呯鍗曞悎骞跺崟鍏冩牸
+ *
+ * @return
+ */
+ private List<CellRangeAddress> exportExternalPackingListGetMerge(Integer rowNum,Integer num,Integer listSize) {
+ List<CellRangeAddress> mergeRegions = new ArrayList<>();
+ mergeRegions.add(new CellRangeAddress(0, 0, 0, 1)); // 鍚堝苟A1:Q2
+ mergeRegions.add(new CellRangeAddress(0, 0, 2, 3)); // 鍚堝苟A4:Q4
+
+ mergeRegions.add(new CellRangeAddress(0, 2, rowNum, rowNum + num)); // 鍚堝苟A5:B6
+ mergeRegions.add(new CellRangeAddress(1, 1, 0, 1)); // 鍚堝苟C5:E6
+ mergeRegions.add(new CellRangeAddress(1, 1, 2, 3)); // 鍚堝苟F5:G6
+ mergeRegions.add(new CellRangeAddress(3, 3, 0, 1)); // 鍚堝苟H5:I6
+ for (int i = 1; i <= listSize; i++) {
+ mergeRegions.add(new CellRangeAddress(3 + i, 3 + i, 0, 1));
+ }
+ mergeRegions.add(new CellRangeAddress(rowNum + listSize, rowNum + listSize, 0, 3));
+ return mergeRegions;
+ }
+
+ public Date getLastDayOfMonth(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date); // 璁剧疆浼犲叆鐨凞ate
+ calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 璁剧疆涓哄綋鏈堟渶鍚庝竴澶�
+ return calendar.getTime(); // 杩斿洖Date瀵硅薄
+ }
+
+ /**
+ * 鑾峰彇褰撴湀绗竴澶�
+ * @param date
+ * @return
+ */
+ public Date getFirstDayOfMonth(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date); // 璁剧疆浼犲叆鐨凞ate
+ calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 璁剧疆涓哄綋鏈堢涓�澶�
+ return calendar.getTime(); // 杩斿洖Date瀵硅薄
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java
new file mode 100644
index 0000000..866636b
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java
@@ -0,0 +1,62 @@
+package com.ruoyi.measuringinstrumentledger.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsDto;
+import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord;
+import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/spareParts")
+@Api(tags = "澶囦欢鍒嗙被鎺ュ彛")
+public class SparePartsController {
+ @Autowired
+ private SparePartsService sparePartsService;
+ @GetMapping("/getTree")
+ @ApiOperation("澶囦欢鍒嗙被-鏍戠粨鏋�")
+ public AjaxResult getTree(){
+ List<SparePartsDto> tree = sparePartsService.getTree();
+ return AjaxResult.success(tree);
+ }
+ @GetMapping("/listPage")
+ @ApiOperation("澶囦欢鍒嗙被-鍒嗛〉鏌ヨ")
+ public AjaxResult listPage(Page page, SpareParts spareParts){
+ IPage<SparePartsDto> listPage = sparePartsService.listPage(page, spareParts);
+ return AjaxResult.success(listPage);
+ }
+// @GetMapping("/list")
+// @ApiOperation("澶囦欢鍒嗙被-鏌ヨ鎵�鏈�")
+// public AjaxResult list(){
+// return AjaxResult.success(sparePartsService.list());
+// }
+ @PostMapping("/add")
+ @ApiOperation("澶囦欢鍒嗙被-娣诲姞")
+ @Log(title = "澶囦欢鍒嗙被-娣诲姞", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody SpareParts spareParts){
+ return AjaxResult.success(sparePartsService.save(spareParts));
+ }
+ @PostMapping("/update")
+ @ApiOperation("澶囦欢鍒嗙被-鏇存柊")
+ @Log(title = "澶囦欢鍒嗙被-鏇存柊", businessType = BusinessType.UPDATE)
+ public AjaxResult update(@RequestBody SpareParts spareParts){
+ return AjaxResult.success(sparePartsService.updateById(spareParts));
+ }
+ @DeleteMapping("/delete/{id}")
+ @ApiOperation("澶囦欢鍒嗙被-鍒犻櫎")
+ @Log(title = "澶囦欢鍒嗙被-鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult delete(@PathVariable Long id){
+ return AjaxResult.success(sparePartsService.removeById(id));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsDto.java b/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsDto.java
new file mode 100644
index 0000000..cf9ac86
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.measuringinstrumentledger.dto;
+
+import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SparePartsDto extends SpareParts {
+ /**
+ * 澶囦欢鍒嗙被鐖跺悕绉�
+ */
+ private String parentName;
+ private List<SparePartsDto> children;
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java b/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java
new file mode 100644
index 0000000..fa52570
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.measuringinstrumentledger.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsDto;
+import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
+import io.lettuce.core.dynamic.annotation.Param;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SparePartsMapper extends BaseMapper<SpareParts> {
+ IPage<SparePartsDto> listPage(Page page,@Param("spareParts") SpareParts spareParts);
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SpareParts.java b/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SpareParts.java
new file mode 100644
index 0000000..21117bd
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SpareParts.java
@@ -0,0 +1,59 @@
+package com.ruoyi.measuringinstrumentledger.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.time.LocalDateTime;
+
+@Data
+@TableName("spare_parts")
+public class SpareParts {
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 澶囦欢鍒嗙被鍚嶇О
+ */
+ private String name;
+ /**
+ * 澶囦欢鍒嗙被缂栧彿
+ */
+ private String sparePartsNo;
+ /**
+ * 澶囦欢鐖秈d
+ */
+ private Long parentId;
+ /**
+ * 澶囦欢鐘舵��
+ */
+ private String status;
+ /**
+ * 澶囦欢鍒嗙被鎻忚堪
+ */
+ private String description;
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鏇存柊浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("绉熸埛id")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java
new file mode 100644
index 0000000..6185db4
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.measuringinstrumentledger.service;
+
+
+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.measuringinstrumentledger.dto.SparePartsDto;
+import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
+
+import java.util.List;
+
+public interface SparePartsService extends IService<SpareParts> {
+ IPage<SparePartsDto> listPage(Page page, SpareParts spareParts);
+
+ List<SparePartsDto> getTree();
+}
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 e9b191c..88e3bbc 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerRecordServiceImpl.java
@@ -144,12 +144,15 @@
try {
// 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級
- Files.move(
- Paths.get(tempFile.getTempPath()),
- formalFilePath,
- StandardCopyOption.REPLACE_EXISTING,
- StandardCopyOption.ATOMIC_MOVE
- );
+// Files.move(
+// Paths.get(tempFile.getTempPath()),
+// formalFilePath,
+// StandardCopyOption.REPLACE_EXISTING,
+// StandardCopyOption.ATOMIC_MOVE
+// );
+ // 鍘熷瓙绉诲姩澶辫触锛屼娇鐢ㄥ鍒�+鍒犻櫎
+ Files.copy(Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING);
+ Files.deleteIfExists(Paths.get(tempFile.getTempPath()));
log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
// 鏇存柊鏂囦欢璁板綍锛堝叧鑱斿埌涓氬姟ID锛�
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 c59f3c1..72ce890 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java
@@ -189,12 +189,15 @@
try {
// 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級
- Files.move(
- Paths.get(tempFile.getTempPath()),
- formalFilePath,
- StandardCopyOption.REPLACE_EXISTING,
- StandardCopyOption.ATOMIC_MOVE
- );
+// Files.move(
+// Paths.get(tempFile.getTempPath()),
+// formalFilePath,
+// StandardCopyOption.REPLACE_EXISTING,
+// StandardCopyOption.ATOMIC_MOVE
+// );
+ // 鍘熷瓙绉诲姩澶辫触锛屼娇鐢ㄥ鍒�+鍒犻櫎
+ Files.copy(Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING);
+ Files.deleteIfExists(Paths.get(tempFile.getTempPath()));
log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
// 鏇存柊鏂囦欢璁板綍锛堝叧鑱斿埌涓氬姟ID锛�
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java
new file mode 100644
index 0000000..8660237
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java
@@ -0,0 +1,73 @@
+package com.ruoyi.measuringinstrumentledger.service.impl;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsDto;
+import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper;
+import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class SparePartsServiceImpl extends ServiceImpl<SparePartsMapper, SpareParts> implements SparePartsService {
+ @Autowired
+ private SparePartsMapper sparePartsMapper;
+ @Override
+ public IPage<SparePartsDto> listPage(Page page, SpareParts spareParts) {
+ return sparePartsMapper.listPage(page,spareParts);
+ }
+
+ @Override
+ public List<SparePartsDto> getTree() {
+ SpareParts spareParts = new SpareParts();
+ IPage<SparePartsDto> sparePartsDtoIPage = sparePartsMapper.listPage(new Page<>(1, -1), spareParts);
+ List<SparePartsDto> records = sparePartsDtoIPage.getRecords();
+ return buildTree(records);
+ }
+
+
+ /**
+ * 灏嗘墎骞崇粨鏋勬暟鎹浆鎹负鏍戝舰缁撴瀯
+ * @param flatData 鎵佸钩鑺傜偣鍒楄〃
+ * @return 鏍戝舰缁撴瀯鏍硅妭鐐瑰垪琛�
+ */
+ public static List<SparePartsDto> buildTree(List<SparePartsDto> flatData) {
+ List<SparePartsDto> result = new ArrayList<>();
+ if (flatData == null || flatData.isEmpty()) {
+ return result; // 绌鸿緭鍏ョ洿鎺ヨ繑鍥炵┖鍒楄〃
+ }
+
+ // 1. 鍒涘缓鑺傜偣鏄犲皠琛紝瀛樺偍鎵�鏈夎妭鐐瑰苟鍒濆鍖栧瓙鑺傜偣鍒楄〃
+ Map<Long, SparePartsDto> nodeMap = new HashMap<>();
+ for (SparePartsDto node : flatData) {
+ // 纭繚瀛愯妭鐐瑰垪琛ㄥ垵濮嬪寲(閬垮厤绌烘寚閽堝紓甯�)
+ if (node.getChildren() == null) {
+ node.setChildren(new ArrayList<>());
+ }
+ nodeMap.put(node.getId(), node);
+ }
+
+ // 2. 鏋勫缓鏍戝舰缁撴瀯
+ for (SparePartsDto node : flatData) {
+ Long parentId = node.getParentId();
+ if (parentId == null || !nodeMap.containsKey(parentId)) {
+ // 鏃犵埗鑺傜偣鎴栫埗鑺傜偣涓嶅瓨鍦紝浣滀负鏍硅妭鐐�
+ result.add(node);
+ } else {
+ // 鏈夌埗鑺傜偣锛屾坊鍔犲埌鐖惰妭鐐圭殑瀛愯妭鐐瑰垪琛�
+ SparePartsDto parentNode = nodeMap.get(parentId);
+ parentNode.getChildren().add(node);
+ }
+ }
+
+ return result;
+ }
+}
diff --git a/src/main/java/com/ruoyi/oA/controller/OaProjectController.java b/src/main/java/com/ruoyi/oA/controller/OaProjectController.java
new file mode 100644
index 0000000..8862fb5
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/controller/OaProjectController.java
@@ -0,0 +1,76 @@
+package com.ruoyi.oA.controller;
+
+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 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;
+
+@Api(tags = "oA椤圭洰绠$悊")
+@RestController
+@RequestMapping("/oA/project")
+public class OaProjectController {
+ @Autowired
+ private OaProjectService oaProjectService;
+
+ @ApiOperation("鑾峰彇椤圭洰鍒楄〃")
+ @GetMapping("/listPage")
+ public AjaxResult listPage(Page page, OaProjectDto oaProjectDto) {
+ IPage<OaProjectDto> listPage = oaProjectService.listPage(page, oaProjectDto);
+ return AjaxResult.success(listPage);
+ }
+ @ApiOperation("鑾峰彇椤圭洰鍒楄〃璇︽儏")
+ @GetMapping("/getList")
+ public AjaxResult getList(Page page, OaProjectDto oaProjectDto) {
+ IPage<OaProjectDto> listPage = oaProjectService.listPage(page, oaProjectDto);
+ HashMap<Object, Object> Map = new HashMap<>();
+ listPage.getRecords().forEach(item -> {
+ Map.put(item.getProjectId(), item);
+ });
+ return AjaxResult.success(Map);
+ }
+ @ApiOperation("澧炴坊椤圭洰")
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody OaProject oaProject) {
+ boolean save = oaProjectService.save(oaProject);
+ return AjaxResult.success(save);
+ }
+ @ApiOperation("鍒犻櫎椤圭洰")
+ @DeleteMapping("/delete/{id}")
+ public AjaxResult delete(@PathVariable Long id) {
+ boolean remove = oaProjectService.deleteById(id);
+ return AjaxResult.success(remove);
+ }
+ @ApiOperation("鏇存柊椤圭洰")
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody OaProject oaProject) {
+ boolean update = oaProjectService.updateById(oaProject);
+ return AjaxResult.success(update);
+ }
+// @ApiOperation("鏍规嵁ID鑾峰彇椤圭洰璇︽儏")
+// @GetMapping("/getById")
+// public AjaxResult getById(Long id) {
+// OaProject oaProject = oaProjectService.getById(id);
+// return AjaxResult.success(oaProject);
+// }
+ @ApiOperation("瀵煎嚭鎵�閫夐」鐩�")
+ @PostMapping("/export/{ids}")
+ public void export(HttpServletResponse response,@PathVariable("ids") List<Long> ids) {
+ if (CollectionUtils.isEmpty(ids)) {
+ throw new IllegalArgumentException("瀵煎嚭椤圭洰鍒楄〃涓嶈兘涓虹┖");
+ }
+ oaProjectService.export(response, ids);
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/oA/controller/OaProjectPhaseController.java b/src/main/java/com/ruoyi/oA/controller/OaProjectPhaseController.java
new file mode 100644
index 0000000..d857f52
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/controller/OaProjectPhaseController.java
@@ -0,0 +1,41 @@
+package com.ruoyi.oA.controller;
+
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.oA.pojo.OaProjectPhase;
+import com.ruoyi.oA.service.OaProjectPhaseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@Api(tags = "oA椤圭洰闃舵绠$悊")
+@RestController
+@RequestMapping("/oA/projectPhase")
+public class OaProjectPhaseController {
+ @Autowired
+ private OaProjectPhaseService oaProjectPhaseService;
+
+ @ApiOperation("鏂板椤圭洰闃舵")
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody OaProjectPhase oaProjectPhase) {
+ return AjaxResult.success(oaProjectPhaseService.save(oaProjectPhase));
+ }
+
+ @ApiOperation("鍒犻櫎椤圭洰闃舵")
+ @DeleteMapping("/delete/{phaseId}")
+ public AjaxResult delete(@PathVariable Integer phaseId) {
+ return AjaxResult.success(oaProjectPhaseService.deleteById(phaseId));
+ }
+
+ @ApiOperation("鏇存柊椤圭洰闃舵")
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody OaProjectPhase oaProjectPhase) {
+ return AjaxResult.success(oaProjectPhaseService.updateById(oaProjectPhase));
+ }
+
+ @ApiOperation("鏍规嵁椤圭洰id鏌ヨ椤圭洰闃舵鍒楄〃")
+ @GetMapping("/listByProjectId/{projectId}")
+ public AjaxResult listByProjectId(@PathVariable Integer projectId) {
+ return AjaxResult.success(oaProjectPhaseService.listByProjectId(projectId));
+ }
+}
diff --git a/src/main/java/com/ruoyi/oA/controller/OaProjectPhaseTaskController.java b/src/main/java/com/ruoyi/oA/controller/OaProjectPhaseTaskController.java
new file mode 100644
index 0000000..c0f7fc1
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/controller/OaProjectPhaseTaskController.java
@@ -0,0 +1,41 @@
+package com.ruoyi.oA.controller;
+
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.oA.pojo.OaProjectPhaseTask;
+import com.ruoyi.oA.service.OaProjectPhaseTaskService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@Api(tags = "oA椤圭洰闃舵浠诲姟绠$悊")
+@RestController
+@RequestMapping("/oA/projectPhaseTask")
+public class OaProjectPhaseTaskController {
+ @Autowired
+ private OaProjectPhaseTaskService oaProjectPhaseTaskService;
+
+ @ApiOperation("鏂板椤圭洰闃舵浠诲姟")
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody OaProjectPhaseTask oaProjectPhaseTask) {
+ return AjaxResult.success(oaProjectPhaseTaskService.save(oaProjectPhaseTask));
+ }
+
+ @ApiOperation("鏍规嵁椤圭洰闃舵id鏌ヨ椤圭洰闃舵浠诲姟鍒楄〃")
+ @GetMapping("/listByPhaseId/{phaseId}")
+ public AjaxResult listByPhaseId(@PathVariable Integer phaseId) {
+ return AjaxResult.success(oaProjectPhaseTaskService.listByPhaseId(phaseId));
+ }
+
+ @ApiOperation("鍒犻櫎椤圭洰闃舵浠诲姟")
+ @DeleteMapping("/delete/{taskId}")
+ public AjaxResult delete(@PathVariable Integer taskId) {
+ return AjaxResult.success(oaProjectPhaseTaskService.removeById(taskId));
+ }
+
+ @ApiOperation("鏇存柊椤圭洰闃舵浠诲姟")
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody OaProjectPhaseTask oaProjectPhaseTask) {
+ return AjaxResult.success(oaProjectPhaseTaskService.updateById(oaProjectPhaseTask));
+ }
+}
diff --git a/src/main/java/com/ruoyi/oA/dto/OaProjectDto.java b/src/main/java/com/ruoyi/oA/dto/OaProjectDto.java
new file mode 100644
index 0000000..0f90faf
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/dto/OaProjectDto.java
@@ -0,0 +1,26 @@
+package com.ruoyi.oA.dto;
+
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.oA.pojo.OaProject;
+import com.ruoyi.oA.pojo.OaProjectPhase;
+import com.ruoyi.oA.pojo.OaProjectPhaseTask;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class OaProjectDto extends OaProject {
+ /**
+ * 璐熻矗浜哄悕绉�
+ */
+ @Excel(name = "璐熻矗浜哄悕绉�")
+ private String managerName;
+ /**
+ * 椤圭洰闃舵鍒楄〃
+ */
+ private List<OaProjectPhaseDto> oaProjectPhasesDto;
+// /**
+// * 椤圭洰闃舵浠诲姟鍒楄〃
+// */
+// private List<OaProjectPhaseTask> oaProjectPhaseTasks;
+}
diff --git a/src/main/java/com/ruoyi/oA/dto/OaProjectPhaseDto.java b/src/main/java/com/ruoyi/oA/dto/OaProjectPhaseDto.java
new file mode 100644
index 0000000..4ef163e
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/dto/OaProjectPhaseDto.java
@@ -0,0 +1,12 @@
+package com.ruoyi.oA.dto;
+
+import com.ruoyi.oA.pojo.OaProjectPhase;
+import com.ruoyi.oA.pojo.OaProjectPhaseTask;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class OaProjectPhaseDto extends OaProjectPhase {
+ private List<OaProjectPhaseTask> oaProjectPhaseTasks;
+}
diff --git a/src/main/java/com/ruoyi/oA/mapper/OaProjectMapper.java b/src/main/java/com/ruoyi/oA/mapper/OaProjectMapper.java
new file mode 100644
index 0000000..2114cef
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/mapper/OaProjectMapper.java
@@ -0,0 +1,27 @@
+package com.ruoyi.oA.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.oA.dto.OaProjectDto;
+import com.ruoyi.oA.pojo.OaProject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author ywx
+* @description 閽堝琛ㄣ�恛a_project(OA绯荤粺-椤圭洰浠诲姟鍗忓悓-椤圭洰琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 09:18:46
+* @Entity com.ruoyi.oA.pojo.OaProject
+*/
+public interface OaProjectMapper extends BaseMapper<OaProject> {
+
+ IPage<OaProjectDto> listPage(Page page,@Param("req") OaProjectDto oaProjectDto);
+
+ List<OaProjectDto> selectByIds(List<Long> ids);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/oA/mapper/OaProjectPhaseMapper.java b/src/main/java/com/ruoyi/oA/mapper/OaProjectPhaseMapper.java
new file mode 100644
index 0000000..41f6ab0
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/mapper/OaProjectPhaseMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.oA.mapper;
+
+import com.ruoyi.oA.pojo.OaProjectPhase;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author ywx
+* @description 閽堝琛ㄣ�恛a_project_phase(OA绯荤粺-椤圭洰闃舵琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 09:18:46
+* @Entity com.ruoyi.oA.pojo.OaProjectPhase
+*/
+public interface OaProjectPhaseMapper extends BaseMapper<OaProjectPhase> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/oA/mapper/OaProjectPhaseTaskMapper.java b/src/main/java/com/ruoyi/oA/mapper/OaProjectPhaseTaskMapper.java
new file mode 100644
index 0000000..b357c76
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/mapper/OaProjectPhaseTaskMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.oA.mapper;
+
+import com.ruoyi.oA.pojo.OaProjectPhaseTask;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author ywx
+* @description 閽堝琛ㄣ�恛a_project_phase_task(OA绯荤粺-椤圭洰闃舵-浠诲姟琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-24 09:18:46
+* @Entity com.ruoyi.oA.pojo.OaProjectPhaseTask
+*/
+public interface OaProjectPhaseTaskMapper extends BaseMapper<OaProjectPhaseTask> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/oA/pojo/OaProject.java b/src/main/java/com/ruoyi/oA/pojo/OaProject.java
new file mode 100644
index 0000000..376f58f
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/pojo/OaProject.java
@@ -0,0 +1,107 @@
+package com.ruoyi.oA.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * OA绯荤粺-椤圭洰浠诲姟鍗忓悓-椤圭洰琛�
+ * @TableName oa_project
+ */
+@TableName(value ="oa_project")
+@Data
+public class OaProject implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ private Integer projectId;
+
+ /**
+ * 椤圭洰鍚嶇О
+ */
+ @Excel(name = "椤圭洰鍚嶇О")
+ private String projectName;
+
+ /**
+ * 椤圭洰鎻忚堪
+ */
+ @Excel(name = "椤圭洰鎻忚堪")
+ private String description;
+
+ /**
+ * 寮�濮嬫椂闂�
+ */
+ @Excel(name = "寮�濮嬫椂闂�")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate startDate;
+
+ /**
+ * 缁撴潫鏃堕棿
+ */
+ @Excel(name = "缁撴潫鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate endDate;
+
+ /**
+ * 鐘舵��
+ */
+ @Excel(name = "鐘舵��")
+ private String status;
+
+ /**
+ * 瀹屾垚搴�
+ */
+ @Excel(name = "瀹屾垚搴�")
+ private Integer completionRate;
+
+ /**
+ * 璐熻矗浜篿d
+ */
+ private Long managerId;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 淇敼鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/oA/pojo/OaProjectPhase.java b/src/main/java/com/ruoyi/oA/pojo/OaProjectPhase.java
new file mode 100644
index 0000000..04326ed
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/pojo/OaProjectPhase.java
@@ -0,0 +1,92 @@
+package com.ruoyi.oA.pojo;
+
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * OA绯荤粺-椤圭洰闃舵琛�
+ * @TableName oa_project_phase
+ */
+@TableName(value ="oa_project_phase")
+@Data
+public class OaProjectPhase implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ private Integer phaseId;
+
+ /**
+ * 椤圭洰闃舵鍚嶇О
+ */
+ private String phaseName;
+
+ /**
+ * oa_project琛╥d
+ */
+ private Integer oaProjectId;
+
+ /**
+ * 寮�濮嬫椂闂�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate startDate;
+
+ /**
+ * 缁撴潫鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate endDate;
+
+ /**
+ * 鐘舵��
+ */
+ private String status;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 淇敼鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/oA/pojo/OaProjectPhaseTask.java b/src/main/java/com/ruoyi/oA/pojo/OaProjectPhaseTask.java
new file mode 100644
index 0000000..8241ce5
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/pojo/OaProjectPhaseTask.java
@@ -0,0 +1,117 @@
+package com.ruoyi.oA.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * OA绯荤粺-椤圭洰闃舵-浠诲姟琛�
+ * @TableName oa_project_phase_task
+ */
+@TableName(value ="oa_project_phase_task")
+@Data
+public class OaProjectPhaseTask implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ private Integer taskId;
+
+ /**
+ * 椤圭洰闃舵浠诲姟鍚嶇О
+ */
+ private String taskName;
+
+ /**
+ * oa_project_phase琛╥d
+ */
+ private Integer phaseId;
+
+ /**
+ * 寮�濮嬫椂闂�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate startDate;
+
+ /**
+ * 缁撴潫鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate endDate;
+
+ /**
+ * 鐩爣浠诲姟瀹屾垚鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate targetDate;
+
+ /**
+ * 鐩爣鍊�
+ */
+ private Integer targetValue;
+
+ /**
+ * 褰撳墠鍊�
+ */
+ private Integer currentValue;
+
+ /**
+ * 鍗曚綅
+ */
+ private String unit;
+
+ /**
+ * 鐘舵��
+ */
+ private String status;
+
+ /**
+ * 瀹屾垚搴�
+ */
+ private Integer completionRate;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 淇敼鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/oA/service/OaProjectPhaseService.java b/src/main/java/com/ruoyi/oA/service/OaProjectPhaseService.java
new file mode 100644
index 0000000..7914080
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/service/OaProjectPhaseService.java
@@ -0,0 +1,21 @@
+package com.ruoyi.oA.service;
+
+import com.ruoyi.oA.dto.OaProjectPhaseDto;
+import com.ruoyi.oA.pojo.OaProjectPhase;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import java.util.List;
+
+/**
+* @author ywx
+* @description 閽堝琛ㄣ�恛a_project_phase(OA绯荤粺-椤圭洰闃舵琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 09:18:46
+*/
+public interface OaProjectPhaseService extends IService<OaProjectPhase> {
+
+ List<OaProjectPhaseDto> listByProjectId(Integer oaProjectId);
+
+ boolean deleteById(Integer phaseId);
+}
diff --git a/src/main/java/com/ruoyi/oA/service/OaProjectPhaseTaskService.java b/src/main/java/com/ruoyi/oA/service/OaProjectPhaseTaskService.java
new file mode 100644
index 0000000..225d12e
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/service/OaProjectPhaseTaskService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.oA.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.oA.pojo.OaProjectPhaseTask;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+* @author ywx
+* @description 閽堝琛ㄣ�恛a_project_phase_task(OA绯荤粺-椤圭洰闃舵-浠诲姟琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 09:18:46
+*/
+public interface OaProjectPhaseTaskService extends IService<OaProjectPhaseTask> {
+
+ List<OaProjectPhaseTask> listByPhaseId(Integer phaseId);
+}
diff --git a/src/main/java/com/ruoyi/oA/service/OaProjectService.java b/src/main/java/com/ruoyi/oA/service/OaProjectService.java
new file mode 100644
index 0000000..32ba593
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/service/OaProjectService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.oA.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.oA.dto.OaProjectDto;
+import com.ruoyi.oA.pojo.OaProject;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+* @author ywx
+* @description 閽堝琛ㄣ�恛a_project(OA绯荤粺-椤圭洰浠诲姟鍗忓悓-椤圭洰琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-24 09:18:46
+*/
+public interface OaProjectService extends IService<OaProject> {
+
+ IPage<OaProjectDto> listPage(Page page, OaProjectDto oaProjectDto);
+
+ void export(HttpServletResponse response, List<Long> ids);
+
+ boolean deleteById(Long id);
+}
diff --git a/src/main/java/com/ruoyi/oA/service/impl/OaProjectPhaseServiceImpl.java b/src/main/java/com/ruoyi/oA/service/impl/OaProjectPhaseServiceImpl.java
new file mode 100644
index 0000000..b462f36
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/service/impl/OaProjectPhaseServiceImpl.java
@@ -0,0 +1,62 @@
+package com.ruoyi.oA.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.oA.dto.OaProjectPhaseDto;
+import com.ruoyi.oA.pojo.OaProjectPhase;
+import com.ruoyi.oA.pojo.OaProjectPhaseTask;
+import com.ruoyi.oA.service.OaProjectPhaseService;
+import com.ruoyi.oA.mapper.OaProjectPhaseMapper;
+import com.ruoyi.oA.service.OaProjectPhaseTaskService;
+import lombok.val;
+import org.hibernate.validator.constraints.br.TituloEleitoral;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+* @author ywx
+* @description 閽堝琛ㄣ�恛a_project_phase(OA绯荤粺-椤圭洰闃舵琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 09:18:46
+*/
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class OaProjectPhaseServiceImpl extends ServiceImpl<OaProjectPhaseMapper, OaProjectPhase>
+ implements OaProjectPhaseService{
+ @Autowired
+ private OaProjectPhaseMapper oaProjectPhaseMapper;
+ @Autowired
+ private OaProjectPhaseTaskService oaProjectPhaseTaskService;
+
+ @Override
+ public List<OaProjectPhaseDto> listByProjectId(Integer oaProjectId) {
+ List<OaProjectPhase> oaProjectPhases = oaProjectPhaseMapper.selectList(new LambdaQueryWrapper<OaProjectPhase>()
+ .eq(OaProjectPhase::getOaProjectId, oaProjectId));
+ List<OaProjectPhaseDto> collect = oaProjectPhases.stream().map(oaProjectPhase -> {
+ OaProjectPhaseDto oaProjectPhaseDto = new OaProjectPhaseDto();
+ BeanUtils.copyProperties(oaProjectPhase, oaProjectPhaseDto);
+// List<OaProjectPhaseTask> oaProjectPhaseTasks = oaProjectPhaseTaskService.listByPhaseId(oaProjectPhaseDto.getPhaseId());
+ oaProjectPhaseDto.setOaProjectPhaseTasks(oaProjectPhaseTaskService.listByPhaseId(oaProjectPhaseDto.getPhaseId()));
+ return oaProjectPhaseDto;
+ }).collect(Collectors.toList());
+ return collect;
+ }
+
+ @Override
+ public boolean deleteById(Integer phaseId) {
+ // 鍏堝垹闄ら」鐩樁娈典笅鐨勪换鍔�
+ oaProjectPhaseTaskService.remove(new LambdaQueryWrapper<OaProjectPhaseTask>()
+ .eq(OaProjectPhaseTask::getPhaseId, phaseId));
+ return oaProjectPhaseMapper.deleteById(phaseId) > 0;
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/oA/service/impl/OaProjectPhaseTaskServiceImpl.java b/src/main/java/com/ruoyi/oA/service/impl/OaProjectPhaseTaskServiceImpl.java
new file mode 100644
index 0000000..625e8d8
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/service/impl/OaProjectPhaseTaskServiceImpl.java
@@ -0,0 +1,33 @@
+package com.ruoyi.oA.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.oA.pojo.OaProjectPhaseTask;
+import com.ruoyi.oA.service.OaProjectPhaseTaskService;
+import com.ruoyi.oA.mapper.OaProjectPhaseTaskMapper;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+* @author ywx
+* @description 閽堝琛ㄣ�恛a_project_phase_task(OA绯荤粺-椤圭洰闃舵-浠诲姟琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 09:18:46
+*/
+@Service
+public class OaProjectPhaseTaskServiceImpl extends ServiceImpl<OaProjectPhaseTaskMapper, OaProjectPhaseTask>
+ implements OaProjectPhaseTaskService{
+
+
+ @Override
+ public List<OaProjectPhaseTask> listByPhaseId(Integer phaseId) {
+ return baseMapper.selectList(new LambdaQueryWrapper<OaProjectPhaseTask>()
+ .eq(OaProjectPhaseTask::getPhaseId, phaseId));
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/oA/service/impl/OaProjectServiceImpl.java b/src/main/java/com/ruoyi/oA/service/impl/OaProjectServiceImpl.java
new file mode 100644
index 0000000..149c04f
--- /dev/null
+++ b/src/main/java/com/ruoyi/oA/service/impl/OaProjectServiceImpl.java
@@ -0,0 +1,69 @@
+package com.ruoyi.oA.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.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 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;
+
+/**
+* @author ywx
+* @description 閽堝琛ㄣ�恛a_project(OA绯荤粺-椤圭洰浠诲姟鍗忓悓-椤圭洰琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-09-24 09:18:45
+*/
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class OaProjectServiceImpl extends ServiceImpl<OaProjectMapper, OaProject>
+ implements OaProjectService{
+ @Autowired
+ private OaProjectMapper oaProjectMapper;
+ @Autowired
+ private OaProjectPhaseService oaProjectPhaseService;
+
+ @Override
+ public IPage<OaProjectDto> listPage(Page page, OaProjectDto oaProjectDto) {
+ IPage<OaProjectDto> iPage = oaProjectMapper.listPage(page, oaProjectDto);
+ // 椤圭洰闃舵鍒楄〃
+ for (OaProjectDto projectDto : iPage.getRecords()) {
+ projectDto.setOaProjectPhasesDto(oaProjectPhaseService.listByProjectId(projectDto.getProjectId()));
+ }
+ return iPage;
+ }
+
+ @Override
+ public void export(HttpServletResponse response, List<Long> ids) {
+ List<OaProjectDto> list = oaProjectMapper.selectByIds(ids);
+ ExcelUtil<OaProjectDto> util = new ExcelUtil<OaProjectDto>(OaProjectDto.class);
+ util.exportExcel(response, list , "椤圭洰鏁版嵁");
+ }
+
+ @Override
+ public boolean deleteById(Long id) {
+ // 鍏堝垹闄ら」鐩笅鐨勯樁娈�
+ List<OaProjectPhase> oaProjectPhases = oaProjectPhaseService.list(new LambdaQueryWrapper<OaProjectPhase>()
+ .eq(OaProjectPhase::getOaProjectId, id));
+ if (!oaProjectPhases.isEmpty()) {
+ oaProjectPhases.forEach(oaProjectPhase -> {
+ oaProjectPhaseService.deleteById(oaProjectPhase.getPhaseId());
+ });
+ }
+ return oaProjectMapper.deleteById(id) > 0;
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java b/src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java
new file mode 100644
index 0000000..91243f4
--- /dev/null
+++ b/src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java
@@ -0,0 +1,87 @@
+package com.ruoyi.officesupplies.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.officesupplies.pojo.OfficeSupplies;
+import com.ruoyi.officesupplies.service.OfficeSuppliesService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/4 14:16
+ */
+@RestController
+@Api(tags = "鍔炲叕鐗╄祫")
+@RequestMapping("/officeSupplies")
+public class OfficeSuppliesController extends BaseController {
+
+ @Autowired
+ private OfficeSuppliesService officeSuppliesService;
+
+ @GetMapping("/listPage")
+ @ApiOperation("鍔炲叕鐗╄祫-鍒嗛〉鏌ヨ")
+ public AjaxResult listPage(Page page, OfficeSupplies officeSupplies) {
+ return officeSuppliesService.listPage(page, officeSupplies);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("鍔炲叕鐗╄祫-娣诲姞")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult add(@RequestBody OfficeSupplies officeSupplies) {
+ // 鎸夌収褰撳墠鏃堕棿yyyyMMdd + 褰撳ぉ鏂板鏁伴噺 + 1鐢熸垚缂栧彿
+ // 鑾峰彇褰撳ぉ鏂板鏁伴噺
+ long count = officeSuppliesService.count(new LambdaQueryWrapper<OfficeSupplies>()
+ .gt(OfficeSupplies::getCreateTime, LocalDate.now())
+ .lt(OfficeSupplies::getCreateTime, LocalDate.now().plusDays(1)));
+ String code = "WS" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + String.format("%03d", count + 1);
+ officeSupplies.setCode(code);
+ officeSupplies.setStatus(1);
+ officeSupplies.setApplyTime(new Date());
+ return officeSuppliesService.save(officeSupplies) ? success() : error();
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("鍔炲叕鐗╄祫-淇敼")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult update(@RequestBody OfficeSupplies officeSupplies) {
+ return officeSuppliesService.updateById(officeSupplies) ? success() : error();
+ }
+
+ @DeleteMapping("/delete")
+ @ApiOperation("鍔炲叕鐗╄祫-鍒犻櫎")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return officeSuppliesService.removeBatchByIds(ids) ? success() : error();
+ }
+
+ /**
+ * 瀵煎嚭鍔炲叕鐗╄祫
+ */
+ @Log(title = "瀵煎嚭鍔炲叕鐗╄祫", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ @ApiOperation("瀵煎嚭鍔炲叕鐗╄祫")
+ public void export(HttpServletResponse response) {
+ ExcelUtil<OfficeSupplies> util = new ExcelUtil<OfficeSupplies>(OfficeSupplies.class);
+ List<OfficeSupplies> list = officeSuppliesService.list();
+ util.exportExcel(response, list , "鍔炲叕鐗╄祫");
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/officesupplies/mapper/OfficeSuppliesMapper.java b/src/main/java/com/ruoyi/officesupplies/mapper/OfficeSuppliesMapper.java
new file mode 100644
index 0000000..7d73636
--- /dev/null
+++ b/src/main/java/com/ruoyi/officesupplies/mapper/OfficeSuppliesMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.officesupplies.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.officesupplies.pojo.OfficeSupplies;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author :yys
+ * @date : 2025/9/4 14:13
+ */
+public interface OfficeSuppliesMapper extends BaseMapper<OfficeSupplies> {
+
+ /**
+ * 鍒楄〃鍒嗛〉鏌ヨ
+ *
+ * @param page
+ * @param officeSupplies
+ * @return
+ */
+ IPage<OfficeSupplies> listPage(Page page,@Param("req") OfficeSupplies officeSupplies);
+}
diff --git a/src/main/java/com/ruoyi/officesupplies/pojo/OfficeSupplies.java b/src/main/java/com/ruoyi/officesupplies/pojo/OfficeSupplies.java
new file mode 100644
index 0000000..b693c10
--- /dev/null
+++ b/src/main/java/com/ruoyi/officesupplies/pojo/OfficeSupplies.java
@@ -0,0 +1,160 @@
+package com.ruoyi.officesupplies.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.sales.pojo.CommonFile;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/4 14:02
+ */
+@Data
+@ApiModel
+@TableName("office_supplies")
+public class OfficeSupplies {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("缂栧彿")
+ @Excel(name = "缂栧彿")
+ private String code;
+
+ @ApiModelProperty("鐗╁搧鍚嶇О")
+ private String itemName;
+
+ @ApiModelProperty("鐢宠浜�")
+ @Excel(name = "鐢宠浜�")
+ private String applicant;
+
+ /**
+ * 閮ㄩ棬
+ */
+ @ApiModelProperty("閮ㄩ棬")
+ @Excel(name = "閮ㄩ棬")
+ private String dept;
+
+ /**
+ * 鐗╄祫绫诲瀷锛�1-鍏朵粬 2-娓呮磥鐢ㄥ搧 3-鐢靛瓙鐢ㄥ搧 4-鐢靛瓙璁惧锛�
+ */
+ @ApiModelProperty("鐗╄祫绫诲瀷锛�1-鍏朵粬 2-娓呮磥鐢ㄥ搧 3-鐢靛瓙鐢ㄥ搧 4-鐢靛瓙璁惧锛�")
+ @Excel(name = "鐗╄祫绫诲瀷", readConverterExp = "1=鍏朵粬,2=娓呮磥鐢ㄥ搧,3=鐢靛瓙鐢ㄥ搧,4=鐢靛瓙璁惧")
+ private Integer materialType;
+
+ /**
+ * 鐢宠鏁伴噺
+ */
+ @ApiModelProperty("鐢宠鏁伴噺")
+ @Excel(name = "鐢宠鏁伴噺")
+ private Integer applyNum;
+
+ /**
+ * 瀹℃壒鎰忚
+ */
+ @ApiModelProperty("瀹℃壒鎰忚")
+// @Excel(name = "瀹℃壒鎰忚")
+ private String approvalOpinions;
+
+ /**
+ * 鐢宠鍘熷洜
+ */
+ @ApiModelProperty("鐢宠鍘熷洜")
+ @Excel(name = "鐢宠鍘熷洜")
+ private String reason;
+
+
+ /**
+ * 绱ф�ョ▼搴︼紙1-鏅�� 2-绱ф�� 3-闈炲父绱ф�ワ級
+ */
+ @ApiModelProperty("绱ф�ョ▼搴︼紙1-鏅�� 2-绱ф�� 3-闈炲父绱ф�ワ級")
+// @Excel(name = "绱ф�ョ▼搴�", readConverterExp = "1=鏅��,2=绱ф��,3=闈炲父绱ф��")
+ private Integer urgency;
+
+ /**
+ * 鐘舵�侊紙1-寰呭鎵� 2-宸叉嫆缁� 3-宸查�氳繃 4-宸插彂鏀撅級
+ */
+ @ApiModelProperty("鐘舵�侊紙1-寰呭鎵� 2-宸叉嫆缁� 3-宸查�氳繃 4-宸插彂鏀撅級")
+ @Excel(name = "鐘舵��", readConverterExp = "1=寰呭鎵�,2=宸叉嫆缁�,3=宸查�氳繃,4=宸插彂鏀�")
+ private Integer status;
+
+ /**
+ * 鐢宠鏃堕棿
+ */
+ @ApiModelProperty("鐢宠鏃堕棿")
+ @Excel(name = "鐢宠鏃堕棿" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date applyTime;
+
+
+ /**
+ * 瀹℃壒浜�
+ */
+ @ApiModelProperty("瀹℃壒浜�")
+ @Excel(name = "瀹℃壒浜�")
+ private String approval;
+
+ /**
+ * 瀹℃壒鏃堕棿
+ */
+ @ApiModelProperty("瀹℃壒鏃堕棿")
+ @Excel(name = "瀹℃壒鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date approvalTime;
+
+ /**
+ * 鍙戞斁鏃堕棿
+ */
+ @ApiModelProperty("鍙戞斁鏃堕棿")
+ @Excel(name = "鍙戞斁鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date issueTime;
+
+ @ApiModelProperty("鍙戞斁浜�")
+// @Excel(name = "鍙戞斁浜�")
+ private String issueUser;
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 淇敼鑰�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/officesupplies/service/OfficeSuppliesService.java b/src/main/java/com/ruoyi/officesupplies/service/OfficeSuppliesService.java
new file mode 100644
index 0000000..3a521b5
--- /dev/null
+++ b/src/main/java/com/ruoyi/officesupplies/service/OfficeSuppliesService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.officesupplies.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.officesupplies.pojo.OfficeSupplies;
+
+/**
+ * @author :yys
+ * @date : 2025/9/4 14:14
+ */
+public interface OfficeSuppliesService extends IService<OfficeSupplies> {
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param page
+ * @param officeSupplies
+ * @return
+ */
+ AjaxResult listPage(Page page, OfficeSupplies officeSupplies);
+}
diff --git a/src/main/java/com/ruoyi/officesupplies/service/impl/OfficeSuppliesServiceImpl.java b/src/main/java/com/ruoyi/officesupplies/service/impl/OfficeSuppliesServiceImpl.java
new file mode 100644
index 0000000..2ba961f
--- /dev/null
+++ b/src/main/java/com/ruoyi/officesupplies/service/impl/OfficeSuppliesServiceImpl.java
@@ -0,0 +1,30 @@
+package com.ruoyi.officesupplies.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.officesupplies.mapper.OfficeSuppliesMapper;
+import com.ruoyi.officesupplies.pojo.OfficeSupplies;
+import com.ruoyi.officesupplies.service.OfficeSuppliesService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author :yys
+ * @date : 2025/9/4 14:15
+ */
+@Service
+@Slf4j
+public class OfficeSuppliesServiceImpl extends ServiceImpl<OfficeSuppliesMapper, OfficeSupplies> implements OfficeSuppliesService {
+
+ @Autowired
+ private OfficeSuppliesMapper officeSuppliesMapper;
+
+ @Override
+ public AjaxResult listPage(Page page, OfficeSupplies officeSupplies) {
+ IPage<OfficeSupplies> list = officeSuppliesMapper.listPage(page, officeSupplies);
+ return AjaxResult.success(list);
+ }
+}
diff --git a/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java b/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
index d43adf0..40098d5 100644
--- a/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
+++ b/src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
@@ -85,6 +85,7 @@
*
* @param businessId 涓氬姟ID锛堥攢鍞彴璐D锛�
* @param tempFileIds 涓存椂鏂囦欢ID鍒楄〃
+ * @param fileType 鏂囦欢绫诲瀷(鏉ヨ嚜FileNameType)
* @throws IOException 鏂囦欢鎿嶄綔寮傚父
*/
public void migrateTempFilesToFormal(Long businessId, List<String> tempFileIds, Integer fileType) throws IOException {
@@ -122,12 +123,15 @@
try {
// 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級
- Files.move(
- Paths.get(tempFile.getTempPath()),
- formalFilePath,
- StandardCopyOption.REPLACE_EXISTING,
- StandardCopyOption.ATOMIC_MOVE
- );
+// Files.move(
+// Paths.get(tempFile.getTempPath()),
+// formalFilePath,
+// StandardCopyOption.REPLACE_EXISTING,
+// StandardCopyOption.ATOMIC_MOVE
+// );
+ // 鍘熷瓙绉诲姩澶辫触锛屼娇鐢ㄥ鍒�+鍒犻櫎
+ Files.copy(Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING);
+ Files.deleteIfExists(Paths.get(tempFile.getTempPath()));
log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
// 鏇存柊鏂囦欢璁板綍锛堝叧鑱斿埌涓氬姟ID锛�
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/GasTankWarningController.java b/src/main/java/com/ruoyi/procurementrecord/controller/GasTankWarningController.java
new file mode 100644
index 0000000..7646478
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/GasTankWarningController.java
@@ -0,0 +1,44 @@
+package com.ruoyi.procurementrecord.controller;
+
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.procurementrecord.pojo.GasTankWarning;
+import com.ruoyi.procurementrecord.service.GasTankWarningService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@RestController
+@RequestMapping("/gasTankWarning")
+public class GasTankWarningController {
+ @Autowired
+ private GasTankWarningService gasTankWarningService;
+
+ @GetMapping("/listPage")
+ public AjaxResult listPage(Page page, GasTankWarning gasTankWarning) {
+ return AjaxResult.success(gasTankWarningService.listPage(page, gasTankWarning));
+ }
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody GasTankWarning gasTankWarning) {
+ return AjaxResult.success(gasTankWarningService.save(gasTankWarning));
+ }
+ @PostMapping("update")
+ public AjaxResult update(@RequestBody GasTankWarning gasTankWarning) {
+ return AjaxResult.success(gasTankWarningService.updateById(gasTankWarning));
+ }
+ @DeleteMapping("delete")
+ public AjaxResult delete(@RequestBody List<Long> ids){
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(gasTankWarningService.removeByIds(ids));
+ }
+ //瀵煎嚭
+ @PostMapping("/export")
+ public void export(HttpServletResponse response,@RequestParam(name = "ids", required = false) List<Long> ids){
+ gasTankWarningService.export(response,ids);
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/InboundManagementController.java b/src/main/java/com/ruoyi/procurementrecord/controller/InboundManagementController.java
new file mode 100644
index 0000000..b8ffa23
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/InboundManagementController.java
@@ -0,0 +1,64 @@
+package com.ruoyi.procurementrecord.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.procurementrecord.pojo.InboundManagement;
+import com.ruoyi.procurementrecord.service.InboundManagementService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/16 16:38
+ */
+@RestController
+@Api(tags = "鍒拌揣绠$悊")
+@RequestMapping("/inboundManagement")
+public class InboundManagementController extends BaseController {
+
+ @Autowired
+ private InboundManagementService inboundManagementService;
+
+ @GetMapping("/listPage")
+ @ApiOperation("鍒拌揣绠$悊-鏌ヨ")
+ public AjaxResult listPage(Page page, InboundManagement inboundManagement) {
+ IPage<InboundManagement> result = inboundManagementService.listPage(page, inboundManagement);
+ return AjaxResult.success(result);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("鍒拌揣绠$悊-娣诲姞")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult add(@RequestBody InboundManagement inboundManagement) {
+ inboundManagement.setArrivalTime(new Date());
+ boolean result = inboundManagementService.save(inboundManagement);
+ return result ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("鍒拌揣绠$悊-淇敼")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult update(@RequestBody InboundManagement inboundManagement) {
+ boolean result = inboundManagementService.updateById(inboundManagement);
+ return result ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @DeleteMapping("/del")
+ @ApiOperation("鍒拌揣绠$悊-鍒犻櫎")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult del(@RequestBody List<Long> ids) {
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ boolean result = inboundManagementService.removeByIds(ids);
+ return result ? AjaxResult.success() : AjaxResult.error();
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPlanController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPlanController.java
new file mode 100644
index 0000000..64d9dc8
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPlanController.java
@@ -0,0 +1,67 @@
+package com.ruoyi.procurementrecord.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.procurementrecord.pojo.ProcurementPlan;
+import com.ruoyi.procurementrecord.service.ProcurementPlanService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/18 16:13
+ */
+@RestController
+@Api(tags = "閲囪喘璁″垝")
+@RequestMapping("/procurementPlan")
+public class ProcurementPlanController extends BaseController {
+
+ @Autowired
+ private ProcurementPlanService procurementPlanService;
+
+ @RequestMapping("/listPage")
+ @ApiOperation("閲囪喘璁″垝-鏌ヨ")
+ public AjaxResult listPage(Page page, ProcurementPlan procurementPlan){
+ IPage<ProcurementPlan> result = procurementPlanService.listPage(page, procurementPlan);
+ return AjaxResult.success(result);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("閲囪喘璁″垝-娣诲姞")
+ public AjaxResult add(@RequestBody ProcurementPlan procurementPlan){
+ boolean result = procurementPlanService.save(procurementPlan);
+ return result ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("閲囪喘璁″垝-淇敼")
+ public AjaxResult update(@RequestBody ProcurementPlan procurementPlan){
+ boolean result = procurementPlanService.updateById(procurementPlan);
+ return result ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @DeleteMapping("/del")
+ @ApiOperation("閲囪喘璁″垝-鍒犻櫎")
+ public AjaxResult del(@RequestBody List<Long> ids){
+ boolean result = procurementPlanService.removeByIds(ids);
+ return result ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ /**
+ * 瀵煎嚭
+ * @param response
+ */
+ @PostMapping("/export")
+ public void export(HttpServletResponse response) {
+ procurementPlanService.export(response);
+ }
+
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPriceManagementController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPriceManagementController.java
new file mode 100644
index 0000000..9135b7b
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementPriceManagementController.java
@@ -0,0 +1,73 @@
+package com.ruoyi.procurementrecord.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.procurementrecord.pojo.ProcurementPriceManagement;
+import com.ruoyi.procurementrecord.service.ProcurementPriceManagementService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/17 15:08
+ */
+@RestController
+@Api(tags = "閲囪喘浠锋牸绠$悊")
+@RequestMapping("/procurementPriceManagement")
+public class ProcurementPriceManagementController extends BaseController {
+
+ @Autowired
+ private ProcurementPriceManagementService procurementPriceManagementService;
+
+ @GetMapping("/listPage")
+ @ApiOperation("閲囪喘浠锋牸绠$悊-鏌ヨ")
+ public AjaxResult listPage(Page page, ProcurementPriceManagement procurementPriceManagement){
+ IPage<ProcurementPriceManagement> result = procurementPriceManagementService.listPage(page, procurementPriceManagement);
+ return AjaxResult.success(result);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("閲囪喘浠锋牸绠$悊-娣诲姞")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult add(@RequestBody ProcurementPriceManagement procurementPriceManagement){
+ boolean result = procurementPriceManagementService.save(procurementPriceManagement);
+ return result ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("閲囪喘浠锋牸绠$悊-淇敼")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult update(@RequestBody ProcurementPriceManagement procurementPriceManagement){
+ boolean result = procurementPriceManagementService.updateById(procurementPriceManagement);
+ return result ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @DeleteMapping("/del")
+ @ApiOperation("閲囪喘浠锋牸绠$悊-鍒犻櫎")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult delete(@RequestBody List<Long> ids){
+ if (ids == null || ids.isEmpty()) {
+ return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ }
+ boolean result = procurementPriceManagementService.removeByIds(ids);
+ return result ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ /**
+ * 瀵煎嚭
+ * @param response
+ */
+ @PostMapping("/export")
+ public void export(HttpServletResponse response) {
+ procurementPriceManagementService.export(response);
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
index a106fb2..7fb7b44 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -6,12 +6,10 @@
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.procurementrecord.dto.*;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
-import com.ruoyi.purchase.dto.InvoicePurchaseReportDto;
-import com.ruoyi.quality.pojo.QualityInspect;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -69,6 +67,7 @@
@GetMapping("/listPage")
@Log(title = "閲囪喘鍏ュ簱-鍏ュ簱绠$悊-鍏ュ簱鏌ヨ", businessType = BusinessType.OTHER)
+ @ApiOperation(value = "鍏ュ簱鏌ヨ")
public AjaxResult listPage(Page page, ProcurementPageDto procurementDto) {
IPage<ProcurementPageDto> result =procurementRecordService.listPage(page, procurementDto);
return AjaxResult.success(result);
@@ -80,6 +79,11 @@
IPage<ProcurementPageDtoCopy> result =procurementRecordService.listPageCopy(page, procurementDto);
return AjaxResult.success(result);
}
+ @GetMapping("/getReportList")
+ @Log(title = "搴撳瓨鎶ヨ〃鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult getReportList(Page page, ProcurementPageDto procurementDto) {
+ return AjaxResult.success(procurementRecordService.getReportList(page, procurementDto));
+ }
/**
* 瀵煎嚭
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java
new file mode 100644
index 0000000..3cb1e59
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java
@@ -0,0 +1,69 @@
+package com.ruoyi.procurementrecord.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
+import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.procurementrecord.service.ReturnManagementService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/17 10:34
+ */
+@RestController
+@Api(tags = "鍒拌揣绠$悊")
+@RequestMapping("/returnManagement")
+public class ReturnManagementController extends BaseController {
+
+ @Autowired
+ private ReturnManagementService returnManagementService;
+
+ @Autowired
+ private ReturnManagementMapper returnManagementMapper;
+
+ @GetMapping("/listPage")
+ @ApiOperation("鍒拌揣绠$悊-鏌ヨ")
+ public AjaxResult listPage(Page page, ReturnManagement returnManagement) {
+ IPage<ReturnManagement> result = returnManagementService.listPage(page, returnManagement);
+ return AjaxResult.success(result);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("鍒拌揣绠$悊-娣诲姞")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult add(@RequestBody ReturnManagement returnManagement) {
+ String rt = OrderUtils.countTodayByCreateTime(returnManagementMapper, "RT");
+ returnManagement.setReturnNo(rt);
+ boolean result = returnManagementService.save(returnManagement);
+ return result ? success() : error();
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("鍒拌揣绠$悊-淇敼")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult update(@RequestBody ReturnManagement returnManagement) {
+ boolean result = returnManagementService.updateById(returnManagement);
+ return result ? success() : error();
+ }
+
+ @DeleteMapping("/del")
+ @ApiOperation("鍒拌揣绠$悊-鍒犻櫎")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult del(@RequestBody List<Long> ids) {
+ if (CollectionUtils.isEmpty(ids)) return error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ boolean result = returnManagementService.removeByIds(ids);
+ return result ? success() : error();
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/Details.java b/src/main/java/com/ruoyi/procurementrecord/dto/Details.java
index 510b62d..b2e5a21 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/Details.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/Details.java
@@ -1,24 +1,16 @@
package com.ruoyi.procurementrecord.dto;
+import lombok.Data;
+
import java.math.BigDecimal;
/**
* @author :yys
* @date : 2025/7/7 16:17
*/
+@Data
public class Details {
private Integer id;
private BigDecimal inboundQuantity;
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public BigDecimal getInboundQuantity() {
- return inboundQuantity;
- }
- public void setInboundQuantity(BigDecimal inboundQuantity) {
- this.inboundQuantity = inboundQuantity;
- }
+ private BigDecimal warnNum;
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java
index 63ce258..d8004b4 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementDto.java
@@ -20,6 +20,8 @@
private Integer recordId;
+ private BigDecimal warnNum;
+
/**
* 鍏ュ簱鏁伴噺
*/
@@ -57,6 +59,11 @@
private BigDecimal quantity;
/**
+ * 鏈�浣庡簱瀛樻暟閲�
+ */
+ @Excel(name = "鏈�浣庡簱瀛樻暟閲�")
+ private BigDecimal minStock;
+ /**
* 寰呭叆搴撴暟閲�
*/
@Excel(name = "寰呭叆搴撴暟閲�")
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java
index ae93d84..0356de7 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementManagementUpdateDto.java
@@ -15,6 +15,7 @@
public class ProcurementManagementUpdateDto {
private String createBy;
+ private BigDecimal minStock;
private Long createUser;
@@ -23,5 +24,5 @@
private String entryDate;
private Integer id;
-
+ private Integer salesLedgerProductId;
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
index 51ad7bd..4f3f260 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
@@ -1,10 +1,13 @@
package com.ruoyi.procurementrecord.dto;
+
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
+import java.time.LocalDate;
import java.time.LocalDateTime;
/**
@@ -37,6 +40,9 @@
@Excel(name = "鍏ュ簱鏁伴噺")
private BigDecimal inboundNum;
+ @Excel(name = "棰勮鏁伴噺")
+ private BigDecimal warnNum;
+
/**
* 寰呭嚭搴撴暟閲�
*/
@@ -50,6 +56,8 @@
// @Excel(name = "鍏ュ簱鏃堕棿")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDateTime createTime;
+
+ private String timeStr;
/**
* 鍑哄叆搴撴椂闂�
@@ -112,5 +120,35 @@
*/
@Excel(name = "涓嶅惈绋庢�讳环")
private BigDecimal taxExclusiveTotalPrice;
+ /**
+ * 鎶ヨ〃鏃ユ姤
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate reportDate;
+ /**
+ * 鎶ヨ〃鏈堟姤
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate startMonth;
+ /**
+ * 鎶ヨ〃鏈堟姤
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate endMonth;
+ /**
+ * 鎶ヨ〃鏈堟姤
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate startDate;
+ /**
+ * 鎶ヨ〃鏈堟姤
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate endDate;
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
index 9ef5677..9592ad1 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
@@ -5,6 +5,7 @@
import lombok.Data;
import java.math.BigDecimal;
+import java.time.LocalDate;
import java.time.LocalDateTime;
/**
@@ -24,6 +25,8 @@
@Excel(name = "鍏ュ簱鎵规")
private String inboundBatches;
+ private BigDecimal warnNum;
+
/**
* 鍚堝悓鍙�
*/
@@ -42,8 +45,17 @@
*/
@Excel(name = "寰呭嚭搴撴暟閲�")
private BigDecimal inboundNum0;
+ /**
+ * 鍑哄簱鏁伴噺
+ */
+ @Excel(name = "鍑哄簱鏁伴噺")
+ private BigDecimal totalInboundNum;
-
+ /**
+ * 鏈�浣庡簱瀛樻暟閲�
+ */
+ @Excel(name = "鏈�浣庡簱瀛樻暟閲�")
+ private BigDecimal minStock;
/**
* 鍑哄叆搴撴椂闂�
*/
@@ -124,5 +136,35 @@
*/
@Excel(name = "涓嶅惈绋庢�讳环")
private BigDecimal taxExclusiveTotalPrice;
+ /**
+ * 鎶ヨ〃鏃ユ姤
+ */
+ @Excel(name = "鎶ヨ〃鏃ユ姤")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private LocalDate reportDate;
+ /**
+ * 鎶ヨ〃鏈堟姤
+ */
+ @Excel(name = "鎶ヨ〃鏈堟姤寮�濮嬫椂闂�")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private LocalDate startMonth;
+ /**
+ * 鎶ヨ〃鏈堟姤
+ */
+ @Excel(name = "鎶ヨ〃鏈堟姤缁撴潫鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private LocalDate endMonth;
+ /**
+ * 鎶ヨ〃鏈堟姤
+ */
+ @Excel(name = "鎶ヨ〃浣滀笟寮�濮嬫椂闂�")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private LocalDate startDate;
+ /**
+ * 鎶ヨ〃鏈堟姤
+ */
+ @Excel(name = "鎶ヨ〃浣滀笟缁撴潫鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private LocalDate endDate;
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
index 3dd180e..55ceb9c 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutPageDto.java
@@ -14,7 +14,12 @@
@Data
public class ProcurementRecordOutPageDto {
+ @Excel(name = "鍑哄簱缂栧彿")
+ private String code;
+
private Integer id;
+
+ private BigDecimal warnNum;
/**
* 鍑哄叆搴撴暟閲�
@@ -29,6 +34,8 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
+ private String timeStr;
+
@Excel(name = "鍑哄簱鏃堕棿")
private String time;
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementUpdateDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementUpdateDto.java
index 153884e..82e02f1 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementUpdateDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementUpdateDto.java
@@ -14,6 +14,8 @@
private Integer id;
+ private BigDecimal warnNum;
+
private BigDecimal quantityStock;
private List<Integer> ids;
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/GasTankWarningMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/GasTankWarningMapper.java
new file mode 100644
index 0000000..aab09cb
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/GasTankWarningMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.procurementrecord.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.procurementrecord.pojo.GasTankWarning;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface GasTankWarningMapper extends BaseMapper<GasTankWarning> {
+ IPage<GasTankWarning> listPage(Page page, @Param("gasTankWarning") GasTankWarning gasTankWarning);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/InboundManagementMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/InboundManagementMapper.java
new file mode 100644
index 0000000..2496b23
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/InboundManagementMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.procurementrecord.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.procurementrecord.pojo.InboundManagement;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author :yys
+ * @date : 2025/9/16 16:33
+ */
+public interface InboundManagementMapper extends BaseMapper<InboundManagement> {
+
+ /**
+ * 鏌ヨ閲囪喘鍏ュ簱-鍒拌揣绠$悊鍒楄〃
+ *
+ * @param page
+ * @param inboundManagement
+ * @return
+ */
+ IPage<InboundManagement> listPage(Page page,@Param("req") InboundManagement inboundManagement);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementPlanMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementPlanMapper.java
new file mode 100644
index 0000000..2745574
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementPlanMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.procurementrecord.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.procurementrecord.pojo.ProcurementPlan;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author :yys
+ * @date : 2025/9/18 16:10
+ */
+public interface ProcurementPlanMapper extends BaseMapper<ProcurementPlan> {
+ /**
+ * 鏌ヨ閲囪喘璁″垝鍒楄〃
+ *
+ * @param page
+ * @param procurementPlan
+ * @return
+ */
+ IPage<ProcurementPlan> listPage(Page page,@Param("req") ProcurementPlan procurementPlan);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementPriceManagementMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementPriceManagementMapper.java
new file mode 100644
index 0000000..36b274c
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementPriceManagementMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.procurementrecord.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.procurementrecord.pojo.ProcurementPriceManagement;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author :yys
+ * @date : 2025/9/17 15:05
+ */
+public interface ProcurementPriceManagementMapper extends BaseMapper<ProcurementPriceManagement> {
+
+ /**
+ * 鏌ヨ閲囪喘浠锋牸绠$悊鍒楄〃
+ *
+ * @param page
+ * @param procurementPriceManagement
+ * @return
+ */
+ IPage<ProcurementPriceManagement> listPage(Page page,@Param("req") ProcurementPriceManagement procurementPriceManagement);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java
new file mode 100644
index 0000000..14953ad
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.procurementrecord.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author :yys
+ * @date : 2025/9/17 10:32
+ */
+public interface ReturnManagementMapper extends BaseMapper<ReturnManagement> {
+
+ /**
+ * 鏌ヨ鍒楄〃
+ *
+ * @param page
+ * @return
+ */
+ IPage<ReturnManagement> listPage(Page page,@Param("req") ReturnManagement returnManagement);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/GasTankWarning.java b/src/main/java/com/ruoyi/procurementrecord/pojo/GasTankWarning.java
new file mode 100644
index 0000000..4f95872
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/GasTankWarning.java
@@ -0,0 +1,158 @@
+package com.ruoyi.procurementrecord.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("gas_tank_warning")
+public class GasTankWarning implements Serializable {
+ @TableId(value = "id",type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鍌ㄦ皵缃愮紪鐮�
+ */
+ @Excel(name = "鍌ㄦ皵缃愮紪鐮�")
+ private String tankCode;
+ /**
+ * 鍌ㄦ皵缃愬悕绉�
+ */
+ @Excel(name = "鍌ㄦ皵缃愬悕绉�")
+ private String tankName;
+ /**
+ * 鍌ㄦ皵缃愮被鍨�
+ */
+ @Excel(name = "鍌ㄦ皵缃愮被鍨�")
+ private String tankType;
+ /**
+ * 瑙勬牸鍨嬪彿
+ */
+ @Excel(name = "瑙勬牸鍨嬪彿")
+ private String specificationModel;
+ /**
+ * 瀹圭Н(m鲁)
+ */
+ @Excel(name = "瀹圭Н(m鲁)")
+ private Long volume;
+ /**
+ * 褰撳墠姘斾綋姘村钩(m鲁)
+ */
+ @Excel(name = "褰撳墠姘斾綋姘村钩(m鲁)")
+ private Long currentGasLevel;
+ /**
+ * 瀹夊叏姘斾綋姘村钩(m鲁)
+ */
+ @Excel(name = "瀹夊叏姘斾綋姘村钩(m鲁)")
+ private Long safetyGasLevel;
+ /**
+ * 鏈�灏忔皵浣撴按骞�(m鲁)
+ */
+ @Excel(name = "鏈�灏忔皵浣撴按骞�(m鲁)")
+ private Long minGasLevel;
+ /**
+ * 鏈�澶ф皵浣撴按骞�(m鲁)
+ */
+ @Excel(name = "鏈�澶ф皵浣撴按骞�(m鲁)")
+ private Long maxGasLevel;
+ /**
+ * 褰撳墠鍘嬪姏(MPa)
+ */
+ @Excel(name = "褰撳墠鍘嬪姏(MPa)")
+ private Double currentPressure;
+ /**
+ * 棰勮绫诲瀷
+ */
+ @Excel(name = "棰勮绫诲瀷")
+ private String warningType;
+ /**
+ * 棰勮绛夌骇
+ */
+ @Excel(name = "棰勮绛夌骇")
+ private String warningLevel;
+ /**
+ * 棰勮闃堝��
+ */
+ @Excel(name = "棰勮闃堝��")
+ private Long warningThreshold;
+ /**
+ * 鏄惁鍚敤
+ */
+ @Excel(name = "鏄惁鍚敤")
+ private Boolean isEnabled;
+ /**
+ * 棰勮瑙勫垯-褰�???鏃惰Е鍙戦璀�
+ */
+ @Excel(name = "棰勮瑙勫垯")
+ private String warningRule;
+ /**
+ * 棰勮鏃堕棿
+ */
+ @Excel(name = "棰勮鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime warningTime;
+ /**
+ * 棰勮鎸佺画澶╂暟
+ */
+ @Excel(name = "棰勮鎸佺画澶╂暟")
+ private Long warningDuration;
+ /**
+ * 鏈�鍚庢洿鏂版椂闂�
+ */
+ @Excel(name = "鏈�鍚庢洿鏂版椂闂�")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime lastUpdateTime;
+ /**
+ * 棰勬湡鍏呰鏃堕棿
+ */
+ @Excel(name = "棰勬湡鍏呰鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime expectedRefillTime;
+ /**
+ * 棰勬湡缂烘皵鏃堕棿
+ */
+ @Excel(name = "棰勬湡缂烘皵鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime expectedShortageTime;
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鏇存柊浜�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/InboundManagement.java b/src/main/java/com/ruoyi/procurementrecord/pojo/InboundManagement.java
new file mode 100644
index 0000000..56f322e
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/InboundManagement.java
@@ -0,0 +1,73 @@
+package com.ruoyi.procurementrecord.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/9/16 16:29
+ */
+@Data
+@TableName("inbound_management")
+@ApiModel
+public class InboundManagement {
+
+ private static final long serialVersionUID = 1L;
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "璁㈠崟鍙�")
+ private String orderNo;
+
+ @ApiModelProperty(value = "鍒拌揣鍗曞彿")
+ private String arrivalNo;
+
+ @ApiModelProperty(value = "渚涘簲鍟嗗悕绉�")
+ private String supplierName;
+
+ @ApiModelProperty(value = "鍒拌揣鐘舵��")
+ private String status;
+
+ @ApiModelProperty(value = "鍒拌揣鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date arrivalTime;
+
+ @ApiModelProperty(value = "鍒拌揣鏁伴噺")
+ private String arrivalQuantity;
+
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementPlan.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementPlan.java
new file mode 100644
index 0000000..56892a3
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementPlan.java
@@ -0,0 +1,105 @@
+package com.ruoyi.procurementrecord.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author :yys
+ * @date : 2025/9/18 16:00
+ */
+@Data
+@TableName("procurement_plan")
+@ApiModel
+public class ProcurementPlan {
+
+ private static final long serialVersionUID = 1L;
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "缂栫爜")
+ @Excel(name = "缂栫爜")
+ private String code;
+
+ @ApiModelProperty(value = "鍚嶇О")
+ @Excel(name = "鍚嶇О")
+ private String planName;
+
+ @ApiModelProperty(value = "鎻忚堪")
+ @Excel(name = "鎻忚堪")
+ private String description;
+
+ @ApiModelProperty(value = "鐘舵��")
+ @Excel(name = "鐘舵��", readConverterExp = "disabled=绂佺敤,active=鍚敤")
+ private String status;
+
+ @ApiModelProperty(value = "鏄惁绯荤粺棰勭疆")
+ private Boolean isSystemPreset;
+
+ @ApiModelProperty(value = "鑰冭檻鐜版湁搴撳瓨")
+ private Boolean considerExistingStock;
+
+ @ApiModelProperty(value = "浠撳簱杩愯MRP鐨勬帶鍒�")
+ private Boolean warehouseControl;
+
+ @ApiModelProperty(value = "璁$畻鎬婚渶姹�")
+ private Boolean calculateTotalDemand;
+
+ @ApiModelProperty(value = "鑰冭檻瀹夊叏搴撳瓨")
+ private Boolean considerSafetyStock;
+
+ @ApiModelProperty(value = "鑰冭檻閿佸簱")
+ private Boolean considerLockedStock;
+
+ @ApiModelProperty(value = "涓嶈�冭檻鐗╂枡杈呭姪灞炴��")
+ private Boolean notConsiderMaterialAux;
+
+ @ApiModelProperty(value = "璐熷簱瀛樹綔涓洪渶姹�")
+ private Boolean negativeStockAsDemand;
+
+ @ApiModelProperty(value = "鐗╂枡")
+ private Boolean summaryMaterial;
+
+ @ApiModelProperty(value = "杈呭姪灞炴��")
+ private Boolean summaryAuxAttributes;
+
+ @ApiModelProperty(value = "闇�姹傛棩鏈�")
+ private Boolean summaryDemandDate;
+
+ @ApiModelProperty(value = "璁$畻鍏紡")
+ @Excel(name = "璁$畻鍏紡")
+ private String formula;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "鏈�鍚庤绠楁椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementPriceManagement.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementPriceManagement.java
new file mode 100644
index 0000000..08c9d21
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementPriceManagement.java
@@ -0,0 +1,122 @@
+package com.ruoyi.procurementrecord.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/9/17 14:58
+ */
+@Data
+@TableName("procurement_price_management")
+@ApiModel
+public class ProcurementPriceManagement {
+
+ private static final long serialVersionUID = 1L;
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "鍟嗗搧鍚嶇О")
+ @Excel(name = "鍟嗗搧鍚嶇О")
+ private String productName;
+
+ @ApiModelProperty(value = "鍟嗗搧缂栫爜")
+ @Excel(name = "鍟嗗搧缂栫爜")
+ private String productCode;
+
+ @ApiModelProperty(value = "瑙勬牸鍨嬪彿")
+ @Excel(name = "瑙勬牸鍨嬪彿")
+ private String specification;
+
+ @ApiModelProperty(value = "渚涘簲鍟嗗悕绉�")
+ @Excel(name = "渚涘簲鍟嗗悕绉�")
+ private String supplierName;
+
+ @ApiModelProperty(value = "鍩虹浠锋牸")
+ @Excel(name = "鍩虹浠锋牸")
+ private String basePrice;
+
+ @ApiModelProperty(value = "鐘舵��")
+ @TableField(exist = false)
+ @Excel(name = "鐘舵��")
+ private String status;
+
+ @ApiModelProperty(value = "鍗曚綅")
+ private String unit;
+
+ @ApiModelProperty(value = "鎶樻墸绫诲瀷")
+ @Excel(name = "鎶樻墸绫诲瀷", readConverterExp = "=鏃犳姌鎵�,percentage=鐧惧垎姣旀姌鎵�,fixed=鍥哄畾閲戦")
+ private String discountType;
+
+ @ApiModelProperty(value = "鎶樻墸鍊�")
+ @Excel(name = "鎶樻墸鍊�")
+ private String discountValue;
+
+ @ApiModelProperty(value = "鎶樻墸鏈夋晥鏈�")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date discountEndTime;
+
+ @ApiModelProperty(value = "鏈�浣庝环鏍�")
+ @Excel(name = "鏈�浣庝环鏍�")
+ private String minPrice;
+
+ @ApiModelProperty(value = "鏈�楂樹环鏍�")
+ @Excel(name = "鏈�楂樹环鏍�")
+ private String maxPrice;
+
+ @ApiModelProperty(value = "棰勮闃堝��(%)")
+ private String warningThreshold;
+
+ @ApiModelProperty(value = "鐢熸晥鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鐢熸晥鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date effectiveTime;
+
+ @ApiModelProperty(value = "澶辨晥鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date expireTime;
+
+ @ApiModelProperty(value = "璋冧环鍘熷洜")
+ private String reason;
+
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "鏇存柊鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
index d169692..b09b0f3 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
@@ -31,6 +31,12 @@
*/
private Integer procurementRecordStorageId;
+
+ /**
+ * 缂栧彿
+ */
+ private String code;
+
/**
* 鍑哄簱鎵规
*/
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
index 495a8a6..28cee3c 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
@@ -37,10 +37,20 @@
private BigDecimal inboundNum;
/**
+ * 棰勮鏁伴噺
+ */
+ private BigDecimal warnNum;
+// /**
+// * 鏈�浣庡簱瀛樻暟閲�
+// */
+// private BigDecimal minStock;
+
+ /**
* 鍏ュ簱鐢ㄦ埛
*/
private String createBy;
+
/**
* 鍏ュ簱鐢ㄦ埛id
*/
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
new file mode 100644
index 0000000..54091ab
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
@@ -0,0 +1,72 @@
+package com.ruoyi.procurementrecord.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/9/17 10:28
+ */
+@Data
+@TableName("return_management")
+@ApiModel
+public class ReturnManagement {
+
+ private static final long serialVersionUID = 1L;
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "閫�璐у崟鍙�")
+ private String returnNo;
+
+ @ApiModelProperty(value = "鍏宠仈鍗曞彿")
+ private String relatedNo;
+
+ @ApiModelProperty(value = "閫�璐х被鍨�")
+ private String returnType;
+
+ @ApiModelProperty(value = "渚涘簲鍟嗗悕绉�")
+ private String supplierName;
+
+ @ApiModelProperty(value = "閫�璐у師鍥�")
+ private String returnReason;
+
+ @ApiModelProperty(value = "閫�璐х姸鎬�")
+ private String status;
+
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = 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 = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/GasTankWarningService.java b/src/main/java/com/ruoyi/procurementrecord/service/GasTankWarningService.java
new file mode 100644
index 0000000..912fb3c
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/GasTankWarningService.java
@@ -0,0 +1,15 @@
+package com.ruoyi.procurementrecord.service;
+
+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.procurementrecord.pojo.GasTankWarning;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+public interface GasTankWarningService extends IService<GasTankWarning> {
+ IPage listPage(Page page, GasTankWarning gasTankWarning);
+
+ void export(HttpServletResponse response, List<Long> ids);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/InboundManagementService.java b/src/main/java/com/ruoyi/procurementrecord/service/InboundManagementService.java
new file mode 100644
index 0000000..bd620a6
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/InboundManagementService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.procurementrecord.service;
+
+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.procurementrecord.pojo.InboundManagement;
+
+/**
+ * @author :yys
+ * @date : 2025/9/16 16:36
+ */
+public interface InboundManagementService extends IService<InboundManagement> {
+
+ /**
+ * 鑾峰彇鍒楄〃
+ *
+ * @param page
+ * @param inboundManagement
+ * @return
+ */
+ IPage<InboundManagement> listPage(Page page, InboundManagement inboundManagement);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPlanService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPlanService.java
new file mode 100644
index 0000000..e96dbe6
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPlanService.java
@@ -0,0 +1,25 @@
+package com.ruoyi.procurementrecord.service;
+
+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.procurementrecord.pojo.ProcurementPlan;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author :yys
+ * @date : 2025/9/18 16:11
+ */
+public interface ProcurementPlanService extends IService<ProcurementPlan> {
+
+ /**
+ * 鏌ヨ
+ * @param page
+ * @param procurementPlan
+ * @return
+ */
+ IPage<ProcurementPlan> listPage(Page page, ProcurementPlan procurementPlan);
+
+ void export(HttpServletResponse response);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPriceManagementService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPriceManagementService.java
new file mode 100644
index 0000000..fc26ab6
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementPriceManagementService.java
@@ -0,0 +1,26 @@
+package com.ruoyi.procurementrecord.service;
+
+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.procurementrecord.pojo.ProcurementPriceManagement;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author :yys
+ * @date : 2025/9/17 15:06
+ */
+public interface ProcurementPriceManagementService extends IService<ProcurementPriceManagement> {
+
+ /**
+ * 閲囪喘浠锋牸绠$悊-鏌ヨ
+ *
+ * @param page
+ * @param procurementPriceManagement
+ * @return
+ */
+ IPage<ProcurementPriceManagement> listPage(Page page, ProcurementPriceManagement procurementPriceManagement);
+
+ void export(HttpServletResponse response);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
index c7e1699..79603ae 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -8,6 +8,7 @@
import javax.servlet.http.HttpServletResponse;
import java.util.List;
+import java.util.Map;
/**
* @author :yys
@@ -31,4 +32,6 @@
int updateManagement(ProcurementManagementUpdateDto procurementDto);
void exportCopy(HttpServletResponse response);
+
+ Map<String, Object> getReportList(Page page, ProcurementPageDto procurementDto);
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java b/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
new file mode 100644
index 0000000..b35be31
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.procurementrecord.service;
+
+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.procurementrecord.pojo.ReturnManagement;
+
+/**
+ * @author :yys
+ * @date : 2025/9/17 10:33
+ */
+public interface ReturnManagementService extends IService<ReturnManagement> {
+
+ /**
+ * 鏌ヨ鍒楄〃
+ *
+ * @param page
+ * @param returnManagement
+ * @return
+ */
+ IPage<ReturnManagement> listPage(Page page, ReturnManagement returnManagement);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java
new file mode 100644
index 0000000..772869b
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/GasTankWarningServiceImpl.java
@@ -0,0 +1,40 @@
+package com.ruoyi.procurementrecord.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.common.exception.ServiceException;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
+import com.ruoyi.procurementrecord.mapper.GasTankWarningMapper;
+import com.ruoyi.procurementrecord.pojo.GasTankWarning;
+import com.ruoyi.procurementrecord.service.GasTankWarningService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class GasTankWarningServiceImpl extends ServiceImpl<GasTankWarningMapper, GasTankWarning> implements GasTankWarningService {
+ @Autowired
+ private GasTankWarningMapper gasTankWarningMapper;
+ @Override
+ public IPage listPage(Page page, GasTankWarning gasTankWarning) {
+ return gasTankWarningMapper.listPage(page,gasTankWarning);
+ }
+
+ @Override
+ public void export(HttpServletResponse response, List<Long> ids) {
+ List<GasTankWarning> list = new ArrayList<>();
+ if(CollectionUtils.isEmpty(ids)){
+ list = gasTankWarningMapper.selectList(null);
+ }else {
+ list = gasTankWarningMapper.selectBatchIds(ids);
+ }
+ ExcelUtil<GasTankWarning> util = new ExcelUtil<>(GasTankWarning.class);
+ util.exportExcel(response, list, "鍌ㄦ皵缃愰璀�.xlsx");
+ }
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/InboundManagementServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/InboundManagementServiceImpl.java
new file mode 100644
index 0000000..5e8fa72
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/InboundManagementServiceImpl.java
@@ -0,0 +1,29 @@
+package com.ruoyi.procurementrecord.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.procurementrecord.mapper.InboundManagementMapper;
+import com.ruoyi.procurementrecord.pojo.InboundManagement;
+import com.ruoyi.procurementrecord.service.InboundManagementService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author :yys
+ * @date : 2025/9/16 16:37
+ */
+@Service
+@Slf4j
+public class InboundManagementServiceImpl extends ServiceImpl<InboundManagementMapper, InboundManagement> implements InboundManagementService {
+
+ @Autowired
+ private InboundManagementMapper inboundManagementMapper;
+
+ @Override
+ public IPage<InboundManagement> listPage(Page page, InboundManagement inboundManagement) {
+ IPage<InboundManagement> result = inboundManagementMapper.listPage(page, inboundManagement);
+ return result;
+ }
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java
new file mode 100644
index 0000000..81216db
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPlanServiceImpl.java
@@ -0,0 +1,41 @@
+package com.ruoyi.procurementrecord.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.procurementrecord.mapper.ProcurementPlanMapper;
+import com.ruoyi.procurementrecord.pojo.ProcurementPlan;
+import com.ruoyi.procurementrecord.pojo.ProcurementPriceManagement;
+import com.ruoyi.procurementrecord.service.ProcurementPlanService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/18 16:12
+ */
+@Service
+@Slf4j
+public class ProcurementPlanServiceImpl extends ServiceImpl<ProcurementPlanMapper, ProcurementPlan> implements ProcurementPlanService {
+
+ @Autowired
+ private ProcurementPlanMapper procurementPlanMapper;
+
+ @Override
+ public IPage<ProcurementPlan> listPage(Page page, ProcurementPlan procurementPlan) {
+ IPage<ProcurementPlan> result = procurementPlanMapper.listPage(page, procurementPlan);
+ return result;
+ }
+
+ @Override
+ public void export(HttpServletResponse response) {
+ List<ProcurementPlan> procurementPriceManagements = procurementPlanMapper.selectList(null);
+ ExcelUtil<ProcurementPlan> util = new ExcelUtil<ProcurementPlan>(ProcurementPlan.class);
+ util.exportExcel(response, procurementPriceManagements, "閲囪喘璁″垝");
+ }
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java
new file mode 100644
index 0000000..e90a7a2
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementPriceManagementServiceImpl.java
@@ -0,0 +1,78 @@
+package com.ruoyi.procurementrecord.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.excel.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.procurementrecord.dto.ProcurementPageDto;
+import com.ruoyi.procurementrecord.mapper.ProcurementPriceManagementMapper;
+import com.ruoyi.procurementrecord.pojo.ProcurementPriceManagement;
+import com.ruoyi.procurementrecord.service.ProcurementPriceManagementService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/17 15:07
+ */
+@Service
+@Slf4j
+public class ProcurementPriceManagementServiceImpl extends ServiceImpl<ProcurementPriceManagementMapper, ProcurementPriceManagement> implements ProcurementPriceManagementService {
+
+
+ @Autowired
+ private ProcurementPriceManagementMapper procurementPriceManagementMapper;
+
+
+ @Override
+ public IPage<ProcurementPriceManagement> listPage(Page page, ProcurementPriceManagement procurementPriceManagement) {
+ IPage<ProcurementPriceManagement> result = procurementPriceManagementMapper.listPage(page, procurementPriceManagement);
+ // 鏍规嵁鐢熸晥鏃堕棿锛屽け鏁堟椂闂村垽鏂姸鎬� 鏈夋晥锛屽緟鐢熸晥锛屽凡杩囨湡
+ for (ProcurementPriceManagement record : result.getRecords()) {
+ if (record.getEffectiveTime() != null) {
+ if (record.getEffectiveTime().getTime() <= System.currentTimeMillis()) {
+ record.setStatus("active");
+ }
+ }
+ if (record.getEffectiveTime() != null) {
+ if (record.getEffectiveTime().getTime() > System.currentTimeMillis()) {
+ record.setStatus("pending");
+ }
+ }
+ if (record.getExpireTime() != null) {
+ if (record.getExpireTime().getTime() <= System.currentTimeMillis()) {
+ record.setStatus("expired");
+ }
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public void export(HttpServletResponse response) {
+ List<ProcurementPriceManagement> procurementPriceManagements = procurementPriceManagementMapper.selectList(null);
+ for (ProcurementPriceManagement procurementPriceManagement : procurementPriceManagements) {
+ if (procurementPriceManagement.getEffectiveTime() != null) {
+ if (procurementPriceManagement.getEffectiveTime().getTime() <= System.currentTimeMillis()) {
+ procurementPriceManagement.setStatus("鏈夋晥");
+ }
+ }
+ if (procurementPriceManagement.getEffectiveTime() != null) {
+ if (procurementPriceManagement.getEffectiveTime().getTime() > System.currentTimeMillis()) {
+ procurementPriceManagement.setStatus("寰呯敓鏁�");
+ }
+ }
+ if (procurementPriceManagement.getExpireTime() != null) {
+ if (procurementPriceManagement.getExpireTime().getTime() <= System.currentTimeMillis()) {
+ procurementPriceManagement.setStatus("宸茶繃鏈�");
+ }
+ }
+ }
+ ExcelUtil<ProcurementPriceManagement> util = new ExcelUtil<ProcurementPriceManagement>(ProcurementPriceManagement.class);
+ util.exportExcel(response, procurementPriceManagements, "閲囪喘浠锋牸绠$悊");}
+}
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 31605d7..29cba69 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
@@ -10,6 +10,7 @@
import com.ruoyi.procurementrecord.dto.ProcurementUpdateDto;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
+import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
@@ -20,7 +21,10 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;
@@ -43,12 +47,21 @@
if(sysUser == null){
throw new RuntimeException("鍑哄簱浜轰笉瀛樺湪");
}
+ // 鏌ヨ鏃堕棿鑼冨洿涓哄綋澶╂暟閲�
+ LocalDate now = LocalDate.now();
+ DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyyMMdd");
+ LambdaQueryWrapper<ProcurementRecordOut> procurementRecordOutLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ procurementRecordOutLambdaQueryWrapper.ge(ProcurementRecordOut::getCreateTime, now) // 澶т簬绛変簬褰撳ぉ
+ .lt(ProcurementRecordOut::getCreateTime, now.plusDays(1)); // 灏忎簬鏄庡ぉ
+ Long aLong1 = procurementRecordOutMapper.selectCount(procurementRecordOutLambdaQueryWrapper);
+
// 鏌ヨ閲囪喘鍑哄簱鏁伴噺
LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getProcurementRecordStorageId, procurementRecordOutAdd.getId());
Long aLong = procurementRecordOutMapper.selectCount(procurementRecordLambdaQueryWrapper);
ProcurementRecordOut.ProcurementRecordOutBuilder procurementRecordOut = ProcurementRecordOut.builder()
.procurementRecordStorageId(procurementRecordOutAdd.getId())
+ .code("LS" + dateFormat.format(now) + String.format("%03d", aLong1 + 1))
.salesLedgerProductId(procurementRecordOutAdd.getSalesLedgerProductId())
.inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�"+ (aLong + 1) + "鎵规")
.inboundNum(new BigDecimal(procurementRecordOutAdd.getQuantity()))
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 06612f6..1675069 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.security.LoginUser;
@@ -25,9 +24,10 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
+import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -103,6 +103,7 @@
public int updatePro(ProcurementUpdateDto procurementDto) {
ProcurementRecordStorage procurementRecordStorageById = getProcurementRecordById(procurementDto.getId());
procurementRecordStorageById.setInboundNum(procurementDto.getQuantityStock());
+ procurementRecordStorageById.setWarnNum(procurementDto.getWarnNum());
procurementRecordStorageById.setUpdateUser(SecurityUtils.getLoginUser().getUserId());
procurementRecordStorageById.setUpdateTime(LocalDateTime.now());
return procurementRecordMapper.updateById(procurementRecordStorageById);
@@ -177,6 +178,12 @@
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String entryDateStr = procurementDto.getEntryDate() + " 00:00:00";
String createTimeStr = procurementDto.getCreateTime() + " 00:00:00";
+ SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(procurementDto.getSalesLedgerProductId());
+ if(salesLedgerProduct == null){
+ throw new RuntimeException("閿�鍞彴璐︿骇鍝佷笉瀛樺湪");
+ }
+ salesLedgerProduct.setMinStock(procurementDto.getMinStock());
+ salesLedgerProductMapper.updateById(salesLedgerProduct);
ProcurementRecordStorage procurementRecordStorageById = getProcurementRecordById(procurementDto.getId());
procurementRecordStorageById.setCreateBy(sysUser.getNickName());
procurementRecordStorageById.setCreateUser(sysUser.getUserId());
@@ -231,6 +238,104 @@
}
@Override
+ public Map<String, Object> getReportList(Page page, ProcurementPageDto procurementDto) {
+ // 鏋勫缓鎶ヨ〃鏁版嵁缁撴瀯
+ Map<String, Object> reportData = new HashMap<>();
+ // 2. 鏋勫缓鍥捐〃鏁版嵁
+ Map<String, Object> chartData = new HashMap<>();
+
+ IPage<ProcurementPageDtoCopy> procurementPageDtoCopyIPage = procurementRecordMapper.listPageCopy(page, procurementDto);
+ List<ProcurementPageDtoCopy> procurementPageDtoCopyList = procurementPageDtoCopyIPage.getRecords();
+ // 璁$畻寰呭叆搴撴暟閲�
+ reportData.put("tableData", procurementPageDtoCopyList);
+ // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
+ List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList());
+ if(CollectionUtils.isEmpty(collect)){
+ return reportData;
+ }
+ LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
+ List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
+ if(CollectionUtils.isEmpty( procurementRecords)){
+ return reportData;
+ }
+ int totalIn =0;
+ int totalOut =0;
+ int currentStock =0;
+ int turnoverRate =0;
+ List<String> dates = new ArrayList<>();
+ List<Integer> values = new ArrayList<>();
+ List<String> comparisonDates = new ArrayList<>();
+ List<Integer> inValues = new ArrayList<>();
+ List<Integer> outValues = new ArrayList<>();
+ // 瀹氫箟鏃ユ湡鏍煎紡鍖栧櫒锛屾寚瀹氫负yyyy-MM-dd鏍煎紡
+ DateTimeFormatter dateFormatter = DateTimeFormatter.ISO_LOCAL_DATE;
+ for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) {
+ dates.add(dto.getCreateTime().format(dateFormatter));
+ comparisonDates.add(dto.getCreateTime().format(dateFormatter));
+
+ // 鏍规嵁閲囪喘鍙拌处ID绛涢�夊搴旂殑鍑哄簱璁板綍
+ List<ProcurementRecordOut> collect1 = procurementRecords.stream()
+ .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId()))
+ .collect(Collectors.toList());
+
+ // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
+ if(CollectionUtils.isEmpty(collect1)){
+ dto.setInboundNum0(dto.getInboundNum());
+ continue;
+ }
+
+ // 璁$畻宸插嚭搴撴暟閲忔�诲拰锛屽苟璁剧疆寰呭嚭搴撴暟閲�
+ BigDecimal totalInboundNum = collect1.stream()
+ .map(ProcurementRecordOut::getInboundNum)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+ // 寰呭嚭搴撴暟閲� = 鎬绘暟閲� - 宸插嚭搴撴暟閲�
+ dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum));
+
+ // 璁$畻鎬诲叆搴撴暟閲�
+ totalIn += dto.getInboundNum().intValue();
+ inValues.add(totalIn);
+ // 璁$畻鎬诲嚭搴撴暟閲�
+ totalOut += totalInboundNum.intValue();
+ outValues.add(totalOut);
+ // 璁$畻褰撳墠搴撳瓨
+ currentStock += dto.getInboundNum().intValue() - totalInboundNum.intValue();
+ values.add(currentStock);
+ // 璁$畻鍛ㄨ浆鐜�
+ if(totalIn > 0){
+ turnoverRate = totalOut * 100 / totalIn;
+ }
+ }
+
+
+ // 1. 鏋勫缓姹囨�绘暟鎹�
+ Map<String, Object> summary = new HashMap<>();
+ summary.put("totalIn", totalIn); // 鎬诲叆搴撻噺锛屽疄闄呭簲浠庢暟鎹绠�
+ summary.put("totalOut", totalOut); // 鎬诲嚭搴撻噺锛屽疄闄呭簲浠庢暟鎹绠�
+ summary.put("currentStock", currentStock); // 褰撳墠搴撳瓨閲忥紝瀹為檯搴斾粠鏁版嵁璁$畻
+ summary.put("turnoverRate", turnoverRate); // 鍛ㄨ浆鐜囷紝瀹為檯搴斾粠鏁版嵁璁$畻
+ reportData.put("summary", summary);
+
+ // 2. 鏋勫缓鍥捐〃鏁版嵁
+// Map<String, Object> chartData = new HashMap<>();
+// List<String> dates = Arrays.asList("2025-09-15", "2025-09-16", "2025-09-17", "2025-09-18", "2025-09-19");
+// List<Integer> values = Arrays.asList(300, 350, 400, 380, 420);
+
+ chartData.put("dates", dates);
+ chartData.put("values", values);
+ chartData.put("comparisonDates", comparisonDates); // 瀹為檯搴斾粠鏁版嵁璁$畻
+ chartData.put("inValues", inValues); // 瀹為檯搴斾粠鏁版嵁璁$畻
+ chartData.put("outValues", outValues); // 瀹為檯搴斾粠鏁版嵁璁$畻
+ reportData.put("chartData", chartData);
+
+ // 3. 璁剧疆琛ㄦ牸鏁版嵁
+ reportData.put("tableData", procurementPageDtoCopyList);
+
+ return reportData;
+ }
+
+ @Override
public int add(ProcurementAddDto procurementDto) {
LoginUser loginUser = SecurityUtils.getLoginUser();
// 鎵归噺鏂板
@@ -244,6 +349,7 @@
.salesLedgerProductId(detail.getId())
.inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�"+ (aLong + 1) + "鎵规")
.inboundNum(detail.getInboundQuantity())
+ .warnNum(detail.getWarnNum())
.createTime(LocalDateTime.now())
.createUser(loginUser.getUserId())
.updateTime(LocalDateTime.now())
@@ -334,7 +440,8 @@
BigDecimal totalInboundNum = collect1.stream()
.map(ProcurementRecordOut::getInboundNum)
.reduce(BigDecimal.ZERO, BigDecimal::add);
-
+ // 鍑哄簱鏁伴噺 = 鎬绘暟閲� - 寰呭嚭搴撴暟閲�
+ dto.setTotalInboundNum(totalInboundNum);
// 寰呭嚭搴撴暟閲� = 鎬绘暟閲� - 宸插嚭搴撴暟閲�
dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum));
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
new file mode 100644
index 0000000..ef3f242
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
@@ -0,0 +1,29 @@
+package com.ruoyi.procurementrecord.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
+import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.procurementrecord.service.ReturnManagementService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author :yys
+ * @date : 2025/9/17 10:34
+ */
+@Service
+@Slf4j
+public class ReturnManagementServiceImpl extends ServiceImpl<ReturnManagementMapper, ReturnManagement> implements ReturnManagementService {
+
+ @Autowired
+ private ReturnManagementMapper returnManagementMapper;
+
+ @Override
+ public IPage<ReturnManagement> listPage(Page page, ReturnManagement returnManagement) {
+ IPage<ReturnManagement> returnManagementIPage = returnManagementMapper.listPage(page, returnManagement);
+ return returnManagementIPage;
+ }
+}
diff --git a/src/main/java/com/ruoyi/production/controller/SalesLedgerSchedulingController.java b/src/main/java/com/ruoyi/production/controller/SalesLedgerSchedulingController.java
index 22b96b4..5ca3bc2 100644
--- a/src/main/java/com/ruoyi/production/controller/SalesLedgerSchedulingController.java
+++ b/src/main/java/com/ruoyi/production/controller/SalesLedgerSchedulingController.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
@@ -52,6 +53,17 @@
salesLedgerSchedulingService.export(response);
}
+
+ /**
+ * 瀵煎嚭
+ * @param response
+ */
+ @PostMapping("/exportOne")
+ @ApiOperation("鐢熶骇绠$悊-鐢熶骇娲惧伐-瀵煎嚭")
+ public void exportOne(HttpServletResponse response) {
+ salesLedgerSchedulingService.exportOne(response);
+ }
+
@PostMapping("/productionDispatch")
@Log(title = "鐢熶骇绠$悊-鐢熶骇璁㈠崟-鐢熶骇娲惧伐", businessType = BusinessType.INSERT)
@ApiOperation("鐢熶骇绠$悊-鐢熶骇璁㈠崟-鐢熶骇娲惧伐")
@@ -69,6 +81,23 @@
return AjaxResult.success(result);
}
+ /**
+ * 瀵煎嚭
+ * @param response
+ */
+ @PostMapping("/exportTwo")
+ @ApiOperation("鐢熶骇绠$悊-宸ュ簭鎺掍骇-瀵煎嚭")
+ public void exportTwo(HttpServletResponse response) {
+ Page page = new Page(-1,-1);
+ SalesLedgerSchedulingProcessDto salesLedgerSchedulingDto = new SalesLedgerSchedulingProcessDto();
+ IPage<SalesLedgerSchedulingProcessDto> result = salesLedgerSchedulingService.listPageProcess(page,salesLedgerSchedulingDto);
+ result.getRecords().forEach(item -> {
+ item.setStatusName(item.getStatus().toString());
+ });
+ ExcelUtil<SalesLedgerSchedulingProcessDto> util = new ExcelUtil<>(SalesLedgerSchedulingProcessDto.class);
+ util.exportExcel(response, result.getRecords(), "宸ュ簭鎺掍骇");
+ }
+
@DeleteMapping("/productionDispatchDelete")
@Log(title = "鐢熶骇绠$悊-宸ュ簭鎺掍骇-鍙栨秷鎺掍骇", businessType = BusinessType.DELETE)
diff --git a/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java b/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java
index 866970e..4051ecf 100644
--- a/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java
+++ b/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java
@@ -2,12 +2,14 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.production.dto.ProcessSchedulingDto;
import com.ruoyi.production.dto.ProductionReportDto;
+import com.ruoyi.production.dto.SalesLedgerSchedulingProcessDto;
import com.ruoyi.production.dto.SalesLedgerWorkDto;
import com.ruoyi.production.pojo.SalesLedgerWork;
import com.ruoyi.production.service.SalesLedgerWorkService;
@@ -18,6 +20,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@@ -41,6 +44,24 @@
return AjaxResult.success(listPage);
}
+ /**
+ * 瀵煎嚭
+ * @param response
+ */
+ @PostMapping("/export")
+ @ApiOperation("鐢熶骇绠$悊-鐢熶骇鎶ュ伐-瀵煎嚭")
+ public void export(HttpServletResponse response) {
+ Page page = new Page(-1,-1);
+ SalesLedgerWorkDto salesLedgerSchedulingDto = new SalesLedgerWorkDto();
+ IPage<SalesLedgerWorkDto> result = salesLedgerWorkService.listPage(page,salesLedgerSchedulingDto);
+ result.getRecords().forEach(item -> {
+ item.setDaiNum(item.getFinishedNum().subtract(item.getSchedulingNum()));
+ item.setStatusName(item.getStatus().toString());
+ });
+ ExcelUtil<SalesLedgerWorkDto> util = new ExcelUtil<>(SalesLedgerWorkDto.class);
+ util.exportExcel(response, result.getRecords(), "宸ュ簭鎺掍骇");
+ }
+
@GetMapping("/list")
@Log(title = "鐢熶骇鎶ュ伐-鏌ヨ", businessType = BusinessType.OTHER)
@ApiOperation("鐢熶骇鎶ュ伐-鏌ヨ")
diff --git a/src/main/java/com/ruoyi/production/dto/DaiDto.java b/src/main/java/com/ruoyi/production/dto/DaiDto.java
new file mode 100644
index 0000000..86853cb
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/dto/DaiDto.java
@@ -0,0 +1,110 @@
+package com.ruoyi.production.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/11/3 9:35
+ */
+@Data
+public class DaiDto{
+
+ @Excel(name = "寰呮帓鏁伴噺")
+ private BigDecimal daiNum;
+
+ @ApiModelProperty(value = "閿�鍞骇鍝両D")
+ private Long salesLedgerProductId;
+
+ @ApiModelProperty(value = "閿�鍞彴璐D")
+ private Long salesLedgerId;
+
+ /**
+ * 閿�鍞悎鍚屽彿
+ */
+ @Excel(name = "閿�鍞悎鍚屽彿")
+ @ApiModelProperty(value = "閿�鍞悎鍚屽彿")
+ private String salesContractNo;
+
+ /**
+ * 瀹㈡埛鍚堝悓鍙�
+ */
+ @Excel(name = "瀹㈡埛鍚堝悓鍙�")
+ @ApiModelProperty(value = "瀹㈡埛鍚堝悓鍙�")
+ private String customerContractNo;
+
+ /**
+ * 椤圭洰鍚嶇О
+ */
+ @Excel(name = "椤圭洰鍚嶇О")
+ @ApiModelProperty(value = "椤圭洰鍚嶇О")
+ private String projectName;
+
+ /**
+ * 褰曞叆鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "褰曞叆鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "褰曞叆鏃ユ湡")
+ private Date entryDate;
+
+ @ApiModelProperty(value = "褰曞叆鏃ユ湡寮�濮�")
+ private String entryDateStart;
+
+ @ApiModelProperty(value = "褰曞叆鏃ユ湡缁撴潫")
+ private String entryDateEnd;
+
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ @Excel(name = "瀹㈡埛鍚嶇О")
+ @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
+ private String customerName;
+
+
+ /**
+ * 浜у搧澶х被
+ */
+ @Excel(name = "浜у搧澶х被")
+ @ApiModelProperty(value = "浜у搧澶х被")
+ private String productCategory;
+
+ /**
+ * 瑙勬牸鍨嬪彿
+ */
+ @Excel(name = "瑙勬牸鍨嬪彿")
+ @ApiModelProperty(value = "瑙勬牸鍨嬪彿")
+ private String specificationModel;
+
+ /**
+ * 鍗曚綅
+ */
+ @Excel(name = "鍗曚綅")
+ @ApiModelProperty(value = "鍗曚綅")
+ private String unit;
+
+ /**
+ * 鏁伴噺
+ */
+ @Excel(name = "鏁伴噺")
+ @ApiModelProperty(value = "鏁伴噺")
+ private BigDecimal quantity;
+
+ /**
+ * 鎺掍骇鏁伴噺
+ */
+ @Excel(name = "鎺掍骇鏁伴噺")
+ @ApiModelProperty(value = "鎺掍骇鏁伴噺")
+ private BigDecimal schedulingNum;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingDto.java
index accffb0..4e606a1 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingDto.java
@@ -113,6 +113,9 @@
@ApiModelProperty(value = "瀹屽伐鏁伴噺")
private BigDecimal successNum;
+ @Excel(name = "鐘舵��")
+ private String status;
+
@ApiModelProperty(value = "绉熸埛ID")
private Long tenantId;
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingProcessDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingProcessDto.java
index 45e6148..8952455 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingProcessDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerSchedulingProcessDto.java
@@ -96,9 +96,11 @@
/**
* 鐘舵��
*/
- @Excel(name = "鐘舵��")
@ApiModelProperty(value = "鐘舵��")
private Integer status;
+
+ @Excel(name = "鐘舵��", readConverterExp = "1=寰呮帓浜�,2=鎺掍骇涓�,3=宸叉帓浜�")
+ private String statusName;
/**
* 娲惧伐浜�
@@ -125,6 +127,7 @@
* 宸叉帓浜ф暟閲�
*/
@ApiModelProperty(value = "宸叉帓浜ф暟閲�")
+ @Excel(name = "宸叉帓浜ф暟閲�")
private BigDecimal successNum;
private Long tenantId;
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java
index a241cca..055f2a8 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.production.dto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -27,6 +28,7 @@
* 鎺掍骇浜哄悕绉�
*/
@ApiModelProperty(value = "鎺掍骇浜哄悕绉�")
+ @Excel(name = "鎺掍骇浜�")
private String schedulingUserName;
@@ -34,13 +36,22 @@
* 鎺掍骇鏁伴噺
*/
@ApiModelProperty(value = "鎺掍骇鏁伴噺")
+ @Excel(name = "鎺掍骇鏁伴噺")
private BigDecimal schedulingNum;
/**
* 鐢熶骇鏁伴噺
*/
@ApiModelProperty(value = "鐢熶骇鏁伴噺")
+ @Excel(name = "鐢熶骇鏁伴噺")
private BigDecimal finishedNum;
+
+ /**
+ * 寰呯敓浜ф暟閲�
+ */
+ @ApiModelProperty(value = "寰呯敓浜ф暟閲�")
+ @Excel(name = "寰呯敓浜ф暟閲�")
+ private BigDecimal daiNum;
/**
* 宸ユ椂瀹氶
@@ -52,11 +63,13 @@
* 宸ュ簭
*/
@ApiModelProperty(value = "宸ュ簭")
+ @Excel(name = "宸ュ簭")
private String process;
/**
* 鎺掍骇鏃ユ湡
*/
@ApiModelProperty(value = "鎺掍骇鏃ユ湡")
+ @Excel(name = "鎺掍骇鏃ユ湡")
private String schedulingDate;
@ApiModelProperty(value = "寮�濮嬫椂闂�")
@@ -70,4 +83,8 @@
@ApiModelProperty(value = "鎶ュ伐鐘舵��")
private Integer status;
+ @Excel(name = "鐘舵��", readConverterExp = "1=寰呯敓浜�,2=鐢熶骇涓�,3=宸叉姤宸�")
+ private String statusName;
+
+
}
diff --git a/src/main/java/com/ruoyi/production/service/SalesLedgerSchedulingService.java b/src/main/java/com/ruoyi/production/service/SalesLedgerSchedulingService.java
index 484bd23..2387e87 100644
--- a/src/main/java/com/ruoyi/production/service/SalesLedgerSchedulingService.java
+++ b/src/main/java/com/ruoyi/production/service/SalesLedgerSchedulingService.java
@@ -29,4 +29,6 @@
int productionDispatchDelete(List<Long> ids);
int processScheduling(List<ProcessSchedulingDto> processSchedulingDto);
+
+ void exportOne(HttpServletResponse response);
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java
index 103d809..4f60b7e 100644
--- a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java
@@ -6,10 +6,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
-import com.ruoyi.production.dto.ProcessSchedulingDto;
-import com.ruoyi.production.dto.ProductionDispatchAddDto;
-import com.ruoyi.production.dto.SalesLedgerSchedulingDto;
-import com.ruoyi.production.dto.SalesLedgerSchedulingProcessDto;
+import com.ruoyi.production.dto.*;
import com.ruoyi.production.mapper.SalesLedgerSchedulingMapper;
import com.ruoyi.production.mapper.SalesLedgerWorkMapper;
import com.ruoyi.production.pojo.SalesLedgerScheduling;
@@ -19,6 +16,7 @@
import com.ruoyi.project.system.mapper.SysUserMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -26,6 +24,7 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -61,6 +60,12 @@
.filter(j -> j.getSalesLedgerProductId().equals(i.getSalesLedgerProductId()))
.map(SalesLedgerWork::getFinishedNum)
.reduce(BigDecimal.ZERO, BigDecimal::add));
+ // 鐘舵�� = 鏁伴噺鍜屽畬宸ユ暟閲忔瘮杈�
+ if(i.getSchedulingNum().compareTo(i.getSuccessNum()) == 0){
+ i.setStatus("宸插畬鎴�");
+ }else{
+ i.setStatus("鏈畬鎴�");
+ }
});
return list;
}
@@ -175,4 +180,22 @@
}
return 0;
}
+
+ @Override
+ public void exportOne(HttpServletResponse response) {
+ List<SalesLedgerSchedulingDto> list = salesLedgerSchedulingMapper.list();
+ if(CollectionUtils.isEmpty(list)){
+ throw new RuntimeException("鏃犲鍑烘暟鎹�");
+ }
+ List<DaiDto> dais = new ArrayList<>();
+ list.forEach(i -> {
+ DaiDto daiDto = new DaiDto();
+ BeanUtils.copyProperties(i, daiDto);
+ // 鑾峰彇寰呮帓浜ф暟閲�
+ daiDto.setDaiNum(daiDto.getQuantity().subtract(i.getSchedulingNum()));
+ dais.add(daiDto);
+ });
+ ExcelUtil<DaiDto> util = new ExcelUtil<>(DaiDto.class);
+ util.exportExcel(response, dais, "鐢熶骇娲惧伐");
+ }
}
diff --git a/src/main/java/com/ruoyi/project/common/CommonController.java b/src/main/java/com/ruoyi/project/common/CommonController.java
index c575425..21fa5ec 100644
--- a/src/main/java/com/ruoyi/project/common/CommonController.java
+++ b/src/main/java/com/ruoyi/project/common/CommonController.java
@@ -5,6 +5,11 @@
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.basic.service.StorageBlobService;
+import com.ruoyi.framework.web.domain.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -27,6 +32,7 @@
*
* @author ruoyi
*/
+@Api(tags = "閫氱敤鎺ュ彛")
@RestController
@RequestMapping("/common")
public class CommonController
@@ -69,6 +75,20 @@
}
}
+ @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));
+ }
+
/**
* 閫氱敤涓婁紶璇锋眰锛堝崟涓級
*/
diff --git a/src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java b/src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java
index 9f7003a..550fa51 100644
--- a/src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java
+++ b/src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java
@@ -1,10 +1,13 @@
package com.ruoyi.project.system.mapper;
+import java.util.ArrayList;
import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.project.system.domain.SysUser;
+import org.springframework.beans.PropertyValues;
/**
* 鐢ㄦ埛琛� 鏁版嵁灞�
@@ -134,4 +137,8 @@
* @return 缁撴灉
*/
public SysUser checkEmailUnique(String email);
+
+ List<SysUser> selectList(List<Long> registrantIds);
+
+ List<SysUser> selectUsersByIds(@Param("userIds") List<Long> userIds);
}
diff --git a/src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java b/src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java
index 5f62c97..3df034f 100644
--- a/src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/AccountingReportController.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
@@ -9,13 +10,17 @@
import com.ruoyi.purchase.dto.VatDto;
import com.ruoyi.purchase.pojo.InvoicePurchase;
import com.ruoyi.purchase.service.IInvoicePurchaseService;
+import com.ruoyi.waterrecord.pojo.WaterRecord;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
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 javax.servlet.http.HttpServletResponse;
import java.util.List;
@RestController
@@ -34,10 +39,31 @@
return AjaxResult.success(result);
}
+ @Log(title = "閲囪喘鎶ヨ〃-椤圭洰鍒╂鼎瀵煎嚭", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ @ApiOperation("閲囪喘鎶ヨ〃-椤圭洰鍒╂鼎瀵煎嚭")
+ public void export(HttpServletResponse response) {
+ Page page = new Page(-1,-1);
+ InvoicePurchaseReportDto waterRecord = new InvoicePurchaseReportDto();
+ IPage<InvoicePurchaseReportDto> listPage = invoicePurchaseService.listPurchaseReport(page, waterRecord);
+ ExcelUtil<InvoicePurchaseReportDto> util = new ExcelUtil<InvoicePurchaseReportDto>(InvoicePurchaseReportDto.class);
+ util.exportExcel(response, listPage.getRecords() , "椤圭洰鍒╂鼎瀵煎嚭");
+ }
+
@Log(title = "閲囪喘鎶ヨ〃-澧炲�肩◣姣斿", businessType = BusinessType.OTHER)
@GetMapping("/listVat")
public AjaxResult listVat(Page page,String month) {
IPage<VatDto> result = invoicePurchaseService.listVat(page, month);
return AjaxResult.success(result);
}
+
+ @Log(title = "閲囪喘鎶ヨ〃-澧炲�肩◣姣斿", businessType = BusinessType.EXPORT)
+ @PostMapping("/exportTwo")
+ @ApiOperation("閲囪喘鎶ヨ〃-澧炲�肩◣姣斿")
+ public void exportTwo(HttpServletResponse response) {
+ Page page = new Page(-1,-1);
+ IPage<VatDto> result = invoicePurchaseService.listVat(page, null);
+ ExcelUtil<VatDto> util = new ExcelUtil<VatDto>(VatDto.class);
+ util.exportExcel(response, result.getRecords() , "澧炲�肩◣姣斿");
+ }
}
diff --git a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
index 93bca78..71f1b5d 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
@@ -15,6 +16,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@@ -42,16 +44,17 @@
}
/**
- * 瀵煎嚭浠樻鐧昏鍒楄〃
+ * 瀵煎嚭浠樻娴佹按鍒楄〃
*/
-// @Log(title = "浠樻鐧昏", businessType = BusinessType.EXPORT)
-// @PostMapping("/export")
-// public void export(HttpServletResponse response, PaymentRegistrationDto paymentRegistrationDto)
-// {
-// List<PaymentRegistrationDto> list = paymentRegistrationService.selectPaymentRegistrationList(paymentRegistrationDto);
-// ExcelUtil<PaymentRegistration> util = new ExcelUtil<PaymentRegistration>(PaymentRegistration.class);
-// util.exportExcel(response, list, "浠樻鐧昏鏁版嵁");
-// }
+ @Log(title = "瀵煎嚭浠樻娴佹按鍒楄〃", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, PaymentRegistrationDto paymentRegistrationDto)
+ {
+ Page page = new Page<>(-1,-1);
+ IPage<PaymentRegistrationDto> paymentRegistrationDtoIPage = paymentHistoryListPage(page, paymentRegistrationDto);
+ ExcelUtil<PaymentRegistrationDto> util = new ExcelUtil<PaymentRegistrationDto>(PaymentRegistrationDto.class);
+ util.exportExcel(response, paymentRegistrationDtoIPage.getRecords(), "瀵煎嚭浠樻娴佹按鍒楄〃");
+ }
/**
* 鑾峰彇浠樻鐧昏璇︾粏淇℃伅
diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
index 21a601e..fca4277 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -56,6 +56,20 @@
}
/**
+ * 瀵煎嚭鏉ョエ鐧昏鍒楄〃
+ */
+ @Log(title = "瀵煎嚭鏉ョエ鐧昏鍒楄〃", businessType = BusinessType.EXPORT)
+ @PostMapping("/exportOne")
+ public void exportOne(HttpServletResponse response, PurchaseLedger purchaseLedger) {
+ Page page = new Page();
+ page.setCurrent(-1);
+ page.setSize(-1);
+ IPage<PurchaseLedgerDto> purchaseLedgerDtoIPage = purchaseLedgerService.selectPurchaseLedgerListPage(page, new PurchaseLedgerDto());
+ ExcelUtil<PurchaseLedgerDto> util = new ExcelUtil<PurchaseLedgerDto>(PurchaseLedgerDto.class);
+ util.exportExcel(response, purchaseLedgerDtoIPage.getRecords(), "瀵煎嚭鏉ョエ鐧昏鍒楄〃");
+ }
+
+ /**
* 鏂板淇敼閲囪喘鍙拌处
*/
@Log(title = "閲囪喘鍙拌处", businessType = BusinessType.INSERT)
diff --git a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
index ab38808..d4fd91b 100644
--- a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
@@ -103,6 +103,18 @@
}
/**
+ * 浠樻鐧昏瀵煎嚭
+ */
+ @Log(title = "浠樻鐧昏瀵煎嚭", businessType = BusinessType.EXPORT)
+ @PostMapping("/exportOne")
+ public void exportOne(HttpServletResponse response, TicketRegistration ticketRegistration) {
+ Page page = new Page<>(-1, -1);
+ IPage<TicketRegistration> ticketRegistrationIPage = listPage(page, ticketRegistration);
+ ExcelUtil<TicketRegistration> util = new ExcelUtil<TicketRegistration>(TicketRegistration.class);
+ util.exportExcel(response, ticketRegistrationIPage.getRecords(), "浠樻鐧昏瀵煎嚭");
+ }
+
+ /**
* 鏌ヨ鏉ョエ鐧昏鍜屼骇鍝佺埗瀛愬垪琛�
*/
@GetMapping("/getRegistrationById")
diff --git a/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseReportDto.java b/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseReportDto.java
index f9b8657..45347ad 100644
--- a/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseReportDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseReportDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.purchase.dto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import lombok.Data;
/**
@@ -9,24 +10,32 @@
public class InvoicePurchaseReportDto {
//閿�鍞悎鍚屽彿
+ @Excel(name = "閿�鍞悎鍚屽彿")
private String customerContractNo;
// 瀹㈡埛鍚嶇О
+ @Excel(name = "瀹㈡埛鍚嶇О")
private String customerName;
// 椤圭洰鍚嶇О
+ @Excel(name = "椤圭洰鍚嶇О")
private String projectName;
// 鍚堝悓閲戦
+ @Excel(name = "鍚堝悓閲戦")
private String contractAmount;
// 閲囪喘閲戦
+ @Excel(name = "閲囪喘閲戦")
private String purchaseAmount;
private String saleTaxExclusiveTotalPrice;
private String taxExclusiveTotalPrice;
// 鍒╂鼎
+ @Excel(name = "鍒╂鼎")
private String balance;
// 鍒╂鼎鐜�
+ @Excel(name = "鍒╂鼎鐜�")
private String balanceRatio;
// 澧炲�肩◣
+ @Excel(name = "澧炲�肩◣")
private String balanceAmount;
}
diff --git a/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java b/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java
index 0ba914a..2561c8d 100644
--- a/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.purchase.dto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.purchase.pojo.PaymentRegistration;
import lombok.Data;
@@ -15,9 +16,11 @@
private String salesContractNo;
// 閲囪喘鍚堝悓鍙�
+ @Excel(name = "閲囪喘鍚堝悓鍙�")
private String purchaseContractNumber;
// 渚涘簲鍟嗗悕绉�
+ @Excel(name = "渚涘簲鍟嗗悕绉�")
private String supplierName;
// 鍙戠エ鍙�
diff --git a/src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java b/src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java
index 1a3396d..25085d2 100644
--- a/src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java
@@ -25,6 +25,7 @@
private String purchaseContractNumber;
//渚涘簲鍟嗗悕绉�
private String supplierName;
+ private String projectName;
private Long issUerId;
private String issUer;
//澧炲�肩◣
diff --git a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
index d0d3de6..7d1e9e5 100644
--- a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
@@ -2,10 +2,12 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.sales.pojo.CommonFile;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
@@ -23,7 +25,9 @@
/**
* 閲囪喘鍚堝悓鍙�
*/
+ @Excel(name = "閲囪喘鍚堝悓鍙�")
private String purchaseContractNumber;
+
/**
@@ -34,6 +38,7 @@
/**
* 渚涘簲鍟嗗悕绉�
*/
+ @Excel(name = "渚涘簲鍟嗗悕绉�")
private String supplierName;
/**
@@ -45,11 +50,13 @@
/**
* 褰曞叆浜哄鍚�
*/
+ @Excel(name = "褰曞叆浜哄鍚�")
private String recorderName;
/**
* 閿�鍞悎鍚屽彿
*/
+ @Excel(name = "閿�鍞悎鍚屽彿")
private String salesContractNo;
/**
@@ -60,13 +67,23 @@
/**
* 椤圭洰鍚嶇О
*/
+ @Excel(name = "椤圭洰鍚嶇О")
private String projectName;
/**
* 褰曞叆鏃ユ湡
*/
@JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "褰曞叆鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
private Date entryDate;
+
+ /**
+ * 绛捐鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "绛捐鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date executionDate;
/**
* 澶囨敞
@@ -142,15 +159,18 @@
/**
* 鍚堝悓閲戦锛堜骇鍝佸惈绋庢�讳环锛�
*/
+ @Excel(name = "鍚堝悓閲戦")
private BigDecimal contractAmount = BigDecimal.ZERO;
@TableField(exist = false)
@ApiModelProperty("鏉ョエ閲戦")
+ @Excel(name = "宸叉潵绁ㄩ噾棰�(鍏�)")
private BigDecimal receiptPaymentAmount = BigDecimal.ZERO;
@ApiModelProperty("鏈潵绁ㄩ噾棰�")
@TableField(exist = false)
+ @Excel(name = "鏈潵绁ㄩ噾棰�(鍏�)")
private BigDecimal unReceiptPaymentAmount =BigDecimal.ZERO;
@ApiModelProperty("鏂囦欢绫诲瀷 鍙� 4")
diff --git a/src/main/java/com/ruoyi/purchase/dto/VatDto.java b/src/main/java/com/ruoyi/purchase/dto/VatDto.java
index 8eb273a..c70ebeb 100644
--- a/src/main/java/com/ruoyi/purchase/dto/VatDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/VatDto.java
@@ -1,5 +1,6 @@
package com.ruoyi.purchase.dto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
@@ -9,14 +10,18 @@
public class VatDto {
//鏈堜唤
+ @Excel(name = "鏈堜唤")
private String month ;
//杩涢」绋�
+ @Excel(name = "杩涢」绋庨")
private BigDecimal jTaxAmount;
//閿�椤圭◣
+ @Excel(name = "閿�椤圭◣棰�")
private BigDecimal xTaxAmount;
+ @Excel(name = "閿�-杩�")
private BigDecimal taxAmount;
}
diff --git a/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java b/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java
index d117038..91f0540 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
@@ -48,11 +49,13 @@
/**
* 鏈浠樻閲戦
*/
+ @Excel(name = "浠樻閲戦")
private BigDecimal currentPaymentAmount;
/**
* 浠樻褰㈠紡
*/
+ @Excel(name = "浠樻褰㈠紡")
private String paymentMethod;
/**
@@ -72,12 +75,14 @@
* 浠樻鏃ユ湡
*/
@JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "浠樻鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
private Date paymentDate;
/**
* 鐧昏鏃ユ湡
*/
@JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鐧昏鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
private Date registrationtDate;
/**
diff --git a/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java b/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java
index c0fcb50..7b7ad72 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java
@@ -73,6 +73,14 @@
@Excel(name = "褰曞叆鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
private Date entryDate;
+
+ /**
+ * 绛捐鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "绛捐鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date executionDate;
+
/**
* 澶囨敞
*/
diff --git a/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java b/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
index 47bb1f9..e79796a 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
@@ -28,6 +28,13 @@
private Long id;
/**
+ * 鐘舵��
+ */
+ @Excel(name = "鐘舵��")
+ @TableField(exist = false)
+ private String statusName;
+
+ /**
* 閲囪喘鍙拌处id
*/
private Long purchaseLedgerId;
@@ -135,10 +142,12 @@
@ApiModelProperty(value = "宸蹭粯娆炬�婚噾棰�")
@TableField(exist = false)
+ @Excel(name = "宸蹭粯娆炬�婚噾棰�")
private BigDecimal paymentAmountTotal;
@ApiModelProperty(value = "鏈粯娆炬�婚噾棰�")
@TableField(exist = false)
+ @Excel(name = "鏈粯娆炬�婚噾棰�")
private BigDecimal unPaymentAmountTotal;
@TableField(exist = false)
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index 0650ce8..e5a64fd 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -6,6 +6,10 @@
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.pojo.AccountExpense;
+import com.ruoyi.account.pojo.AccountIncome;
+import com.ruoyi.account.service.AccountExpenseService;
+import com.ruoyi.account.service.AccountIncomeService;
import com.ruoyi.basic.mapper.ProductMapper;
import com.ruoyi.basic.mapper.ProductModelMapper;
import com.ruoyi.basic.mapper.SupplierManageMapper;
@@ -68,7 +72,7 @@
@RequiredArgsConstructor
@Slf4j
public class PurchaseLedgerServiceImpl extends ServiceImpl<PurchaseLedgerMapper, PurchaseLedger> implements IPurchaseLedgerService {
-
+ private final AccountExpenseService accountExpenseService;
private final PurchaseLedgerMapper purchaseLedgerMapper;
private final SalesLedgerMapper salesLedgerMapper;
@@ -128,12 +132,41 @@
purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId());
purchaseLedger.setRecorderName(sysUser.getNickName());
purchaseLedger.setPhoneNumber(sysUser.getPhonenumber());
+ // 2. 澶勭悊璐︽埛鏀跺叆
+ AccountExpense accountExpense = new AccountExpense();
+ accountExpense.setExpenseDate(purchaseLedger.getEntryDate());
+ accountExpense.setExpenseType("0");
+ accountExpense.setSupplierName(purchaseLedger.getSupplierName());
+ accountExpense.setExpenseMoney(purchaseLedger.getContractAmount());
+ accountExpense.setExpenseDescribed("閲囪喘鍚堝悓锛�" + purchaseLedger.getPurchaseContractNumber());
+ accountExpense.setExpenseMethod("0");
+ accountExpense.setInvoiceNumber(purchaseLedger.getPurchaseContractNumber());
+ accountExpense.setInputTime(new Date());
+ accountExpense.setInputUser(loginUser.getNickName());
+
// 3. 鏂板鎴栨洿鏂颁富琛�
if (purchaseLedger.getId() == null) {
purchaseLedgerMapper.insert(purchaseLedger);
+// accountIncomeService.save(accountIncome);
+ accountExpenseService.save(accountExpense);
} else {
purchaseLedgerMapper.updateById(purchaseLedger);
+ PurchaseLedger purchaseLedgerDB = purchaseLedgerMapper.selectById(purchaseLedger.getId());
+ List<AccountExpense> accountExpenseDBs = accountExpenseService.getByInvoiceNumberList(purchaseLedger.getPurchaseContractNumber());
+ if (!CollectionUtils.isEmpty(accountExpenseDBs)) {
+ accountExpenseDBs.forEach(accountExpenseDB ->{
+ accountExpenseDB.setExpenseDate(purchaseLedgerDB.getEntryDate());
+ accountExpenseDB.setExpenseType("0");
+ accountExpenseDB.setSupplierName(purchaseLedgerDB.getSupplierName());
+ accountExpenseDB.setExpenseMoney(purchaseLedgerDB.getContractAmount());
+ accountExpenseDB.setExpenseDescribed("閲囪喘鍚堝悓锛�" + purchaseLedgerDB.getPurchaseContractNumber());
+ accountExpenseDB.setExpenseMethod("0");
+ accountExpenseDB.setInvoiceNumber(purchaseLedgerDB.getPurchaseContractNumber());
+ accountExpenseService.updateById(accountExpenseDB);
+ });
+ }
+
}
// 4. 澶勭悊瀛愯〃鏁版嵁
@@ -276,12 +309,15 @@
try {
// 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級
- Files.move(
- Paths.get(tempFile.getTempPath()),
- formalFilePath,
- StandardCopyOption.REPLACE_EXISTING,
- StandardCopyOption.ATOMIC_MOVE
- );
+// Files.move(
+// Paths.get(tempFile.getTempPath()),
+// formalFilePath,
+// StandardCopyOption.REPLACE_EXISTING,
+// StandardCopyOption.ATOMIC_MOVE
+// );
+ // 鍘熷瓙绉诲姩澶辫触锛屼娇鐢ㄥ鍒�+鍒犻櫎
+ Files.copy(Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING);
+ Files.deleteIfExists(Paths.get(tempFile.getTempPath()));
log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
// 鏇存柊鏂囦欢璁板綍锛堝叧鑱斿埌涓氬姟ID锛�
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
index a6e152e..f696be7 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -222,12 +222,15 @@
try {
// 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級
- Files.move(
- Paths.get(tempFile.getTempPath()),
- formalFilePath,
- StandardCopyOption.REPLACE_EXISTING,
- StandardCopyOption.ATOMIC_MOVE
- );
+// Files.move(
+// Paths.get(tempFile.getTempPath()),
+// formalFilePath,
+// StandardCopyOption.REPLACE_EXISTING,
+// StandardCopyOption.ATOMIC_MOVE
+// );
+ // 鍘熷瓙绉诲姩澶辫触锛屼娇鐢ㄥ鍒�+鍒犻櫎
+ Files.copy(Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING);
+ Files.deleteIfExists(Paths.get(tempFile.getTempPath()));
log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
// 鏇存柊鏂囦欢璁板綍锛堝叧鑱斿埌涓氬姟ID锛�
@@ -366,6 +369,10 @@
ticketRegistrationIPage.setTotal(ticketRegistrationIPage.getRecords().size());
}
}
+ ticketRegistrationIPage.getRecords().forEach(item -> {
+ // 宸蹭粯娆鹃噾棰� == 寰呬粯娆鹃噾棰�
+ item.setStatusName(item.getPaymentAmountTotal().compareTo(item.getInvoiceAmount()) == 0 ? "宸插畬鎴愪粯娆�" : "鏈畬鎴愪粯娆�");
+ });
return ticketRegistrationIPage;
}
diff --git a/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java b/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
index 0daeba8..fa50217 100644
--- a/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
+++ b/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
@@ -109,21 +109,21 @@
/**
* 鎻愪氦
- * @param id
+ * @param qualityInspect
* @return
*/
@PostMapping("/submit")
- public AjaxResult submit(Integer id) {
- return AjaxResult.success(qualityInspectService.submit(id));
+ public AjaxResult submit(@RequestBody QualityInspect qualityInspect) {
+ return AjaxResult.success(qualityInspectService.submit(qualityInspect));
}
/**
* 涓嬭浇
* @param response
- * @param id
+ * @param qualityInspect
*/
@PostMapping("/down")
- public void down(HttpServletResponse response,Integer id) {
- qualityInspectService.down(response, id);
+ public void down(HttpServletResponse response,@RequestBody QualityInspect qualityInspect) {
+ qualityInspectService.down(response, qualityInspect);
}
}
diff --git a/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java b/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
index 1dcba08..f464e9b 100644
--- a/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
+++ b/src/main/java/com/ruoyi/quality/service/IQualityInspectService.java
@@ -24,7 +24,7 @@
QualityInspectDto getDetailById(Integer id);
- int submit(Integer id);
+ int submit(QualityInspect qualityInspect);
- void down(HttpServletResponse response, Integer id);
+ void down(HttpServletResponse response, QualityInspect qualityInspect);
}
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 4bb8185..f29bedf 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -79,14 +79,14 @@
//鎻愪氦
@Override
- public int submit(Integer id) {
- QualityInspect qualityInspect = qualityInspectMapper.selectById(id);
+ public int submit(QualityInspect inspect) {
+ QualityInspect qualityInspect = qualityInspectMapper.selectById(inspect.getId());
/*鍒ゆ柇涓嶅悎鏍�*/
if (ObjectUtils.isNotNull(qualityInspect.getCheckResult()) && qualityInspect.getCheckResult().equals("涓嶅悎鏍�")){
QualityUnqualified qualityUnqualified = new QualityUnqualified();
BeanUtils.copyProperties(qualityInspect,qualityUnqualified);
qualityUnqualified.setInspectState(0);//寰呭鐞�
- List<QualityInspectParam> inspectParams = qualityInspectParamService.list(Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, id));
+ List<QualityInspectParam> inspectParams = qualityInspectParamService.list(Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, inspect.getId()));
String text = inspectParams.stream().map(QualityInspectParam::getParameterItem).collect(Collectors.joining(","));
qualityUnqualified.setDefectivePhenomena(text+"杩欎簺鎸囨爣涓瓨鍦ㄤ笉鍚堟牸");//涓嶅悎鏍肩幇璞�
qualityUnqualifiedMapper.insert(qualityUnqualified);
@@ -97,8 +97,8 @@
/*鐢熸垚妫�楠屾姤鍛�*/
@Override
- public void down(HttpServletResponse response, Integer id) {
- QualityInspect inspect = qualityInspectMapper.selectById(id);
+ public void down(HttpServletResponse response, QualityInspect qualityInspect) {
+ QualityInspect inspect = qualityInspectMapper.selectById(qualityInspect.getId());
String inspectType="";
switch (inspect.getInspectType()){
case 0:
@@ -111,7 +111,7 @@
inspectType="鍑哄巶妫�楠�";
break;
}
- List<QualityInspectParam> paramList = qualityInspectParamService.list(Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, id));
+ List<QualityInspectParam> paramList = qualityInspectParamService.list(Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, inspect.getId()));
int index = 1;
for (QualityInspectParam detail : paramList) {
detail.setIndex(index);
@@ -133,6 +133,7 @@
response.setContentType("application/msword");
String fileName = URLEncoder.encode(
"妫�楠屾姤鍛�", "UTF-8");
+ response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-disposition",
"attachment;filename=" + fileName + ".docx");
OutputStream os = response.getOutputStream();
@@ -148,7 +149,7 @@
@Override
public int updateQualityInspect(QualityInspectDto qualityInspectDto) {
- if (qualityInspectDto.getQualityInspectParams().size()>0) {
+ if (ObjectUtils.isNotNull(qualityInspectDto.getQualityInspectParams())) {
qualityInspectParamService.remove(Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId,qualityInspectDto.getId()));
for (QualityInspectParam qualityInspectParam : qualityInspectDto.getQualityInspectParams()) {
qualityInspectParam.setInspectId(qualityInspectDto.getId());
diff --git a/src/main/java/com/ruoyi/sales/controller/PaymentShippingController.java b/src/main/java/com/ruoyi/sales/controller/PaymentShippingController.java
new file mode 100644
index 0000000..c67d438
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/controller/PaymentShippingController.java
@@ -0,0 +1,70 @@
+package com.ruoyi.sales.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.mapper.PaymentShippingMapper;
+import com.ruoyi.sales.pojo.PaymentShipping;
+import com.ruoyi.sales.service.PaymentShippingService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 14:02
+ */
+@RestController
+@RequestMapping("/paymentShipping")
+@Api(tags = "鏀粯涓庡彂璐х鐞�")
+public class PaymentShippingController extends BaseController {
+
+ @Autowired
+ private PaymentShippingService paymentShippingService;
+
+ @Autowired
+ private PaymentShippingMapper paymentShippingMapper;
+
+ @GetMapping("/listPage")
+ @ApiOperation("鍒嗛〉鏌ヨ鏀粯涓庡彂璐т俊鎭�")
+ public AjaxResult listPage(Page page, PaymentShipping paymentShipping) {
+ IPage<PaymentShipping> listPage = paymentShippingService.listPage(page, paymentShipping);
+ return AjaxResult.success(listPage);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("娣诲姞鏀粯涓庡彂璐т俊鎭�")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult add(@RequestBody PaymentShipping paymentShipping) {
+ String ord = OrderUtils.countTodayByCreateTime(paymentShippingMapper, "ORD");
+ paymentShipping.setOrderNo(ord);
+ boolean save = paymentShippingService.save(paymentShipping);
+ return save ? success() : error();
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("淇敼鏀粯涓庡彂璐т俊鎭�")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult update(@RequestBody PaymentShipping paymentShipping) {
+ boolean update = paymentShippingService.updateById(paymentShipping);
+ return update ? success() : error();
+ }
+
+ @DeleteMapping("/delete")
+ @ApiOperation("鍒犻櫎鏀粯涓庡彂璐т俊鎭�")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult delete(@RequestBody List<Long> ids){
+ if (CollectionUtils.isEmpty(ids)){
+ return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ }
+ return AjaxResult.success(paymentShippingService.removeByIds(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
index 98b1105..0801107 100644
--- a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java
@@ -2,12 +2,19 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.purchase.dto.InvoicePurchaseDto;
import com.ruoyi.sales.dto.ReceiptPaymentDto;
+import com.ruoyi.sales.dto.ReceiptPaymentRecordDto;
+import com.ruoyi.sales.dto.SalesLedgerDto;
import com.ruoyi.sales.pojo.ReceiptPayment;
+import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.service.ReceiptPaymentService;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.beans.factory.annotation.Autowired;
@@ -154,6 +161,26 @@
}
/**
+ * 瀵煎嚭鍥炴娴佹按鍒楄〃
+ */
+ @Log(title = "瀵煎嚭鍥炴娴佹按鍒楄〃", businessType = BusinessType.EXPORT)
+ @PostMapping("/exportOne")
+ public void exportOne(HttpServletResponse response, ReceiptPaymentDto salesLedgerDto) {
+ Page page = new Page();
+ page.setCurrent(-1);
+ page.setSize(-1);
+ IPage<ReceiptPaymentDto> salesLedgerIPage = receiptPaymentHistoryListPage(page, salesLedgerDto);
+ ExcelUtil<ReceiptPaymentRecordDto> util = new ExcelUtil<ReceiptPaymentRecordDto>(ReceiptPaymentRecordDto.class);
+ List<ReceiptPaymentRecordDto> receiptPaymentRecordDtos = new ArrayList<>();
+ salesLedgerIPage.getRecords().forEach(receiptPaymentRecordDto -> {
+ ReceiptPaymentRecordDto receiptPaymentRecordDto1 = new ReceiptPaymentRecordDto();
+ BeanUtils.copyBeanProp(receiptPaymentRecordDto, receiptPaymentRecordDto1);
+ receiptPaymentRecordDtos.add(receiptPaymentRecordDto1);
+ });
+ util.exportExcel(response, receiptPaymentRecordDtos, "瀵煎嚭寮�绁ㄧ櫥璁板垪琛�");
+ }
+
+ /**
* 鏌ヨ鍥炴璁板綍涓嶅垎椤�
*/
@GetMapping("/receiptPaymentHistoryListNoPage")
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index a18d5c4..c384520 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -1,5 +1,6 @@
package com.ruoyi.sales.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -12,6 +13,11 @@
import com.ruoyi.sales.dto.InvoiceLedgerDto;
import com.ruoyi.sales.dto.SalesLedgerDto;
import com.ruoyi.sales.mapper.InvoiceLedgerMapper;
+import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
+import com.ruoyi.sales.mapper.ReceiptPaymentMapper;
+import com.ruoyi.sales.pojo.InvoiceLedger;
+import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
+import com.ruoyi.sales.pojo.ReceiptPayment;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.service.ICommonFileService;
import com.ruoyi.sales.service.ISalesLedgerService;
@@ -22,6 +28,8 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -44,6 +52,12 @@
@Autowired
private InvoiceLedgerMapper invoiceLedgerMapper;
+ @Autowired
+ private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
+
+ @Autowired
+ private ReceiptPaymentMapper receiptPaymentMapper;
+
/**
* 鏌ヨ閿�鍞彴璐﹀垪琛�
*/
@@ -65,10 +79,10 @@
if (salesLedger.getId().intValue() == invoiceLedgerDto.getSalesLedgerId()) {
BigDecimal noInvoiceAmountTotal = salesLedger.getContractAmount().subtract(invoiceLedgerDto.getInvoiceTotal());
salesLedger.setNoInvoiceAmountTotal(noInvoiceAmountTotal);
-
}
}
}
+
return getDataTable(list);
}
@@ -89,6 +103,20 @@
List<SalesLedger> list = salesLedgerService.selectSalesLedgerList(salesLedgerDto);
ExcelUtil<SalesLedger> util = new ExcelUtil<SalesLedger>(SalesLedger.class);
util.exportExcel(response, list, "閿�鍞彴璐︽暟鎹�");
+ }
+
+ /**
+ * 瀵煎嚭寮�绁ㄧ櫥璁板垪琛�
+ */
+ @Log(title = "瀵煎嚭寮�绁ㄧ櫥璁板垪琛�", businessType = BusinessType.EXPORT)
+ @PostMapping("/exportOne")
+ public void exportOne(HttpServletResponse response, SalesLedgerDto salesLedgerDto) {
+ Page page = new Page();
+ page.setCurrent(-1);
+ page.setSize(-1);
+ IPage<SalesLedger> salesLedgerIPage = listPage(page, salesLedgerDto);
+ ExcelUtil<SalesLedger> util = new ExcelUtil<SalesLedger>(SalesLedger.class);
+ util.exportExcel(response, salesLedgerIPage == null ? new ArrayList<>() : salesLedgerIPage.getRecords(), "瀵煎嚭寮�绁ㄧ櫥璁板垪琛�");
}
/**
@@ -181,6 +209,17 @@
iPage.setTotal(iPage.getRecords().size());
return iPage;
}
+ // 璁$畻鍥炴閲戦锛屽緟鍥炴閲戦
+ List<InvoiceRegistrationProduct> invoiceRegistrationProducts = invoiceRegistrationProductMapper.selectList(new LambdaQueryWrapper<InvoiceRegistrationProduct>()
+ .in(InvoiceRegistrationProduct::getSalesLedgerId, salesLedgerIds));
+
+ List<InvoiceLedger> invoiceLedgers = invoiceLedgerMapper.selectList(new LambdaQueryWrapper<InvoiceLedger>()
+ .in(InvoiceLedger::getInvoiceRegistrationProductId, invoiceRegistrationProducts.stream().map(InvoiceRegistrationProduct::getId).collect(Collectors.toList())));
+ List<ReceiptPayment> receiptPayments = new ArrayList<>();
+ if(!CollectionUtils.isEmpty(invoiceLedgers)){
+ receiptPayments = receiptPaymentMapper.selectList(new LambdaQueryWrapper<ReceiptPayment>()
+ .in(ReceiptPayment::getInvoiceLedgerId, invoiceLedgers.stream().map(InvoiceLedger::getId).collect(Collectors.toList())));
+ }
for (SalesLedger salesLedger : iPage.getRecords()) {
boolean existFlag = false;
BigDecimal noInvoiceAmountTotal = BigDecimal.ZERO;
@@ -190,6 +229,26 @@
noInvoiceAmountTotal = salesLedger.getContractAmount().subtract(invoiceLedgerDto.getInvoiceTotal());
invoiceTotal = invoiceLedgerDto.getInvoiceTotal();
existFlag = true;
+ if(!CollectionUtils.isEmpty(receiptPayments)){
+ List<InvoiceRegistrationProduct> collect = invoiceRegistrationProducts.stream()
+ .filter(item -> salesLedger.getId().equals(Long.parseLong(item.getSalesLedgerId().toString())))
+ .collect(Collectors.toList());
+ List<Integer> collect1 = collect.stream()
+ .map(InvoiceRegistrationProduct::getId).collect(Collectors.toList());
+ List<InvoiceLedger> collect2 = invoiceLedgers.stream()
+ .filter(item -> collect1.contains(item.getInvoiceRegistrationProductId()))
+ .collect(Collectors.toList());
+ // 鑾峰彇宸插洖娆鹃噾棰�
+ List<ReceiptPayment> collect3 = receiptPayments.stream()
+ .filter(item -> collect2.stream().anyMatch(item1 -> item1.getId().equals(item.getInvoiceLedgerId())))
+ .collect(Collectors.toList());
+ BigDecimal receiptPaymentAmountTotal = collect3.stream().map(ReceiptPayment::getReceiptPaymentAmount)
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+ // 鑾峰彇寰呭洖娆鹃噾棰�
+ BigDecimal noReceiptPaymentAmountTotal = invoiceLedgerDto.getInvoiceTotal().subtract(receiptPaymentAmountTotal);
+ salesLedger.setReceiptPaymentAmountTotal(receiptPaymentAmountTotal);
+ salesLedger.setNoReceiptAmount(noReceiptPaymentAmountTotal);
+ }
break;
}
}
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java b/src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java
new file mode 100644
index 0000000..3a579d6
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/controller/SalesQuotationController.java
@@ -0,0 +1,54 @@
+package com.ruoyi.sales.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.aftersalesservice.dto.AfterSalesServiceDto;
+import com.ruoyi.aftersalesservice.pojo.AfterSalesService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.dto.SalesQuotationDto;
+import com.ruoyi.sales.service.SalesQuotationService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+@RestController
+@RequestMapping("/sales/quotation")
+public class SalesQuotationController {
+ @Autowired
+ private SalesQuotationService salesQuotationService;
+ @GetMapping("/list")
+ public AjaxResult getList(Page page, SalesQuotationDto salesQuotationDto) {
+ return AjaxResult.success(salesQuotationService.listPage(page, salesQuotationDto));
+ }
+
+ @PostMapping("/export")
+ public void export(HttpServletResponse response) {
+ Page page = new Page(-1,-1);
+ SalesQuotationDto afterSalesService = new SalesQuotationDto();
+ IPage<SalesQuotationDto> listPage = salesQuotationService.listPage(page, afterSalesService);
+ ExcelUtil<SalesQuotationDto> util = new ExcelUtil<SalesQuotationDto>(SalesQuotationDto.class);
+ util.exportExcel(response, listPage.getRecords() , "鍙嶉鐧昏");
+ }
+
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody SalesQuotationDto salesQuotationDto) {
+ return AjaxResult.success(salesQuotationService.add(salesQuotationDto));
+ }
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody SalesQuotationDto salesQuotationDto) {
+ return AjaxResult.success(salesQuotationService.edit(salesQuotationDto));
+ }
+ @DeleteMapping("/delete")
+ public AjaxResult delete(@RequestBody Long id) {
+ return AjaxResult.success(salesQuotationService.delete(id));
+ }
+}
diff --git a/src/main/java/com/ruoyi/sales/controller/SalespersonManagementController.java b/src/main/java/com/ruoyi/sales/controller/SalespersonManagementController.java
new file mode 100644
index 0000000..7d40587
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/controller/SalespersonManagementController.java
@@ -0,0 +1,65 @@
+package com.ruoyi.sales.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.dto.InvoiceLedgerDto;
+import com.ruoyi.sales.pojo.SalespersonManagement;
+import com.ruoyi.sales.service.SalespersonManagementService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 10:04
+ */
+@RestController
+@RequestMapping("/salespersonManagement")
+@Api(tags = "涓氬姟鍛樼鐞�")
+public class SalespersonManagementController extends BaseController {
+
+
+ @Autowired
+ private SalespersonManagementService salespersonManagementService;
+
+ @GetMapping("/listPage")
+ @ApiOperation("鍒嗛〉鏌ヨ涓氬姟鍛樹俊鎭�")
+ public AjaxResult listPage(Page page, SalespersonManagement salespersonManagement) {
+ IPage<SalespersonManagement> listPage = salespersonManagementService.listPage(page, salespersonManagement);
+ return AjaxResult.success(listPage);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("娣诲姞涓氬姟鍛樹俊鎭�")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult add(@RequestBody SalespersonManagement salespersonManagement) {
+ boolean save = salespersonManagementService.save(salespersonManagement);
+ return save ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("淇敼涓氬姟鍛樹俊鎭�")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult update(@RequestBody SalespersonManagement salespersonManagement) {
+ boolean update = salespersonManagementService.updateById(salespersonManagement);
+ return update ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @DeleteMapping("/delete")
+ @ApiOperation("鍒犻櫎涓氬姟鍛樹俊鎭�")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ if (ids == null || ids.isEmpty()) {
+ return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ }
+ boolean delete = salespersonManagementService.removeByIds(ids);
+ return delete ? AjaxResult.success() : AjaxResult.error();
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
new file mode 100644
index 0000000..56b3e15
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -0,0 +1,95 @@
+package com.ruoyi.sales.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.mapper.ShippingInfoMapper;
+import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.pojo.ShippingInfo;
+import com.ruoyi.sales.service.ShippingInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/10/22 9:34
+ */
+@RestController
+@RequestMapping("/shippingInfo")
+@Api(tags = "鍙戣揣淇℃伅绠$悊")
+public class ShippingInfoController extends BaseController {
+
+ @Autowired
+ private ShippingInfoService shippingInfoService;
+
+
+ @GetMapping("/listPage")
+ @ApiOperation("鍙戣揣淇℃伅鍒楄〃")
+ public AjaxResult listPage(Page page, ShippingInfo req) {
+ IPage<ShippingInfo> listPage = shippingInfoService.listPage(page,req);
+ return AjaxResult.success(listPage);
+ }
+
+ @PostMapping("/add")
+ @ApiOperation("娣诲姞鍙戣揣淇℃伅")
+ public AjaxResult add(@RequestBody ShippingInfo req) {
+ boolean save = shippingInfoService.save(req);
+ return save ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("淇敼鍙戣揣淇℃伅")
+ public AjaxResult update(@RequestBody ShippingInfo req) {
+ ShippingInfo byId = shippingInfoService.getById(req.getId());
+ if (byId == null) {
+ return AjaxResult.error("鍙戣揣淇℃伅涓嶅瓨鍦�");
+ }
+ Long userId = getLoginUser().getUserId();
+ if(!userId.equals(Long.parseLong(byId.getCreateUser().toString()))){
+ return AjaxResult.error("鎮ㄦ病鏈夋潈闄愪慨鏀规鍙戣揣淇℃伅");
+ }
+ boolean update = shippingInfoService.updateById(req);
+ return update ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @DeleteMapping("/delete")
+ @ApiOperation("鍒犻櫎鍙戣揣淇℃伅")
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ Long userId = getLoginUser().getUserId();
+ ids.forEach(id -> {
+ ShippingInfo byId = shippingInfoService.getById(id);
+ if (byId == null) {
+ throw new RuntimeException("鍙戣揣淇℃伅涓嶅瓨鍦�");
+ }
+ if(!userId.equals(Long.parseLong(byId.getCreateUser().toString()))){
+ throw new RuntimeException("鎮ㄦ病鏈夋潈闄愬垹闄ゆ鍙戣揣淇℃伅");
+ }
+ });
+ boolean delete = shippingInfoService.removeBatchByIds(ids);
+ return delete ? AjaxResult.success("鍒犻櫎鎴愬姛") : AjaxResult.error("鍒犻櫎澶辫触");
+ }
+
+ @Autowired
+ private ShippingInfoMapper shippingInfoMapper;
+
+ /**
+ * 瀵煎嚭鍙戣揣淇℃伅绠$悊
+ */
+ @PostMapping("/export")
+ @ApiOperation("瀵煎嚭鍙戣揣淇℃伅")
+ public void export(HttpServletResponse response) {
+ List<ShippingInfo> list = shippingInfoMapper.listAll();
+ ExcelUtil<ShippingInfo> util = new ExcelUtil<ShippingInfo>(ShippingInfo.class);
+ util.exportExcel(response, list, "鍙戣揣淇℃伅");
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java b/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java
index cc9b935..5bbf31f 100644
--- a/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentDto.java
@@ -1,13 +1,16 @@
package com.ruoyi.sales.dto;
import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.sales.pojo.ReceiptPayment;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
+import java.util.Date;
@Data
public class ReceiptPaymentDto extends ReceiptPayment {
@@ -16,10 +19,26 @@
@Excel(name = "瀹㈡埛鍚堝悓鍙�")
private String customerContractNo;
+ @ApiModelProperty(value = "鐘舵��")
+ @Excel(name = "鐘舵��")
+ private String statusName;
+
+
@ApiModelProperty(value = "瀹㈡埛鍚嶇О")
@Excel(name = "瀹㈡埛鍚嶇О")
private String customerName;
+ @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "寮�绁ㄦ棩鏈�",width = 30,dateFormat = "yyyy-MM-dd")
+ @ApiModelProperty(value = "寮�绁ㄦ棩鏈�")
+ private Date invoiceDate;
+
+ @TableField(exist = false)
+ private String invoiceDateStart;
+ @TableField(exist = false)
+ private String invoiceDateEnd;
+
@ApiModelProperty(value = "鏌ヨ鏂囨湰")
private String searchText;
diff --git a/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentRecordDto.java b/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentRecordDto.java
new file mode 100644
index 0000000..8e9bd4b
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/dto/ReceiptPaymentRecordDto.java
@@ -0,0 +1,61 @@
+package com.ruoyi.sales.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/10/31 10:17
+ */
+@Data
+public class ReceiptPaymentRecordDto {
+
+ @ApiModelProperty(value = "瀹㈡埛鍚堝悓鍙�")
+ @Excel(name = "瀹㈡埛鍚堝悓鍙�")
+ private String customerContractNo;
+
+ @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
+ @Excel(name = "瀹㈡埛鍚嶇О")
+ private String customerName;
+
+ @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鐧昏鏃ユ湡",width = 30,dateFormat = "yyyy-MM-dd")
+ @ApiModelProperty(value = "鐧昏鏃ユ湡")
+ private Date invoiceDate;
+
+ @ApiModelProperty(value = "閿�鍞悎鍚屽彿")
+ @Excel(name = "閿�鍞悎鍚屽彿")
+ private String salesContractNo;
+
+ @ApiModelProperty(value = "鍥炴閲戦")
+ @Excel(name = "鍥炴閲戦")
+ private BigDecimal receiptPaymentAmountTotal;
+
+ @ApiModelProperty(value = "椤圭洰鍚嶇О")
+ @Excel(name = "椤圭洰鍚嶇О")
+ private String projectName;
+
+ @ApiModelProperty(value = "鍥炴褰㈠紡 0鐢垫眹1鎵垮厬")
+ @Excel(name = "鍥炴褰㈠紡",readConverterExp = "0=鐢垫眹,1=鎵垮厬")
+ private String receiptPaymentType;
+
+ @ApiModelProperty(value = "鐧昏浜�")
+ @Excel(name = "鐧昏浜�")
+ private String registrant;
+
+ @ApiModelProperty(value = "鏉ユ鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鏉ユ鏃ユ湡",width = 30,dateFormat = "yyyy-MM-dd")
+ private LocalDate receiptPaymentDate;
+
+}
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesQuotationDto.java b/src/main/java/com/ruoyi/sales/dto/SalesQuotationDto.java
new file mode 100644
index 0000000..c292a10
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/dto/SalesQuotationDto.java
@@ -0,0 +1,14 @@
+package com.ruoyi.sales.dto;
+
+import com.ruoyi.sales.pojo.SalesQuotation;
+import com.ruoyi.sales.pojo.SalesQuotationProduct;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SalesQuotationDto extends SalesQuotation {
+ @ApiModelProperty(value = "鎶ヤ环鍟嗗搧")
+ private List<SalesQuotationProduct> products;
+}
diff --git a/src/main/java/com/ruoyi/sales/mapper/PaymentShippingMapper.java b/src/main/java/com/ruoyi/sales/mapper/PaymentShippingMapper.java
new file mode 100644
index 0000000..df9bde4
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/PaymentShippingMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.sales.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.sales.pojo.PaymentShipping;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 14:00
+ */
+public interface PaymentShippingMapper extends BaseMapper<PaymentShipping> {
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param page
+ * @param paymentShipping
+ * @return
+ */
+ IPage<PaymentShipping> listPage(Page page,@Param("req") PaymentShipping paymentShipping);
+}
diff --git a/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java b/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java
index e7b34ed..222f9f5 100644
--- a/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java
@@ -26,7 +26,7 @@
* @param receiptPaymentDto
* @return
*/
- IPage<ReceiptPaymentDto> bindInvoiceNoRegPage(Page page, @Param("c") ReceiptPaymentDto receiptPaymentDto);
+ IPage<ReceiptPaymentDto> bindInvoiceNoRegPage(Page page, @Param("req") ReceiptPaymentDto receiptPaymentDto);
/**
* 寮�绁ㄥ彴璐﹁鎯�
diff --git a/src/main/java/com/ruoyi/sales/mapper/SalesQuotationMapper.java b/src/main/java/com/ruoyi/sales/mapper/SalesQuotationMapper.java
new file mode 100644
index 0000000..86f9c1a
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/SalesQuotationMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.sales.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.sales.dto.SalesQuotationDto;
+import com.ruoyi.sales.pojo.SalesQuotation;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.data.repository.query.Param;
+
+@Mapper
+public interface SalesQuotationMapper extends BaseMapper<SalesQuotation> {
+ IPage<SalesQuotationDto> listPage(Page page,@Param("salesQuotationDto") SalesQuotationDto salesQuotationDto);
+}
diff --git a/src/main/java/com/ruoyi/sales/mapper/SalesQuotationProductMapper.java b/src/main/java/com/ruoyi/sales/mapper/SalesQuotationProductMapper.java
new file mode 100644
index 0000000..838e921
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/SalesQuotationProductMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.sales.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.sales.pojo.SalesQuotationProduct;
+import io.lettuce.core.dynamic.annotation.Param;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface SalesQuotationProductMapper extends BaseMapper<SalesQuotationProduct> {
+// List<SalesQuotationProduct> selectBySalesQuotationIds(List<Long> salesQuotationIds);
+
+ List<SalesQuotationProduct> selectBySalesQuotationId(@Param("id") Long id);
+}
diff --git a/src/main/java/com/ruoyi/sales/mapper/SalespersonManagementMapper.java b/src/main/java/com/ruoyi/sales/mapper/SalespersonManagementMapper.java
new file mode 100644
index 0000000..d57e944
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/SalespersonManagementMapper.java
@@ -0,0 +1,17 @@
+package com.ruoyi.sales.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.sales.pojo.SalespersonManagement;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 10:12
+ */
+public interface SalespersonManagementMapper extends BaseMapper<SalespersonManagement> {
+
+
+ IPage<SalespersonManagement> listPage(Page page,@Param("req") SalespersonManagement salespersonManagement);
+}
diff --git a/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java b/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
new file mode 100644
index 0000000..88dec8a
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
@@ -0,0 +1,19 @@
+package com.ruoyi.sales.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.sales.pojo.ShippingInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/10/22 9:32
+ */
+public interface ShippingInfoMapper extends BaseMapper<ShippingInfo> {
+ IPage<ShippingInfo> listPage(Page page,@Param("req") ShippingInfo req);
+
+ List<ShippingInfo> listAll();
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/PaymentShipping.java b/src/main/java/com/ruoyi/sales/pojo/PaymentShipping.java
new file mode 100644
index 0000000..17a691c
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/pojo/PaymentShipping.java
@@ -0,0 +1,83 @@
+package com.ruoyi.sales.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 13:56
+ */
+@TableName(value = "payment_shipping")
+@Data
+@ApiModel
+public class PaymentShipping {
+
+
+ private static final long serialVersionUID = 1L;
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "璁㈠崟鍙�")
+ private String orderNo;
+
+ @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
+ private String customer;
+
+ @ApiModelProperty(value = "璁㈠崟閲戦")
+ private String orderAmount;
+
+ @ApiModelProperty(value = "宸蹭粯娆鹃噾棰�")
+ private String paidAmount;
+
+ @ApiModelProperty(value = "浠樻鏂瑰紡")
+ private String paymentMethod;
+
+ @ApiModelProperty(value = "浠樻鐘舵��")
+ private String paymentStatus;
+
+ @ApiModelProperty(value = "鍙戣揣鐘舵��")
+ private String shippingStatus;
+
+ @ApiModelProperty(value = "鍙戣揣鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date shippingDate;
+
+ @ApiModelProperty(value = "鐗╂祦鍗曞彿")
+ private String trackingNo;
+
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
index f1deeab..4ffdb03 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -104,14 +104,24 @@
@TableField(exist = false)
@ApiModelProperty(value = "鏈紑绁ㄩ噾棰�(鍏�)")
- private BigDecimal noInvoiceAmountTotal;
+ @Excel(name = "鏈紑绁ㄩ噾棰�")
+ private BigDecimal noInvoiceAmountTotal = BigDecimal.ZERO;
@ApiModelProperty(value = "绛捐鏃ユ湡")
private LocalDate executionDate;
@TableField(exist = false)
@ApiModelProperty(value = "宸插紑绁ㄩ噾棰�(鍏�)")
- private BigDecimal invoiceTotal;
+ @Excel(name = "宸插紑绁ㄩ噾棰�")
+ private BigDecimal invoiceTotal = BigDecimal.ZERO;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "鍥炴閲戦")
+ private BigDecimal receiptPaymentAmountTotal = BigDecimal.ZERO;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "寰呭洖娆鹃噾棰�")
+ private BigDecimal noReceiptAmount = BigDecimal.ZERO;
@ApiModelProperty(value = "浠樻鏂瑰紡")
private String paymentMethod;
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index 1a82359..a135fa3 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -36,6 +36,11 @@
private Long salesLedgerId;
/**
+ * 棰勮鏁伴噺
+ */
+ private BigDecimal warnNum;
+
+ /**
* 浜у搧澶х被
*/
@Excel(name = "浜у搧澶х被")
@@ -58,7 +63,8 @@
*/
@Excel(name = "鏁伴噺")
private BigDecimal quantity;
-
+ @Excel(name = "鏈�浣庡簱瀛樻暟閲�")
+ private BigDecimal minStock;
/**
* 绋庣巼
*/
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesQuotation.java b/src/main/java/com/ruoyi/sales/pojo/SalesQuotation.java
new file mode 100644
index 0000000..b22e6a3
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesQuotation.java
@@ -0,0 +1,69 @@
+package com.ruoyi.sales.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("sales_quotation")
+public class SalesQuotation {
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ @ApiModelProperty(value = "鎶ヤ环鍗曠紪鍙�")
+ @Excel(name = "鎶ヤ环鍗曠紪鍙�")
+ private String quotationNo;
+ @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
+ @Excel(name = "瀹㈡埛鍚嶇О")
+ private String customer;
+
+ @ApiModelProperty(value = "涓氬姟鍛�")
+ @Excel(name = "涓氬姟鍛�")
+ private String salesperson;
+ @ApiModelProperty(value = "鎶ヤ环鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鎶ヤ环鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private LocalDate quotationDate;
+ @ApiModelProperty(value = "鏈夋晥鏈熻嚦")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鏈夋晥鏈熻嚦", width = 30, dateFormat = "yyyy-MM-dd")
+ private LocalDate validDate;
+ @ApiModelProperty(value = "浠樻鏂瑰紡")
+ private String paymentMethod;
+ @ApiModelProperty(value = "浜よ揣鍛ㄦ湡澶╂暟")
+ private String deliveryPeriod;
+ @ApiModelProperty(value = "鐘舵��")
+ private String status;
+ @ApiModelProperty(value = "鎶ヤ环鎬婚噾棰�")
+ @Excel(name = "鎶ヤ环閲戦")
+ private Double totalAmount;
+
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesQuotationProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesQuotationProduct.java
new file mode 100644
index 0000000..709dacf
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesQuotationProduct.java
@@ -0,0 +1,49 @@
+package com.ruoyi.sales.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@TableName("sales_quotation_product")
+public class SalesQuotationProduct {
+ @ApiModelProperty(value = "鎶ヤ环鍟嗗搧ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ @ApiModelProperty(value = "閿�鍞姤浠峰崟id")
+ private Long salesQuotationId;
+
+ @ApiModelProperty(value = "鍟嗗搧鍚嶇О")
+ private String product;
+ @ApiModelProperty(value = "鍟嗗搧瑙勬牸")
+ private String specification;
+ @ApiModelProperty(value = "鍗曚綅")
+ private String unit;
+ @ApiModelProperty(value = "鍗曚环")
+ private Double unitPrice;
+ @ApiModelProperty(value = "鏁伴噺")
+ private Integer quantity;
+ @ApiModelProperty(value = "閲戦")
+ private Double amount;
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalespersonManagement.java b/src/main/java/com/ruoyi/sales/pojo/SalespersonManagement.java
new file mode 100644
index 0000000..a0a6636
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/pojo/SalespersonManagement.java
@@ -0,0 +1,79 @@
+package com.ruoyi.sales.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 10:06
+ */
+@TableName(value = "salesperson_management")
+@Data
+@ApiModel
+public class SalespersonManagement {
+
+ private static final long serialVersionUID = 1L;
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "濮撳悕")
+ private String name;
+
+ @ApiModelProperty(value = "鑱旂郴鐢佃瘽")
+ private String phone;
+
+ @ApiModelProperty(value = "閭")
+ private String email;
+
+ @ApiModelProperty(value = "閮ㄩ棬")
+ private String department;
+
+ @ApiModelProperty(value = "鑱屼綅")
+ private String position;
+
+ @ApiModelProperty(value = "鍏ヨ亴鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date hireDate;
+
+ @ApiModelProperty(value = "鏉冮檺")
+ private String permissions;
+
+ @ApiModelProperty(value = "鏉冮檺List")
+ @TableField(exist = false)
+ private List<String> permissionsList;
+
+ @ApiModelProperty(value = "鐘舵��")
+ private String status;
+
+ @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java b/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
new file mode 100644
index 0000000..3f80dc0
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
@@ -0,0 +1,68 @@
+package com.ruoyi.sales.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/10/22 9:29
+ */
+@Data
+@TableName("shipping_info")
+public class ShippingInfo {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "閿�鍞彴璐d")
+ private Long salesLedgerId;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "閿�鍞悎鍚屽彿")
+ @Excel(name = "閿�鍞悎鍚屽彿")
+ private String salesContractNo;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
+ @Excel(name = "瀹㈡埛鍚嶇О")
+ private String customerName;
+
+ @ApiModelProperty(value = "鍙戣揣鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鍙戣揣鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date shippingDate;
+
+ @ApiModelProperty(value = "鍙戣揣杞︾墝鍙�")
+ @Excel(name = "鍙戣揣杞︾墝鍙�")
+ private String shippingCarNumber;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Integer createUser;
+
+ @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/sales/service/PaymentShippingService.java b/src/main/java/com/ruoyi/sales/service/PaymentShippingService.java
new file mode 100644
index 0000000..31848ae
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/PaymentShippingService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.sales.service;
+
+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.sales.pojo.PaymentShipping;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 14:01
+ */
+public interface PaymentShippingService extends IService<PaymentShipping> {
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param page
+ * @param paymentShipping
+ * @return
+ */
+ IPage<PaymentShipping> listPage(Page page, PaymentShipping paymentShipping);
+}
diff --git a/src/main/java/com/ruoyi/sales/service/SalesQuotationProductService.java b/src/main/java/com/ruoyi/sales/service/SalesQuotationProductService.java
new file mode 100644
index 0000000..6d37db3
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/SalesQuotationProductService.java
@@ -0,0 +1,8 @@
+package com.ruoyi.sales.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.sales.pojo.SalesQuotationProduct;
+
+
+public interface SalesQuotationProductService extends IService<SalesQuotationProduct> {
+}
diff --git a/src/main/java/com/ruoyi/sales/service/SalesQuotationService.java b/src/main/java/com/ruoyi/sales/service/SalesQuotationService.java
new file mode 100644
index 0000000..7f29a7f
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/SalesQuotationService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.sales.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.sales.dto.SalesQuotationDto;
+import com.ruoyi.sales.pojo.SalesQuotation;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+public interface SalesQuotationService extends IService<SalesQuotation> {
+ IPage listPage(Page page, SalesQuotationDto salesQuotationDto);
+
+ boolean add(SalesQuotationDto salesQuotationDto);
+
+ boolean delete(Long id);
+
+ boolean edit(SalesQuotationDto salesQuotationDto);
+}
diff --git a/src/main/java/com/ruoyi/sales/service/SalespersonManagementService.java b/src/main/java/com/ruoyi/sales/service/SalespersonManagementService.java
new file mode 100644
index 0000000..7fb9020
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/SalespersonManagementService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.sales.service;
+
+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.sales.pojo.SalespersonManagement;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 10:14
+ */
+public interface SalespersonManagementService extends IService<SalespersonManagement> {
+
+ /**
+ * 鍒楄〃鍒嗛〉
+ *
+ * @param page
+ * @param salespersonManagement
+ * @return
+ */
+ IPage<SalespersonManagement> listPage(Page page, SalespersonManagement salespersonManagement);
+}
diff --git a/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java b/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
new file mode 100644
index 0000000..81c7181
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
@@ -0,0 +1,14 @@
+package com.ruoyi.sales.service;
+
+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.sales.pojo.ShippingInfo;
+
+/**
+ * @author :yys
+ * @date : 2025/10/22 9:33
+ */
+public interface ShippingInfoService extends IService<ShippingInfo>{
+ IPage<ShippingInfo> listPage(Page page, ShippingInfo req);
+}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java
index 76831bc..06bd40e 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/CommonFileServiceImpl.java
@@ -123,12 +123,15 @@
try {
// 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級
- Files.move(
- Paths.get(tempFile.getTempPath()),
- formalFilePath,
- StandardCopyOption.REPLACE_EXISTING,
- StandardCopyOption.ATOMIC_MOVE
- );
+// Files.move(
+// Paths.get(tempFile.getTempPath()),
+// formalFilePath,
+// StandardCopyOption.REPLACE_EXISTING,
+// StandardCopyOption.ATOMIC_MOVE
+// );
+ // 鍘熷瓙绉诲姩澶辫触锛屼娇鐢ㄥ鍒�+鍒犻櫎
+ Files.copy(Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING);
+ Files.deleteIfExists(Paths.get(tempFile.getTempPath()));
log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
// 鏇存柊鏂囦欢璁板綍锛堝叧鑱斿埌涓氬姟ID锛�
diff --git a/src/main/java/com/ruoyi/sales/service/impl/PaymentShippingServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/PaymentShippingServiceImpl.java
new file mode 100644
index 0000000..067022a
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/impl/PaymentShippingServiceImpl.java
@@ -0,0 +1,29 @@
+package com.ruoyi.sales.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.sales.mapper.PaymentShippingMapper;
+import com.ruoyi.sales.pojo.PaymentShipping;
+import com.ruoyi.sales.service.PaymentShippingService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 14:01
+ */
+@Service
+@Slf4j
+public class PaymentShippingServiceImpl extends ServiceImpl<PaymentShippingMapper, PaymentShipping> implements PaymentShippingService {
+
+ @Autowired
+ private PaymentShippingMapper paymentShippingMapper;
+
+ @Override
+ public IPage<PaymentShipping> listPage(Page page, PaymentShipping paymentShipping) {
+ IPage<PaymentShipping> listPage = paymentShippingMapper.listPage(page, paymentShipping);
+ return listPage;
+ }
+}
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 5349dab..ae93c3b 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -164,6 +164,15 @@
if (receiptPaymentDto.getStatus()) {
receiptPaymentDtoIPage.getRecords().removeIf(receiptPaymentDto1 -> new BigDecimal("0.00").equals(receiptPaymentDto1.getNoReceiptAmount()));
}
+ receiptPaymentDtoIPage.getRecords().forEach(item -> {
+ // 姣旇緝鍥炴閲戦 == 寰呭洖娆鹃噾棰�
+ if (item.getInvoiceTotal().compareTo(item.getReceiptPaymentAmountTotal()) == 0) {
+ item.setStatusName("宸插畬鎴愬洖娆�");
+ }else{
+ item.setStatusName("鏈畬鎴愬洖娆�");
+ }
+
+ });
return receiptPaymentDtoIPage;
}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index fa807c9..6493d46 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -8,6 +8,9 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.pojo.AccountExpense;
+import com.ruoyi.account.pojo.AccountIncome;
+import com.ruoyi.account.service.AccountIncomeService;
import com.ruoyi.basic.mapper.CustomerMapper;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.common.enums.FileNameType;
@@ -62,6 +65,7 @@
@RequiredArgsConstructor
@Slf4j
public class SalesLedgerServiceImpl extends ServiceImpl<SalesLedgerMapper, SalesLedger> implements ISalesLedgerService {
+ private final AccountIncomeService accountIncomeService;
private final SalesLedgerMapper salesLedgerMapper;
@@ -376,13 +380,38 @@
salesLedger.setCustomerName(customer.getCustomerName());
salesLedger.setTenantId(customer.getTenantId());
+ AccountIncome accountIncome = new AccountIncome();
+ accountIncome.setIncomeDate(salesLedger.getEntryDate());
+ accountIncome.setIncomeType("0");
+ accountIncome.setCustomerName(customer.getCustomerName());
+ accountIncome.setIncomeMoney(salesLedger.getContractAmount());
+ accountIncome.setIncomeMethod("0");
+ accountIncome.setInputTime(new Date());
+ accountIncome.setInputUser(salesLedger.getEntryPerson());
// 3. 鏂板鎴栨洿鏂颁富琛�
if (salesLedger.getId() == null) {
String contractNo = generateSalesContractNo();
salesLedger.setSalesContractNo(contractNo);
salesLedgerMapper.insert(salesLedger);
+ accountIncome.setIncomeDescribed("閿�鍞悎鍚岋細" + salesLedger.getSalesContractNo());
+ accountIncome.setInvoiceNumber(salesLedger.getSalesContractNo());
+ accountIncomeService.save(accountIncome);
} else {
salesLedgerMapper.updateById(salesLedger);
+ SalesLedger salesLedgerDB = salesLedgerMapper.selectById(salesLedger.getId());
+ List<AccountIncome> accountIncomeDBs = accountIncomeService.getByInvoiceNumberList(salesLedger.getSalesContractNo());
+ if (!CollectionUtils.isEmpty(accountIncomeDBs)) {
+ accountIncomeDBs.forEach(accountIncomeDB ->{
+ accountIncomeDB.setCustomerName(salesLedgerDB.getCustomerName());
+ accountIncomeDB.setIncomeMoney(salesLedgerDB.getContractAmount());
+ accountIncomeDB.setIncomeDescribed("閿�鍞悎鍚岋細" + salesLedgerDB.getSalesContractNo());
+ accountIncomeDB.setInvoiceNumber(salesLedgerDB.getSalesContractNo());
+ accountIncomeDB.setInputTime(new Date());
+ accountIncomeDB.setInputUser(salesLedgerDB.getEntryPerson());
+ accountIncomeService.updateById(accountIncomeDB);
+ });
+ }
+
}
// 4. 澶勭悊瀛愯〃鏁版嵁
@@ -452,12 +481,15 @@
try {
// 鎵ц鏂囦欢杩佺Щ锛堜娇鐢ㄥ師瀛愭搷浣滅‘淇濆畨鍏ㄦ�э級
- Files.move(
- Paths.get(tempFile.getTempPath()),
- formalFilePath,
- StandardCopyOption.REPLACE_EXISTING,
- StandardCopyOption.ATOMIC_MOVE
- );
+// Files.move(
+// Paths.get(tempFile.getTempPath()),
+// formalFilePath,
+// StandardCopyOption.REPLACE_EXISTING,
+// StandardCopyOption.ATOMIC_MOVE
+// );
+ // 鍘熷瓙绉诲姩澶辫触锛屼娇鐢ㄥ鍒�+鍒犻櫎
+ Files.copy(Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING);
+ Files.deleteIfExists(Paths.get(tempFile.getTempPath()));
log.info("鏂囦欢杩佺Щ鎴愬姛: {} -> {}", tempFile.getTempPath(), formalFilePath);
// 鏇存柊鏂囦欢璁板綍锛堝叧鑱斿埌涓氬姟ID锛�
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationProductServiceImpl.java
new file mode 100644
index 0000000..bb75795
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationProductServiceImpl.java
@@ -0,0 +1,11 @@
+package com.ruoyi.sales.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.sales.mapper.SalesQuotationProductMapper;
+import com.ruoyi.sales.pojo.SalesQuotationProduct;
+import com.ruoyi.sales.service.SalesQuotationProductService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SalesQuotationProductServiceImpl extends ServiceImpl<SalesQuotationProductMapper, SalesQuotationProduct> implements SalesQuotationProductService {
+}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
new file mode 100644
index 0000000..104a712
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
@@ -0,0 +1,96 @@
+package com.ruoyi.sales.service.impl;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.sales.dto.SalesQuotationDto;
+import com.ruoyi.sales.mapper.SalesQuotationMapper;
+import com.ruoyi.sales.mapper.SalesQuotationProductMapper;
+import com.ruoyi.sales.pojo.SalesQuotation;
+import com.ruoyi.sales.pojo.SalesQuotationProduct;
+import com.ruoyi.sales.service.SalesQuotationProductService;
+import com.ruoyi.sales.service.SalesQuotationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class SalesQuotationServiceImpl extends ServiceImpl<SalesQuotationMapper, SalesQuotation> implements SalesQuotationService {
+ @Autowired
+ private SalesQuotationMapper salesQuotationMapper;
+ @Autowired
+ private SalesQuotationProductMapper salesQuotationProductMapper;
+ @Autowired
+ private SalesQuotationProductService salesQuotationProductService;
+ @Override
+ public IPage<SalesQuotationDto> listPage(Page page, SalesQuotationDto salesQuotationDto) {
+ IPage<SalesQuotationDto> salesQuotationDtoIPage = salesQuotationMapper.listPage(page, salesQuotationDto);
+ if(CollectionUtils.isEmpty(salesQuotationDtoIPage.getRecords())){
+ return salesQuotationDtoIPage;
+ }
+ salesQuotationDtoIPage.getRecords().forEach(record -> {
+ List<SalesQuotationProduct> products = salesQuotationProductMapper.selectBySalesQuotationId(record.getId());
+ record.setProducts(products);
+ });
+ return salesQuotationDtoIPage;
+ }
+
+ @Override
+ public boolean add(SalesQuotationDto salesQuotationDto) {
+ SalesQuotation salesQuotation = new SalesQuotation();
+ BeanUtils.copyProperties(salesQuotationDto, salesQuotation);
+ String quotationNo = salesQuotation.getQuotationNo();
+ salesQuotationMapper.insert(salesQuotation);
+// if(salesQuotationMapper.insert(salesQuotation)!=1){
+// return false;
+// }
+ if(CollectionUtils.isEmpty(salesQuotationDto.getProducts())){
+ return true;
+ }
+ List<SalesQuotationProduct> products = salesQuotationDto.getProducts().stream().map(product -> {
+ SalesQuotationProduct salesQuotationProduct = new SalesQuotationProduct();
+ BeanUtils.copyProperties(product, salesQuotationProduct);
+ salesQuotationProduct.setSalesQuotationId(salesQuotationMapper.selectOne(new LambdaQueryWrapper<SalesQuotation>().eq(SalesQuotation::getQuotationNo, quotationNo)).getId());
+ return salesQuotationProduct;
+ }).collect(Collectors.toList());
+ salesQuotationProductService.saveBatch(products);
+ return true;
+ }
+ @Override
+ public boolean edit(SalesQuotationDto salesQuotationDto) {
+ SalesQuotation salesQuotation = new SalesQuotation();
+ BeanUtils.copyProperties(salesQuotationDto, salesQuotation);
+ if(salesQuotationMapper.updateById(salesQuotation)!=1){
+ return false;
+ }
+ salesQuotationProductMapper.delete(new LambdaQueryWrapper<SalesQuotationProduct>().eq(SalesQuotationProduct::getSalesQuotationId, salesQuotationDto.getId()));
+ if(CollectionUtils.isEmpty(salesQuotationDto.getProducts())){
+ return true;
+ }
+ List<SalesQuotationProduct> products = salesQuotationDto.getProducts().stream().map(product -> {
+ SalesQuotationProduct salesQuotationProduct = new SalesQuotationProduct();
+ BeanUtils.copyProperties(product, salesQuotationProduct);
+ salesQuotationProduct.setSalesQuotationId(salesQuotation.getId());
+ return salesQuotationProduct;
+ }).collect(Collectors.toList());
+ salesQuotationProductService.saveBatch(products);
+ return true;
+ }
+ @Override
+ public boolean delete(Long id) {
+ salesQuotationMapper.deleteById(id);
+ salesQuotationProductMapper.delete(new LambdaQueryWrapper<SalesQuotationProduct>().eq(SalesQuotationProduct::getSalesQuotationId, id));
+ return true;
+ }
+
+
+}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalespersonManagementServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalespersonManagementServiceImpl.java
new file mode 100644
index 0000000..0afd2bb
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalespersonManagementServiceImpl.java
@@ -0,0 +1,37 @@
+package com.ruoyi.sales.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.sales.mapper.SalespersonManagementMapper;
+import com.ruoyi.sales.pojo.SalespersonManagement;
+import com.ruoyi.sales.service.SalespersonManagementService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+
+/**
+ * @author :yys
+ * @date : 2025/9/15 10:15
+ */
+@Service
+@Slf4j
+public class SalespersonManagementServiceImpl extends ServiceImpl<SalespersonManagementMapper, SalespersonManagement> implements SalespersonManagementService {
+
+ @Autowired
+ private SalespersonManagementMapper salespersonManagementMapper;
+
+ @Override
+ public IPage<SalespersonManagement> listPage(Page page, SalespersonManagement salespersonManagement) {
+ IPage<SalespersonManagement> salespersonManagementIPage = salespersonManagementMapper.listPage(page, salespersonManagement);
+ salespersonManagementIPage.getRecords().forEach(item -> {
+ if(!StringUtils.isEmpty(item.getPermissions())){
+ item.setPermissionsList(Arrays.asList(item.getPermissions().split(",")));
+ }
+ });
+ return salespersonManagementIPage;
+ }
+}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
new file mode 100644
index 0000000..8469b9e
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -0,0 +1,30 @@
+package com.ruoyi.sales.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.sales.mapper.ShippingInfoMapper;
+import com.ruoyi.sales.pojo.ShippingInfo;
+import com.ruoyi.sales.service.ShippingInfoService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author :yys
+ * @date : 2025/10/22 9:33
+ */
+@Service
+@Slf4j
+public class ShippingInfoServiceImpl extends ServiceImpl<ShippingInfoMapper, ShippingInfo> implements ShippingInfoService {
+
+ @Autowired
+ private ShippingInfoMapper shippingInfoMapper;
+
+ @Override
+ public IPage<ShippingInfo> listPage(Page page, ShippingInfo req) {
+ IPage<ShippingInfo> listPage = shippingInfoMapper.listPage(page, req);
+
+ return listPage;
+ }
+}
diff --git a/src/main/java/com/ruoyi/staff/controller/HolidayApplicationController.java b/src/main/java/com/ruoyi/staff/controller/HolidayApplicationController.java
new file mode 100644
index 0000000..7ac13bd
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/HolidayApplicationController.java
@@ -0,0 +1,44 @@
+package com.ruoyi.staff.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.pojo.HolidayApplication;
+import com.ruoyi.staff.pojo.PersonalAttendanceRecords;
+import com.ruoyi.staff.service.HolidayApplicationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/staff/holidayApplication")
+public class HolidayApplicationController {
+ @Autowired
+ private HolidayApplicationService holidayApplicationService;
+ /**
+ * 璇峰亣鐢宠鍒嗛〉鏌ヨ
+ */
+ @GetMapping("/listPage")
+ public AjaxResult listPage(Page page, HolidayApplication holidayApplication){
+ return AjaxResult.success(holidayApplicationService.listPage(page, holidayApplication));
+ }
+ /**
+ * 鏂板璇峰亣鐢宠
+ */
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody HolidayApplication holidayApplication){
+ return AjaxResult.success(holidayApplicationService.save(holidayApplication));
+ }
+ /**
+ * 淇敼璇峰亣鐢宠
+ */
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody HolidayApplication holidayApplication){
+ return AjaxResult.success(holidayApplicationService.updateById(holidayApplication));
+ }
+ /**
+ * 鍒犻櫎璇峰亣鐢宠
+ */
+ @DeleteMapping("/delete/{id}")
+ public AjaxResult delete(@PathVariable("id") Long id){
+ return AjaxResult.success(holidayApplicationService.removeById(id));
+ }
+}
diff --git a/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java b/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java
new file mode 100644
index 0000000..2f84699
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceRecordsController.java
@@ -0,0 +1,47 @@
+package com.ruoyi.staff.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.pojo.PersonalAttendanceRecords;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
+import com.ruoyi.staff.pojo.StaffOnJob;
+import com.ruoyi.staff.service.PersonalAttendanceRecordsService;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/staff/personalAttendanceRecords")
+public class PersonalAttendanceRecordsController {
+ @Autowired
+ private PersonalAttendanceRecordsService personalAttendanceRecordsService;
+ /**
+ * 涓汉鑰冨嫟璁板綍鍒嗛〉鏌ヨ
+ */
+ @GetMapping("/listPage")
+ public AjaxResult personalAttendanceRecordsListPage(Page page, PersonalAttendanceRecords personalAttendanceRecords) {
+ return AjaxResult.success(personalAttendanceRecordsService.listPage(page, personalAttendanceRecords));
+ }
+ /**
+ * 鏂板涓汉鑰冨嫟璁板綍
+ */
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody PersonalAttendanceRecords personalAttendanceRecords) {
+ return AjaxResult.success(personalAttendanceRecordsService.save(personalAttendanceRecords));
+ }
+ /**
+ * 淇敼涓汉鑰冨嫟璁板綍
+ */
+ @PutMapping("/update")
+ public AjaxResult update(@RequestBody PersonalAttendanceRecords personalAttendanceRecords) {
+ return AjaxResult.success(personalAttendanceRecordsService.updateById(personalAttendanceRecords));
+ }
+ /**
+ * 鍒犻櫎涓汉鑰冨嫟璁板綍
+ */
+ @DeleteMapping("/delete/{id}")
+ public AjaxResult delete(@PathVariable("id") Long id) {
+ return AjaxResult.success(personalAttendanceRecordsService.removeById(id));
+ }
+}
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
index 4230695..7d73759 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -1,6 +1,8 @@
package com.ruoyi.staff.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
@@ -8,6 +10,7 @@
import com.ruoyi.staff.service.IStaffOnJobService;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
@@ -53,6 +56,18 @@
public AjaxResult staffOnJobDetail(String staffNo) {
return AjaxResult.success(staffOnJobService.staffOnJobDetail(staffNo));
}
+ /**
+ * 鍦ㄨ亴鍛樺伐瀵煎叆
+ */
+ @PostMapping("/import")
+ @Log(title = "鍦ㄨ亴鍛樺伐瀵煎叆", businessType = BusinessType.IMPORT)
+ public AjaxResult importData(@RequestPart("file") MultipartFile file) {
+ Boolean b = staffOnJobService.importData(file);
+ if (b) {
+ return AjaxResult.success("瀵煎叆鎴愬姛");
+ }
+ return AjaxResult.error("瀵煎叆澶辫触");
+ }
/**
* 鍦ㄨ亴鍛樺伐瀵煎嚭
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java b/src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java
new file mode 100644
index 0000000..9f5d82c
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java
@@ -0,0 +1,67 @@
+package com.ruoyi.staff.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.compensationperformance.pojo.CompensationPerformance;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.dto.SaveStaffSchedulingDto;
+import com.ruoyi.staff.dto.StaffSchedulingDto;
+import com.ruoyi.staff.service.StaffSchedulingService;
+import com.ruoyi.staff.vo.SearchSchedulingVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 鎺掔彮
+ * @author buhuazhen
+ * @date 2025/9/3
+ * @email 3038525872@qq.com
+ */
+@RestController
+@RequestMapping("/staff/staffScheduling")
+@RequiredArgsConstructor
+public class StaffSchedulingController {
+
+ private final StaffSchedulingService staffSchedulingService;
+
+ @PostMapping("/listPage")
+ public AjaxResult listPage(@RequestBody SearchSchedulingVo vo){
+ return AjaxResult.success(staffSchedulingService.listPage(vo));
+ }
+
+ @PostMapping("/save")
+ public AjaxResult save(@RequestBody @Validated SaveStaffSchedulingDto saveStaffSchedulingDto){
+ staffSchedulingService.saveStaffScheduling(saveStaffSchedulingDto);
+ return AjaxResult.success();
+ }
+
+ @DeleteMapping("/delByIds")
+ public AjaxResult delByIds(@RequestBody List<Integer> ids){
+ staffSchedulingService.removeByIds(ids);
+ return AjaxResult.success();
+ }
+
+ @DeleteMapping("/del/{id}")
+ public AjaxResult del(@PathVariable("id") Integer id){
+ staffSchedulingService.removeById(id);
+ return AjaxResult.success();
+ }
+
+ @Log(title = "瀵煎嚭浜哄憳鎺掔彮鍒楄〃", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response ) {
+ SearchSchedulingVo vo = new SearchSchedulingVo();
+ vo.setCurrent(-1);
+ vo.setSize(-1);
+ IPage<StaffSchedulingDto> list = staffSchedulingService.listPage(vo);
+ ExcelUtil<StaffSchedulingDto> util = new ExcelUtil<StaffSchedulingDto>(StaffSchedulingDto.class);
+ util.exportExcel(response, list.getRecords(), "瀵煎嚭浜哄憳鎺掔彮鍒楄〃");
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java b/src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java
new file mode 100644
index 0000000..25a41b3
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java
@@ -0,0 +1,49 @@
+package com.ruoyi.staff.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/3
+ * @email 3038525872@qq.com
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SaveStaffSchedulingDto implements Serializable {
+ private Integer id;
+
+ @NotNull(message = "蹇呴』瑕侀�夋嫨鍛樺伐")
+ private Integer staffId;
+
+ @NotNull(message = "閮ㄩ棬id涓嶈兘涓虹┖!")
+ private Integer department;
+
+ @NotNull(message = "鐝id涓嶈兘涓虹┖!")
+ private Integer shiftType;
+
+ @NotNull(message = "宸ヤ綔鏃ヤ笉鑳戒负绌�!")
+ private Date workDate;
+
+ @NotNull(message = "涓婄彮鏃堕棿涓嶈兘涓虹┖!")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime workStartTime;
+
+ @NotNull(message = "涓嬬彮鏃堕棿涓嶈兘涓虹┖!")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime workEndTime;
+
+ @NotNull(message = "宸ユ椂涓嶈兘涓虹┖!")
+ private Integer status;
+
+ private String remark;
+
+}
diff --git a/src/main/java/com/ruoyi/staff/dto/StaffSchedulingDto.java b/src/main/java/com/ruoyi/staff/dto/StaffSchedulingDto.java
new file mode 100644
index 0000000..ad8b812
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/dto/StaffSchedulingDto.java
@@ -0,0 +1,85 @@
+package com.ruoyi.staff.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/4
+ * @email 3038525872@qq.com
+ */
+@Data
+public class StaffSchedulingDto implements Serializable {
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 鍛樺伐ID
+ */
+ private Integer staffId;
+
+ @Excel(name = "鍛樺伐鍚嶇О")
+ private String staffName;
+
+ @Excel(name = "鍛樺伐缂栧彿")
+ private String staffNo;
+
+ /**
+ * 閮ㄩ棬
+ */
+ @Excel(name = "閮ㄩ棬鍚嶇О")
+ private String department;
+
+ /**
+ * 鎺掔彮绫诲瀷
+ */
+ @Excel(name = "鐝鍚嶇О", readConverterExp = "1=鏃╃彮,2=涓彮,3=鏅氱彮,4=澶滅彮鐝�")
+ private String shiftType;
+
+ /**
+ * 宸ヤ綔鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @Excel(name = "宸ヤ綔鏃ユ湡", dateFormat = "yyyy-MM-dd", width = 20)
+ private Date workDate;
+
+ /**
+ * 寮�濮嬪伐浣滄椂闂�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @Excel(name = "寮�濮嬪伐浣滄椂闂�", dateFormat = "mm:ss", width = 20)
+ private LocalDateTime workStartTime;
+
+ /**
+ * 缁撴潫宸ヤ綔鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @Excel(name = "缁撴潫宸ヤ綔鏃堕棿", dateFormat = "mm:ss", width = 20)
+ private LocalDateTime workEndTime;
+
+ /**
+ * 宸ヤ綔鏃堕暱
+ */
+ @Excel(name = "宸ヤ綔鏃堕暱", width = 20)
+ private BigDecimal workHours;
+
+ /**
+ * 鐘舵��
+ */
+ @Excel(name = "鐘舵��", readConverterExp = "1=宸插畨鎺�,2=宸茬‘璁�,3=宸插畬鎴�,4=宸插彇娑�")
+ private String status;
+
+ /**
+ * 澶囨敞
+ */
+ @Excel(name = "澶囨敞")
+ private String remark;
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/HolidayApplicationMapper.java b/src/main/java/com/ruoyi/staff/mapper/HolidayApplicationMapper.java
new file mode 100644
index 0000000..1b49c6f
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/HolidayApplicationMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.staff.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.staff.pojo.HolidayApplication;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface HolidayApplicationMapper extends BaseMapper<HolidayApplication> {
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/PersonalAttendanceRecordsMapper.java b/src/main/java/com/ruoyi/staff/mapper/PersonalAttendanceRecordsMapper.java
new file mode 100644
index 0000000..402bb45
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/PersonalAttendanceRecordsMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.staff.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.staff.pojo.PersonalAttendanceRecords;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PersonalAttendanceRecordsMapper extends BaseMapper<PersonalAttendanceRecords> {
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/StaffSchedulingMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffSchedulingMapper.java
new file mode 100644
index 0000000..45fecac
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffSchedulingMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.staff.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.staff.dto.StaffSchedulingDto;
+import com.ruoyi.staff.pojo.StaffScheduling;
+import com.ruoyi.staff.vo.SearchSchedulingVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恠taff_scheduling銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-03 14:50:34
+* @Entity generator.domain.StaffScheduling
+*/
+public interface StaffSchedulingMapper extends BaseMapper<StaffScheduling> {
+
+ IPage<StaffSchedulingDto> listPage(IPage page, @Param("vo") SearchSchedulingVo vo);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/staff/pojo/HolidayApplication.java b/src/main/java/com/ruoyi/staff/pojo/HolidayApplication.java
new file mode 100644
index 0000000..b76893e
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/HolidayApplication.java
@@ -0,0 +1,58 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalTime;
+
+@Data
+@TableName("holiday_application")
+public class HolidayApplication {
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鍛樺伐id
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long staffId;
+ /**
+ * 鍋囨湡绫诲瀷
+ */
+ private String type;
+ /**
+ * 寮�濮嬫棩鏈�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate startDate;
+ /**
+ * 缁撴潫鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate endDate;
+
+ /**
+ * 鍋囨湡澶╂暟
+ */
+ private Integer days;
+ /**
+ * 鐢宠鐞嗙敱
+ */
+ private String reason;
+ /**
+ * 鐘舵��
+ */
+ private String status;
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/PersonalAttendanceRecords.java b/src/main/java/com/ruoyi/staff/pojo/PersonalAttendanceRecords.java
new file mode 100644
index 0000000..cbf11b7
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/PersonalAttendanceRecords.java
@@ -0,0 +1,52 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalTime;
+
+@Data
+@TableName("personal_attendance_records")
+public class PersonalAttendanceRecords implements Serializable {
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate date;
+ /**
+ * 绛惧埌鏃堕棿
+ */
+ @JsonFormat(pattern = "HH:mm")
+ @DateTimeFormat(pattern = "HH:mm")
+ private LocalTime checkIn;
+ /**
+ * 绛鹃��鏃堕棿
+ */
+ @JsonFormat(pattern = "HH:mm")
+ @DateTimeFormat(pattern = "HH:mm")
+ private LocalTime checkOut;
+ /**
+ * 宸ヤ綔鏃堕暱
+ */
+ private String workHours;
+ /**
+ * 鐘舵��
+ */
+ private String status;
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java b/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
index d2ce38d..8de0b69 100644
--- a/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
@@ -36,6 +36,14 @@
private Integer staffState;
/**
+ * 璇曠敤鏈燂紙鏈堬級
+ */
+ @Excel(name = "璇曠敤鏈燂紙鏈堬級")
+ private Integer probationPeriod;
+
+
+
+ /**
* 鍛樺伐缂栧彿
*/
@Excel(name = "鍛樺伐缂栧彿")
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java b/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
index ca54c4c..dc17ed2 100644
--- a/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
@@ -35,7 +35,7 @@
/**
* 鍛樺伐缂栧彿
*/
- @Excel(name = "鍛樺伐缂栧彿")
+ @Excel(name = "鍛樺伐缂栧彿", type = Excel.Type.EXPORT, cellType = Excel.ColumnType.STRING)
private String staffNo;
/**
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffScheduling.java b/src/main/java/com/ruoyi/staff/pojo/StaffScheduling.java
new file mode 100644
index 0000000..89be920
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffScheduling.java
@@ -0,0 +1,106 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * @TableName staff_scheduling
+ */
+@TableName(value ="staff_scheduling")
+@Data
+public class StaffScheduling {
+ /**
+ *
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 鍛樺伐ID
+ */
+ @TableField(value = "staff_id")
+ private Integer staffId;
+
+ /**
+ * 閮ㄩ棬
+ */
+ @TableField(value = "department")
+ private Integer department;
+
+ /**
+ * 鎺掔彮绫诲瀷
+ */
+ @TableField(value = "shift_type")
+ private Integer shiftType;
+
+ /**
+ * 宸ヤ綔鏃ユ湡
+ */
+ @TableField(value = "work_date")
+ private Date workDate;
+
+ /**
+ * 寮�濮嬪伐浣滄椂闂�
+ */
+ @TableField(value = "work_start_time")
+ private LocalDateTime workStartTime;
+
+ /**
+ * 缁撴潫宸ヤ綔鏃堕棿
+ */
+ @TableField(value = "work_end_time")
+ private LocalDateTime workEndTime;
+
+ /**
+ * 宸ヤ綔鏃堕暱
+ */
+ @TableField(value = "work_hours")
+ private BigDecimal workHours;
+
+ /**
+ * 鐘舵��
+ */
+ @TableField(value = "status")
+ private Integer status;
+
+ /**
+ * 澶囨敞
+ */
+ @TableField(value = "remark")
+ private String remark;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ @TableField(value = "create_user",fill = FieldFill.INSERT)
+ private Long createUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 淇敼鐢ㄦ埛
+ */
+ @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
+ private Long updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(value = "tenant_id",fill = FieldFill.INSERT)
+ private Long tenantId;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/staff/service/HolidayApplicationService.java b/src/main/java/com/ruoyi/staff/service/HolidayApplicationService.java
new file mode 100644
index 0000000..c02519b
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/HolidayApplicationService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.staff.service;
+
+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.staff.pojo.HolidayApplication;
+
+public interface HolidayApplicationService extends IService<HolidayApplication> {
+ IPage listPage(Page page, HolidayApplication holidayApplication);
+}
diff --git a/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java b/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
index d32c69c..2cef9f2 100644
--- a/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
+++ b/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
+import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@@ -19,4 +20,6 @@
void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob);
List<StaffJoinLeaveRecord> staffOnJobList();
+
+ Boolean importData(MultipartFile file);
}
diff --git a/src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java b/src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java
new file mode 100644
index 0000000..c39b007
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/PersonalAttendanceRecordsService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.staff.service;
+
+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.staff.pojo.PersonalAttendanceRecords;
+
+public interface PersonalAttendanceRecordsService extends IService<PersonalAttendanceRecords> {
+ IPage listPage(Page page, PersonalAttendanceRecords personalAttendanceRecords);
+}
diff --git a/src/main/java/com/ruoyi/staff/service/StaffSchedulingService.java b/src/main/java/com/ruoyi/staff/service/StaffSchedulingService.java
new file mode 100644
index 0000000..b12faa1
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/StaffSchedulingService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.staff.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.staff.dto.SaveStaffSchedulingDto;
+import com.ruoyi.staff.dto.StaffSchedulingDto;
+import com.ruoyi.staff.pojo.StaffScheduling;
+import com.ruoyi.staff.vo.SearchSchedulingVo;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恠taff_scheduling銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-03 14:50:34
+*/
+public interface StaffSchedulingService extends IService<StaffScheduling> {
+
+ void saveStaffScheduling(SaveStaffSchedulingDto saveStaffSchedulingDto);
+
+ IPage<StaffSchedulingDto> listPage(SearchSchedulingVo vo);
+}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/HolidayApplicationServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/HolidayApplicationServiceImpl.java
new file mode 100644
index 0000000..8decb71
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/HolidayApplicationServiceImpl.java
@@ -0,0 +1,22 @@
+package com.ruoyi.staff.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.staff.mapper.HolidayApplicationMapper;
+import com.ruoyi.staff.pojo.HolidayApplication;
+import com.ruoyi.staff.service.HolidayApplicationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class HolidayApplicationServiceImpl extends ServiceImpl<HolidayApplicationMapper, HolidayApplication> implements HolidayApplicationService {
+ @Autowired
+ private HolidayApplicationMapper holidayApplicationMapper;
+
+ @Override
+ public IPage listPage(Page page, HolidayApplication holidayApplication) {
+ return holidayApplicationMapper.selectPage(page, new QueryWrapper<>(holidayApplication));
+ }
+}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
new file mode 100644
index 0000000..1fc363b
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
@@ -0,0 +1,23 @@
+package com.ruoyi.staff.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.staff.mapper.PersonalAttendanceRecordsMapper;
+import com.ruoyi.staff.pojo.PersonalAttendanceRecords;
+import com.ruoyi.staff.service.PersonalAttendanceRecordsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PersonalAttendanceRecordsServiceImpl extends ServiceImpl<PersonalAttendanceRecordsMapper, PersonalAttendanceRecords> implements PersonalAttendanceRecordsService {
+ @Autowired
+ private PersonalAttendanceRecordsMapper personalAttendanceRecordsMapper;
+
+ @Override
+ public IPage listPage(Page page, PersonalAttendanceRecords personalAttendanceRecords) {
+// return personalAttendanceRecordsMapper.ListPage(page, personalAttendanceRecords);
+ return baseMapper.selectPage(page, new QueryWrapper<>(personalAttendanceRecords));
+ }
+}
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 8aaa840..9fc8c43 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -14,6 +14,7 @@
import com.ruoyi.staff.service.IStaffOnJobService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
@@ -55,5 +56,17 @@
return staffJoinLeaveRecordMapper.staffOnJobList();
}
+ @Override
+ public Boolean importData(MultipartFile file) {
+ try {
+ ExcelUtil<StaffOnJob> util = new ExcelUtil<>(StaffOnJob.class);
+ List<StaffOnJob> staffOnJobs = util.importExcel(file.getInputStream());
+ return saveOrUpdateBatch(staffOnJobs);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java
new file mode 100644
index 0000000..b42d1fc
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java
@@ -0,0 +1,61 @@
+package com.ruoyi.staff.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.staff.dto.SaveStaffSchedulingDto;
+import com.ruoyi.staff.dto.StaffSchedulingDto;
+import com.ruoyi.staff.mapper.StaffSchedulingMapper;
+import com.ruoyi.staff.pojo.StaffScheduling;
+import com.ruoyi.staff.service.StaffSchedulingService;
+import com.ruoyi.staff.vo.SearchSchedulingVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.Duration;
+
+/**
+ * @author buhuazhen
+ * @description 閽堝琛ㄣ�恠taff_scheduling銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2025-09-03 14:50:34
+ */
+@Service
+@RequiredArgsConstructor
+public class StaffSchedulingServiceImpl extends ServiceImpl<StaffSchedulingMapper, StaffScheduling>
+ implements StaffSchedulingService {
+
+ private final StaffSchedulingMapper staffSchedulingMapper;
+
+ @Lazy
+ @Resource
+ private StaffSchedulingService staffSchedulingService;
+
+ @Override
+ public void saveStaffScheduling(SaveStaffSchedulingDto saveStaffSchedulingDto) {
+ StaffScheduling staffScheduling = new StaffScheduling();
+ BeanUtils.copyProperties(saveStaffSchedulingDto, staffScheduling);
+ // 寮�濮嬭绠楁椂闂�
+ Duration duration = Duration.between(staffScheduling.getWorkStartTime(), staffScheduling.getWorkEndTime());
+ long hours = duration.toHours();
+ // 0.5
+ double minutes = (duration.toMinutes() % 60) / 60.0;
+ // minutes = minutes < 0.5 ? 0 : 0.5; 鍏徃涓�鑸互0.5涓烘爣鍑嗚绠�
+ staffScheduling.setWorkHours(BigDecimal.valueOf(hours + minutes));
+ staffSchedulingService.saveOrUpdate(staffScheduling);
+ }
+
+ @Override
+ public IPage<StaffSchedulingDto> listPage(SearchSchedulingVo vo) {
+ Page<StaffScheduling> page = new Page<>(vo.getCurrent(), vo.getSize());
+
+ return staffSchedulingMapper.listPage(page, vo);
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/staff/vo/SearchSchedulingVo.java b/src/main/java/com/ruoyi/staff/vo/SearchSchedulingVo.java
new file mode 100644
index 0000000..c546208
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/vo/SearchSchedulingVo.java
@@ -0,0 +1,27 @@
+package com.ruoyi.staff.vo;
+
+import com.ruoyi.dto.PageDto;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/3
+ * @email 3038525872@qq.com
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SearchSchedulingVo extends PageDto {
+
+ private String staffName;
+
+ private String shiftType;
+
+ private LocalDate startDate;
+
+ private LocalDate endDate;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/DocumentClassificationController.java b/src/main/java/com/ruoyi/warehouse/controller/DocumentClassificationController.java
new file mode 100644
index 0000000..625c82b
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/controller/DocumentClassificationController.java
@@ -0,0 +1,52 @@
+package com.ruoyi.warehouse.controller;
+
+import com.ruoyi.basic.dto.ProductDto;
+import com.ruoyi.basic.dto.ProductTreeDto;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.warehouse.dto.DocumentClassificationDto;
+import com.ruoyi.warehouse.dto.DocumentClassificationTreeDto;
+import com.ruoyi.warehouse.pojo.DocumentClassification;
+import com.ruoyi.warehouse.service.DocumentClassificationService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@Api(tags = "鏂囨。鍒嗙被")
+@RequestMapping("/warehouse/documentClassification")
+public class DocumentClassificationController extends BaseController {
+ @Autowired
+ private DocumentClassificationService documentClassificationService;
+ //鏍戠粨鏋�
+ @GetMapping("/getList")
+ public AjaxResult getList() {
+ return AjaxResult.success(documentClassificationService.selectDocumentClassificationList());
+ }
+ @PostMapping("/add")
+ @ApiOperation("鏂囨。鍒嗙被-娣诲姞")
+ @Log(title = "鏂囨。鍒嗙被-娣诲姞", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody DocumentClassification documentClassification) {
+ return AjaxResult.success(documentClassificationService.save(documentClassification));
+ }
+ @PutMapping("/update")
+ @ApiOperation("鏂囨。鍒嗙被-鏇存柊")
+ @Log(title = "鏂囨。鍒嗙被-鏇存柊", businessType = BusinessType.UPDATE)
+ public AjaxResult update(@RequestBody DocumentClassification documentClassification) {
+ return AjaxResult.success(documentClassificationService.updateById(documentClassification));
+ }
+ @DeleteMapping("/delete")
+ @ApiOperation("鏂囨。鍒嗙被鍒犻櫎")
+ @Log(title = "鏂囨。鍒嗙被鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(documentClassificationService.deleteByIds(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java b/src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java
new file mode 100644
index 0000000..fdf07fd
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/controller/DocumentationBorrowManagementController.java
@@ -0,0 +1,113 @@
+package com.ruoyi.warehouse.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+
+import com.ruoyi.warehouse.mapper.DocumentationBorrowManagementMapper;
+import com.ruoyi.warehouse.mapper.DocumentationReturnManagementMapper;
+import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
+import com.ruoyi.warehouse.pojo.DocumentationReturnManagement;
+import com.ruoyi.warehouse.pojo.Warehouse;
+import com.ruoyi.warehouse.service.DocumentationBorrowManagementService;
+import com.ruoyi.warehouse.service.WarehouseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@RestController
+@Api(tags = "鏂囨。鍊熼槄绠$悊")
+@RequestMapping("/documentationBorrowManagement")
+public class DocumentationBorrowManagementController extends BaseController {
+ @Autowired
+ private DocumentationBorrowManagementService documentationBorrowManagementService;
+ @Autowired
+ private DocumentationBorrowManagementMapper documentationBorrowManagementMapper;
+ @Autowired
+ private DocumentationReturnManagementMapper documentationReturnManagementMapper;
+ @GetMapping("/listPage")
+ @ApiOperation("鏂囨。鍊熼槄绠$悊-鍊熼槄鍒嗛〉鏌ヨ")
+ @Log(title = "鏂囨。鍊熼槄绠$悊-鍊熼槄鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult listPage(Page page, DocumentationBorrowManagement documentationBorrowManagement) {
+ return AjaxResult.success(documentationBorrowManagementService.listPage(page, documentationBorrowManagement));
+ }
+ @GetMapping("/list")
+ @ApiOperation("鏂囨。鍊熼槄绠$悊-鍊熼槄鏌ヨ")
+ @Log(title = "鏂囨。鍊熼槄绠$悊-鍊熼槄鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult list() {
+ return AjaxResult.success(documentationBorrowManagementService.listAll());
+ }
+ @GetMapping("/listPageReturn")
+ @ApiOperation("鏂囨。鍊熼槄绠$悊-褰掕繕鍒嗛〉鏌ヨ")
+ @Log(title = "鏂囨。鍊熼槄绠$悊-褰掕繕鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult listPageReturn(Page page, DocumentationReturnManagement documentationReturnManagement) {
+ return AjaxResult.success(documentationReturnManagementMapper.listPage(page, documentationReturnManagement));
+ }
+ @GetMapping("/getByDocumentationId/{id}")
+ @ApiOperation("鏍规嵁涔︾睄id鏌ヨ鍊熼槄璁板綍")
+ @Log(title = "鏍规嵁涔︾睄id鏌ヨ鍊熼槄璁板綍", businessType = BusinessType.OTHER)
+ public AjaxResult getByDocumentationId(@PathVariable Long id) {
+ return AjaxResult.success(documentationBorrowManagementService.selectByDocumentationId(id));
+ }
+ @PostMapping("/add")
+ @ApiOperation("鏂囨。鍊熼槄绠$悊-鍊熼槄")
+ @Log(title = "鏂囨。鍊熼槄绠$悊-鍊熼槄", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody DocumentationBorrowManagement documentationBorrowManagement) {
+ return AjaxResult.success(documentationBorrowManagementService.add(documentationBorrowManagement));
+ }
+ @PutMapping("/revent")
+ @ApiOperation("鏂囨。鍊熼槄绠$悊-褰掕繕")
+ @Log(title = "鏂囨。鍊熼槄绠$悊-褰掕繕", businessType = BusinessType.UPDATE)
+ public AjaxResult revent(@RequestBody DocumentationReturnManagement documentationReturnManagement) {
+ return AjaxResult.success(documentationBorrowManagementService.reventdbm(documentationReturnManagement));
+ }
+ @PutMapping("/update")
+ @ApiOperation("鏂囨。鍊熼槄绠$悊-鏇存柊")
+ @Log(title = "鏂囨。鍊熼槄绠$悊-鏇存柊", businessType = BusinessType.UPDATE)
+ public AjaxResult update(@RequestBody DocumentationBorrowManagement documentationBorrowManagement) {
+ return AjaxResult.success(documentationBorrowManagementService.updateById(documentationBorrowManagement));
+ }
+ @PutMapping("/reventUpdate")
+ @ApiOperation("鏂囨。鍊熼槄绠$悊-褰掕繕鏇存柊")
+ @Log(title = "鏂囨。鍊熼槄绠$悊-褰掕繕鏇存柊", businessType = BusinessType.UPDATE)
+ public AjaxResult reventupdate(@RequestBody DocumentationReturnManagement documentationReturnManagement) {
+ return AjaxResult.success(documentationReturnManagementMapper.updateById(documentationReturnManagement));
+ }
+ @DeleteMapping ("/delete")
+ @ApiOperation("鏂囨。鍊熼槄绠$悊-鍊熼槄鍒犻櫎")
+ @Log(title = "鏂囨。鍊熼槄绠$悊-鍊熼槄鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(documentationBorrowManagementService.deleteByIds(ids));
+ }
+ @DeleteMapping ("/reventDelete")
+ @ApiOperation("鏂囨。鍊熼槄绠$悊-褰掕繕鍒犻櫎")
+ @Log(title = "鏂囨。鍊熼槄绠$悊-褰掕繕鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult reventdelete(@RequestBody List<Long> ids) {
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(documentationBorrowManagementService.reventDeleteByIds(ids));
+ }
+ @PostMapping("/export")
+ @ApiOperation("鏂囨。鍊熼槄绠$悊-鍊熼槄瀵煎嚭")
+ @Log(title = "鏂囨。鍊熼槄绠$悊-鍊熼槄瀵煎嚭", businessType = BusinessType.EXPORT)
+ public void export(HttpServletResponse response,DocumentationBorrowManagement documentationBorrowManagement) {
+ documentationBorrowManagementService.export(response,documentationBorrowManagement);
+ }
+ @PostMapping("/exportrevent")
+ @ApiOperation("鏂囨。鍊熼槄绠$悊-褰掕繕瀵煎嚭")
+ @Log(title = "鏂囨。鍊熼槄绠$悊-褰掕繕瀵煎嚭", businessType = BusinessType.EXPORT)
+ public void exportrevent(HttpServletResponse response, DocumentationReturnManagement documentationReturnManagement) {
+ documentationBorrowManagementService.exportrevent(response,documentationReturnManagement);
+ }
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java b/src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java
new file mode 100644
index 0000000..586c330
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/controller/DocumentationController.java
@@ -0,0 +1,91 @@
+package com.ruoyi.warehouse.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.warehouse.dto.DocumentationDto;
+import com.ruoyi.warehouse.pojo.Documentation;
+import com.ruoyi.warehouse.pojo.Warehouse;
+import com.ruoyi.warehouse.service.DocumentationService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/documentation")
+@Api(tags = "鏂囨。淇℃伅琛�")
+public class DocumentationController extends BaseController {
+ @Autowired
+ private DocumentationService documentationService;
+ @GetMapping("/listPage")
+ @ApiOperation("鏂囨。淇℃伅琛�-鍒嗛〉鏌ヨ")
+ @Log(title = "鏂囨。淇℃伅琛�-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult listPage(Page page, Documentation documentation) {
+ IPage<DocumentationDto> list = documentationService.listPage(page, documentation);
+ return AjaxResult.success(list);
+ }
+ @GetMapping("/list")
+ @ApiOperation("鏂囨。淇℃伅琛ㄦ煡璇�")
+ @Log(title = "鏂囨。淇℃伅琛ㄦ煡璇�", businessType = BusinessType.OTHER)
+ public AjaxResult list() {
+ List<DocumentationDto> list = documentationService.listAll();
+ return AjaxResult.success(list);
+ }
+ @PostMapping("/add")
+ @ApiOperation("鏂囨。淇℃伅琛�-娣诲姞")
+ @Log(title = "鏂囨。淇℃伅琛�-娣诲姞", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody Documentation documentation) {
+ return AjaxResult.success(documentationService.save(documentation));
+ }
+ @PutMapping("/update")
+ @ApiOperation("鏂囨。淇℃伅琛�-鏇存柊")
+ @Log(title = "鏂囨。淇℃伅琛�-鏇存柊", businessType = BusinessType.UPDATE)
+ public AjaxResult update(@RequestBody Documentation documentation) {
+ return AjaxResult.success(documentationService.updateById(documentation));
+ }
+ @DeleteMapping("/delete")
+ @ApiOperation("鏂囨。淇℃伅琛�-鍒犻櫎")
+ @Log(title = "鏂囨。淇℃伅琛�-鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(documentationService.deleteByIds(ids));
+ }
+
+ @PostMapping("/export")
+ @ApiOperation("鏂囨。淇℃伅琛�-瀵煎嚭")
+ @Log(title = "鏂囨。淇℃伅琛�-瀵煎嚭", businessType = BusinessType.EXPORT)
+ public void export(HttpServletResponse response,Documentation documentation ) {
+ documentationService.export(response,documentation);
+ }
+ @ApiOperation("鏂囨。淇℃伅琛�-缁熻")
+ @GetMapping("/overview")
+ public AjaxResult getOverviewStatistics() {
+ Map<String, Object> result = new HashMap<>();
+ result.put("totalDocsCount", documentationService.getTotalDocsCount());
+ result.put("categoryNumCount", documentationService.getCategoryNumCount());
+ result.put("borrowedDocsCount", documentationService.getBorrowedDocsCount());
+ result.put("monthlyAddedDocsCount", documentationService.getMonthlyAddedDocsCount());
+ return AjaxResult.success(result);
+ }
+ @ApiOperation("鏂囨。淇℃伅琛�-鍒嗙被缁熻")
+ @GetMapping("/category")
+ public AjaxResult getCategoryDistribution() {
+ return AjaxResult.success(documentationService.getCategoryDistribution());
+ }
+ @ApiOperation("鏂囨。淇℃伅琛�-鐘舵�佺粺璁�")
+ @GetMapping("/status")
+ public AjaxResult getStatusDistribution() {
+ return AjaxResult.success(documentationService.getStatusDistribution());
+ }
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java b/src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java
new file mode 100644
index 0000000..13a1bc7
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/controller/DocumentationFileController.java
@@ -0,0 +1,64 @@
+package com.ruoyi.warehouse.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.pojo.AccountFile;
+import com.ruoyi.account.service.AccountFileService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.warehouse.pojo.DocumentationFile;
+import com.ruoyi.warehouse.service.DocumentationFileService;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 鏂囨。闄勪欢
+ */
+@RestController
+@RequestMapping("/documentation/documentationFile")
+public class DocumentationFileController {
+
+
+ @Resource
+ private DocumentationFileService documentationFileService;
+
+ /**
+ * 鏂板
+ * @param documentationFile
+ * @return
+ */
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody DocumentationFile documentationFile) {
+ return AjaxResult.success(documentationFileService.save(documentationFile));
+ }
+
+ /**
+ * 鍒犻櫎
+ * @param ids
+ * @return
+ */
+ @DeleteMapping("/del")
+ public AjaxResult delDocumentationFile(@RequestBody List<Long> ids) {
+ if(CollectionUtils.isEmpty(ids)){
+ return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ }
+ //鍒犻櫎妫�楠岄檮浠�
+ return AjaxResult.success(documentationFileService.removeBatchByIds(ids));
+ }
+
+ /**
+ *鏌ヨ
+ * @param
+ * @param documentationFile
+ * @return
+ */
+ @GetMapping("/listPage")
+ public AjaxResult documentationFileListPage(DocumentationFile documentationFile) {
+ return AjaxResult.success(documentationFileService.documentationFileListPage( documentationFile));
+ }
+
+
+
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/WarehouseController.java b/src/main/java/com/ruoyi/warehouse/controller/WarehouseController.java
new file mode 100644
index 0000000..0876334
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/controller/WarehouseController.java
@@ -0,0 +1,63 @@
+package com.ruoyi.warehouse.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.ruoyi.warehouse.pojo.Warehouse;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
+import com.ruoyi.warehouse.service.WarehouseGoodsShelvesService;
+import com.ruoyi.warehouse.service.WarehouseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@Api(tags = "浠撳簱")
+@RequestMapping("/warehouse")
+public class WarehouseController extends BaseController {
+ @Autowired
+ private WarehouseService warehouseService;
+ @GetMapping("/tree")
+ @ApiOperation("浠撳簱-鏌ヨ鏍�")
+ @Log(title = "浠撳簱-鏌ヨ鏍�", businessType = BusinessType.OTHER)
+ public AjaxResult listTree() {
+ return AjaxResult.success(warehouseService.findListTree());
+ }
+ @GetMapping("/list")
+ @ApiOperation("浠撳簱-鏌ヨ")
+ @Log(title = "浠撳簱-鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult list(Warehouse warehouse) {
+ return AjaxResult.success(warehouseService.findList(warehouse));
+ }
+ @PostMapping("/add")
+ @ApiOperation("浠撳簱-娣诲姞")
+ @Log(title = "浠撳簱-娣诲姞", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody Warehouse warehouse) {
+ return AjaxResult.success(warehouseService.save(warehouse));
+ }
+
+ @PutMapping("/update")
+ @ApiOperation("浠撳簱-鏇存柊")
+ @Log(title = "浠撳簱-鏇存柊", businessType = BusinessType.UPDATE)
+ public AjaxResult update(@RequestBody Warehouse warehouse) {
+ return AjaxResult.success(warehouseService.updateById(warehouse));
+ }
+
+ @DeleteMapping("/delete")
+ @ApiOperation("浠撳簱-鍒犻櫎")
+ @Log(title = "浠撳簱-鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(warehouseService.deleteByIds(ids));
+ }
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesController.java b/src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesController.java
new file mode 100644
index 0000000..bed5510
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesController.java
@@ -0,0 +1,54 @@
+package com.ruoyi.warehouse.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
+import com.ruoyi.warehouse.service.WarehouseGoodsShelvesService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@Api(tags = "鍟嗗搧璐ф灦")
+@RequestMapping("/warehouse/goodsShelves")
+public class WarehouseGoodsShelvesController extends BaseController {
+ @Autowired
+ private WarehouseGoodsShelvesService warehouseGoodsShelvesService;
+
+ @GetMapping("/listById")
+ @ApiOperation("鍟嗗搧璐ф灦-鏌ヨ")
+ @Log(title = "鍟嗗搧璐ф灦-鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult listById(WarehouseGoodsShelves warehouseGoodsShelves) {
+ List<WarehouseGoodsShelvesDto> list = warehouseGoodsShelvesService.findList(warehouseGoodsShelves);
+ return AjaxResult.success(list);
+ }
+ @PostMapping("/add")
+ @ApiOperation("鍟嗗搧璐ф灦-娣诲姞")
+ @Log(title = "鍟嗗搧璐ф灦-娣诲姞", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody WarehouseGoodsShelves warehouseGoodsShelves) {
+ return AjaxResult.success(warehouseGoodsShelvesService.add(warehouseGoodsShelves));
+ }
+ @PutMapping("/update")
+ @ApiOperation("鍟嗗搧璐ф灦-鏇存柊")
+ @Log(title = "鍟嗗搧璐ф灦-鏇存柊", businessType = BusinessType.UPDATE)
+ public AjaxResult update(@RequestBody WarehouseGoodsShelves warehouseGoodsShelves) {
+ return AjaxResult.success(warehouseGoodsShelvesService.updateRowcolById(warehouseGoodsShelves));
+ }
+ @DeleteMapping("/delete")
+ @ApiOperation("鍟嗗搧璐ф灦-鍒犻櫎")
+ @Log(title = "鍟嗗搧璐ф灦-鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+ return AjaxResult.success(warehouseGoodsShelvesService.deleteByIds(ids));
+ }
+}
diff --git a/src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesRowcolController.java b/src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesRowcolController.java
new file mode 100644
index 0000000..36073ac
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/controller/WarehouseGoodsShelvesRowcolController.java
@@ -0,0 +1,32 @@
+package com.ruoyi.warehouse.controller;
+
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
+import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesRowcolDto;
+import com.ruoyi.warehouse.service.WarehouseGoodsShelvesRowcolService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@Api(tags = "鍟嗗搧璐ф灦琛屽垪")
+@RequestMapping("/warehouse/goodsShelvesRowcol")
+public class WarehouseGoodsShelvesRowcolController extends BaseController {
+ @Autowired
+ private WarehouseGoodsShelvesRowcolService warehouseGoodsShelvesRowcolService;
+ @GetMapping("/list")
+ @ApiOperation("鍟嗗搧璐ф灦琛屽垪-鏌ヨ")
+ @Log(title = "鍟嗗搧璐ф灦琛屽垪-鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult list(WarehouseGoodsShelvesRowcol warehouseGoodsShelvesRowcol) {
+
+ List<WarehouseGoodsShelvesRowcolDto> list = warehouseGoodsShelvesRowcolService.getList(warehouseGoodsShelvesRowcol);
+ return AjaxResult.success(list);
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationDto.java b/src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationDto.java
new file mode 100644
index 0000000..ed20c8d
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationDto.java
@@ -0,0 +1,12 @@
+package com.ruoyi.warehouse.dto;
+
+import com.ruoyi.warehouse.pojo.DocumentClassification;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DocumentClassificationDto extends DocumentClassification {
+
+ private List<DocumentClassification> documentClassificationList;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationTreeDto.java b/src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationTreeDto.java
new file mode 100644
index 0000000..e2817db
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/dto/DocumentClassificationTreeDto.java
@@ -0,0 +1,13 @@
+package com.ruoyi.warehouse.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DocumentClassificationTreeDto {
+ private Long id;
+ private Long parentId;
+ private String category;
+ private List<DocumentClassificationTreeDto> children;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/dto/DocumentationBorrowManagementDto.java b/src/main/java/com/ruoyi/warehouse/dto/DocumentationBorrowManagementDto.java
new file mode 100644
index 0000000..8fb893a
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/dto/DocumentationBorrowManagementDto.java
@@ -0,0 +1,16 @@
+package com.ruoyi.warehouse.dto;
+
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DocumentationBorrowManagementDto extends DocumentationBorrowManagement {
+ /**
+ * 鏂囨。鍚嶇О
+ */
+ @Excel(name = "鏂囨。鍚嶇О")
+ private String docName;
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/DocumentationDto.java b/src/main/java/com/ruoyi/warehouse/dto/DocumentationDto.java
new file mode 100644
index 0000000..ad10fc2
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/dto/DocumentationDto.java
@@ -0,0 +1,20 @@
+package com.ruoyi.warehouse.dto;
+
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.warehouse.pojo.Documentation;
+import lombok.Data;
+
+@Data
+public class DocumentationDto extends Documentation {
+ /**
+ * 绫诲埆鍚嶇О
+ */
+ @Excel(name = "绫诲埆鍚嶇О")
+ private String category;
+ /**
+ * 浣嶇疆淇℃伅
+ */
+ @Excel(name = "浣嶇疆淇℃伅")
+ private String locationInfo;
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/DocumentationReturnManagementDto.java b/src/main/java/com/ruoyi/warehouse/dto/DocumentationReturnManagementDto.java
new file mode 100644
index 0000000..a65e1e0
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/dto/DocumentationReturnManagementDto.java
@@ -0,0 +1,12 @@
+package com.ruoyi.warehouse.dto;
+
+import com.ruoyi.warehouse.pojo.DocumentationReturnManagement;
+import lombok.Data;
+
+@Data
+public class DocumentationReturnManagementDto extends DocumentationReturnManagement {
+ /**
+ * 鏂囨。鍚嶇О
+ */
+ private String docName;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java b/src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java
new file mode 100644
index 0000000..bb9c391
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/dto/ReturnExportDto.java
@@ -0,0 +1,27 @@
+package com.ruoyi.warehouse.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import java.time.LocalDateTime;
+
+public class ReturnExportDto {
+ private String id; // 璁板綍缂栧彿
+ @Excel(name = "鏂囨。鍚嶇О")
+ private String docName; // 鏂囨。鍚嶇О
+ @Excel(name = "鍘熷�熼槄浜�")
+ private String borrower; // 鍊熼槄浜�
+ @Excel(name = "鍊熼槄鏃堕棿", dateFormat = "yyyy-MM-dd", width = 30)
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDateTime borrowDate; // 鍊熼槄鏃堕棿
+ @Excel(name = "褰掕繕浜�")
+ @NotBlank(message = "褰掕繕浜轰笉鑳戒负绌�!!")
+ private String returner; // 褰掕繕浜�
+ @Excel(name = "褰掕繕鏃堕棿", dateFormat = "yyyy-MM-dd", width = 30)
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDateTime returnDate; // 褰掕繕鏃堕棿
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/WarehouseDto.java b/src/main/java/com/ruoyi/warehouse/dto/WarehouseDto.java
new file mode 100644
index 0000000..34ac3f1
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/dto/WarehouseDto.java
@@ -0,0 +1,13 @@
+package com.ruoyi.warehouse.dto;
+
+import com.ruoyi.warehouse.pojo.*;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WarehouseDto extends Warehouse {
+
+ private String goodsShelvesName;
+ private String category;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesDto.java b/src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesDto.java
new file mode 100644
index 0000000..b637542
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesDto.java
@@ -0,0 +1,12 @@
+package com.ruoyi.warehouse.dto;
+
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
+
+import java.util.List;
+
+public class WarehouseGoodsShelvesDto extends WarehouseGoodsShelves {
+ private String warehouseName;
+ private String docName;
+ private String docNumber;
+ private String category;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesRowcolDto.java b/src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesRowcolDto.java
new file mode 100644
index 0000000..2bff39e
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/dto/WarehouseGoodsShelvesRowcolDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.warehouse.dto;
+
+import com.ruoyi.warehouse.dto.DocumentationDto;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WarehouseGoodsShelvesRowcolDto extends WarehouseGoodsShelvesRowcol {
+ private String warehouseName;
+ private String name;
+ private List<DocumentationDto> documentationDtoList;
+ private String category;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/dto/WarehouseTreeDto.java b/src/main/java/com/ruoyi/warehouse/dto/WarehouseTreeDto.java
new file mode 100644
index 0000000..80be317
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/dto/WarehouseTreeDto.java
@@ -0,0 +1,12 @@
+package com.ruoyi.warehouse.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WarehouseTreeDto {
+ private Long id;
+ private String label;
+ private List<WarehouseTreeDto> children;
+}
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentClassificationMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentClassificationMapper.java
new file mode 100644
index 0000000..93b121f
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/mapper/DocumentClassificationMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.warehouse.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.warehouse.pojo.DocumentClassification;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恉ocument_classification(鏂囨。鍒嗙被琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-08-15 10:44:23
+* @Entity com.ruoyi.warehouse.pojo.DocumentClassification
+*/
+@Mapper
+public interface DocumentClassificationMapper extends BaseMapper<DocumentClassification> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java
new file mode 100644
index 0000000..6af2ceb
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationBorrowManagementMapper.java
@@ -0,0 +1,35 @@
+package com.ruoyi.warehouse.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto;
+import com.ruoyi.warehouse.dto.ReturnExportDto;
+import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恉ocumentation_borrow_management(鏂囨。鍊熼槄-褰掕繕琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-08-14 15:55:45
+* @Entity com.ruoyi.warehouse.pojo.DocumentationBorrowManagement
+*/
+@Mapper
+public interface DocumentationBorrowManagementMapper extends BaseMapper<DocumentationBorrowManagement> {
+
+ IPage<DocumentationBorrowManagement> listPage(Page page, @Param("documentationBorrowManagement") DocumentationBorrowManagement documentationBorrowManagement);
+
+ List<DocumentationBorrowManagementDto> export(@Param("documentationBorrowManagement") DocumentationBorrowManagement documentationBorrowManagement);
+
+ List<DocumentationBorrowManagementDto> list(@Param("ew") Wrapper<DocumentationBorrowManagementDto> queryWrapper);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationFileMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationFileMapper.java
new file mode 100644
index 0000000..0617258
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationFileMapper.java
@@ -0,0 +1,17 @@
+package com.ruoyi.warehouse.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.pojo.AccountFile;
+import com.ruoyi.warehouse.pojo.DocumentationFile;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface DocumentationFileMapper extends BaseMapper<DocumentationFile> {
+
+ List<DocumentationFile> documentationFileListPage(@Param("documentationFile") DocumentationFile documentationFile);
+}
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java
new file mode 100644
index 0000000..33278bf
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationMapper.java
@@ -0,0 +1,48 @@
+package com.ruoyi.warehouse.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto;
+import com.ruoyi.warehouse.dto.DocumentationDto;
+import com.ruoyi.warehouse.pojo.Documentation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恉ocumentation(鏂囨。淇℃伅琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-08-14 14:05:49
+* @Entity com.ruoyi.warehouse.pojo.Documentation
+*/
+@Mapper
+public interface DocumentationMapper extends BaseMapper<Documentation> {
+
+ IPage<DocumentationDto> listPage(Page page, @Param("documentation") Documentation documentation);
+ List<DocumentationDto> list();
+ List<DocumentationDto> listByDocumentClassificationId(@Param("documentClassificationId") Long documentClassificationId);
+ List<DocumentationDto> listBywarehouseGoodsShelvesRowcolId(@Param("warehouseGoodsShelvesRowcolId") Long warehouseGoodsShelvesRowcolId);
+ @Select("select count(*) from documentation")
+ Integer countTotalDocs();
+ @Select("select count(distinct document_classification_id) from documentation")
+ Integer countCategoryNum();
+ @Select("select count(*) from documentation where doc_status = '鍊熷嚭'")
+ Integer countBorrowedDocs();
+ @Select("select count(*) from documentation where create_time >= date_format(now(), '%Y-%m-01') and create_time < date_format(now(), '%Y-%m-%d')")
+ Integer countMonthlyAddedDocs();
+
+ @Select("select dc.category, count(*) as count from documentation doc left join document_classification dc on doc.document_classification_id = dc.id group by dc.category")
+ List<Map<String, Object>> countCategoryDistribution();
+
+ @Select("select doc_status as docStatus, count(*) as count from documentation group by doc_status")
+ List<Map<String, Object>> countStatusDistribution();
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/DocumentationReturnManagementMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationReturnManagementMapper.java
new file mode 100644
index 0000000..d9de592
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/mapper/DocumentationReturnManagementMapper.java
@@ -0,0 +1,33 @@
+package com.ruoyi.warehouse.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto;
+import com.ruoyi.warehouse.dto.ReturnExportDto;
+import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
+import com.ruoyi.warehouse.pojo.DocumentationReturnManagement;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恉ocumentation_borrow_management(鏂囨。鍊熼槄-褰掕繕琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-08-14 15:55:45
+* @Entity com.ruoyi.warehouse.pojo.DocumentationBorrowManagement
+*/
+@Mapper
+public interface DocumentationReturnManagementMapper extends BaseMapper<DocumentationReturnManagement> {
+
+ IPage<DocumentationReturnManagement> listPage(Page page, @Param("documentationReturnManagement") DocumentationReturnManagement documentationReturnManagement);
+//
+// List<DocumentationReturnManagementDto> export(@Param("documentationReturnManagement") DocumentationReturnManagement documentationReturnManagement);
+//
+ List<ReturnExportDto> exportrevent(@Param("documentationReturnManagement") DocumentationReturnManagement documentationReturnManagement);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesMapper.java
new file mode 100644
index 0000000..d02e0cd
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesMapper.java
@@ -0,0 +1,29 @@
+package com.ruoyi.warehouse.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+*
+* @description 閽堝琛ㄣ�恮arehouse_goods_shelves(浠撳簱璐ф灦琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-08-13 11:49:02
+* @Entity warehouse.pojo.WarehouseGoodsShelves
+*/
+@Mapper
+public interface WarehouseGoodsShelvesMapper extends BaseMapper<WarehouseGoodsShelves> {
+
+ List<WarehouseGoodsShelvesDto> findList(@Param("warehouseGoodsShelves") WarehouseGoodsShelves warehouseGoodsShelves);
+ List<WarehouseGoodsShelvesDto> listAll(@Param("warehouseGoodsShelves") WarehouseGoodsShelves warehouseGoodsShelves);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesRowcolMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesRowcolMapper.java
new file mode 100644
index 0000000..69da1ee
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/mapper/WarehouseGoodsShelvesRowcolMapper.java
@@ -0,0 +1,25 @@
+package com.ruoyi.warehouse.mapper;
+
+import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesRowcolDto;
+import org.apache.ibatis.annotations.Mapper;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恮arehouse_goods_shelves_rowcol(浠撳簱璐ф灦灞傦紝鍒楄〃)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-08-13 11:49:02
+* @Entity warehouse.pojo.WarehouseGoodsShelvesRowcol
+*/
+@Mapper
+public interface WarehouseGoodsShelvesRowcolMapper extends BaseMapper<WarehouseGoodsShelvesRowcol> {
+
+ List<WarehouseGoodsShelvesRowcolDto> findList(@Param("warehouseGoodsShelvesRowcol") WarehouseGoodsShelvesRowcol warehouseGoodsShelvesRowcol);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/mapper/WarehouseMapper.java b/src/main/java/com/ruoyi/warehouse/mapper/WarehouseMapper.java
new file mode 100644
index 0000000..392f8ca
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/mapper/WarehouseMapper.java
@@ -0,0 +1,26 @@
+package com.ruoyi.warehouse.mapper;
+
+
+import com.ruoyi.warehouse.dto.WarehouseDto;
+import com.ruoyi.warehouse.pojo.Warehouse;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恮arehouse(浠撳簱琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-08-13 11:49:02
+* @Entity warehouse.pojo.Warehouse
+*/
+@Mapper
+public interface WarehouseMapper extends BaseMapper<Warehouse> {
+ List<WarehouseDto> findList(@Param("warehouse") Warehouse warehouse);
+ List<Warehouse> listAll(@Param("warehouse") Warehouse warehouse);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/DocumentClassification.java b/src/main/java/com/ruoyi/warehouse/pojo/DocumentClassification.java
new file mode 100644
index 0000000..98855ce
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/pojo/DocumentClassification.java
@@ -0,0 +1,67 @@
+package com.ruoyi.warehouse.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 鏂囨。鍒嗙被琛�
+ * @TableName document_classification
+ */
+@TableName(value ="document_classification")
+@Data
+@ApiModel(value = "鏂囨。鍒嗙被琛�")
+public class DocumentClassification implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 绫诲埆鍚嶇О
+ */
+ private String category;
+
+ /**
+ * 鐖剁被id
+ */
+ private Long parentId;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 淇敼鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛id
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/Documentation.java b/src/main/java/com/ruoyi/warehouse/pojo/Documentation.java
new file mode 100644
index 0000000..0c1a612
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/pojo/Documentation.java
@@ -0,0 +1,175 @@
+package com.ruoyi.warehouse.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鏂囨。淇℃伅琛�
+ * @TableName documentation
+ */
+@TableName(value ="documentation")
+@Data
+@ApiModel(value = "鏂囨。淇℃伅琛�")
+public class Documentation implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(value = "鏂囨。ID")
+ private Long id;
+
+ /**
+ * 绫诲埆鍚嶇Оid
+ */
+ @Excel(name = "绫诲埆鍚嶇Оid")
+ @ApiModelProperty(value = "绫诲埆鍚嶇Оid")
+ private Long documentClassificationId;
+
+ /**
+ * 鏂囨。鍚嶇О
+ */
+ @Excel(name = "鏂囨。鍚嶇О")
+ @ApiModelProperty(value = "鏂囨。鍚嶇О")
+ private String docName;
+
+ /**
+ * 鏂囨。缂栧彿
+ */
+ @Excel(name = "鏂囨。缂栧彿")
+ @ApiModelProperty(value = "鏂囨。缂栧彿")
+ private String docNumber;
+
+ /**
+ * 骞翠唤
+ */
+ @Excel(name = "骞翠唤")
+ @ApiModelProperty(value = "骞翠唤")
+ private Long year;
+
+ /**
+ * 璐d换浜�
+ */
+ @Excel(name = "璐d换浜�")
+ @ApiModelProperty(value = "璐d换浜�")
+ private String responsiblePerson;
+
+ /**
+ * 鏂囨。鏀剧疆浣嶇疆
+ */
+ @Excel(name = "鏂囨。鏀剧疆浣嶇疆")
+ @ApiModelProperty(value = "鏂囨。鏀剧疆浣嶇疆")
+ private Long warehouseGoodsShelvesRowcolId;
+
+ /**
+ * 鏂囨。鏃ユ湡
+ */
+
+ @Excel(name = "鏂囨。鏃ユ湡", dateFormat = "yyyy-MM-dd", width = 30)
+ @ApiModelProperty(value = "鏂囨。鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private LocalDateTime docDate;
+
+ /**
+ * 淇濈鏈熼檺
+ */
+ @Excel(name = "淇濈鏈熼檺")
+ @ApiModelProperty(value = "淇濈鏈熼檺")
+ private Long retentionPeriod;
+
+ /**
+ * 淇濆瘑绾у埆
+ */
+ @Excel(name = "淇濆瘑绾у埆")
+ @ApiModelProperty(value = "淇濆瘑绾у埆")
+ private String securityLevel;
+
+ /**
+ * 浠芥暟
+ */
+ @Excel(name = "浠芥暟")
+ @ApiModelProperty(value = "浠芥暟")
+ private Long copyCount;
+
+ /**
+ * 椤垫暟
+ */
+ @Excel(name = "椤垫暟")
+ @ApiModelProperty(value = "椤垫暟")
+ private Long pageCount;
+
+ /**
+ * 鏂囨。绫诲埆
+ */
+ @Excel(name = "鏂囨。绫诲埆")
+ @ApiModelProperty(value = "鏂囨。绫诲埆")
+ private String docCategory;
+
+ /**
+ * 鏂囨。绉嶇被
+ */
+ @Excel(name = "鏂囨。绉嶇被")
+ @ApiModelProperty(value = "鏂囨。绉嶇被")
+ private String docType;
+
+ /**
+ * 绱ф�ョ▼搴�
+ */
+ @Excel(name = "绱ф�ョ▼搴�")
+ @ApiModelProperty(value = "绱ф�ョ▼搴�")
+ private String urgencyLevel;
+
+ /**
+ * 鏂囨。鐘舵��
+ */
+ @Excel(name = "鏂囨。鐘舵��")
+ @ApiModelProperty(value = "鏂囨。鐘舵��")
+ private String docStatus;
+
+ /**
+ * 澶囨敞
+ */
+ @Excel(name = "澶囨敞")
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 淇敼鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/DocumentationBorrowManagement.java b/src/main/java/com/ruoyi/warehouse/pojo/DocumentationBorrowManagement.java
new file mode 100644
index 0000000..a6c560f
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/pojo/DocumentationBorrowManagement.java
@@ -0,0 +1,129 @@
+package com.ruoyi.warehouse.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.dto.DateQueryDto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 鏂囨。鍊熼槄-褰掕繕琛�
+ * @TableName documentation_borrow_management
+ */
+@TableName(value ="documentation_borrow_management")
+@Data
+@ApiModel(value = "鏂囨。鍊熼槄琛�")
+public class DocumentationBorrowManagement extends DateQueryDto implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ /**
+ * 涓婚敭
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鏂囨。id
+ */
+ @ApiModelProperty(value = "鏂囨。id")
+ private Long documentationId;
+
+ /**
+ * 鍊熼槄浜�
+ */
+ @ApiModelProperty(value = "鍊熼槄浜�")
+ @Excel(name = "鍊熼槄浜�")
+ private String borrower;
+ /**
+ * 褰掕繕浜�
+ */
+ @ApiModelProperty(value = "褰掕繕浜�")
+ @Excel(name = "褰掕繕浜�")
+ private String returner;
+
+ /**
+ * 鍊熼槄鐩殑
+ */
+ @Excel(name = "鍊熼槄鐩殑")
+ @ApiModelProperty(value = "鍊熼槄鐩殑")
+ private String borrowPurpose;
+
+ /**
+ * 鍊熼槄鏃ユ湡
+ */
+
+ @ApiModelProperty(value = "鍊熼槄鏃ユ湡")
+ @Excel(name = "鍊熼槄鏃ユ湡", dateFormat = "yyyy-MM-dd", width = 30)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate borrowDate;
+
+ /**
+ * 搴斿綊杩樻棩鏈�
+ */
+ @ApiModelProperty(value = "搴斿綊杩樻棩鏈�")
+ @Excel(name = "搴斿綊杩樻棩鏈�", dateFormat = "yyyy-MM-dd", width = 30)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private LocalDate dueReturnDate;
+
+ /**
+ * 瀹為檯褰掕繕鏃ユ湡
+ */
+ @ApiModelProperty(value = "瀹為檯褰掕繕鏃ユ湡")
+ @Excel(name = "瀹為檯褰掕繕鏃ユ湡", dateFormat = "yyyy-MM-dd", width = 30)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private LocalDate returnDate;
+
+ /**
+ * 鍊熼槄鐘舵��
+ */
+ @ApiModelProperty(value = "鍊熼槄鐘舵��")
+ @Excel(name = "鍊熼槄鐘舵��")
+ private String borrowStatus;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ @Excel(name = "澶囨敞")
+ private String remark;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 淇敼鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛id
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java b/src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java
new file mode 100644
index 0000000..c24805c
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/pojo/DocumentationFile.java
@@ -0,0 +1,60 @@
+package com.ruoyi.warehouse.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 鏂囨。淇℃伅琛�--闄勪欢
+ * documentation_file
+ */
+@TableName(value = "documentation_file")
+@Data
+public class DocumentationFile implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "鏂囦欢鍚嶇О")
+ private String name;
+
+ @ApiModelProperty(value = "鏂囦欢璺緞")
+ private String url;
+
+ @ApiModelProperty(value = "鏂囦欢澶у皬")
+ private Long fileSize;
+
+ @ApiModelProperty(value = "鏂囨。ID")
+ @NotBlank(message = "鏂囨。id涓嶈兘涓虹┖!")
+ private Long documentationId;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/DocumentationReturnManagement.java b/src/main/java/com/ruoyi/warehouse/pojo/DocumentationReturnManagement.java
new file mode 100644
index 0000000..5573923
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/pojo/DocumentationReturnManagement.java
@@ -0,0 +1,130 @@
+package com.ruoyi.warehouse.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.dto.DateQueryDto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * 鏂囨。鍊熼槄-褰掕繕琛�
+ * @TableName documentation_return_management
+ */
+@TableName(value ="documentation_return_management")
+@Data
+@ApiModel(value = "鏂囨。褰掕繕琛�")
+public class DocumentationReturnManagement extends DateQueryDto implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ /**
+ * 涓婚敭
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鏂囨。id
+ */
+ @ApiModelProperty(value = "鏂囨。id")
+ private Long documentationId;
+ /**
+ * 鍊熼槄id
+ */
+ private Long borrowId;
+ /**
+ * 鍊熼槄浜�
+ */
+ @ApiModelProperty(value = "鍊熼槄浜�")
+ @Excel(name = "鍊熼槄浜�")
+ private String borrower;
+ /**
+ * 褰掕繕浜�
+ */
+ @ApiModelProperty(value = "褰掕繕浜�")
+ @Excel(name = "褰掕繕浜�")
+ private String returner;
+
+ /**
+ * 鍊熼槄鐩殑
+ */
+ @Excel(name = "鍊熼槄鐩殑")
+ @ApiModelProperty(value = "鍊熼槄鐩殑")
+ private String borrowPurpose;
+
+ /**
+ * 鍊熼槄鏃ユ湡
+ */
+
+ @ApiModelProperty(value = "鍊熼槄鏃ユ湡")
+ @Excel(name = "鍊熼槄鏃ユ湡", dateFormat = "yyyy-MM-dd", width = 30)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate borrowDate;
+
+ /**
+ * 搴斿綊杩樻棩鏈�
+ */
+ @ApiModelProperty(value = "搴斿綊杩樻棩鏈�")
+ @Excel(name = "搴斿綊杩樻棩鏈�", dateFormat = "yyyy-MM-dd", width = 30)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private LocalDate dueReturnDate;
+
+ /**
+ * 瀹為檯褰掕繕鏃ユ湡
+ */
+ @ApiModelProperty(value = "瀹為檯褰掕繕鏃ユ湡")
+ @Excel(name = "瀹為檯褰掕繕鏃ユ湡", dateFormat = "yyyy-MM-dd", width = 30)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private LocalDate returnDate;
+
+ /**
+ * 鍊熼槄鐘舵��
+ */
+ @ApiModelProperty(value = "鍊熼槄鐘舵��")
+ @Excel(name = "鍊熼槄鐘舵��")
+ private String borrowStatus;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ @Excel(name = "澶囨敞")
+ private String remark;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 淇敼鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛id
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/Warehouse.java b/src/main/java/com/ruoyi/warehouse/pojo/Warehouse.java
new file mode 100644
index 0000000..a8ae602
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/pojo/Warehouse.java
@@ -0,0 +1,62 @@
+package com.ruoyi.warehouse.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 浠撳簱琛�
+ * @TableName warehouse
+ */
+@TableName(value ="warehouse")
+@Data
+@ApiModel
+public class Warehouse implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 浠撳簱鍚嶇О
+ */
+ private String warehouseName;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 淇敼鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelves.java b/src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelves.java
new file mode 100644
index 0000000..d267986
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelves.java
@@ -0,0 +1,79 @@
+package com.ruoyi.warehouse.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 浠撳簱璐ф灦琛�
+ * @TableName warehouse_goods_shelves
+ */
+@TableName(value ="warehouse_goods_shelves")
+@Data
+@ApiModel
+public class WarehouseGoodsShelves implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 璐ф灦鍚嶇О
+ */
+ private String name;
+ /**
+ * 灞傛暟
+ */
+ @TableField("`row`")
+ private Long row;
+
+ /**
+ * 鍒楁暟
+ */
+ @TableField("`col`")
+ private Long col;
+
+ /**
+ * 浠撳簱id
+ */
+ private Long warehouseId;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 淇敼鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelvesRowcol.java b/src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelvesRowcol.java
new file mode 100644
index 0000000..4372314
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/pojo/WarehouseGoodsShelvesRowcol.java
@@ -0,0 +1,79 @@
+package com.ruoyi.warehouse.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 浠撳簱璐ф灦灞傦紝鍒楄〃
+ * @TableName warehouse_goods_shelves_rowcol
+ */
+@TableName(value ="warehouse_goods_shelves_rowcol")
+@Data
+@ApiModel(value = "浠撳簱璐ф灦灞傦紝鍒楄〃")
+public class WarehouseGoodsShelvesRowcol implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ /**
+ *
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 灞傛暟
+ */
+ @TableField("`row`")
+ private Long row;
+
+ /**
+ * 鍒楁暟
+ */
+ @TableField("`col`")
+ private Long col;
+
+ /**
+ * 璐ф灦id
+ */
+ private Long warehouseGoodsShelvesId;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 鍒涘缓鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 淇敼鐢ㄦ埛
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer updateUser;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+ /**
+ * 澶囨敞
+ */
+ private String remark;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/warehouse/service/DocumentClassificationService.java b/src/main/java/com/ruoyi/warehouse/service/DocumentClassificationService.java
new file mode 100644
index 0000000..0fbe456
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/DocumentClassificationService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.warehouse.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.warehouse.dto.DocumentClassificationDto;
+import com.ruoyi.warehouse.dto.DocumentClassificationTreeDto;
+import com.ruoyi.warehouse.pojo.DocumentClassification;
+
+import java.util.List;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恉ocument_classification(鏂囨。鍒嗙被琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-08-15 10:44:23
+*/
+public interface DocumentClassificationService extends IService<DocumentClassification> {
+
+ boolean deleteByIds(List<Long> ids);
+
+ List<DocumentClassificationTreeDto> selectDocumentClassificationList();
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java b/src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java
new file mode 100644
index 0000000..3f76061
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/DocumentationBorrowManagementService.java
@@ -0,0 +1,38 @@
+package com.ruoyi.warehouse.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto;
+import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.warehouse.pojo.DocumentationReturnManagement;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恉ocumentation_borrow_management(鏂囨。鍊熼槄-褰掕繕琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-08-14 15:55:45
+*/
+public interface DocumentationBorrowManagementService extends IService<DocumentationBorrowManagement> {
+
+ IPage<DocumentationBorrowManagement> listPage(Page page, DocumentationBorrowManagement documentationBorrowManagement);
+
+
+ boolean add(DocumentationBorrowManagement documentationBorrowManagement);
+
+ boolean deleteByIds(List<Long> ids);
+
+ boolean reventdbm(DocumentationReturnManagement documentationReturnManagement);
+
+ boolean reventDeleteByIds(List<Long> ids);
+
+ void export(HttpServletResponse response, DocumentationBorrowManagement documentationBorrowManagement);
+
+ void exportrevent(HttpServletResponse response, DocumentationReturnManagement documentationReturnManagement);
+
+ List<DocumentationBorrowManagementDto> listAll();
+
+ List<DocumentationBorrowManagementDto> selectByDocumentationId(Long id);
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/DocumentationFileService.java b/src/main/java/com/ruoyi/warehouse/service/DocumentationFileService.java
new file mode 100644
index 0000000..575ecd4
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/DocumentationFileService.java
@@ -0,0 +1,14 @@
+package com.ruoyi.warehouse.service;
+
+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.account.pojo.AccountFile;
+import com.ruoyi.warehouse.pojo.DocumentationFile;
+
+import java.util.List;
+
+public interface DocumentationFileService extends IService<DocumentationFile> {
+
+ List<DocumentationFile> documentationFileListPage(DocumentationFile documentationFile);
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/DocumentationService.java b/src/main/java/com/ruoyi/warehouse/service/DocumentationService.java
new file mode 100644
index 0000000..32910ce
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/DocumentationService.java
@@ -0,0 +1,40 @@
+package com.ruoyi.warehouse.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.warehouse.dto.DocumentationDto;
+import com.ruoyi.warehouse.pojo.Documentation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恉ocumentation(鏂囨。淇℃伅琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-08-14 14:05:49
+*/
+public interface DocumentationService extends IService<Documentation> {
+
+ IPage<DocumentationDto> listPage(Page page, Documentation documentation);
+
+ void export(HttpServletResponse response,Documentation documentation);
+
+ boolean deleteByIds(List<Long> ids);
+
+ List<DocumentationDto> listAll();
+ Integer getTotalDocsCount();
+
+ Integer getCategoryNumCount();
+
+ Integer getBorrowedDocsCount();
+
+ Integer getMonthlyAddedDocsCount();
+
+
+ List<Map<String, Object>> getCategoryDistribution();
+
+
+ List<Map<String, Object>> getStatusDistribution();
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesRowcolService.java b/src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesRowcolService.java
new file mode 100644
index 0000000..ed3bccc
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesRowcolService.java
@@ -0,0 +1,23 @@
+package com.ruoyi.warehouse.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
+import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesRowcolDto;
+
+import java.util.List;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恮arehouse_goods_shelves_rowcol(浠撳簱璐ф灦灞傦紝鍒楄〃)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-08-13 11:49:02
+*/
+public interface WarehouseGoodsShelvesRowcolService extends IService<WarehouseGoodsShelvesRowcol> {
+
+ boolean deleteByIds(List<Long> ids);
+
+
+ List<WarehouseGoodsShelvesRowcolDto> getList(WarehouseGoodsShelvesRowcol warehouseGoodsShelvesRowcol);
+
+
+
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesService.java b/src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesService.java
new file mode 100644
index 0000000..622d8e1
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/WarehouseGoodsShelvesService.java
@@ -0,0 +1,27 @@
+package com.ruoyi.warehouse.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恮arehouse_goods_shelves(浠撳簱璐ф灦琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-08-13 11:49:02
+*/
+public interface WarehouseGoodsShelvesService extends IService<WarehouseGoodsShelves> {
+
+
+ boolean add(WarehouseGoodsShelves warehouseGoodsShelves);
+
+ boolean updateRowcolById(WarehouseGoodsShelves warehouseGoodsShelves);
+
+ boolean deleteByIds(List<Long> ids);
+
+ List<WarehouseGoodsShelvesDto> findList(WarehouseGoodsShelves warehouseGoodsShelves);
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/WarehouseService.java b/src/main/java/com/ruoyi/warehouse/service/WarehouseService.java
new file mode 100644
index 0000000..0b68de8
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/WarehouseService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.warehouse.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.warehouse.dto.WarehouseDto;
+import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
+import com.ruoyi.warehouse.dto.WarehouseTreeDto;
+import com.ruoyi.warehouse.pojo.Warehouse;
+
+import java.util.List;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恮arehouse(浠撳簱琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-08-13 11:49:02
+*/
+public interface WarehouseService extends IService<Warehouse> {
+
+ boolean deleteByIds(List<Long> ids);
+
+ List<Warehouse> findList(Warehouse warehouse);
+
+ List<WarehouseTreeDto> findListTree();
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentClassificationServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentClassificationServiceImpl.java
new file mode 100644
index 0000000..54c642e
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentClassificationServiceImpl.java
@@ -0,0 +1,97 @@
+package com.ruoyi.warehouse.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.ProductTreeDto;
+import com.ruoyi.basic.pojo.Product;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.warehouse.dto.DocumentClassificationDto;
+import com.ruoyi.warehouse.dto.DocumentClassificationTreeDto;
+import com.ruoyi.warehouse.dto.DocumentationDto;
+import com.ruoyi.warehouse.mapper.DocumentationMapper;
+import com.ruoyi.warehouse.pojo.DocumentClassification;
+import com.ruoyi.warehouse.pojo.Documentation;
+import com.ruoyi.warehouse.service.DocumentClassificationService;
+import com.ruoyi.warehouse.mapper.DocumentClassificationMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恉ocument_classification(鏂囨。鍒嗙被琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-08-15 10:44:23
+*/
+@Service
+public class DocumentClassificationServiceImpl extends ServiceImpl<DocumentClassificationMapper, DocumentClassification>
+ implements DocumentClassificationService{
+ @Autowired
+ private DocumentationMapper documentationMapper;
+ @Autowired
+ private DocumentClassificationMapper documentClassificationMapper;
+ @Override
+ public boolean deleteByIds(List<Long> ids) {
+ List<DocumentClassification> list = documentClassificationMapper.selectList(new LambdaQueryWrapper<DocumentClassification>().in(DocumentClassification::getId, ids));
+ for (DocumentClassification documentClassification : list) {
+ //濡傛灉姣忛」鐨勭埗id涓虹┖锛岃鏄庢槸鏍硅妭鐐癸紝闇�瑕佸垹闄ゆ枃妗d俊鎭〃涓殑鏁版嵁
+ List<DocumentationDto> documentationDtos = documentationMapper.listByDocumentClassificationId(documentClassification.getId());
+ if (CollectionUtils.isNotEmpty(documentationDtos)){
+ throw new RuntimeException("瀛樺湪鏂囨。淇℃伅锛屼笉鑳藉垹闄�");
+ }
+ documentClassificationMapper.deleteById(documentClassification.getId());
+ }
+ return true;
+ }
+
+ @Override
+ public List<DocumentClassificationTreeDto> selectDocumentClassificationList() {
+ // 鏌ヨ鏍硅妭鐐癸紙parentId 涓� null锛�
+ LambdaQueryWrapper<DocumentClassification> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.isNull(DocumentClassification::getParentId);
+
+ // 鏌ヨ鏍硅妭鐐瑰垪琛�
+ List<DocumentClassification> rootList = baseMapper.selectList(queryWrapper);
+
+ // 杞崲涓烘爲鑺傜偣骞堕�掑綊鏋勫缓瀛愭爲
+ List<DocumentClassificationTreeDto> tree = new ArrayList<>();
+ for (DocumentClassification documentClassification : rootList) {
+ DocumentClassificationTreeDto node = convertToTreeDto(documentClassification);
+ node.setChildren(buildDocumentChildrenNodes(documentClassification.getId()));
+ tree.add(node);
+ }
+ return tree;
+ }
+ // 閫掑綊鏋勫缓瀛愯妭鐐�
+ private List<DocumentClassificationTreeDto> buildDocumentChildrenNodes(Long parentId) {
+ // 鏌ヨ褰撳墠鐖惰妭鐐圭殑瀛愯妭鐐�
+ LambdaQueryWrapper<DocumentClassification> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(DocumentClassification::getParentId, parentId);
+ List<DocumentClassification> childList = baseMapper.selectList(queryWrapper);
+
+ // 杞崲瀛愯妭鐐瑰苟閫掑綊鏋勫缓瀹冧滑鐨勫瓙鏍�
+ List<DocumentClassificationTreeDto> children = new ArrayList<>();
+ for (DocumentClassification child : childList) {
+ DocumentClassificationTreeDto childNode = convertToTreeDto(child);
+ childNode.setChildren(buildDocumentChildrenNodes(child.getId()));
+ children.add(childNode);
+ }
+
+ return children;
+ }
+ // 灏� DocumentClassification 杞崲涓� DocumentClassificationTreeDto
+ private DocumentClassificationTreeDto convertToTreeDto(DocumentClassification documentClassification) {
+ DocumentClassificationTreeDto dto = new DocumentClassificationTreeDto();
+ BeanUtils.copyProperties(documentClassification, dto);
+ dto.setCategory(documentClassification.getCategory()); // 璁剧疆 label 涓轰骇鍝佸悕绉�
+ dto.setChildren(new ArrayList<>());
+ return dto;
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java
new file mode 100644
index 0000000..4ddf5a2
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationBorrowManagementServiceImpl.java
@@ -0,0 +1,168 @@
+package com.ruoyi.warehouse.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.warehouse.dto.DocumentationBorrowManagementDto;
+import com.ruoyi.warehouse.dto.ReturnExportDto;
+import com.ruoyi.warehouse.mapper.DocumentationReturnManagementMapper;
+import com.ruoyi.warehouse.pojo.Documentation;
+import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
+import com.ruoyi.warehouse.pojo.DocumentationReturnManagement;
+import com.ruoyi.warehouse.service.DocumentationBorrowManagementService;
+import com.ruoyi.warehouse.mapper.DocumentationBorrowManagementMapper;
+import com.ruoyi.warehouse.service.DocumentationService;
+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.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恉ocumentation_borrow_management(鏂囨。鍊熼槄-褰掕繕琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-08-14 15:55:45
+*/
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class DocumentationBorrowManagementServiceImpl extends ServiceImpl<DocumentationBorrowManagementMapper, DocumentationBorrowManagement>
+ implements DocumentationBorrowManagementService{
+ @Autowired
+ private DocumentationBorrowManagementMapper documentationBorrowManagementMapper;
+ @Autowired
+ private DocumentationReturnManagementMapper documentationReturnManagementMapper;
+ @Autowired
+ private DocumentationService documentationService;
+ @Override
+ public IPage<DocumentationBorrowManagement> listPage(Page page, DocumentationBorrowManagement documentationBorrowManagement) {
+ IPage<DocumentationBorrowManagement> listPage = documentationBorrowManagementMapper.listPage(page, documentationBorrowManagement);
+ return listPage;
+ }
+
+
+ @Override
+ public boolean add(DocumentationBorrowManagement documentationBorrowManagement) {
+ documentationBorrowManagement.setBorrowStatus("鍊熼槄");
+ documentationBorrowManagementMapper.insert(documentationBorrowManagement);
+ Documentation documentation = documentationService.getById(documentationBorrowManagement.getDocumentationId());
+ documentation.setDocStatus("鍊熷嚭");
+ documentationService.updateById(documentation);
+ return true;
+ }
+ @Override
+ public boolean reventdbm(DocumentationReturnManagement documentationReturnManagement) {
+ // 鏇存柊鍊熼槄璁板綍鐘舵�佷负褰掕繕
+ DocumentationBorrowManagement documentationBorrowManagement1 = documentationBorrowManagementMapper.selectById(documentationReturnManagement.getBorrowId());
+
+ DocumentationReturnManagement returnManagement = new DocumentationReturnManagement();
+ returnManagement.setDocumentationId(documentationBorrowManagement1.getDocumentationId());
+ returnManagement.setBorrower(documentationBorrowManagement1.getBorrower());
+ returnManagement.setBorrowPurpose(documentationBorrowManagement1.getBorrowPurpose());
+ returnManagement.setBorrowDate(documentationBorrowManagement1.getBorrowDate());
+ returnManagement.setDueReturnDate(documentationBorrowManagement1.getDueReturnDate());
+ returnManagement.setBorrowStatus("褰掕繕");
+ returnManagement.setBorrowId(documentationReturnManagement.getBorrowId());
+ returnManagement.setReturner(documentationReturnManagement.getReturner());
+ returnManagement.setReturnDate(LocalDate.now());
+ returnManagement.setRemark(documentationReturnManagement.getRemark());
+
+ documentationReturnManagementMapper.insert(returnManagement);
+ documentationBorrowManagement1.setBorrowStatus("褰掕繕");
+ documentationBorrowManagement1.setReturner(documentationReturnManagement.getReturner());
+ documentationBorrowManagement1.setReturnDate(LocalDate.now());
+ documentationBorrowManagementMapper.updateById(documentationBorrowManagement1);
+ // 鏇存柊鏂囨。鐘舵�佷负姝e父
+ Documentation documentation = documentationService.getById(documentationBorrowManagement1.getDocumentationId());
+ documentation.setDocStatus("姝e父");
+ documentationService.updateById(documentation);
+ return true;
+ }
+
+ @Override
+ public boolean reventDeleteByIds(List<Long> ids) {
+ QueryWrapper<DocumentationReturnManagement> queryWrapper = new QueryWrapper<>();
+ queryWrapper.in("id", ids);
+// queryWrapper.eq("borrow_status", "褰掕繕");
+ List<DocumentationReturnManagement> list = documentationReturnManagementMapper.selectList(queryWrapper);
+
+ for (DocumentationReturnManagement documentationReturnManagement : list) {
+
+ try {
+ documentationReturnManagementMapper.deleteById(documentationReturnManagement);
+ DocumentationBorrowManagement documentationBorrowManagement = documentationBorrowManagementMapper.selectById(documentationReturnManagement.getBorrowId());
+ documentationBorrowManagement.setBorrowStatus("鍊熼槄");
+ documentationBorrowManagement.setReturner(null);
+ documentationBorrowManagement.setReturnDate(null);
+ documentationBorrowManagementMapper.updateById(documentationBorrowManagement);
+
+ Documentation documentation = documentationService.getById(documentationReturnManagement.getDocumentationId());
+ documentation.setDocStatus("鍊熷嚭");
+ documentationService.updateById(documentation);
+ } catch (Exception e) {
+ throw new RuntimeException("鍒犻櫎褰掕繕璁板綍鍜屾枃妗g姸鎬佹椂鍑洪敊", e);
+ }
+ }
+// documentationReturnManagementMapper.deleteBatchIds(ids);
+ return true;
+ }
+
+ @Override
+ public void export(HttpServletResponse response, DocumentationBorrowManagement documentationBorrowManagement) {
+ List<DocumentationBorrowManagementDto> documentationBorrowManagements = documentationBorrowManagementMapper.export(documentationBorrowManagement);
+ ExcelUtil<DocumentationBorrowManagementDto> util = new ExcelUtil<>(DocumentationBorrowManagementDto.class);
+ util.exportExcel(response, documentationBorrowManagements, "鏂囨。鍊熼槄-鍊熼槄璁板綍");
+ }
+
+ @Override
+ public void exportrevent(HttpServletResponse response, DocumentationReturnManagement documentationReturnManagement) {
+ List<ReturnExportDto> documentationReturnManagements = documentationReturnManagementMapper.exportrevent(documentationReturnManagement);
+ ExcelUtil<ReturnExportDto> util = new ExcelUtil<>(ReturnExportDto.class);
+ util.exportExcel(response, documentationReturnManagements, "鏂囨。鍊熼槄-褰掕繕璁板綍");
+ }
+
+ @Override
+ public List<DocumentationBorrowManagementDto> listAll() {
+ return documentationBorrowManagementMapper.list(new LambdaQueryWrapper<DocumentationBorrowManagementDto>().eq(DocumentationBorrowManagementDto::getBorrowStatus, "鍊熼槄"));
+ }
+
+ @Override
+ public List<DocumentationBorrowManagementDto> selectByDocumentationId(Long id) {
+ List<DocumentationBorrowManagementDto> list = documentationBorrowManagementMapper.list(new LambdaQueryWrapper<DocumentationBorrowManagementDto>()
+ .eq(DocumentationBorrowManagementDto::getDocumentationId, id)
+ .eq(DocumentationBorrowManagementDto::getBorrowStatus, "鍊熼槄"));
+ if (list.isEmpty()){
+ throw new RuntimeException("鏂囨。鏈鍊熼槄");
+ }
+ return list;
+ }
+
+ @Override
+ public boolean deleteByIds(List<Long> ids) {
+ List<DocumentationBorrowManagement> list = documentationBorrowManagementMapper.selectList(new LambdaQueryWrapper<DocumentationBorrowManagement>().in(DocumentationBorrowManagement::getId, ids));
+ for (DocumentationBorrowManagement documentationBorrowManagement : list) {
+ Documentation documentation = documentationService.getById(documentationBorrowManagement.getDocumentationId());
+ documentation.setDocStatus("姝e父");
+ boolean b = documentationService.updateById(documentation);
+ if (!b){
+ throw new RuntimeException("鏇存柊鏂囨。鐘舵�佸け璐�");
+ }
+ }
+ documentationBorrowManagementMapper.deleteBatchIds(ids);
+ return true;
+ }
+
+
+
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationFileServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationFileServiceImpl.java
new file mode 100644
index 0000000..61dafcd
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationFileServiceImpl.java
@@ -0,0 +1,26 @@
+package com.ruoyi.warehouse.service.impl;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.warehouse.mapper.DocumentationFileMapper;
+import com.ruoyi.warehouse.pojo.DocumentationFile;
+import com.ruoyi.warehouse.service.DocumentationFileService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@AllArgsConstructor
+@Service
+public class DocumentationFileServiceImpl extends ServiceImpl<DocumentationFileMapper, DocumentationFile> implements DocumentationFileService {
+
+ private DocumentationFileMapper documentationFileMapper;
+
+
+ @Override
+ public List<DocumentationFile> documentationFileListPage(DocumentationFile documentationFile) {
+ return documentationFileMapper.documentationFileListPage(documentationFile);
+ }
+}
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java
new file mode 100644
index 0000000..5a7cf30
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/impl/DocumentationServiceImpl.java
@@ -0,0 +1,116 @@
+package com.ruoyi.warehouse.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.warehouse.dto.DocumentationDto;
+import com.ruoyi.warehouse.pojo.Documentation;
+import com.ruoyi.warehouse.pojo.DocumentationBorrowManagement;
+import com.ruoyi.warehouse.service.DocumentationService;
+import com.ruoyi.warehouse.mapper.DocumentationMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恉ocumentation(鏂囨。淇℃伅琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-08-14 14:05:49
+*/
+@Service
+public class DocumentationServiceImpl extends ServiceImpl<DocumentationMapper, Documentation>
+ implements DocumentationService{
+ @Autowired
+ private DocumentationMapper documentationMapper;
+ @Override
+ public IPage<DocumentationDto> listPage(Page page, Documentation documentation) {
+ return documentationMapper.listPage(page, documentation);
+ }
+
+ @Override
+ public void export(HttpServletResponse response,Documentation documentation) {
+ IPage<DocumentationDto> list = documentationMapper.listPage(null, documentation);
+ ExcelUtil<DocumentationDto> util = new ExcelUtil<>(DocumentationDto.class);
+ util.exportExcel(response, list.getRecords(), "鏂囨。淇℃伅琛�");
+ }
+
+ @Override
+ public boolean deleteByIds(List<Long> ids) {
+ List<Documentation> documentationList = documentationMapper.selectList(new LambdaQueryWrapper<Documentation>().in(Documentation::getId, ids));
+ for (Documentation documentation : documentationList) {
+ //濡傛灉鏂囨。鐘舵�佹槸宸插�熷嚭锛屼笉鑳藉垹闄�
+ if ("鍊熷嚭".equals(documentation.getDocStatus()) || "浣滃簾".equals(documentation.getDocStatus())) {
+ throw new RuntimeException("褰撳墠鏂囨。鐘舵�佷负 " + documentation.getDocStatus() + "锛屼笉鏀寔鍒犻櫎");
+ }
+ documentationMapper.deleteById(documentation.getId());
+ }
+ return true;
+ }
+ /**
+ * 鍒楄〃鎵�鏈夋枃妗�
+ * @return
+ */
+ @Override
+ public List<DocumentationDto> listAll() {
+ List<DocumentationDto> list = documentationMapper.list().stream().filter(documentationDto -> "姝e父".equals(documentationDto.getDocStatus())).collect(Collectors.toList());
+ return list;
+ }
+ /**
+ * 鑾峰彇鏂囨。鎬绘暟
+ * @return
+ */
+ @Override
+ public Integer getTotalDocsCount() {
+ return documentationMapper.countTotalDocs();
+ }
+ /**
+ * 鑾峰彇鏂囨。鍒嗙被鎬绘暟
+ * @return
+ */
+ @Override
+ public Integer getCategoryNumCount() {
+ return documentationMapper.countCategoryNum();
+ }
+ /**
+ * 鑾峰彇宸插�熷嚭鏂囨。鎬绘暟
+ * @return
+ */
+ @Override
+ public Integer getBorrowedDocsCount() {
+ return documentationMapper.countBorrowedDocs();
+ }
+ /**
+ * 鑾峰彇姣忔湀鏂板鏂囨。鎬绘暟
+ * @return
+ */
+ @Override
+ public Integer getMonthlyAddedDocsCount() {
+ return documentationMapper.countMonthlyAddedDocs();
+ }
+ /**
+ * 鑾峰彇鏂囨。鍒嗙被鍒嗗竷
+ * @return
+ */
+ @Override
+ public List<Map<String, Object>> getCategoryDistribution() {
+ return documentationMapper.countCategoryDistribution();
+ }
+ /**
+ * 鑾峰彇鏂囨。鐘舵�佸垎甯�
+ * @return
+ */
+ @Override
+ public List<Map<String, Object>> getStatusDistribution() {
+ return documentationMapper.countStatusDistribution();
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesRowcolServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesRowcolServiceImpl.java
new file mode 100644
index 0000000..7715520
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesRowcolServiceImpl.java
@@ -0,0 +1,63 @@
+package com.ruoyi.warehouse.service.impl;
+
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.warehouse.mapper.DocumentationMapper;
+import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesRowcolMapper;
+import com.ruoyi.warehouse.pojo.Documentation;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
+import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesRowcolDto;
+import com.ruoyi.warehouse.service.WarehouseGoodsShelvesRowcolService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恮arehouse_goods_shelves_rowcol(浠撳簱璐ф灦灞傦紝鍒楄〃)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-08-13 11:49:02
+*/
+@Service
+@Slf4j
+public class WarehouseGoodsShelvesRowcolServiceImpl extends ServiceImpl<WarehouseGoodsShelvesRowcolMapper, WarehouseGoodsShelvesRowcol>
+ implements WarehouseGoodsShelvesRowcolService {
+ @Autowired
+ private WarehouseGoodsShelvesRowcolMapper warehouseGoodsShelvesRowcolMapper;
+ @Autowired
+ private DocumentationMapper documentationMapper;
+
+ @Override
+ public List<WarehouseGoodsShelvesRowcolDto> getList(WarehouseGoodsShelvesRowcol warehouseGoodsShelvesRowcol) {
+ List<WarehouseGoodsShelvesRowcolDto> list = warehouseGoodsShelvesRowcolMapper.findList(warehouseGoodsShelvesRowcol);
+ for (WarehouseGoodsShelvesRowcolDto dto : list) {
+ //鑾峰彇灞俰ds
+ Long id = dto.getId();
+ //鑾峰彇鏂囨。
+ dto.setDocumentationDtoList(documentationMapper.listBywarehouseGoodsShelvesRowcolId(id));
+ }
+ return list;
+ }
+ @Override
+ public boolean deleteByIds(List<Long> ids) {
+ // 3. 妫�鏌ユ槸鍚︽湁鍟嗗搧
+ Wrapper<Documentation> queryWrapper = new LambdaQueryWrapper<Documentation>()
+ .in(Documentation::getWarehouseGoodsShelvesRowcolId, ids);
+ List<Documentation> documentations = documentationMapper.selectList(queryWrapper);
+ if (!documentations.isEmpty()) throw new RuntimeException("璐ф灦涓嬫湁鍟嗗搧锛屼笉鑳藉垹闄�");
+ warehouseGoodsShelvesRowcolMapper.deleteBatchIds(ids);
+ return true;
+ }
+
+
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java
new file mode 100644
index 0000000..3d33d5c
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java
@@ -0,0 +1,179 @@
+package com.ruoyi.warehouse.service.impl;
+
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.warehouse.dto.WarehouseGoodsShelvesDto;
+import com.ruoyi.warehouse.mapper.DocumentationMapper;
+import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesMapper;
+import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesRowcolMapper;
+import com.ruoyi.warehouse.pojo.Documentation;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
+import com.ruoyi.warehouse.service.DocumentationService;
+import com.ruoyi.warehouse.service.WarehouseGoodsShelvesRowcolService;
+import com.ruoyi.warehouse.service.WarehouseGoodsShelvesService;
+import lombok.extern.slf4j.Slf4j;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恮arehouse_goods_shelves(浠撳簱璐ф灦琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-08-13 11:49:02
+*/
+@Service
+@Slf4j
+@Transactional(rollbackFor = Exception.class)
+public class WarehouseGoodsShelvesServiceImpl extends ServiceImpl<WarehouseGoodsShelvesMapper, WarehouseGoodsShelves>
+ implements WarehouseGoodsShelvesService {
+ @Autowired
+ private WarehouseGoodsShelvesRowcolService warehouseGoodsShelvesRowcolService;
+ @Autowired
+ private WarehouseGoodsShelvesRowcolMapper warehouseGoodsShelvesRowcolMapper;
+ @Autowired
+ private WarehouseGoodsShelvesMapper warehouseGoodsShelvesMapper;
+ @Autowired
+ private DocumentationService documentationService;
+ @Autowired
+ private DocumentationMapper documentationMapper;
+
+ @Override
+ public boolean add(WarehouseGoodsShelves warehouseGoodsShelves) {
+ WarehouseGoodsShelves one = warehouseGoodsShelvesMapper.selectOne(new LambdaQueryWrapper<WarehouseGoodsShelves>().eq(WarehouseGoodsShelves::getId, warehouseGoodsShelves.getId()));
+ // 1. 妫�鏌ヨ揣鏋跺悕绉版槸鍚﹀凡瀛樺湪
+ if (one == null) {
+ if(warehouseGoodsShelves.getRow() == null || warehouseGoodsShelves.getRow() == 0 && warehouseGoodsShelves.getCol() == null || warehouseGoodsShelves.getCol() == 0){
+ throw new IllegalArgumentException("灞傛暟鍜屽垪鏁颁笉鑳戒负绌�");
+ }
+ int insert = warehouseGoodsShelvesMapper.insert(warehouseGoodsShelves);
+ if (insert <= 0) return false;
+ }
+
+ Long shelvesId = warehouseGoodsShelves.getId();
+ Long warehouseId = warehouseGoodsShelves.getWarehouseId();
+ // 3. 鎵归噺鍒涘缓琛屽垪璁板綍
+ List<WarehouseGoodsShelvesRowcol> rowcolList = new ArrayList<>();
+ for (long i = 1; i <= warehouseGoodsShelves.getRow(); i++) {
+ for (long j = 1; j <= warehouseGoodsShelves.getCol(); j++) {
+ WarehouseGoodsShelvesRowcol rowcol = new WarehouseGoodsShelvesRowcol();
+ rowcol.setRow(i);
+ rowcol.setCol(j);
+ rowcol.setWarehouseGoodsShelvesId(shelvesId);
+ rowcolList.add(rowcol);
+ }
+ }
+ // 4. 鎵归噺鎻掑叆琛屽垪璁板綍
+ if (!rowcolList.isEmpty()) {
+ try {
+ // 浣跨敤鎵归噺鎻掑叆鏂规硶鏇夸唬寰幆鍗曟潯鎻掑叆
+ warehouseGoodsShelvesRowcolService.saveBatch(rowcolList);
+ } catch (Exception e) {
+ // 鎶涘嚭寮傚父瑙﹀彂浜嬪姟鍥炴粴
+ throw e;
+ }
+ }
+ return true;
+ }
+ /**
+ * 鏍规嵁ID鏇存柊璐ф灦鍙婂叾琛屽垪淇℃伅
+ * @param warehouseGoodsShelves 璐ф灦淇℃伅
+ * @return 鏄惁鏇存柊鎴愬姛
+ */
+ @Override
+ public boolean updateRowcolById(WarehouseGoodsShelves warehouseGoodsShelves) {
+ Long shelvesId = warehouseGoodsShelves.getId();
+
+ // 鏋勫缓鏌ヨ鏉′欢锛氭煡璇㈣璐ф灦涓嬬殑鎵�鏈夎鍒楄褰�
+ Wrapper<WarehouseGoodsShelvesRowcol> queryWrapper = new LambdaQueryWrapper<WarehouseGoodsShelvesRowcol>()
+ .eq(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, shelvesId);
+ List<WarehouseGoodsShelvesRowcol> rowcolList = warehouseGoodsShelvesRowcolService.list(queryWrapper);
+ //鑾峰緱rowcolList涓墍鏈夌殑Id
+ List<Long> rowcolIds = rowcolList.stream()
+ .map(WarehouseGoodsShelvesRowcol::getId)
+ .collect(Collectors.toList());
+ // 3. 妫�鏌ユ槸鍚︽湁鍟嗗搧
+ Wrapper<Documentation> queryWrapper1 = new LambdaQueryWrapper<Documentation>()
+ .in(Documentation::getWarehouseGoodsShelvesRowcolId, rowcolIds);
+ List<Documentation> documentations = documentationMapper.selectList(queryWrapper1);
+ if (!documentations.isEmpty()) throw new RuntimeException("璐ф灦涓嬫湁鍟嗗搧锛屼笉鑳藉垹闄�");
+
+ // 鍏堟洿鏂拌揣鏋朵富淇℃伅
+ updateById(warehouseGoodsShelves);
+ // 鍒犻櫎鏃х殑琛屽垪璁板綍
+ warehouseGoodsShelvesRowcolService.removeByIds(rowcolIds);
+ // 娣诲姞鏂扮殑琛屽垪璁板綍
+ add(warehouseGoodsShelves);
+ return true;
+ }
+ /**
+ * 鎵归噺鍒犻櫎璐ф灦鍙婂叾鍏宠仈鐨勮鍒楄褰�
+ * @param ids 璐ф灦ID鍒楄〃
+ * @return 鏄惁鍒犻櫎鎴愬姛
+ */
+ @Override
+ public boolean deleteByIds(List<Long> ids) {
+ // 1. 鍏堟煡璇㈡墍鏈夎鍒犻櫎鐨勮揣鏋朵俊鎭�
+ List<WarehouseGoodsShelves> shelvesList = warehouseGoodsShelvesMapper.selectBatchIds(ids);
+
+ // 2. 妫�鏌ユ墍鏈夎揣鏋舵槸鍚﹀瓨鍦ㄥ晢鍝侊紙鏈夊晢鍝佸垯涓嶅厑璁稿垹闄わ級
+ for (WarehouseGoodsShelves shelves : shelvesList) {
+ Long shelvesId = shelves.getId();
+ // 鏋勫缓鏌ヨ鏉′欢锛氭煡璇㈠綋鍓嶈揣鏋剁殑鎵�鏈夎鍒楄褰�
+ Wrapper<WarehouseGoodsShelvesRowcol> queryWrapper = new LambdaQueryWrapper<WarehouseGoodsShelvesRowcol>()
+ .eq(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, shelvesId);
+
+ List<WarehouseGoodsShelvesRowcol> rowcolList = warehouseGoodsShelvesRowcolService.list(queryWrapper);
+ if (CollectionUtils.isEmpty(rowcolList)) {
+ continue; // 鏃犲叧鑱旇褰曪紝璺宠繃妫�鏌�
+ }
+ //鑾峰緱rowcolList涓墍鏈夌殑Id
+ List<Long> rowcolIds = rowcolList.stream()
+ .map(WarehouseGoodsShelvesRowcol::getId)
+ .collect(Collectors.toList());
+ // 3. 妫�鏌ユ槸鍚︽湁鍟嗗搧
+ Wrapper<Documentation> queryWrapper1 = new LambdaQueryWrapper<Documentation>()
+ .in(Documentation::getWarehouseGoodsShelvesRowcolId, rowcolIds);
+ List<Documentation> documentations = documentationMapper.selectList(queryWrapper1);
+ if (!documentations.isEmpty()) throw new RuntimeException("璐ф灦涓嬫湁鍟嗗搧锛屼笉鑳藉垹闄�"); // 浠讳竴璐ф灦鏈夊晢鍝佸垯缁堟鍒犻櫎
+ }
+
+ // 3. 鍏堝垹闄よ揣鏋朵富璁板綍
+ warehouseGoodsShelvesMapper.deleteBatchIds(ids);
+
+ // 4. 鎵归噺鍒犻櫎鎵�鏈夎鍒楄褰�
+ List<Long> allShelvesIds = shelvesList.stream()
+ .map(WarehouseGoodsShelves::getId)
+ .collect(Collectors.toList());
+
+ // 鏋勫缓鎵归噺鍒犻櫎鏉′欢
+ Wrapper<WarehouseGoodsShelvesRowcol> deleteWrapper = new LambdaQueryWrapper<WarehouseGoodsShelvesRowcol>()
+ .in(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, allShelvesIds);
+ warehouseGoodsShelvesRowcolService.remove(deleteWrapper);
+ return true;
+ }
+
+
+ @Override
+ public List<WarehouseGoodsShelvesDto> findList(WarehouseGoodsShelves warehouseGoodsShelves) {
+ return warehouseGoodsShelvesMapper.listAll(warehouseGoodsShelves);
+ }
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseServiceImpl.java
new file mode 100644
index 0000000..74276a7
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseServiceImpl.java
@@ -0,0 +1,175 @@
+package com.ruoyi.warehouse.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.warehouse.dto.WarehouseDto;
+import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
+import com.ruoyi.warehouse.dto.WarehouseTreeDto;
+import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesMapper;
+import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesRowcolMapper;
+import com.ruoyi.warehouse.mapper.WarehouseMapper;
+import com.ruoyi.warehouse.pojo.Warehouse;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
+import com.ruoyi.warehouse.service.WarehouseGoodsShelvesService;
+import com.ruoyi.warehouse.service.WarehouseService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.sql.Array;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static org.springframework.beans.BeanUtils.copyProperties;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恮arehouse(浠撳簱琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-08-13 11:49:02
+*/
+@Service
+@Slf4j
+public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse>
+ implements WarehouseService {
+ @Autowired
+ private WarehouseMapper warehouseMapper;
+ @Autowired
+ private WarehouseGoodsShelvesService warehouseGoodsShelvesService;
+ @Autowired
+ private WarehouseGoodsShelvesMapper warehouseGoodsShelvesMapper;
+ @Autowired
+ private WarehouseGoodsShelvesRowcolMapper warehouseGoodsShelvesRowcolMapper;
+
+ @Override
+ public boolean deleteByIds(List<Long> ids) {
+ // 1. 妫�鏌ユ槸鍚︽湁璐ф灦
+ Wrapper<WarehouseGoodsShelves> queryWrapper = new LambdaQueryWrapper<WarehouseGoodsShelves>()
+ .in(WarehouseGoodsShelves::getWarehouseId, ids);
+ List<WarehouseGoodsShelves> shelvesList = warehouseGoodsShelvesService.list(queryWrapper);
+ //鑾峰緱shelvesList涓墍鏈夌殑Id
+
+ List<Long> shelvesIds = shelvesList.stream().map(WarehouseGoodsShelves::getId).collect(Collectors.toList());
+ // 2. 鍒犻櫎璐ф灦
+ if (!shelvesIds.isEmpty()) {
+ boolean b = warehouseGoodsShelvesService.deleteByIds(shelvesIds);
+ if (!b) {
+ throw new RuntimeException("鍒犻櫎璐ф灦澶辫触");
+ }
+ }
+ return removeByIds(ids);
+ }
+
+ @Override
+ public List<Warehouse> findList(Warehouse warehouse) {
+ return warehouseMapper.listAll(warehouse);
+ }
+ /**
+ * 鏌ヨ浠撳簱-璐ф灦-灞傚垪涓夌骇鏍戠粨鏋�
+ */
+ @Override
+ public List<WarehouseTreeDto> findListTree() {
+
+ // 鏌ヨ鎵�鏈夋牴鑺傜偣锛堜粨搴擄級
+ LambdaQueryWrapper<Warehouse> queryWrapper = new LambdaQueryWrapper<>();
+ // 鏌ヨ浠撳簱鍒楄〃锛堜竴绾ц妭鐐癸級
+ List<Warehouse> warehouseList = warehouseMapper.selectList(queryWrapper);
+
+ // 杞崲涓烘爲鑺傜偣骞舵瀯寤哄瓙鏍�
+ List<WarehouseTreeDto> tree = new ArrayList<>();
+ for (Warehouse warehouse : warehouseList) {
+ WarehouseTreeDto node = convertToWarehouseTreeDto(warehouse);
+ // 涓烘瘡涓粨搴撴坊鍔犺揣鏋跺瓙鑺傜偣
+ node.setChildren(buildShelfChildrenNodes(warehouse.getId()));
+ tree.add(node);
+ }
+ return tree;
+ }
+ /**
+ * 鏋勫缓璐ф灦瀛愯妭鐐癸紙浜岀骇鑺傜偣锛�
+ */
+ private List<WarehouseTreeDto> buildShelfChildrenNodes(Long warehouseId) {
+ // 鏌ヨ鎸囧畾浠撳簱涓嬬殑鎵�鏈夎揣鏋�
+ LambdaQueryWrapper<WarehouseGoodsShelves> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(WarehouseGoodsShelves::getWarehouseId, warehouseId);
+ List<WarehouseGoodsShelves> shelfList = warehouseGoodsShelvesMapper.selectList(queryWrapper);
+
+ // 杞崲涓烘爲鑺傜偣骞舵瀯寤哄眰鍒楀瓙鑺傜偣
+ List<WarehouseTreeDto> shelfNodes = new ArrayList<>();
+ for (WarehouseGoodsShelves shelf : shelfList) {
+ WarehouseTreeDto shelfNode = convertToShelfTreeDto(shelf);
+ // 涓烘瘡涓揣鏋舵坊鍔犲眰鍒楀瓙鑺傜偣
+ shelfNode.setChildren(buildRowcolChildrenNodes(shelf.getId()));
+ shelfNodes.add(shelfNode);
+ }
+
+ return shelfNodes;
+ }
+
+ /**
+ * 鏋勫缓灞傚垪瀛愯妭鐐癸紙涓夌骇鑺傜偣锛�
+ */
+ private List<WarehouseTreeDto> buildRowcolChildrenNodes(Long shelfId) {
+ // 鏌ヨ鎸囧畾璐ф灦涓嬬殑鎵�鏈夊眰鍒�
+ LambdaQueryWrapper<WarehouseGoodsShelvesRowcol> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, shelfId);
+ List<WarehouseGoodsShelvesRowcol> rowcolList = warehouseGoodsShelvesRowcolMapper.selectList(queryWrapper);
+
+ // 杞崲涓烘爲鑺傜偣锛堝眰鍒楁病鏈夊瓙鑺傜偣锛�
+ List<WarehouseTreeDto> rowcolNodes = new ArrayList<>();
+ for (WarehouseGoodsShelvesRowcol rowcol : rowcolList) {
+ WarehouseTreeDto rowcolNode = convertToRowcolTreeDto(rowcol);
+ rowcolNodes.add(rowcolNode);
+ }
+
+ return rowcolNodes;
+ }
+
+ /**
+ * 浠撳簱瀹炰綋杞崲涓烘爲鑺傜偣DTO
+ */
+ private WarehouseTreeDto convertToWarehouseTreeDto(Warehouse warehouse) {
+ WarehouseTreeDto dto = new WarehouseTreeDto();
+ copyProperties(warehouse, dto);
+ dto.setLabel(warehouse.getWarehouseName());
+ dto.setChildren(new ArrayList<>());
+ return dto;
+ }
+
+ /**
+ * 璐ф灦瀹炰綋杞崲涓烘爲鑺傜偣DTO
+ */
+ private WarehouseTreeDto convertToShelfTreeDto(WarehouseGoodsShelves shelf) {
+ WarehouseTreeDto dto = new WarehouseTreeDto();
+ copyProperties(shelf, dto);
+// dto.setLabel(shelf.getGoodsShelvesName());
+ dto.setLabel(shelf.getName());
+ dto.setChildren(new ArrayList<>());
+ return dto;
+ }
+
+ /**
+ * 灞傚垪瀹炰綋杞崲涓烘爲鑺傜偣DTO
+ */
+ private WarehouseTreeDto convertToRowcolTreeDto(WarehouseGoodsShelvesRowcol rowcol) {
+ WarehouseTreeDto dto = new WarehouseTreeDto();
+ copyProperties(rowcol, dto);
+// dto.setLabel(rowcol.getStorey() + "-" + rowcol.getArrange());
+ dto.setLabel(rowcol.getRow() + "-" + rowcol.getCol());
+ dto.setChildren(new ArrayList<>());
+ return dto;
+ }
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/waterrecord/controller/WaterRecordController.java b/src/main/java/com/ruoyi/waterrecord/controller/WaterRecordController.java
new file mode 100644
index 0000000..a963aa1
--- /dev/null
+++ b/src/main/java/com/ruoyi/waterrecord/controller/WaterRecordController.java
@@ -0,0 +1,91 @@
+package com.ruoyi.waterrecord.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.waterrecord.pojo.WaterRecord;
+import com.ruoyi.waterrecord.service.WaterRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/8/11 10:08
+ */
+@RestController
+@Api(tags = "鐢ㄦ按绠$悊")
+@RequestMapping("/waterRecord")
+public class WaterRecordController extends BaseController {
+
+ @Autowired
+ private WaterRecordService waterRecordService;
+
+ @GetMapping("/listPage")
+ @Log(title = "鐢ㄦ按绠$悊-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult listPage(Page page, WaterRecord waterRecord){
+ IPage<WaterRecord> listPage = waterRecordService.listPage(page, waterRecord);
+ return AjaxResult.success(listPage);
+ }
+
+ @PostMapping("/add")
+ @Log(title = "鐢ㄦ按绠$悊-鏂板", businessType = BusinessType.INSERT)
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult add(@RequestBody WaterRecord waterRecord){
+ boolean save = waterRecordService.save(waterRecord);
+ return save ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @PostMapping("/update")
+ @Log(title = "鐢ㄦ按绠$悊-淇敼", businessType = BusinessType.UPDATE)
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult update(@RequestBody WaterRecord waterRecord){
+ boolean update = waterRecordService.updateById(waterRecord);
+ return update ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ @DeleteMapping("/delete")
+ @Log(title = "鐢ㄦ按绠$悊-鍒犻櫎", businessType = BusinessType.DELETE)
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult delete(@RequestBody List<Long> ids){
+ if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ boolean delete = waterRecordService.removeBatchByIds(ids);
+ return delete ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ /**
+ * 瀵煎叆鐢ㄦ按绠$悊
+ */
+ @Log(title = "瀵煎叆鐢ㄦ按绠$悊", businessType = BusinessType.IMPORT)
+ @PostMapping("/importData")
+ @ApiOperation("瀵煎叆鐢ㄦ按绠$悊")
+ public AjaxResult importData(MultipartFile file) throws Exception {
+ return waterRecordService.importData(file);
+ }
+
+ /**
+ * 瀵煎嚭鐢ㄦ按绠$悊
+ */
+ @Log(title = "瀵煎嚭鐢ㄦ按绠$悊", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ @ApiOperation("瀵煎嚭鐢ㄦ按绠$悊")
+ public void export(HttpServletResponse response) {
+ Page page = new Page(-1,-1);
+ WaterRecord waterRecord = new WaterRecord();
+ IPage<WaterRecord> listPage = waterRecordService.listPage(page, waterRecord);
+ ExcelUtil<WaterRecord> util = new ExcelUtil<WaterRecord>(WaterRecord.class);
+ util.exportExcel(response, listPage.getRecords() , "鐢ㄦ按绠$悊");
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/waterrecord/mapper/WaterRecordMapper.java b/src/main/java/com/ruoyi/waterrecord/mapper/WaterRecordMapper.java
new file mode 100644
index 0000000..d66c16f
--- /dev/null
+++ b/src/main/java/com/ruoyi/waterrecord/mapper/WaterRecordMapper.java
@@ -0,0 +1,21 @@
+package com.ruoyi.waterrecord.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.waterrecord.pojo.WaterRecord;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author :yys
+ * @date : 2025/8/11 10:06
+ */
+public interface WaterRecordMapper extends BaseMapper<WaterRecord> {
+
+ /**
+ * @param page
+ * @param waterRecord
+ * @return
+ */
+ IPage<WaterRecord> listPage(Page page,@Param("req") WaterRecord waterRecord);
+}
diff --git a/src/main/java/com/ruoyi/waterrecord/pojo/WaterRecord.java b/src/main/java/com/ruoyi/waterrecord/pojo/WaterRecord.java
new file mode 100644
index 0000000..e2c6e9b
--- /dev/null
+++ b/src/main/java/com/ruoyi/waterrecord/pojo/WaterRecord.java
@@ -0,0 +1,135 @@
+package com.ruoyi.waterrecord.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/8/11 10:00
+ */
+@Data
+@TableName("water_record")
+@ApiModel
+public class WaterRecord {
+
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 瑙勬牸鍨嬪彿
+ */
+ @ApiModelProperty("瑙勬牸鍨嬪彿")
+ @Excel(name = "瑙勬牸鍨嬪彿")
+ private String deviceModel;
+
+ /**
+ * 鐢ㄦ按绫诲瀷
+ */
+ @ApiModelProperty("鐢ㄦ按绫诲瀷")
+ @Excel(name = "鐢ㄦ按绫诲瀷", readConverterExp = "industrial=宸ヤ笟鐢ㄦ按,domestic=鐢熸椿鐢ㄦ按,fire=娑堥槻鐢ㄦ按,greening=缁垮寲鐢ㄦ按")
+ private String type;
+
+ /**
+ * 璁惧鍚嶇О
+ */
+ @ApiModelProperty("璁惧鍚嶇О")
+ @Excel(name = "璁惧鍚嶇О")
+ @TableField(exist = false)
+ private String deviceName;
+
+
+
+ /**
+ * 棰濆畾娴侀噺
+ */
+ @ApiModelProperty("棰濆畾娴侀噺")
+ @Excel(name = "棰濆畾娴侀噺")
+ private String ratedRate;
+
+ /**
+ * 瀹為檯娴侀噺
+ */
+ @ApiModelProperty("瀹為檯娴侀噺")
+ @Excel(name = "瀹為檯娴侀噺")
+ private String actualTraffic;
+
+ /**
+ * 杩愯鏃堕棿
+ */
+ @ApiModelProperty("杩愯鏃堕棿")
+ @Excel(name = "杩愯鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date runTime;
+
+
+ /**
+ * 褰撴棩鐢ㄦ按閲�
+ */
+ @ApiModelProperty("褰撴棩鐢ㄦ按閲�")
+ @Excel(name = "褰撴棩鐢ㄦ按閲�")
+ private String waterDay;
+
+ /**
+ * 姣忔棩闄愬埗姘撮噺
+ */
+ @ApiModelProperty("姣忔棩闄愬埗姘撮噺")
+ @Excel(name = "姣忔棩闄愬埗姘撮噺")
+ private String waterDayLimit;
+
+ /**
+ * 姘磋垂鍗曚环
+ */
+ @ApiModelProperty("姘磋垂鍗曚环")
+ @Excel(name = "姘磋垂鍗曚环")
+ private String waterPrice;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty("澶囨敞")
+ private String remarks;
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 淇敼鑰�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/waterrecord/service/WaterRecordService.java b/src/main/java/com/ruoyi/waterrecord/service/WaterRecordService.java
new file mode 100644
index 0000000..775fb25
--- /dev/null
+++ b/src/main/java/com/ruoyi/waterrecord/service/WaterRecordService.java
@@ -0,0 +1,25 @@
+package com.ruoyi.waterrecord.service;
+
+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.framework.web.domain.AjaxResult;
+import com.ruoyi.waterrecord.pojo.WaterRecord;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * @author :yys
+ * @date : 2025/8/11 10:07
+ */
+public interface WaterRecordService extends IService<WaterRecord> {
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param page
+ * @param waterRecord
+ * @return
+ */
+ IPage<WaterRecord> listPage(Page page, WaterRecord waterRecord);
+
+ AjaxResult importData(MultipartFile file);
+}
diff --git a/src/main/java/com/ruoyi/waterrecord/service/impl/WaterRecordServiceImpl.java b/src/main/java/com/ruoyi/waterrecord/service/impl/WaterRecordServiceImpl.java
new file mode 100644
index 0000000..4359ea8
--- /dev/null
+++ b/src/main/java/com/ruoyi/waterrecord/service/impl/WaterRecordServiceImpl.java
@@ -0,0 +1,52 @@
+package com.ruoyi.waterrecord.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.waterrecord.mapper.WaterRecordMapper;
+import com.ruoyi.waterrecord.pojo.WaterRecord;
+import com.ruoyi.waterrecord.service.WaterRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/8/11 10:08
+ */
+@Service
+@Slf4j
+public class WaterRecordServiceImpl extends ServiceImpl<WaterRecordMapper, WaterRecord> implements WaterRecordService {
+
+ @Autowired
+ private WaterRecordMapper waterRecordMapper;
+
+
+ @Override
+ public IPage<WaterRecord> listPage(Page page, WaterRecord waterRecord) {
+ return waterRecordMapper.listPage(page,waterRecord);
+ }
+
+ @Override
+ public AjaxResult importData(MultipartFile file) {
+ try {
+ ExcelUtil<WaterRecord> util = new ExcelUtil<WaterRecord>(WaterRecord.class);
+ List<WaterRecord> userList = util.importExcel(file.getInputStream());
+ if(CollectionUtils.isEmpty(userList)){
+ return AjaxResult.warn("妯℃澘閿欒鎴栧鍏ユ暟鎹负绌�");
+ }
+ this.saveOrUpdateBatch(userList);
+ return AjaxResult.success(true);
+ }catch (Exception e){
+ e.printStackTrace();
+ return AjaxResult.error("瀵煎叆澶辫触");
+ }
+ }
+}
diff --git a/src/main/resources/application-bdsm.yml b/src/main/resources/application-bdsm.yml
new file mode 100644
index 0000000..01b577d
--- /dev/null
+++ b/src/main/resources/application-bdsm.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9096
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-bdsm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 15
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-bhmy.yml b/src/main/resources/application-bhmy.yml
new file mode 100644
index 0000000..98636dd
--- /dev/null
+++ b/src/main/resources/application-bhmy.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9070
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-bhmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 11
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-cjny.yml b/src/main/resources/application-cjny.yml
new file mode 100644
index 0000000..eedceb1
--- /dev/null
+++ b/src/main/resources/application-cjny.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9038
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-cjny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 172.17.0.1
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 4
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-cmny.yml b/src/main/resources/application-cmny.yml
new file mode 100644
index 0000000..6239c56
--- /dev/null
+++ b/src/main/resources/application-cmny.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9088
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-cmny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 12
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-demo.yml b/src/main/resources/application-demo.yml
index 1b1ddab..631eb3e 100644
--- a/src/main/resources/application-demo.yml
+++ b/src/main/resources/application-demo.yml
@@ -17,7 +17,7 @@
# 寮�鍙戠幆澧冮厤缃�
server:
# 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
- port: 8089
+ port: 9036
servlet:
# 搴旂敤鐨勮闂矾寰�
context-path: /
@@ -45,7 +45,7 @@
accessKey: admin
secretKey: 12345678
preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
- default-bucket: uploadPath
+ default-bucket: demo-product
# 鐢ㄦ埛閰嶇疆
user:
password:
@@ -62,9 +62,9 @@
druid:
# 涓诲簱鏁版嵁婧�
master:
- url: jdbc:mysql://114.132.189.42:9004/product-inventory-management-demo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-demo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
- password: 123456
+ password: xd@123456..
# 浠庡簱鏁版嵁婧�
slave:
# 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
@@ -134,15 +134,15 @@
# redis 閰嶇疆
redis:
# 鍦板潃
- host: 127.0.0.1
-# host: 172.17.0.1
+# host: 127.0.0.1
+ host: 192.168.1.185
# 绔彛锛岄粯璁や负6379
port: 6379
# 鏁版嵁搴撶储寮�
database: 0
# 瀵嗙爜
- password: root2022!
-# password:
+# password: root2022!
+ password:
# 杩炴帴瓒呮椂鏃堕棿
timeout: 10s
@@ -188,7 +188,7 @@
# Swagger閰嶇疆
swagger:
# 鏄惁寮�鍚痵wagger
- enabled: false
+ enabled: true
# 璇锋眰鍓嶇紑
pathMapping: /dev-api
diff --git a/src/main/resources/application-dhdc.yml b/src/main/resources/application-dhdc.yml
new file mode 100644
index 0000000..52fbd62
--- /dev/null
+++ b/src/main/resources/application-dhdc.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9032
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.8:3306/product-inventory-management-dhdc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: 123456
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.8
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 1
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-hbkj.yml b/src/main/resources/application-hbkj.yml
new file mode 100644
index 0000000..bf9759c
--- /dev/null
+++ b/src/main/resources/application-hbkj.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9117
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hbkj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6380
+ # 鏁版嵁搴撶储寮�
+ database: 3
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-hbxm.yml b/src/main/resources/application-hbxm.yml
new file mode 100644
index 0000000..88fb4ee
--- /dev/null
+++ b/src/main/resources/application-hbxm.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9100
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hbxm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 13
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-hckx.yml b/src/main/resources/application-hckx.yml
new file mode 100644
index 0000000..cd680c8
--- /dev/null
+++ b/src/main/resources/application-hckx.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9090
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hckx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 12
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-hcmy.yml b/src/main/resources/application-hcmy.yml
new file mode 100644
index 0000000..6aadf85
--- /dev/null
+++ b/src/main/resources/application-hcmy.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9103
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hcmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 15
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-hhkj.yml b/src/main/resources/application-hhkj.yml
new file mode 100644
index 0000000..0cde287
--- /dev/null
+++ b/src/main/resources/application-hhkj.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9046
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hhkj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 0
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-hsmy.yml b/src/main/resources/application-hsmy.yml
new file mode 100644
index 0000000..862214f
--- /dev/null
+++ b/src/main/resources/application-hsmy.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9115
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hsmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6380
+ # 鏁版嵁搴撶储寮�
+ database: 2
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-hsxny.yml b/src/main/resources/application-hsxny.yml
new file mode 100644
index 0000000..d20674c
--- /dev/null
+++ b/src/main/resources/application-hsxny.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9101
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hsxny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 12
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-hxgy.yml b/src/main/resources/application-hxgy.yml
new file mode 100644
index 0000000..aa429e9
--- /dev/null
+++ b/src/main/resources/application-hxgy.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9098
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hxgy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 14
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-hxsj.yml b/src/main/resources/application-hxsj.yml
new file mode 100644
index 0000000..d756e6e
--- /dev/null
+++ b/src/main/resources/application-hxsj.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 8088
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-hxsj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: hxsj@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 172.17.0.1
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 15
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-hysn.yml b/src/main/resources/application-hysn.yml
new file mode 100644
index 0000000..5d8f467
--- /dev/null
+++ b/src/main/resources/application-hysn.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9034
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-hysn?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 5
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: false
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-jjxm.yml b/src/main/resources/application-jjxm.yml
new file mode 100644
index 0000000..a434f00
--- /dev/null
+++ b/src/main/resources/application-jjxm.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9107
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-jjxm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6380
+ # 鏁版嵁搴撶储寮�
+ database: 0
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-jlsn.yml b/src/main/resources/application-jlsn.yml
new file mode 100644
index 0000000..d3be68c
--- /dev/null
+++ b/src/main/resources/application-jlsn.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9094
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-jlsn?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 13
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-jsmy.yml b/src/main/resources/application-jsmy.yml
new file mode 100644
index 0000000..df31410
--- /dev/null
+++ b/src/main/resources/application-jsmy.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9042
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-jsmy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 172.17.0.1
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 6
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-jsyny.yml b/src/main/resources/application-jsyny.yml
new file mode 100644
index 0000000..590ade8
--- /dev/null
+++ b/src/main/resources/application-jsyny.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9074
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-jsyny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 12
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-jyhj.yml b/src/main/resources/application-jyhj.yml
new file mode 100644
index 0000000..55c4854
--- /dev/null
+++ b/src/main/resources/application-jyhj.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9030
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.193:3306/product-inventory-management-jyhj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: 123456
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.193
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 0
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-mkzs.yml b/src/main/resources/application-mkzs.yml
new file mode 100644
index 0000000..85368ae
--- /dev/null
+++ b/src/main/resources/application-mkzs.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9111
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-mkzs?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6380
+ # 鏁版嵁搴撶储寮�
+ database: 1
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-mqsp.yml b/src/main/resources/application-mqsp.yml
new file mode 100644
index 0000000..05264b0
--- /dev/null
+++ b/src/main/resources/application-mqsp.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9123
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-lqmsp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6380
+ # 鏁版嵁搴撶储寮�
+ database: 6
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-mxsc.yml b/src/main/resources/application-mxsc.yml
new file mode 100644
index 0000000..051b575
--- /dev/null
+++ b/src/main/resources/application-mxsc.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9048
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-mxsc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 0
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-nydl.yml b/src/main/resources/application-nydl.yml
new file mode 100644
index 0000000..7d9428e
--- /dev/null
+++ b/src/main/resources/application-nydl.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9104
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.0.182:3306/product-inventory-management-nydl?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: HpencZdyK7WrtQvBUKnr
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.0.182
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 0
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-phmk.yml b/src/main/resources/application-phmk.yml
new file mode 100644
index 0000000..e2e7049
--- /dev/null
+++ b/src/main/resources/application-phmk.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9119
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-phmk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6380
+ # 鏁版嵁搴撶储寮�
+ database: 4
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index d84f05d..7c4b412 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -135,6 +135,7 @@
redis:
# 鍦板潃
host: 127.0.0.1
+# host: localhost
# host: 172.17.0.1
# 绔彛锛岄粯璁や负6379
port: 6379
diff --git a/src/main/resources/application-qlmc.yml b/src/main/resources/application-qlmc.yml
new file mode 100644
index 0000000..3b8c0d0
--- /dev/null
+++ b/src/main/resources/application-qlmc.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 8090
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-qlmc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: qlmc@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 172.17.0.1
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 15
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-rzny.yml b/src/main/resources/application-rzny.yml
new file mode 100644
index 0000000..b5673ce
--- /dev/null
+++ b/src/main/resources/application-rzny.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9058
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-rzny?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 0
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-tjxm.yml b/src/main/resources/application-tjxm.yml
new file mode 100644
index 0000000..a928f2e
--- /dev/null
+++ b/src/main/resources/application-tjxm.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9064
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-tjxm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 9
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-tymk.yml b/src/main/resources/application-tymk.yml
new file mode 100644
index 0000000..37fa56e
--- /dev/null
+++ b/src/main/resources/application-tymk.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9121
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: bdsm-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-tymk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6380
+ # 鏁版嵁搴撶储寮�
+ database: 5
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-wdsy.yml b/src/main/resources/application-wdsy.yml
index 6ac3309..b55f3fb 100644
--- a/src/main/resources/application-wdsy.yml
+++ b/src/main/resources/application-wdsy.yml
@@ -134,15 +134,15 @@
# redis 閰嶇疆
redis:
# 鍦板潃
- host: 127.0.0.1
-# host: 172.17.0.1
+# host: 127.0.0.1
+ host: 172.17.0.1
# 绔彛锛岄粯璁や负6379
- port: 6379
+ port: 6380
# 鏁版嵁搴撶储寮�
- database: 3
+ database: 2
# 瀵嗙爜
- password: root2022!
-# password:
+# password: root2022!
+ password:
# 杩炴帴瓒呮椂鏃堕棿
timeout: 10s
diff --git a/src/main/resources/application-xyhb.yml b/src/main/resources/application-xyhb.yml
new file mode 100644
index 0000000..5ce974a
--- /dev/null
+++ b/src/main/resources/application-xyhb.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9052
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-xyhb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 8
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-zjyj.yml b/src/main/resources/application-zjyj.yml
index 4bafeb7..e6e4b6a 100644
--- a/src/main/resources/application-zjyj.yml
+++ b/src/main/resources/application-zjyj.yml
@@ -134,15 +134,15 @@
# redis 閰嶇疆
redis:
# 鍦板潃
- host: 127.0.0.1
-# host: 172.17.0.1
+# host: 127.0.0.1
+ host: 172.17.0.1
# 绔彛锛岄粯璁や负6379
- port: 6379
+ port: 6380
# 鏁版嵁搴撶储寮�
- database: 3
+ database: 0
# 瀵嗙爜
- password: root2022!
-# password:
+# password: root2022!
+ password:
# 杩炴帴瓒呮椂鏃堕棿
timeout: 10s
diff --git a/src/main/resources/application-zqhx.yml b/src/main/resources/application-zqhx.yml
index a32d6fb..3a6cf4d 100644
--- a/src/main/resources/application-zqhx.yml
+++ b/src/main/resources/application-zqhx.yml
@@ -134,15 +134,15 @@
# redis 閰嶇疆
redis:
# 鍦板潃
- host: 127.0.0.1
-# host: 172.17.0.1
+# host: 127.0.0.1
+ host: 172.17.0.1
# 绔彛锛岄粯璁や负6379
- port: 6379
+ port: 6380
# 鏁版嵁搴撶储寮�
- database: 3
+ database: 1
# 瀵嗙爜
- password: root2022!
-# password:
+# password: root2022!
+ password:
# 杩炴帴瓒呮椂鏃堕棿
timeout: 10s
diff --git a/src/main/resources/application-zyrq.yml b/src/main/resources/application-zyrq.yml
new file mode 100644
index 0000000..9030508
--- /dev/null
+++ b/src/main/resources/application-zyrq.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9030
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: demo-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.10.230:3306/product-inventory-management-zyrq?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: zyrq@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.10.230
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 0
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application-zyrqCopy.yml b/src/main/resources/application-zyrqCopy.yml
new file mode 100644
index 0000000..5e7f50b
--- /dev/null
+++ b/src/main/resources/application-zyrqCopy.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9030
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: demo-product
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://192.168.1.185:3306/product-inventory-management-zyrq?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+# host: 127.0.0.1
+ host: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6380
+ # 鏁版嵁搴撶储寮�
+ database: 5
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/mapper/account/AccountFileMapper.xml b/src/main/resources/mapper/account/AccountFileMapper.xml
index 8def6e1..86266d5 100644
--- a/src/main/resources/mapper/account/AccountFileMapper.xml
+++ b/src/main/resources/mapper/account/AccountFileMapper.xml
@@ -7,6 +7,9 @@
FROM account_file
where
1=1
+ <if test="accountFile.accountId != null and accountFile.accountId != ''">
+ AND account_id = #{accountFile.accountId}
+ </if>
<if test="accountFile.name != null and accountFile.name != '' ">
AND name = #{accountFile.name}
</if>
diff --git a/src/main/resources/mapper/approve/AnnualLeaveSettingMapper.xml b/src/main/resources/mapper/approve/AnnualLeaveSettingMapper.xml
new file mode 100644
index 0000000..39fcb3f
--- /dev/null
+++ b/src/main/resources/mapper/approve/AnnualLeaveSettingMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.approve.mapper.AnnualLeaveSettingMapper">
+
+
+ <select id="listPage" resultType="com.ruoyi.approve.pojo.AnnualLeaveSetting">
+ select * from annual_leave_setting
+ where 1=1
+ <if test="annualLeaveSetting.employeeType != null">
+ and employee_type = #{annualLeaveSetting.employeeType}
+ </if>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/ApproveProcessMapper.xml b/src/main/resources/mapper/approve/ApproveProcessMapper.xml
index 0ab3d21..33b29a9 100644
--- a/src/main/resources/mapper/approve/ApproveProcessMapper.xml
+++ b/src/main/resources/mapper/approve/ApproveProcessMapper.xml
@@ -35,5 +35,8 @@
<if test="req.approveStatus != null or req.approveStatus == 0">
and approve_status = #{req.approveStatus}
</if>
+ <if test="req.approveType != null ">
+ and approve_type = #{req.approveType}
+ </if>
</select>
</mapper>
diff --git a/src/main/resources/mapper/approve/FileSharingMapper.xml b/src/main/resources/mapper/approve/FileSharingMapper.xml
new file mode 100644
index 0000000..cd62025
--- /dev/null
+++ b/src/main/resources/mapper/approve/FileSharingMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.approve.mapper.FileSharingMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/HolidaySettingsMapper.xml b/src/main/resources/mapper/approve/HolidaySettingsMapper.xml
new file mode 100644
index 0000000..ac5f19e
--- /dev/null
+++ b/src/main/resources/mapper/approve/HolidaySettingsMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.approve.mapper.HolidaySettingsMapper">
+
+ <select id="listpage" resultType="com.ruoyi.approve.pojo.HolidaySettings">
+ select * from holiday_settings
+ where 1=1
+ <if test="holidaySettings.type != null">
+ and type = #{holidaySettings.type}
+ </if>
+ <if test="holidaySettings.name != null">
+ and name like concat('%',#{holidaySettings.name},'%')
+ </if>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/KnowledgeBaseMapper.xml b/src/main/resources/mapper/approve/KnowledgeBaseMapper.xml
new file mode 100644
index 0000000..e4819c2
--- /dev/null
+++ b/src/main/resources/mapper/approve/KnowledgeBaseMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.approve.mapper.KnowledgeBaseMapper">
+
+
+ <select id="listpage" resultType="com.ruoyi.approve.pojo.KnowledgeBase">
+ select * from knowledge_base
+ <where>
+ 1=1
+ <if test="knowledgeBase.title != null and knowledgeBase.title != ''">
+ and title like concat('%',#{knowledgeBase.title},'%')
+ </if>
+ <if test="knowledgeBase.type != null and knowledgeBase.type != ''">
+ and type = #{knowledgeBase.type}
+ </if>
+ </where>
+
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/NotificationManagementMapper.xml b/src/main/resources/mapper/approve/NotificationManagementMapper.xml
new file mode 100644
index 0000000..a2e714f
--- /dev/null
+++ b/src/main/resources/mapper/approve/NotificationManagementMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.approve.mapper.NotificationManagementMapper">
+
+ <select id="listpage" resultType="com.ruoyi.approve.pojo.NotificationManagement">
+ select * from notification_management
+ <where>
+ 1=1
+ <if test="notificationManagement.title != null and notificationManagement.title != ''">
+ and title like concat('%',#{notificationManagement.title},'%')
+ </if>
+ <if test="notificationManagement.type != null">
+ and type = #{notificationManagement.type}
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/OnlineMeetingMapper.xml b/src/main/resources/mapper/approve/OnlineMeetingMapper.xml
new file mode 100644
index 0000000..5ce6d5d
--- /dev/null
+++ b/src/main/resources/mapper/approve/OnlineMeetingMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.approve.mapper.OnlineMeetingMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/OvertimeSettingMapper.xml b/src/main/resources/mapper/approve/OvertimeSettingMapper.xml
new file mode 100644
index 0000000..b496353
--- /dev/null
+++ b/src/main/resources/mapper/approve/OvertimeSettingMapper.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.approve.mapper.OvertimeSettingMapper">
+
+
+ <select id="listPage" resultType="com.ruoyi.approve.pojo.OvertimeSetting">
+ select * from overtime_setting
+ where 1=1
+ <if test="overtimeSetting.type != null">
+ and type = #{overtimeSetting.type}
+ </if>
+ <if test="overtimeSetting.name != null and overtimeSetting.name !=''">
+ and name like concat('%',#{overtimeSetting.name},'%')
+ </if>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/RpaProcessAutomationMapper.xml b/src/main/resources/mapper/approve/RpaProcessAutomationMapper.xml
new file mode 100644
index 0000000..4471d61
--- /dev/null
+++ b/src/main/resources/mapper/approve/RpaProcessAutomationMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.approve.mapper.RpaProcessAutomationMapper">
+
+ <select id="listpage" resultType="com.ruoyi.approve.pojo.RpaProcessAutomation">
+ select * from rpa_process_automation
+ <where>
+ 1=1
+ <if test="rpaProcessAutomation.programName != null and rpaProcessAutomation.programName != ''">
+ and program_name like concat('%',#{rpaProcessAutomation.programName},'%')
+ </if>
+ <if test="rpaProcessAutomation.status != null">
+ and status = #{rpaProcessAutomation.status}
+ </if>
+ </where>
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/approve/WorkingHoursSettingMapper.xml b/src/main/resources/mapper/approve/WorkingHoursSettingMapper.xml
new file mode 100644
index 0000000..63bc1c3
--- /dev/null
+++ b/src/main/resources/mapper/approve/WorkingHoursSettingMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.approve.mapper.WorkingHoursSettingMapper">
+
+
+ <select id="listPage" resultType="com.ruoyi.approve.pojo.WorkingHoursSetting">
+ select * from working_hours_setting
+ where 1=1
+ <if test="workingHoursSetting.name != null and workingHoursSetting.name !=''">
+ and name like concat('%',#{workingHoursSetting.name},'%')
+ </if>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/collaborativeApproval/DutyPlanMapper.xml b/src/main/resources/mapper/collaborativeApproval/DutyPlanMapper.xml
new file mode 100644
index 0000000..6c1679d
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/DutyPlanMapper.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.DutyPlanMapper">
+ <resultMap id="DutyPlanDTOMap" type="com.ruoyi.collaborativeApproval.dto.DutyPlanDTO">
+ <result column="id" property="id"/>
+ <result column="tags" property="tags" typeHandler="com.ruoyi.approve.utils.ListToStringTypeHandler"/>
+ </resultMap>
+
+ <select id="listPage" resultMap="DutyPlanDTOMap">
+ select * from duty_plan
+ <where>
+ 1=1
+ <if test="dutyPlan.title != null and dutyPlan.title != ''">
+ and title like concat('%',#{dutyPlan.title},'%')
+ </if>
+ <if test="dutyPlan.level != null">
+ and level = #{dutyPlan.level}
+ </if>
+ <if test="dutyPlan.period != null">
+ and period = #{dutyPlan.period}
+ </if>
+ <if test="dutyPlan.queryDate != null">
+ and start_date <= #{dutyPlan.queryDate}
+ and end_date >= #{dutyPlan.queryDate}
+ </if>
+ </where>
+ </select>
+
+ <select id="getNum" resultType="java.util.Map">
+ SELECT
+ level,
+ COUNT(*) AS num,
+ ROUND(COUNT(*) / total.count * 100) AS completion
+ FROM
+ duty_plan,
+ (SELECT COUNT(*) AS count FROM duty_plan) AS total
+ GROUP BY
+ level, total.count
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/collaborativeApproval/MeetApplicationMapper.xml b/src/main/resources/mapper/collaborativeApproval/MeetApplicationMapper.xml
new file mode 100644
index 0000000..a195317
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/MeetApplicationMapper.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.MeetApplicationMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.collaborativeApproval.pojo.MeetApplication">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="title" column="title" jdbcType="VARCHAR"/>
+ <result property="type" column="type" jdbcType="VARCHAR"/>
+ <result property="roomId" column="room_id" jdbcType="BIGINT"/>
+ <result property="host" column="host" jdbcType="VARCHAR"/>
+ <result property="meetingDate" column="meeting_date" jdbcType="DATE"/>
+ <result property="startTime" column="start_time" jdbcType="TIMESTAMP"/>
+ <result property="endTime" column="end_time" jdbcType="TIMESTAMP"/>
+ <result property="participants" column="participants" jdbcType="VARCHAR"/>
+ <result property="description" column="description" jdbcType="VARCHAR"/>
+ <result property="applicationType" column="application_type" jdbcType="VARCHAR"/>
+ <result property="status" column="status" jdbcType="TINYINT"/>
+ <result property="applicant" column="applicant" jdbcType="VARCHAR"/>
+ <result property="createUser" column="create_user" jdbcType="BIGINT"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="update_user" jdbcType="BIGINT"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,title,type,
+ room_id,host,meeting_date,
+ start_time,end_time,participants,
+ description,application_type,status,
+ applicant,create_user,create_time,
+ update_user,update_time,tenant_id
+ </sql>
+ <select id="getMeetSummary" resultType="com.ruoyi.collaborativeApproval.dto.MeetSummaryDto">
+ SELECT
+ COUNT(*) AS total,
+ SUM(CASE
+ WHEN meeting_date = CURDATE() AND start_time <![CDATA[<=]]> NOW() AND end_time <![CDATA[>]]> NOW()
+ THEN 1 ELSE 0
+ END) AS underWay,
+ SUM(CASE
+ WHEN (meeting_date <![CDATA[<]]> CURDATE() OR (meeting_date = CURDATE() AND end_time <![CDATA[<=]]> NOW()))
+ THEN 1 ELSE 0
+ END) AS completed,
+ SUM(CASE
+ WHEN meeting_date <![CDATA[>=]]> CURDATE() AND start_time <![CDATA[>]]> NOW()
+ THEN 1 ELSE 0
+ END) AS toStart
+ FROM meet_application as t1
+ where status = 1 OR application_type='notification'
+ </select>
+ <select id="getMeetSummaryItems" resultType="com.ruoyi.collaborativeApproval.dto.MeetingSimpleDto">
+ select t1.id as id,
+ t1.title as title,
+ (CASE
+ WHEN t1.meeting_date = CURDATE() AND t1.start_time <![CDATA[<=]]> NOW() AND t1.end_time <![CDATA[>]]> NOW()
+ THEN 2
+ WHEN t1.meeting_date <![CDATA[>=]]> CURDATE() AND t1.start_time <![CDATA[>]]> NOW() then 1
+ ELSE 0 end) as status,
+ t1.start_time as start_time,
+ t1.end_time as end_time,
+ CONCAT(t2.name, '(', t2.location, ')') as location,
+ t1.host as host,
+ t1.participants as participants,
+ t3.content as content
+ from meet_application
+ as t1
+ left join meeting_room as t2 on t1.room_id = t2.id
+ left join meeting_minutes as t3 on t1.id = t3.meeting_id
+ where t1.status = 1
+ OR t1.application_type = 'notification'
+ order by (CASE
+ WHEN t1.meeting_date = CURDATE() AND t1.start_time <![CDATA[<=]]> NOW() AND t1.end_time <![CDATA[>]]> NOW()
+ THEN 2
+ WHEN t1.meeting_date <![CDATA[>=]]> CURDATE() AND t1.start_time > NOW() then 1
+ ELSE 0 end) desc, t1.end_time desc
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/collaborativeApproval/MeetDraftMapper.xml b/src/main/resources/mapper/collaborativeApproval/MeetDraftMapper.xml
new file mode 100644
index 0000000..3b2c86a
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/MeetDraftMapper.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.MeetDraftMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.collaborativeApproval.pojo.MeetDraft">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="roomId" column="room_id" jdbcType="BIGINT"/>
+ <result property="title" column="title" jdbcType="VARCHAR"/>
+ <result property="host" column="host" jdbcType="VARCHAR"/>
+ <result property="meetingDate" column="meeting_date" jdbcType="DATE"/>
+ <result property="startTime" column="start_time" jdbcType="TIMESTAMP"/>
+ <result property="endTime" column="end_time" jdbcType="TIMESTAMP"/>
+ <result property="participants" column="participants" jdbcType="INTEGER"/>
+ <result property="participantList" column="participant_list" jdbcType="VARCHAR"/>
+ <result property="description" column="description" jdbcType="VARCHAR"/>
+ <result property="creator" column="creator" jdbcType="VARCHAR"/>
+ <result property="createUser" column="create_user" jdbcType="VARCHAR"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="update_user" jdbcType="VARCHAR"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,room_id,title,
+ host,meeting_date,start_time,
+ end_time,participants,participant_list,
+ description,creator,create_user,
+ create_time,update_user,update_time,
+ tenant_id
+ </sql>
+</mapper>
diff --git a/src/main/resources/mapper/collaborativeApproval/MeetingMinutesMapper.xml b/src/main/resources/mapper/collaborativeApproval/MeetingMinutesMapper.xml
new file mode 100644
index 0000000..5904e3a
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/MeetingMinutesMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.MeetingMinutesMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.collaborativeApproval.pojo.MeetingMinutes">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="meetingId" column="meeting_id" jdbcType="BIGINT"/>
+ <result property="title" column="title" jdbcType="VARCHAR"/>
+ <result property="content" column="content" jdbcType="VARCHAR"/>
+ <result property="createUser" column="create_user" jdbcType="BIGINT"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="update_user" jdbcType="BIGINT"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,meeting_id,title,
+ content,create_user,create_time,
+ update_user,update_time,tenant_id
+ </sql>
+</mapper>
diff --git a/src/main/resources/mapper/collaborativeApproval/MeetingRoomMapper.xml b/src/main/resources/mapper/collaborativeApproval/MeetingRoomMapper.xml
new file mode 100644
index 0000000..feac888
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/MeetingRoomMapper.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.MeetingRoomMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.collaborativeApproval.pojo.MeetingRoom">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="name" column="name" jdbcType="VARCHAR"/>
+ <result property="location" column="location" jdbcType="VARCHAR"/>
+ <result property="capacity" column="capacity" jdbcType="INTEGER"/>
+ <result property="equipment" column="equipment" jdbcType="VARCHAR"/>
+ <result property="status" column="status" jdbcType="TINYINT"/>
+ <result property="remark" column="remark" jdbcType="VARCHAR"/>
+ <result property="createUser" column="create_user" jdbcType="VARCHAR"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="update_user" jdbcType="VARCHAR"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,name,location,
+ capacity,equipment,status,
+ remark,create_user,create_time,
+ update_user,update_time,tenant_id
+ </sql>
+</mapper>
diff --git a/src/main/resources/mapper/collaborativeApproval/NoticeMapper.xml b/src/main/resources/mapper/collaborativeApproval/NoticeMapper.xml
new file mode 100644
index 0000000..5f646ad
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/NoticeMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.NoticeMapper">
+
+ <select id="listPage" resultType="com.ruoyi.collaborativeApproval.dto.NoticeDTO">
+ select n.*, su.user_name as create_user_name
+ from notice n
+ left join sys_user su on n.create_user = su.user_id
+ <where>
+ <if test="ew.title != null and ew.title != ''">
+ and n.title like concat('%',#{ew.title},'%')
+ </if>
+ <if test="ew.type != null">
+ and n.type = #{ew.type}
+ </if>
+ <if test="ew.status != null">
+ and n.status = #{ew.status}
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/collaborativeApproval/ReadingStatusMapper.xml b/src/main/resources/mapper/collaborativeApproval/ReadingStatusMapper.xml
new file mode 100644
index 0000000..c61f17d
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/ReadingStatusMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.ReadingStatusMapper">
+
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/collaborativeApproval/RulesRegulationsManagementMapper.xml b/src/main/resources/mapper/collaborativeApproval/RulesRegulationsManagementMapper.xml
new file mode 100644
index 0000000..03dc024
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/RulesRegulationsManagementMapper.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.RulesRegulationsManagementMapper">
+ <resultMap id="RulesRegulationsManagementDTOMap" type="com.ruoyi.collaborativeApproval.dto.RulesRegulationsManagementDTO">
+ <!-- 鍏朵粬瀛楁鏄犲皠锛堜繚鎸佷笉鍙橈級 -->
+ <result column="id" property="id"/>
+ <result column="regulation_num" property="regulationNum"/>
+ <result column="title" property="title"/>
+ <!-- ... 鐪佺暐鍏朵粬瀛楁 ... -->
+
+ <!-- 鍏抽敭淇锛氫负 scope 瀛楁鎸囧畾绫诲瀷澶勭悊鍣� -->
+ <result column="scope" property="scope" typeHandler="com.ruoyi.approve.utils.ListToStringTypeHandler"/>
+ </resultMap>
+
+ <select id="listPage" resultMap="RulesRegulationsManagementDTOMap">
+ select rrm.*, su.user_name as create_user_name
+ from rules_regulations_management rrm
+ left join sys_user su on rrm.create_user = su.user_id
+ <where>
+ <if test="ew.regulationNum != null and ew.regulationNum != ''">
+ and rrm.regulation_num = #{ew.regulationNum}
+ </if>
+ <if test="ew.title != null and ew.title != ''">
+ and rrm.title like concat('%',#{ew.title},'%')
+ </if>
+ <if test="ew.category != null">
+ and rrm.category = #{ew.category}
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/collaborativeApproval/SealApplicationManagementMapper.xml b/src/main/resources/mapper/collaborativeApproval/SealApplicationManagementMapper.xml
new file mode 100644
index 0000000..b8ad6a7
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/SealApplicationManagementMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.SealApplicationManagementMapper">
+
+
+ <select id="listPage" resultType="com.ruoyi.collaborativeApproval.dto.SealApplicationManagementDTO">
+ select sam.*, su.user_name as create_user_name, d.dept_name as department
+ from seal_application_management sam
+ left join sys_user su on sam.create_user = su.user_id
+ left join sys_user_dept sud on su.user_id = sud.user_id
+ left join sys_dept d on sud.dept_id = d.dept_id
+ <where>
+ <if test="ew.title != null and ew.title != ''">
+ and sam.title like concat('%',#{ew.title},'%')
+ </if>
+ <if test="ew.status != null">
+ and sam.status = #{ew.status}
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/collaborativeApproval/StaffContactsPersonalMapper.xml b/src/main/resources/mapper/collaborativeApproval/StaffContactsPersonalMapper.xml
new file mode 100644
index 0000000..36ce60d
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/StaffContactsPersonalMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.StaffContactsPersonalMapper">
+
+
+ <select id="listPage" resultType="com.ruoyi.collaborativeApproval.dto.StaffContactsPersonalDTO">
+ SELECT
+ scp.id,
+ scp.contact_id,
+ sjlr.staff_no,
+ sjlr.staff_name,
+ sjlr.sex,
+ sjlr.post_job,
+ sjlr.adress,
+ sjlr.profession,
+ sjlr.identity_card,
+ sjlr.phone,
+ scp.create_time
+ FROM staff_contacts_personal scp
+ LEFT JOIN (select * from staff_join_leave_record WHERE staff_state = 1) sjlr ON scp.contact_id=sjlr.id
+ where 1=1
+ <if test="staffContactsPersonalDTO.staffName != null and staffContactsPersonalDTO.staffName != ''">
+ and sjlr.staff_name like concat('%',#{staffContactsPersonalDTO.staffName},'%')
+ </if>
+
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/customervisits/CustomerVisitsMapper.xml b/src/main/resources/mapper/customervisits/CustomerVisitsMapper.xml
new file mode 100644
index 0000000..92d44bd
--- /dev/null
+++ b/src/main/resources/mapper/customervisits/CustomerVisitsMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.customervisits.mapper.CustomerVisitsMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/device/DeviceDefectRecordMapper.xml b/src/main/resources/mapper/device/DeviceDefectRecordMapper.xml
new file mode 100644
index 0000000..bcd4bd5
--- /dev/null
+++ b/src/main/resources/mapper/device/DeviceDefectRecordMapper.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.ruoyi.device.mapper.DeviceDefectRecordMapper">
+
+ <select id="listPage" resultType="com.ruoyi.device.dto.DeviceDefectRecordDto">
+ select ddr.*,dl.device_name,dl.device_model
+ from device_defect_record ddr
+ left join device_ledger dl on ddr.device_ledger_id = dl.id
+ <where>
+ 1=1
+ <if test="deviceDefectRecordDto.deviceLedgerId != null">
+ and ddr.device_ledger_id = #{deviceDefectRecordDto.deviceLedgerId}
+ </if>
+ <if test="deviceDefectRecordDto.deviceName != null and deviceDefectRecordDto.deviceName != ''">
+ and dl.device_name like concat('%',#{deviceDefectRecordDto.deviceName},'%')
+ </if>
+ <if test="deviceDefectRecordDto.status != null">
+ and ddr.status = #{deviceDefectRecordDto.status}
+ </if>
+ </where>
+
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/device/DeviceLedgerMapper.xml b/src/main/resources/mapper/device/DeviceLedgerMapper.xml
index 4a8f435..9cee459 100644
--- a/src/main/resources/mapper/device/DeviceLedgerMapper.xml
+++ b/src/main/resources/mapper/device/DeviceLedgerMapper.xml
@@ -13,6 +13,11 @@
dl.supplier_name,
dl.unit,
dl.number,
+ dl.status,
+ dl.plan_runtime_time,
+ dl.start_runtime_time,
+ dl.end_runtime_time,
+ dl.runtime_duration,
dl.tax_including_price_unit,
dl.tax_including_price_total,
dl.tax_rate,
@@ -23,7 +28,7 @@
dl.update_user,
dl.tenant_id
FROM device_ledger dl
- left join sys_user su on dl.create_user = su.user_id
+ left join sys_user su on dl.create_user = su.user_id
<where>
<!-- 璁惧鍚嶇О -->
<if test="deviceLedger.deviceName != null and deviceLedger.deviceName != ''">
@@ -59,7 +64,7 @@
AND dl.create_time >= DATE_FORMAT(#{deviceLedger.entryDateStart},'%Y-%m-%d')
</if>
<if test="deviceLedger.entryDateEnd != null and deviceLedger.entryDateEnd != '' ">
- AND dl.create_time <= DATE_FORMAT(#{deviceLedger.entryDateEnd},'%Y-%m-%d')
+ AND dl.create_time <= DATE_FORMAT(#{deviceLedger.entryDateEnd},'%Y-%m-%d')
</if>
<!-- 绉熸埛ID -->
@@ -72,5 +77,10 @@
<select id="deviceLedgerExportList" resultType="com.ruoyi.device.execl.DeviceLedgerExeclDto">
</select>
+ <select id="selectById1" resultType="com.ruoyi.device.pojo.DeviceLedger">
+ select *
+ from device_ledger
+ where id = #{id}
+ </select>
</mapper>
diff --git a/src/main/resources/mapper/device/DeviceMaintenanceMapper.xml b/src/main/resources/mapper/device/DeviceMaintenanceMapper.xml
index 468198e..9917ce2 100644
--- a/src/main/resources/mapper/device/DeviceMaintenanceMapper.xml
+++ b/src/main/resources/mapper/device/DeviceMaintenanceMapper.xml
@@ -7,19 +7,19 @@
<select id="queryPage" resultType="com.ruoyi.device.dto.DeviceMaintenanceDto">
select dm.id,
- dm.device_ledger_id,
- dm.maintenance_plan_time,
- dm.maintenance_actually_time,
- dm.maintenance_result,
- dm.status,
- dm.create_time,
- dm.update_time,
- dm.create_user,
- dm.update_user,
- dm.tenant_id,
- dm.maintenance_actually_name,
- dl.device_name,
- dl.device_model,
+ dm.device_ledger_id,
+ dm.maintenance_plan_time,
+ dm.maintenance_actually_time,
+ dm.maintenance_result,
+ dm.status,
+ dm.create_time,
+ dm.update_time,
+ dm.create_user,
+ dm.update_user,
+ dm.tenant_id,
+ dm.maintenance_actually_name,
+ dl.device_name,
+ dl.device_model,
su.user_name as create_user_name
from device_maintenance dm
left join device_ledger dl on dm.device_ledger_id = dl.id
@@ -60,9 +60,14 @@
dl.device_model,
su.user_name as create_user_name
from device_maintenance dm
- left join device_ledger dl on dm.device_ledger_id = dl.id
- left join sys_user su on dm.create_user = su.user_id
+ left join device_ledger dl on dm.device_ledger_id = dl.id
+ left join sys_user su on dm.create_user = su.user_id
where dm.id = #{id}
</select>
+ <select id="list1" resultType="com.ruoyi.device.pojo.DeviceMaintenance">
+ select *
+ from device_maintenance
+ where device_ledger_id = #{id}
+ </select>
</mapper>
diff --git a/src/main/resources/mapper/equipmentenergyconsumption/EnergyPeriodMapper.xml b/src/main/resources/mapper/equipmentenergyconsumption/EnergyPeriodMapper.xml
new file mode 100644
index 0000000..c026425
--- /dev/null
+++ b/src/main/resources/mapper/equipmentenergyconsumption/EnergyPeriodMapper.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.equipmentenergyconsumption.mapper.EnergyPeriodMapper">
+
+
+ <select id="listPage" resultType="com.ruoyi.equipmentenergyconsumption.pojo.EnergyPeriod">
+ select * from energy_period
+ <where>
+ <if test="energyPeriod.date != null">
+ date = #{energyPeriod.date}
+ </if>
+ <if test="energyPeriod.price != null">
+ and price = #{energyPeriod.price}
+ </if>
+ <if test="energyPeriod.peak != null">
+ and peak = #{energyPeriod.peak}
+ </if>
+ <if test="energyPeriod.valley != null">
+ and valley = #{energyPeriod.valley}
+ </if>
+ <if test="energyPeriod.flat != null">
+ and flat = #{energyPeriod.flat}
+ </if>
+ <if test="energyPeriod.sharp != null">
+ and sharp = #{energyPeriod.sharp}
+ </if>
+ </where>
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/equipmentenergyconsumption/electricityConsumptionAreaMapper.xml b/src/main/resources/mapper/equipmentenergyconsumption/electricityConsumptionAreaMapper.xml
new file mode 100644
index 0000000..aed220c
--- /dev/null
+++ b/src/main/resources/mapper/equipmentenergyconsumption/electricityConsumptionAreaMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.equipmentenergyconsumption.mapper.ElectricityConsumptionAreaMapper">
+
+ <select id="listPage" resultType="com.ruoyi.equipmentenergyconsumption.pojo.ElectricityConsumptionArea">
+ select * from electricity_consumption_area
+ <where>
+ <if test="electricityConsumptionArea.id != null">
+ id = #{electricityConsumptionArea.id}
+ </if>
+ <if test="electricityConsumptionArea.areaName != null and electricityConsumptionArea.areaName != ''">
+ and area_name like CONCAT('%', #{electricityConsumptionArea.areaName}, '%')
+ </if>
+ <if test="electricityConsumptionArea.areaType != null and electricityConsumptionArea.areaType != ''">
+ and area_type like CONCAT('%', #{electricityConsumptionArea.areaType}, '%')
+ </if>
+ <if test="electricityConsumptionArea.sort != null">
+ and sort = #{electricityConsumptionArea.sort}
+ </if>
+ <if test="electricityConsumptionArea.fuId != null">
+ and fu_id = #{electricityConsumptionArea.fuId}
+ </if>
+ </where>
+ </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/inspectiontask/TimingTaskMapper.xml b/src/main/resources/mapper/inspectiontask/TimingTaskMapper.xml
new file mode 100644
index 0000000..bb74e0e
--- /dev/null
+++ b/src/main/resources/mapper/inspectiontask/TimingTaskMapper.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.inspectiontask.mapper.TimingTaskMapper">
+
+ <select id="getTaskById" resultType="com.ruoyi.inspectiontask.pojo.TimingTask" useCache="false">
+ SELECT * FROM timing_task WHERE id = #{id}
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/lavorissue/LavorIssueMapper.xml b/src/main/resources/mapper/lavorissue/LavorIssueMapper.xml
new file mode 100644
index 0000000..81cf11d
--- /dev/null
+++ b/src/main/resources/mapper/lavorissue/LavorIssueMapper.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.lavorissue.mapper.LavorIssueMapper">
+
+ <select id="listPage" resultType="com.ruoyi.lavorissue.pojo.LaborIssue">
+ select
+ t1.*,
+ t2.staff_name as staffName,
+ t2.staff_no as staffNo,
+ t3.dict_label as dictName,
+ t4.dict_label as dictTypeName
+ from labor_issue t1
+ left join staff_join_leave_record t2 on t1.staff_id = t2.id
+ left join sys_dict_data t3 on t1.dict_id = t3.dict_value
+ left join sys_dict_data t4 on t1.dict_type = t4.dict_value
+ <where>
+ <if test="req.season != null and req.season != ''">
+ and (t1.issue_date >= #{req.startDate} and t1.issue_date <= #{req.endDate})
+ </if>
+ <if test="req.issueDate != null">
+ and (t1.issue_date >= #{req.startDate} and t1.issue_date <= #{req.endDate})
+ </if>
+ <if test="req.staffName != null and req.staffName != ''">
+ and t2.staff_name like concat('%',#{req.staffName},'%')
+ </if>
+ <if test="req.status != null and req.status == 1">
+ and t1.adopted_date is not null
+ </if>
+ <if test="req.status != null and req.status == 2">
+ and t1.adopted_date is null
+ </if>
+ <if test="req.status != null and req.status == 3">
+ and t1.adopted_date is not null and t1.issue_date < t1.adopted_date
+ </if>
+ <if test="req.status != null and req.status == 4">
+ and t1.adopted_date is null and t1.issue_date < current_date()
+ </if>
+ </where>
+ </select>
+ <select id="list" resultType="com.ruoyi.lavorissue.pojo.LaborIssue">
+ select
+ t1.*,
+ t2.staff_name as staffName,
+ t2.staff_no as staffNo,
+ t3.dict_label as dictName,
+ t4.dict_label as dictTypeName
+ from labor_issue t1
+ left join staff_join_leave_record t2 on t1.staff_id = t2.id
+ left join sys_dict_data t3 on t1.dict_id = t3.dict_value
+ left join sys_dict_data t4 on t1.dict_type = t4.dict_value
+ <where>
+ <if test="req.adoptedDate != null">
+ and t1.adopted_date is null
+ </if>
+ <if test="req.issueDate != null">
+ and (t1.issue_date >= #{req.startDate} and t1.issue_date <= #{req.endDate})
+ </if>
+ <if test="req.staffId != null">
+ and t1.staff_id = #{req.staffId}
+ </if>
+ <if test="req.season != null and req.season != ''">
+ and (t1.issue_date >= #{req.startDate} and t1.issue_date <= #{req.endDate})
+ </if>
+ <if test="req.status != null and req.status == 1">
+ and t1.adopted_date is not null
+ </if>
+ <if test="req.status != null and req.status == 2">
+ and t1.adopted_date is null
+ </if>
+ <if test="req.status != null and req.status == 3">
+ and t1.adopted_date is not null and t1.issue_date < t1.adopted_date
+ </if>
+ <if test="req.status != null and req.status == 4">
+ and t1.adopted_date is null and t1.issue_date < current_date()
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml b/src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml
new file mode 100644
index 0000000..2968e9a
--- /dev/null
+++ b/src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper">
+ <select id="listPage" resultType="com.ruoyi.measuringinstrumentledger.dto.SparePartsDto">
+ select sp.*,sp1.name as parentName from spare_parts sp
+ left join spare_parts sp1 on sp1.id = sp.parent_id
+ <where>
+ <if test="spareParts.name != null">
+ and name like concat('%',#{spareParts.name},'%')
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/oA/OaProjectMapper.xml b/src/main/resources/mapper/oA/OaProjectMapper.xml
new file mode 100644
index 0000000..c245a39
--- /dev/null
+++ b/src/main/resources/mapper/oA/OaProjectMapper.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.oA.mapper.OaProjectMapper">
+
+
+ <select id="listPage" resultType="com.ruoyi.oA.dto.OaProjectDto">
+ select op.*,su.nick_name as managerName from oa_project op
+ LEFT JOIN sys_user su ON op.manager_id=su.user_id
+ <where>
+ 1=1
+ <if test="req.projectName != null and req.projectName != ''">
+ and op.project_name like concat('%',#{req.projectName},'%')
+ </if>
+ <if test="req.managerName != null and req.managerName != ''">
+ and su.nick_name like concat('%',#{req.managerName},'%')
+ </if>
+ <if test="req.status != null and req.status != ''">
+ and op.status = #{req.status}
+ </if>
+ </where>
+ </select>
+ <select id="selectByIds" resultType="com.ruoyi.oA.dto.OaProjectDto">
+ select op.*,su.nick_name as managerName from oa_project op
+ LEFT JOIN sys_user su ON op.manager_id=su.user_id
+ where op.project_id in
+ <foreach collection="ids" item="id" open="(" close=")" separator=",">
+ #{id}
+ </foreach>
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/oA/OaProjectPhaseMapper.xml b/src/main/resources/mapper/oA/OaProjectPhaseMapper.xml
new file mode 100644
index 0000000..2f52fe9
--- /dev/null
+++ b/src/main/resources/mapper/oA/OaProjectPhaseMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.oA.mapper.OaProjectPhaseMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.oA.pojo.OaProjectPhase">
+ <id property="phaseId" column="phase_id" jdbcType="INTEGER"/>
+ <result property="phaseName" column="phase_name" jdbcType="VARCHAR"/>
+ <result property="oaProjectId" column="oa_project_id" jdbcType="INTEGER"/>
+ <result property="startDate" column="start_date" jdbcType="TIMESTAMP"/>
+ <result property="endDate" column="end_date" jdbcType="TIMESTAMP"/>
+ <result property="status" column="status" jdbcType="VARCHAR"/>
+ <result property="createUser" column="create_user" jdbcType="BIGINT"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="update_user" jdbcType="BIGINT"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ phase_id,phase_name,oa_project_id,
+ start_date,end_date,status,
+ create_user,create_time,update_user,
+ update_time,tenant_id
+ </sql>
+</mapper>
diff --git a/src/main/resources/mapper/oA/OaProjectPhaseTaskMapper.xml b/src/main/resources/mapper/oA/OaProjectPhaseTaskMapper.xml
new file mode 100644
index 0000000..cc029d9
--- /dev/null
+++ b/src/main/resources/mapper/oA/OaProjectPhaseTaskMapper.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.oA.mapper.OaProjectPhaseTaskMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.oA.pojo.OaProjectPhaseTask">
+ <id property="taskId" column="task_id" jdbcType="INTEGER"/>
+ <result property="taskName" column="task_name" jdbcType="VARCHAR"/>
+ <result property="phaseId" column="phase_id" jdbcType="INTEGER"/>
+ <result property="startDate" column="start_date" jdbcType="TIMESTAMP"/>
+ <result property="endDate" column="end_date" jdbcType="TIMESTAMP"/>
+ <result property="targetDate" column="target_date" jdbcType="TIMESTAMP"/>
+ <result property="targetValue" column="target_value" jdbcType="INTEGER"/>
+ <result property="currentValue" column="current_value" jdbcType="INTEGER"/>
+ <result property="unit" column="unit" jdbcType="VARCHAR"/>
+ <result property="status" column="status" jdbcType="VARCHAR"/>
+ <result property="completionRate" column="completion_rate" jdbcType="INTEGER"/>
+ <result property="createUser" column="create_user" jdbcType="BIGINT"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="update_user" jdbcType="BIGINT"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ task_id,task_name,phase_id,
+ start_date,end_date,target_date,
+ target_value,current_value,unit,
+ status,completion_rate,create_user,
+ create_time,update_user,update_time,
+ tenant_id
+ </sql>
+</mapper>
diff --git a/src/main/resources/mapper/officesupplies/OfficeSuppliesMapper.xml b/src/main/resources/mapper/officesupplies/OfficeSuppliesMapper.xml
new file mode 100644
index 0000000..7191aa9
--- /dev/null
+++ b/src/main/resources/mapper/officesupplies/OfficeSuppliesMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.officesupplies.mapper.OfficeSuppliesMapper">
+
+ <select id="listPage" resultType="com.ruoyi.officesupplies.pojo.OfficeSupplies">
+ select * from office_supplies
+ <where>
+ <if test="req.code != null and req.code != ''">
+ and code like concat('%',#{req.code},'%')
+ </if>
+ <if test="req.applicant != null and req.applicant != ''">
+ and applicant like concat('%',#{req.applicant},'%')
+ </if>
+ <if test="req.status != null and req.status != ''">
+ and status = #{req.status}
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/procurementrecord/GasTankWarningMapper.xml b/src/main/resources/mapper/procurementrecord/GasTankWarningMapper.xml
new file mode 100644
index 0000000..9f06e2c
--- /dev/null
+++ b/src/main/resources/mapper/procurementrecord/GasTankWarningMapper.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.procurementrecord.mapper.GasTankWarningMapper">
+
+
+ <select id="listPage" resultType="com.ruoyi.procurementrecord.pojo.GasTankWarning">
+ select * from gas_tank_warning
+ where 1=1
+ <if test="gasTankWarning.tankName != null and gasTankWarning.tankName != ''">
+ and tank_name like concat('%', #{gasTankWarning.tankName}, '%')
+ </if>
+ <if test="gasTankWarning.tankType != null">
+ and tank_type = #{gasTankWarning.tankType}
+ </if>
+ <if test="gasTankWarning.warningType != null">
+ and warning_type = #{gasTankWarning.warningType}
+ </if>
+ <if test="gasTankWarning.warningLevel != null">
+ and warning_level = #{gasTankWarning.warningLevel}
+ </if>
+
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/procurementrecord/InboundManagementMapper.xml b/src/main/resources/mapper/procurementrecord/InboundManagementMapper.xml
new file mode 100644
index 0000000..fbaa3e3
--- /dev/null
+++ b/src/main/resources/mapper/procurementrecord/InboundManagementMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.procurementrecord.mapper.InboundManagementMapper">
+
+ <select id="listPage" resultType="com.ruoyi.procurementrecord.pojo.InboundManagement">
+ select * from inbound_management
+ <where>
+ <if test="req.orderNo != null and req.orderNo != ''">
+ and order_no like concat('%',#{req.orderNo},'%')
+ </if>
+ <if test="req.supplierName != null and req.supplierName != ''">
+ and supplier_name like concat('%',#{req.supplierName},'%')
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementPlanMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementPlanMapper.xml
new file mode 100644
index 0000000..2403bf2
--- /dev/null
+++ b/src/main/resources/mapper/procurementrecord/ProcurementPlanMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.procurementrecord.mapper.ProcurementPlanMapper">
+
+ <select id="listPage" resultType="com.ruoyi.procurementrecord.pojo.ProcurementPlan">
+ SELECT * FROM procurement_plan
+ <where>
+ <if test="req.status != null and req.status != ''">
+ AND status = #{req.status}
+ </if>
+ <if test="req.planName != null and req.planName != ''">
+ AND plan_name LIKE CONCAT('%',#{req.planName},'%')
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementPriceManagementMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementPriceManagementMapper.xml
new file mode 100644
index 0000000..196adfa
--- /dev/null
+++ b/src/main/resources/mapper/procurementrecord/ProcurementPriceManagementMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.procurementrecord.mapper.ProcurementPriceManagementMapper">
+
+ <select id="listPage" resultType="com.ruoyi.procurementrecord.pojo.ProcurementPriceManagement">
+ SELECT * FROM procurement_price_management
+ <where>
+ <if test="req.productName != null and req.productName != ''">
+ AND product_name like concat('%',#{req.productName},'%')
+ </if>
+ <if test="req.supplierName != null and req.supplierName != ''">
+ AND supplier_name = #{req.supplierName}
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index 7d0f59b..c378c6a 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -11,6 +11,8 @@
t2.specification_model,
t2.unit,
t2.quantity,
+ t2.min_stock,
+ t2.warn_num,
t2.quantity as quantity0,
t2.tax_rate,
t2.tax_inclusive_unit_price,
@@ -38,14 +40,15 @@
t2.unit,
t2.tax_rate,
t2.tax_inclusive_unit_price,
- t2.tax_inclusive_total_price,
- t2.tax_exclusive_total_price,
+ (t1.inbound_num * t2.tax_inclusive_unit_price) as taxInclusiveTotalPrice,
+ (t1.inbound_num * t2.tax_inclusive_unit_price - t1.inbound_num * t2.tax_inclusive_unit_price * t2.tax_rate / 100) as taxExclusiveTotalPrice,
t1.inbound_batches,
t1.inbound_num,
t1.inbound_num as inboundNum0,
t1.create_time,
t1.update_time,
- t1.create_by
+ t1.create_by,
+ t2.warn_num
from procurement_record_storage t1
left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
@@ -53,6 +56,9 @@
1 = 1
<if test="req.supplierName != null and req.supplierName != ''">
and t3.supplier_name like concat('%',#{req.supplierName},'%')
+ </if>
+ <if test="req.timeStr != null and req.timeStr != ''">
+ and t1.create_time like concat('%',#{req.timeStr},'%')
</if>
</where>
</select>
@@ -89,16 +95,19 @@
t1.create_user,
t2.specification_model,
t2.unit,
+ t2.min_stock,
t2.tax_rate,
t2.tax_inclusive_unit_price,
t2.tax_inclusive_total_price,
t2.tax_exclusive_total_price,
t1.inbound_batches,
- t1.inbound_num,
- t1.inbound_num as inboundNum0,
+ sum(t1.inbound_num) as inboundNum,
+ sum(t1.inbound_num) as inboundNum0,
+ t1.inbound_num as totalInboundNum,
t1.create_time,
t1.update_time,
- t1.create_by
+ t1.create_by,
+ t2.warn_num
from procurement_record_storage t1
left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
@@ -107,7 +116,26 @@
<if test="req.supplierName != null and req.supplierName != ''">
and t3.supplier_name like concat('%',#{req.supplierName},'%')
</if>
+ <if test="req.timeStr != null and req.timeStr != ''">
+ and t1.create_time like concat('%',#{req.timeStr},'%')
+ </if>
+ <if test="req.reportDate != null">
+ and t1.create_time >= #{req.reportDate} and t1.create_time < DATE_ADD(#{req.reportDate}, INTERVAL 1 DAY)
+ </if>
+ <if test="req.startMonth != null">
+ and t1.create_time >= #{req.startMonth}
+ </if>
+ <if test="req.endMonth != null">
+ and t1.create_time <= #{req.endMonth}
+ </if>
+ <if test="req.startDate != null">
+ and t1.create_time >= #{req.startDate}
+ </if>
+ <if test="req.endDate != null">
+ and t1.create_time <= #{req.endDate}
+ </if>
</where>
+ group by t3.supplier_name,t2.product_category,t2.specification_model
</select>
<select id="listCopy" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
select
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
index a127b10..ec91c53 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
@@ -7,6 +7,7 @@
t3.supplier_name,
t2.product_category,
t1.id,
+ t1.code,
t2.specification_model,
t2.unit,
t2.tax_rate,
@@ -15,7 +16,8 @@
t2.tax_exclusive_total_price,
t1.inbound_num,
t1.create_time,
- t1.create_by
+ t1.create_by,
+ t2.warn_num
from procurement_record_out t1
left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
@@ -24,6 +26,9 @@
<if test="req.supplierName != null and req.supplierName != ''">
and t3.supplier_name like concat('%',#{req.supplierName},'%')
</if>
+ <if test="req.timeStr != null and req.timeStr != ''">
+ and t1.create_time like concat('%',#{req.timeStr},'%')
+ </if>
</where>
</select>
<select id="list" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
diff --git a/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml b/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
new file mode 100644
index 0000000..ce8eb39
--- /dev/null
+++ b/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.procurementrecord.mapper.ReturnManagementMapper">
+
+ <select id="listPage" resultType="com.ruoyi.procurementrecord.pojo.ReturnManagement">
+ select * from return_management
+ <where>
+ <if test="req.returnNo != null and req.returnNo != ''">
+ and return_no like concat('%',#{req.returnNo},'%')
+ </if>
+ <if test="req.returnType != null and req.returnType != ''">
+ and return_type = #{req.returnType}
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml b/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
index f30adaa..29b88f2 100644
--- a/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
+++ b/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
@@ -26,7 +26,7 @@
<where>
t3.type = 1
<if test="salesLedgerDto.schedulingUserName != null and salesLedgerDto.schedulingUserName != '' ">
- AND t4.scheduling_user_uame LIKE CONCAT('%',#{salesLedgerDto.schedulingUserName},'%')
+ AND t4.scheduling_user_name LIKE CONCAT('%',#{salesLedgerDto.schedulingUserName},'%')
</if>
<if test="salesLedgerDto.customerName != null and salesLedgerDto.customerName != '' ">
AND T1.customer_name LIKE CONCAT('%',#{salesLedgerDto.customerName},'%')
@@ -50,4 +50,4 @@
group by t4.id
order by t4.update_time desc
</select>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
index d245389..8e8cf1c 100644
--- a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
+++ b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
@@ -151,18 +151,24 @@
<select id="paymentHistoryListPage" resultType="com.ruoyi.purchase.dto.PaymentRegistrationDto">
SELECT
+ T1.id,
T1.payment_date,
T2.supplier_name,
T1.current_payment_amount,
T1.payment_method,
T3.nick_name AS registrant,
- T1.registrationt_date
+ T1.registrationt_date,
+ t4.purchase_contract_number,
+ t5.invoice_amount,
+ t5.invoice_number
FROM
payment_registration T1
+ LEFT JOIN purchase_ledger t4 ON t4.id = T1.purchase_ledger_id
LEFT JOIN
supplier_manage T2 ON T1.supplier_id = T2.id
LEFT JOIN
sys_user T3 ON T3.user_id = T1.registrant_id
+ left join ticket_registration t5 on t5.purchase_ledger_id = T1.purchase_ledger_id
<where>
<if test="params.searchText != null and params.searchText != '' ">
AND T2.supplier_name LIKE CONCAT('%',#{params.searchText},'%')
@@ -173,6 +179,9 @@
<if test="params.paymentDateEnd != null and params.paymentDateEnd !='' ">
AND T1.payment_date <= date_format(#{params.paymentDateEnd},'%Y-%m-%d')
</if>
+ <if test="params.purchaseContractNumber != null and params.purchaseContractNumber !='' ">
+ AND t4.purchase_contract_number LIKE CONCAT('%',#{params.purchaseContractNumber},'%')
+ </if>
</where>
ORDER BY T1.payment_date,T1.create_time DESC
</select>
diff --git a/src/main/resources/mapper/purchase/ProductRecordMapper.xml b/src/main/resources/mapper/purchase/ProductRecordMapper.xml
index 6db5f75..5c338d7 100644
--- a/src/main/resources/mapper/purchase/ProductRecordMapper.xml
+++ b/src/main/resources/mapper/purchase/ProductRecordMapper.xml
@@ -13,6 +13,7 @@
pm.model AS product_model,
pl.purchase_contract_number,
pl.supplier_name,
+ pl.project_name,
pr.*,
tr.invoice_number,
tr.iss_uer_id,
diff --git a/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml b/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml
index b8f9aa2..0c93e4d 100644
--- a/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml
@@ -114,7 +114,7 @@
T4.id,T4.customer_name ,
SUM(invoice_total) AS invoice_total,
IFNULL( SUM(T5.receipt_payment_amount) , 0 ) AS receipt_payment_amount,
- IFNULL((SUM(invoice_total) - SUM(T5.receipt_payment_amount)),0) AS unReceipt_payment_amount
+ IFNULL((IFNULL(SUM(invoice_total),0) - IFNULL(SUM(T5.receipt_payment_amount),0)),0) AS unReceipt_payment_amount
FROM
invoice_ledger T1
LEFT JOIN invoice_registration_product T2 ON T1.invoice_registration_product_id = T2.id
diff --git a/src/main/resources/mapper/sales/PaymentShippingMapper.xml b/src/main/resources/mapper/sales/PaymentShippingMapper.xml
new file mode 100644
index 0000000..749c8ba
--- /dev/null
+++ b/src/main/resources/mapper/sales/PaymentShippingMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sales.mapper.PaymentShippingMapper">
+
+ <select id="listPage" resultType="com.ruoyi.sales.pojo.PaymentShipping">
+ select * from payment_shipping
+ <where>
+ <if test="req.orderNo != null and req.orderNo != ''">
+ and order_no like concat('%',#{req.orderNo},'%')
+ </if>
+ <if test="req.paymentStatus != null and req.paymentStatus != ''">
+ and payment_status = #{req.paymentStatus}
+ </if>
+ <if test="req.shippingStatus != null and req.shippingStatus != ''">
+ and shipping_status = #{req.shippingStatus}
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
index df06df6..a52038b 100644
--- a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
+++ b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -95,17 +95,23 @@
BY invoice_ledger_id
) T6 ON T1.id = T6.invoice_ledger_id
<where>
- <if test="c.customerName != null and c.customerName !=''">
- AND T3.customer_name LIKE CONCAT('%',#{c.customerName},'%')
+ <if test="req.customerName != null and req.customerName !=''">
+ AND T3.customer_name LIKE CONCAT('%',#{req.customerName},'%')
</if>
- <if test="c.invoiceLedgerId != null">
- AND T1.id = #{c.invoiceLedgerId}
+ <if test="req.invoiceLedgerId != null">
+ AND T1.id = #{req.invoiceLedgerId}
</if>
- <if test="c.customerContractNo != null and c.customerContractNo !=''">
- AND T3.customer_contract_no LIKE CONCAT('%',#{c.customerContractNo},'%')
+ <if test="req.customerContractNo != null and req.customerContractNo !=''">
+ AND T3.customer_contract_no LIKE CONCAT('%',#{req.customerContractNo},'%')
</if>
- <if test="c.projectName != null and c.projectName !=''">
- AND T3.project_name LIKE CONCAT('%',#{c.projectName},'%')
+ <if test="req.projectName != null and req.projectName !=''">
+ AND T3.project_name LIKE CONCAT('%',#{req.projectName},'%')
+ </if>
+ <if test="req.invoiceDateStart != null and req.invoiceDateStart != '' ">
+ AND T1.invoice_date >= DATE_FORMAT(#{req.invoiceDateStart},'%Y-%m-%d')
+ </if>
+ <if test="req.invoiceDateEnd != null and req.invoiceDateEnd != '' ">
+ AND T1.invoice_date <= DATE_FORMAT(#{req.invoiceDateEnd},'%Y-%m-%d')
</if>
</where>
ORDER BY T2.create_time DESC
@@ -183,6 +189,7 @@
<select id="receiptPaymentHistoryListPage" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto">
SELECT
+ T1.id,
T1.receipt_payment_date,
T5.customer_name,
T1.receipt_payment_amount,
diff --git a/src/main/resources/mapper/sales/SalesQuotationMapper.xml b/src/main/resources/mapper/sales/SalesQuotationMapper.xml
new file mode 100644
index 0000000..a39cd45
--- /dev/null
+++ b/src/main/resources/mapper/sales/SalesQuotationMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sales.mapper.SalesQuotationMapper">
+ <select id="listPage" resultType="com.ruoyi.sales.dto.SalesQuotationDto">
+ SELECT * FROM sales_quotation
+ WHERE 1=1
+ <if test="salesQuotationDto.quotationNo != null and salesQuotationDto.quotationNo != '' ">
+ AND quotation_no LIKE CONCAT('%',#{salesQuotationDto.quotationNo},'%')
+ </if>
+ <if test="salesQuotationDto.customer != null and salesQuotationDto.customer != '' ">
+ AND customer = #{salesQuotationDto.customer}
+ </if>
+ <if test="salesQuotationDto.status != null and salesQuotationDto.status != '' ">
+ AND status = #{salesQuotationDto.status}
+ </if>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/sales/SalesQuotationProductMapper.xml b/src/main/resources/mapper/sales/SalesQuotationProductMapper.xml
new file mode 100644
index 0000000..fa3745e
--- /dev/null
+++ b/src/main/resources/mapper/sales/SalesQuotationProductMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sales.mapper.SalesQuotationProductMapper">
+<!-- <select id="selectBySalesQuotationIds" resultType="com.ruoyi.sales.pojo.SalesQuotationProduct">-->
+<!-- select * from sales_quotation_product where sales_quotation_id in-->
+<!-- <foreach collection="salesQuotationIds" item="salesQuotationId" open="(" close=")" separator=",">-->
+<!-- #{salesQuotationId}-->
+<!-- </foreach>-->
+<!-- </select>-->
+ <select id="selectBySalesQuotationId" resultType="com.ruoyi.sales.pojo.SalesQuotationProduct">
+ select * from sales_quotation_product where sales_quotation_id = #{id}
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/sales/SalespersonManagementMapper.xml b/src/main/resources/mapper/sales/SalespersonManagementMapper.xml
new file mode 100644
index 0000000..3a2049d
--- /dev/null
+++ b/src/main/resources/mapper/sales/SalespersonManagementMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sales.mapper.SalespersonManagementMapper">
+
+ <select id="listPage" resultType="com.ruoyi.sales.pojo.SalespersonManagement">
+ select * from salesperson_management
+ <where>
+ <if test="req.name != null and req.name != ''">
+ and `name` like concat('%',#{req.name},'%')
+ </if>
+ <if test="req.department != null and req.department != ''">
+ and department = #{req.department}
+ </if>
+ <if test="req.status != null and req.status != ''">
+ and status = #{req.status}
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/sales/ShippingInfoMapper.xml b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
new file mode 100644
index 0000000..efe93cf
--- /dev/null
+++ b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sales.mapper.ShippingInfoMapper">
+
+ <select id="listPage" resultType="com.ruoyi.sales.pojo.ShippingInfo">
+ SELECT
+ s.id,
+ s.sales_ledger_id,
+ s.shipping_date,
+ s.shipping_car_number,
+ s.create_time,
+ s.update_time,
+ s.create_user,
+ s.update_user,
+ s.tenant_id,
+ sl.sales_contract_no,
+ sl.customer_name
+ FROM shipping_info s
+ LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
+ WHERE 1=1
+ <if test="req.salesContractNo != null and req.salesContractNo != ''">
+ AND sl.sales_contract_no LIKE CONCAT('%',#{req.salesContractNo},'%')
+ </if>
+ <if test="req.shippingCarNumber != null and req.shippingCarNumber != ''">
+ AND s.shipping_car_number LIKE CONCAT('%',#{req.shippingCarNumber},'%')
+ </if>
+ </select>
+ <select id="listAll" resultType="com.ruoyi.sales.pojo.ShippingInfo">
+ SELECT
+ s.id,
+ s.sales_ledger_id,
+ s.shipping_date,
+ s.shipping_car_number,
+ s.create_time,
+ s.update_time,
+ s.create_user,
+ s.update_user,
+ s.tenant_id,
+ sl.sales_contract_no,
+ sl.customer_name
+ FROM shipping_info s
+ LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/staff/HolidayApplicationMapper.xml b/src/main/resources/mapper/staff/HolidayApplicationMapper.xml
new file mode 100644
index 0000000..b0bda29
--- /dev/null
+++ b/src/main/resources/mapper/staff/HolidayApplicationMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ruoyi.staff.mapper.HolidayApplicationMapper">
+
+
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml b/src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml
new file mode 100644
index 0000000..13d3513
--- /dev/null
+++ b/src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ruoyi.staff.mapper.PersonalAttendanceRecordsMapper">
+
+
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml b/src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml
index 7b11511..d720d37 100644
--- a/src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml
+++ b/src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml
@@ -16,6 +16,7 @@
<if test="staffJoinLeaveRecord.entryDateEnd != null and staffJoinLeaveRecord.entryDateEnd != '' ">
and contract_end_time like concat('%',#{staffJoinLeaveRecord.entryDateEnd},'%')
</if>
+ order by create_time desc
</select>
<select id="staffJoinLeaveRecordList" resultType="com.ruoyi.staff.pojo.StaffJoinLeaveRecord">
SELECT
diff --git a/src/main/resources/mapper/staff/StaffSchedulingMapper.xml b/src/main/resources/mapper/staff/StaffSchedulingMapper.xml
new file mode 100644
index 0000000..1a32ef1
--- /dev/null
+++ b/src/main/resources/mapper/staff/StaffSchedulingMapper.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.staff.mapper.StaffSchedulingMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.staff.pojo.StaffScheduling">
+ <id property="id" column="id" jdbcType="INTEGER"/>
+ <result property="staffId" column="staff_id" jdbcType="INTEGER"/>
+ <result property="department" column="department" jdbcType="INTEGER"/>
+ <result property="shiftType" column="shift_type" jdbcType="INTEGER"/>
+ <result property="workDate" column="work_date" jdbcType="DATE"/>
+ <result property="workStartTime" column="work_start_time" jdbcType="TIMESTAMP"/>
+ <result property="workEndTime" column="work_end_time" jdbcType="TIMESTAMP"/>
+ <result property="workHours" column="work_hours" jdbcType="DECIMAL"/>
+ <result property="status" column="status" jdbcType="INTEGER"/>
+ <result property="remark" column="remark" jdbcType="VARCHAR"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="createUser" column="create_user" jdbcType="BIGINT"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="update_user" jdbcType="BIGINT"/>
+ <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,staff_id,department,
+ shift_type,work_date,work_start_time,
+ work_end_time,work_hours,status,
+ remark,create_time,create_user,
+ update_time,update_user,tenant_id
+ </sql>
+ <select id="listPage" resultType="com.ruoyi.staff.dto.StaffSchedulingDto">
+ SELECT
+ t1.*,t2.staff_name as 'staff_name' ,t2.staff_no as 'staff_no'
+ FROM staff_scheduling t1
+ left join staff_join_leave_record t2 on t1.staff_id = t2.id
+ where 1=1
+ <if test="vo.staffName != null and vo.staffName != '' ">
+ AND t2.staff_name LIKE CONCAT('%', #{vo.staffName}, '%')
+ </if>
+ <if test="vo.shiftType != null and vo.shiftType != '' ">
+ AND t1.shift_type = #{vo.shiftType}
+ </if>
+ <if test="vo.startDate != null ">
+ AND t1.work_date >= DATE_FORMAT(#{vo.startDate},'%Y-%m-%d')
+ </if>
+ <if test="vo.endDate != null ">
+ AND t1.work_date <![CDATA[ <= ]]> DATE_FORMAT(#{vo.endDate},'%Y-%m-%d')
+ </if>
+ ORDER BY t1.create_time DESC
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/system/SysUserDeptMapper.xml b/src/main/resources/mapper/system/SysUserDeptMapper.xml
index 81c1365..bcf7b01 100644
--- a/src/main/resources/mapper/system/SysUserDeptMapper.xml
+++ b/src/main/resources/mapper/system/SysUserDeptMapper.xml
@@ -19,7 +19,7 @@
</if>
<if test="userDeptVo.userName != null and userDeptVo.userName != '' ">
AND T1.user_id IN (
- SELECT user_id FROM sys_user WHERE nick_name LIKE CONCAT('%',#{userDeptVo.userName},'%')
+ SELECT user_id FROM sys_user WHERE user_name LIKE CONCAT('%',#{userDeptVo.userName},'%')
)
</if>
</where>
diff --git a/src/main/resources/mapper/system/SysUserMapper.xml b/src/main/resources/mapper/system/SysUserMapper.xml
index e1a12c6..f77e62c 100644
--- a/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/src/main/resources/mapper/system/SysUserMapper.xml
@@ -158,6 +158,28 @@
#{item}
</foreach>
</select>
+ <select id="selectList" resultType="com.ruoyi.project.system.domain.SysUser">
+ SELECT user_id, nick_name FROM sys_user
+ <where>
+ <if test="list != null and list.size() > 0">
+ user_id IN
+ <foreach item="id" collection="list" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+ <if test="list == null or list.size() == 0">
+ 1=0 <!-- 绌哄垪琛ㄦ椂杩斿洖绌虹粨鏋� -->
+ </if>
+ </where>
+ </select>
+ <select id="selectUsersByIds" resultType="com.ruoyi.project.system.domain.SysUser">
+ SELECT user_id, nick_name
+ FROM sys_user
+ WHERE user_id IN
+ <foreach collection="userIds" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </select>
<insert id="insertUser" parameterType="com.ruoyi.project.system.domain.SysUser" useGeneratedKeys="true" keyProperty="userId">
insert into sys_user(
diff --git a/src/main/resources/mapper/warehouse/DocumentClassificationMapper.xml b/src/main/resources/mapper/warehouse/DocumentClassificationMapper.xml
new file mode 100644
index 0000000..e758e4f
--- /dev/null
+++ b/src/main/resources/mapper/warehouse/DocumentClassificationMapper.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.warehouse.mapper.DocumentClassificationMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.warehouse.pojo.DocumentClassification">
+ <id property="id" column="id" />
+ <result property="category" column="category" />
+ <result property="parentId" column="parent_id" />
+ <result property="createTime" column="create_time" />
+ <result property="createUser" column="create_user" />
+ <result property="updateTime" column="update_time" />
+ <result property="updateUser" column="update_user" />
+ <result property="tenantId" column="tenant_id" />
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,category,parent_id,
+ create_time,create_user,update_time,
+ update_user,tenant_id
+ </sql>
+</mapper>
diff --git a/src/main/resources/mapper/warehouse/DocumentationBorrowManagementMapper.xml b/src/main/resources/mapper/warehouse/DocumentationBorrowManagementMapper.xml
new file mode 100644
index 0000000..18b2082
--- /dev/null
+++ b/src/main/resources/mapper/warehouse/DocumentationBorrowManagementMapper.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.warehouse.mapper.DocumentationBorrowManagementMapper">
+
+<!-- <resultMap id="BaseResultMap" type="com.ruoyi.warehouse.pojo.DocumentationBorrowManagement">-->
+<!-- <id property="id" column="id"/>-->
+<!-- <result property="documentationId" column="documentation_id" />-->
+<!-- <result property="borrowerId" column="borrower_id" />-->
+<!-- <result property="borrowPurpose" column="borrow_purpose" />-->
+<!-- <result property="borrowDate" column="borrow_date"/>-->
+<!-- <result property="dueReturnDate" column="due_return_date" />-->
+<!-- <result property="returnDate" column="return_date"/>-->
+<!-- <result property="borrowStatus" column="borrow_status" />-->
+<!-- <result property="remark" column="remark"/>-->
+<!-- <result property="createTime" column="create_time"/>-->
+<!-- <result property="createUser" column="create_user"/>-->
+<!-- <result property="updateTime" column="update_time"/>-->
+<!-- <result property="updateUser" column="update_user"/>-->
+<!-- <result property="tenantId" column="tenant_id"/>-->
+<!-- </resultMap>-->
+
+<!-- <sql id="Base_Column_List">-->
+<!-- id,documentation_id,borrower_id,-->
+<!-- borrow_purpose,borrow_date,due_return_date,-->
+<!-- return_date,borrow_status,remark,-->
+<!-- create_time,create_user,update_time,-->
+<!-- update_user,tenant_id-->
+<!-- </sql>-->
+ <select id="listPage" resultType="com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto">
+ select dbm.*,doc.doc_name
+ from documentation_borrow_management dbm
+ LEFT JOIN documentation doc on doc.id = dbm.documentation_id
+ where 1=1
+ <if test="documentationBorrowManagement.borrowStatus != null">
+ and borrow_status = #{documentationBorrowManagement.borrowStatus}
+ </if>
+ <if test="documentationBorrowManagement.documentationId != null">
+ and documentation_id = #{documentationBorrowManagement.documentationId}
+ </if>
+ <if test="documentationBorrowManagement.borrower != null">
+ and borrower like concat('%',#{documentationBorrowManagement.borrower},'%')
+ </if>
+ <if test="documentationBorrowManagement.returner != null">
+ and returner like concat('%',#{documentationBorrowManagement.returner},'%')
+ </if>
+ <if test="documentationBorrowManagement.entryDateStart != null and documentationBorrowManagement.entryDateStart != ''">
+ and borrow_date >= DATE_FORMAT(#{documentationBorrowManagement.entryDateStart},'%Y-%m-%d')
+ </if>
+ <if test="documentationBorrowManagement.entryDateEnd != null and documentationBorrowManagement.entryDateEnd != ''">
+ and borrow_date <= DATE_FORMAT(#{documentationBorrowManagement.entryDateEnd},'%Y-%m-%d')
+ </if>
+ </select>
+ <select id="export" resultType="com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto">
+ select dbm.*,doc.doc_name
+ from documentation_borrow_management dbm
+ LEFT JOIN documentation doc on doc.id = dbm.documentation_id
+ where 1=1
+ <if test="documentationBorrowManagement.borrowStatus != null">
+ and borrow_status = #{documentationBorrowManagement.borrowStatus}
+ </if>
+ <if test="documentationBorrowManagement.documentationId != null">
+ and documentation_id = #{documentationBorrowManagement.documentationId}
+ </if>
+ <if test="documentationBorrowManagement.borrower != null">
+ and borrower like concat('%',#{documentationBorrowManagement.borrower},'%')
+ </if>
+ <if test="documentationBorrowManagement.returner != null">
+ and returner like concat('%',#{documentationBorrowManagement.returner},'%')
+ </if>
+ <if test="documentationBorrowManagement.entryDateStart != null and documentationBorrowManagement.entryDateStart != ''">
+ and borrow_date >= DATE_FORMAT(#{documentationBorrowManagement.entryDateStart},'%Y-%m-%d')
+ </if>
+ <if test="documentationBorrowManagement.entryDateEnd != null and documentationBorrowManagement.entryDateEnd != ''">
+ and borrow_date <= DATE_FORMAT(#{documentationBorrowManagement.entryDateEnd},'%Y-%m-%d')
+ </if>
+ </select>
+ <select id="list" resultType="com.ruoyi.warehouse.dto.DocumentationBorrowManagementDto">
+ select dbm.*,doc.doc_name
+ from documentation_borrow_management dbm
+ LEFT JOIN documentation doc on doc.id = dbm.documentation_id
+ <if test="ew != null">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/warehouse/DocumentationFileMapper.xml b/src/main/resources/mapper/warehouse/DocumentationFileMapper.xml
new file mode 100644
index 0000000..a8b74f9
--- /dev/null
+++ b/src/main/resources/mapper/warehouse/DocumentationFileMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ruoyi.warehouse.mapper.DocumentationFileMapper">
+ <select id="documentationFileListPage" resultType="com.ruoyi.warehouse.pojo.DocumentationFile">
+ SELECT
+ *
+ FROM documentation_file
+ where
+ 1=1
+ <if test="documentationFile.name != null and documentationFile.name != '' ">
+ AND name = #{documentationFile.name}
+ </if>
+ <if test="documentationFile.documentationId != null">
+ AND documentation_id = #{documentationFile.documentationId}
+ </if>
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/warehouse/DocumentationMapper.xml b/src/main/resources/mapper/warehouse/DocumentationMapper.xml
new file mode 100644
index 0000000..91f17a9
--- /dev/null
+++ b/src/main/resources/mapper/warehouse/DocumentationMapper.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.warehouse.mapper.DocumentationMapper">
+
+ <select id="listPage" resultType="com.ruoyi.warehouse.dto.DocumentationDto">
+ SELECT
+ doc.*,
+ dc.category,
+ CONCAT(
+ w.warehouse_name, '-',
+ wgs.name, '-',
+ wgsr.row, '灞�-',
+ wgsr.col, '鍒�'
+ ) AS location_info -- 鍚堝苟鍚庣殑瀛楁鍚�
+ FROM documentation doc
+ LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
+ LEFT JOIN warehouse_goods_shelves_rowcol wgsr ON wgsr.id = doc.warehouse_goods_shelves_rowcol_id
+ LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
+ LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
+ where 1=1
+ <if test="documentation.documentClassificationId != null">
+ and doc.document_classification_id = #{documentation.documentClassificationId}
+ </if>
+ <if test="documentation.docName != null">
+ and doc.doc_name = #{documentation.docName}
+ </if>
+ <if test="documentation.docNumber != null">
+ and doc.doc_number = #{documentation.docNumber}
+ </if>
+ <if test="documentation.id != null">
+ and doc.id = #{documentation.id}
+ </if>
+ </select>
+ <select id="listByDocumentClassificationId" resultType="com.ruoyi.warehouse.dto.DocumentationDto">
+ SELECT
+ doc.*,
+ dc.category,
+ CONCAT(
+ w.warehouse_name, '-',
+ wgs.name, '-',
+ wgsr.row, '灞�-',
+ wgsr.col, '鍒�'
+ ) AS location_info -- 鍚堝苟鍚庣殑瀛楁鍚�
+ FROM documentation doc
+ LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
+ LEFT JOIN warehouse_goods_shelves_rowcol wgsr ON wgsr.id = doc.warehouse_goods_shelves_rowcol_id
+ LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
+ LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
+ where doc.document_classification_id = #{documentClassificationId}
+ </select>
+ <select id="list" resultType="com.ruoyi.warehouse.dto.DocumentationDto">
+ SELECT
+ doc.*,
+ dc.category,
+ CONCAT(
+ w.warehouse_name, '-',
+ wgs.name, '-',
+ wgsr.row, '灞�-',
+ wgsr.col, '鍒�'
+ ) AS location_info -- 鍚堝苟鍚庣殑瀛楁鍚�
+ FROM documentation doc
+ LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
+ LEFT JOIN warehouse_goods_shelves_rowcol wgsr ON wgsr.id = doc.warehouse_goods_shelves_rowcol_id
+ LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
+ LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
+ </select>
+ <select id="listBywarehouseGoodsShelvesRowcolId" resultType="com.ruoyi.warehouse.dto.DocumentationDto">
+ SELECT
+ doc.*,
+ dc.category,
+ CONCAT(
+ w.warehouse_name, '-',
+ wgs.name, '-',
+ wgsr.row, '灞�-',
+ wgsr.col, '鍒�'
+ ) AS location_info -- 鍚堝苟鍚庣殑瀛楁鍚�
+ FROM documentation doc
+ LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
+ LEFT JOIN warehouse_goods_shelves_rowcol wgsr ON wgsr.id = doc.warehouse_goods_shelves_rowcol_id
+ LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
+ LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
+ where doc.warehouse_goods_shelves_rowcol_id = #{warehouseGoodsShelvesRowcolId}
+ </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/warehouse/DocumentationReturnManagementMapper.xml b/src/main/resources/mapper/warehouse/DocumentationReturnManagementMapper.xml
new file mode 100644
index 0000000..06202f8
--- /dev/null
+++ b/src/main/resources/mapper/warehouse/DocumentationReturnManagementMapper.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.warehouse.mapper.DocumentationReturnManagementMapper">
+
+
+ <select id="listPage" resultType="com.ruoyi.warehouse.dto.DocumentationReturnManagementDto">
+ select dbm.*,doc.doc_name
+ from documentation_return_management dbm
+ LEFT JOIN documentation doc on doc.id = dbm.documentation_id
+ where 1=1
+ <if test="documentationReturnManagement.borrowStatus != null">
+ and borrow_status = #{documentationReturnManagement.borrowStatus}
+ </if>
+ <if test="documentationReturnManagement.documentationId != null">
+ and documentation_id = #{documentationReturnManagement.documentationId}
+ </if>
+ <if test="documentationReturnManagement.borrower != null">
+ and borrower like concat('%',#{documentationReturnManagement.borrower},'%')
+ </if>
+ <if test="documentationReturnManagement.returner != null">
+ and returner like concat('%',#{documentationReturnManagement.returner},'%')
+ </if>
+ <if test="documentationReturnManagement.entryDateStart != null and documentationReturnManagement.entryDateStart != ''">
+ and return_date >= DATE_FORMAT(#{documentationReturnManagement.entryDateStart},'%Y-%m-%d')
+ </if>
+ <if test="documentationReturnManagement.entryDateEnd != null and documentationReturnManagement.entryDateEnd != ''">
+ and return_date <= DATE_FORMAT(#{documentationReturnManagement.entryDateEnd},'%Y-%m-%d')
+ </if>
+ </select>
+
+ <select id="exportrevent" resultType="com.ruoyi.warehouse.dto.ReturnExportDto">
+ select dbm.*,doc.doc_name
+ from documentation_return_management dbm
+ LEFT JOIN documentation doc on doc.id = dbm.documentation_id
+ where dbm.returner IS NOT NULL
+ <if test="documentationReturnManagement.borrowStatus != null">
+ and borrow_status = #{documentationReturnManagement.borrowStatus}
+ </if>
+ <if test="documentationReturnManagement.documentationId != null">
+ and documentation_id = #{documentationReturnManagement.documentationId}
+ </if>
+ <if test="documentationReturnManagement.borrower != null">
+ and borrower like concat('%',#{documentationReturnManagement.borrower},'%')
+ </if>
+ <if test="documentationReturnManagement.returner != null">
+ and returner like concat('%',#{documentationReturnManagement.returner},'%')
+ </if>
+ <if test="documentationReturnManagement.entryDateStart != null and documentationReturnManagement.entryDateStart != ''">
+ and return_date >= DATE_FORMAT(#{documentationReturnManagement.entryDateStart},'%Y-%m-%d')
+ </if>
+ <if test="documentationReturnManagement.entryDateEnd != null and documentationReturnManagement.entryDateEnd != ''">
+ and return_date <= DATE_FORMAT(#{documentationReturnManagement.entryDateEnd},'%Y-%m-%d')
+ </if>
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/warehouse/WarehouseGoodsShelvesMapper.xml b/src/main/resources/mapper/warehouse/WarehouseGoodsShelvesMapper.xml
new file mode 100644
index 0000000..8493e2d
--- /dev/null
+++ b/src/main/resources/mapper/warehouse/WarehouseGoodsShelvesMapper.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesMapper">
+
+
+ <select id="findList" resultType="com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto">
+ SELECT
+ doc.doc_name,
+ doc.doc_number,
+ wgs.*,
+ w.warehouse_name,
+ dc.category
+ FROM warehouse_goods_shelves_rowcol wgsr
+ LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
+ LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
+ LEFT JOIN documentation doc ON doc.warehouse_goods_shelves_rowcol_id = wgsr.id
+ LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
+ <where>
+ 1=1
+ <if test="warehouseGoodsShelves.goodsShelvesName != null and warehouseGoodsShelves.goodsShelvesName != ''">
+ and wgs.goods_shelves_name like concat('%',#{warehouseGoodsShelves.goodsShelvesName},'%')
+ </if>
+ <if test="warehouseGoodsShelves.warehouseId != null">
+ and wgs.warehouse_id = #{warehouseGoodsShelves.warehouseId}
+ </if>
+ <if test="warehouseGoodsShelves.id != null">
+ and wgs.id = #{warehouseGoodsShelves.id}
+ </if>
+ </where>
+ </select>
+ <select id="listAll" resultType="com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto">
+ select wgs.*,w.warehouse_name from warehouse_goods_shelves wgs
+ LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
+ <where>
+ 1=1
+ <if test="warehouseGoodsShelves.goodsShelvesName != null and warehouseGoodsShelves.goodsShelvesName != ''">
+ and goods_shelves_name like concat('%',#{warehouseGoodsShelves.goodsShelvesName},'%')
+ </if>
+ <if test="warehouseGoodsShelves.warehouseId != null">
+ and warehouse_id = #{warehouseGoodsShelves.warehouseId}
+ </if>
+ <if test="warehouseGoodsShelves.id != null">
+ and id = #{warehouseGoodsShelves.id}
+ </if>
+ </where>
+ </select>
+
+
+</mapper>
diff --git a/src/main/resources/mapper/warehouse/WarehouseGoodsShelvesRowcolMapper.xml b/src/main/resources/mapper/warehouse/WarehouseGoodsShelvesRowcolMapper.xml
new file mode 100644
index 0000000..87dfa32
--- /dev/null
+++ b/src/main/resources/mapper/warehouse/WarehouseGoodsShelvesRowcolMapper.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesRowcolMapper">
+ <select id="findList" resultType="com.ruoyi.warehouse.dto.WarehouseGoodsShelvesRowcolDto">
+-- SELECT
+-- wgsr.*,
+-- w.warehouse_name,
+-- wgs.name,
+-- dc.category
+-- FROM warehouse_goods_shelves_rowcol wgsr
+-- LEFT JOIN documentation doc ON doc.warehouse_goods_shelves_rowcol_id = wgsr.id
+-- LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
+-- LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
+-- LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
+ SELECT
+ wgsr.*,
+ w.warehouse_name,
+ wgs.name
+ FROM warehouse_goods_shelves_rowcol wgsr
+ LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
+ LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
+ <where>
+ 1=1
+ <if test="warehouseGoodsShelvesRowcol.row != null">
+ and wgsr.row = #{warehouseGoodsShelvesRowcol.row}
+ </if>
+ <if test="warehouseGoodsShelvesRowcol.col != null">
+ and wgsr.col = #{warehouseGoodsShelvesRowcol.col}
+ </if>
+ <if test="warehouseGoodsShelvesRowcol.warehouseGoodsShelvesId != null">
+ and wgsr.warehouse_goods_shelves_id = #{warehouseGoodsShelvesRowcol.warehouseGoodsShelvesId}
+ </if>
+ <if test="warehouseGoodsShelvesRowcol.id != null">
+ and wgsr.id = #{warehouseGoodsShelvesRowcol.id}
+ </if>
+ </where>
+ </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/warehouse/WarehouseMapper.xml b/src/main/resources/mapper/warehouse/WarehouseMapper.xml
new file mode 100644
index 0000000..dd45695
--- /dev/null
+++ b/src/main/resources/mapper/warehouse/WarehouseMapper.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.warehouse.mapper.WarehouseMapper">
+
+
+ <select id="findList" resultType="com.ruoyi.warehouse.dto.WarehouseDto">
+ SELECT
+ w.*,
+ wgs.name,
+ doc.doc_name,
+ doc.doc_number,
+ dc.category
+ FROM warehouse_goods_shelves_rowcol wgsr
+ LEFT JOIN warehouse_goods_shelves wgs ON wgs.id = wgsr.warehouse_goods_shelves_id
+ LEFT JOIN warehouse w ON w.id = wgs.warehouse_id
+ LEFT JOIN documentation doc ON doc.warehouse_goods_shelves_rowcol_id = wgsr.id
+ LEFT JOIN document_classification dc ON doc.document_classification_id = dc.id
+ <where>
+ 1=1
+ <if test="warehouse.warehouseName != null">
+ and w.warehouse_name like concat('%',#{warehouse.warehouseName},'%')
+ </if>
+ <if test="warehouse.id != null">
+ and w.id = #{warehouse.id}
+ </if>
+ </where>
+ </select>
+ <select id="listAll" resultType="com.ruoyi.warehouse.pojo.Warehouse">
+ select * from warehouse
+ <where>
+ 1=1
+ <if test="warehouse.warehouseName != null">
+ and warehouse_name like concat('%',#{warehouse.warehouseName},'%')
+ </if>
+ <if test="warehouse.id != null">
+ and w.id = #{warehouse.id}
+ </if>
+ </where>
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/waterrecord/WaterRecordMapper.xml b/src/main/resources/mapper/waterrecord/WaterRecordMapper.xml
new file mode 100644
index 0000000..e0a9135
--- /dev/null
+++ b/src/main/resources/mapper/waterrecord/WaterRecordMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.waterrecord.mapper.WaterRecordMapper">
+
+ <select id="listPage" resultType="com.ruoyi.waterrecord.pojo.WaterRecord">
+ select
+ t1.*,
+ t2.device_name
+ from water_record t1
+ left join device_ledger t2 on t1.device_model = t2.device_model
+ <where>
+ <if test="req.deviceName != null and req.deviceName != ''">
+ and t2.device_name like concat('%',#{req.deviceName},'%')
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/mybatis-config.xml b/src/main/resources/mybatis/mybatis-config.xml
index 4b8c496..ee4d2a1 100644
--- a/src/main/resources/mybatis/mybatis-config.xml
+++ b/src/main/resources/mybatis/mybatis-config.xml
@@ -13,6 +13,7 @@
<setting name="defaultExecutorType" value="SIMPLE" />
<!-- 鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇 -->
<setting name="logImpl" value="SLF4J" />
+<!-- <setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl" />-->
<!-- 浣跨敤椹煎嘲鍛藉悕娉曡浆鎹㈠瓧娈� -->
<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
</settings>
diff --git a/src/main/resources/static/report-template.docx b/src/main/resources/static/report-template.docx
index 0bc9746..6824a62 100644
--- a/src/main/resources/static/report-template.docx
+++ b/src/main/resources/static/report-template.docx
Binary files differ
--
Gitblit v1.9.3