From 8d85246f061e3da623c7b9eb4e323ee724b4de0b Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 13 一月 2025 13:20:01 +0800
Subject: [PATCH] 设备cnas代码搬迁
---
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExternalApplyServiceImpl.java | 163
cnas-server/src/main/java/com/yuanchu/mom/mapper/ReservationMapper.java | 23
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetricRecord.java | 89
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAccidentReport.java | 120
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceLease.java | 47
cnas-server/src/main/resources/static/word/device-scrapped.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/service/IncidentSparePartsService.java | 7
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExternalApplyDto.java | 12
cnas-server/src/main/resources/mapper/IncidentReportMapper.xml | 118
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExaminePlanDetails.java | 76
cnas-server/src/main/java/com/yuanchu/mom/service/impl/OperationInstructionServiceImpl.java | 27
cnas-server/src/main/java/com/yuanchu/mom/service/impl/QrShowServiceImpl.java | 218
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceBreakdownMaintenanceMapper.java | 27
cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceMetricService.java | 7
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenancePlanDetailsMapper.java | 25
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceLogServiceImpl.java | 11
cnas-server/src/main/resources/static/word/device-status.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceInspectionRecordService.java | 69
cnas-server/src/main/resources/static/word/maintenance-plan.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordContrastServiceImpl.java | 195
cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentSparePartsServiceImpl.java | 11
cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceMaintenanceExport.java | 45
cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentAcceptanceCheckServiceImpl.java | 11
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceLogController.java | 50
cnas-server/src/main/resources/mapper/DeviceExamineRecordContrastDetailsMapper.xml | 22
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceTraceabilityManagement.java | 77
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceFaultController.java | 50
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExport.java | 19
cnas-server/src/main/java/com/yuanchu/mom/dto/InstructionFileDto.java | 44
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordDetailMapper.java | 16
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAcceptanceFileService.java | 17
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceInspectionRecordMapper.java | 28
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceStateMapper.java | 20
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceLogMapper.java | 9
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceInspectionRecordDetailsServiceImpl.java | 20
cnas-server/src/main/resources/static/word/device-document.docx | 0
framework/src/main/java/com/yuanchu/mom/enums/QrModelType.java | 39
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceCalibrationPlanController.java | 163
cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentSpareParts.java | 44
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCalibrationPlanDetailMapper.java | 27
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceLeaseMapper.java | 9
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMaintenancePlanDto.java | 30
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DocumentServiceImpl.java | 11
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordContrastDetailsDto.java | 16
cnas-server/src/main/java/com/yuanchu/mom/pojo/Document.java | 91
cnas-server/src/main/resources/mapper/OperationInstructionMapper.xml | 13
cnas-server/src/main/java/com/yuanchu/mom/service/QrShowService.java | 9
cnas-server/src/main/java/com/yuanchu/mom/vo/OperationInstructionVo.java | 17
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceRecordExportWord.java | 28
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceRecordController.java | 70
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceRecordServiceImpl.java | 142
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceStateServiceImpl.java | 159
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceBreakdownMaintenanceService.java | 41
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenancePlanServiceImpl.java | 239 +
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceInspectionRecordDetailsMapper.java | 16
cnas-server/src/main/resources/static/word/acceptance-certificate.docx | 0
cnas-server/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.xml | 28
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordMapper.java | 31
cnas-server/src/main/java/com/yuanchu/mom/dto/ReservationDto.java | 10
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceLog.java | 29
cnas-server/src/main/resources/static/word/incident-report.docx | 0
cnas-server/src/main/resources/static/word/device-inspection-record.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordContrastMapper.java | 31
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceTraceabilityManagementDetailsServiceImpl.java | 20
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMaintenancePlanDetailsDto.java | 32
cnas-server/src/main/resources/mapper/DeviceTraceabilityManagementMapper.xml | 39
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceAccidentReportController.java | 88
cnas-server/src/main/resources/mapper/DeviceMapper.xml | 7
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCalibrationPlanServiceImpl.java | 252 +
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceStateController.java | 89
cnas-server/src/main/resources/mapper/DeviceExamineRecordMapper.xml | 25
cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentInstallMapper.java | 16
cnas-server/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml | 33
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceBreakdownMaintenanceController.java | 89
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceStateDto.java | 32
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCalibrationPlanMapper.java | 29
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceScrappedService.java | 43
cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentReportMapper.java | 37
cnas-server/src/main/java/com/yuanchu/mom/service/IncidentAcceptanceCheckService.java | 7
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceFaultMapper.java | 9
cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentReportServiceImpl.java | 187
cnas-server/src/main/resources/mapper/DeviceExamineRecordDetailMapper.xml | 22
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenanceImpl.java | 97
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMetricController.java | 35
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMetricRecordService.java | 16
cnas-server/src/main/java/com/yuanchu/mom/dto/DocumentExportWordDto.java | 45
cnas-server/src/main/resources/mapper/DeviceAccidentReportMapper.xml | 29
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordDetail.java | 70
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceLeaseController.java | 44
cnas-server/src/main/resources/mapper/DeviceFaultOneMapper.xml | 50
cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentFileMapper.java | 16
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCalibrationPlanDetailService.java | 16
cnas-server/src/main/java/com/yuanchu/mom/controller/IncidentReportController.java | 84
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordContrast.java | 97
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMetricsCopyService.java | 16
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceScrapped.java | 105
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceBorrowServiceImpl.java | 124
cnas-server/src/main/resources/mapper/DeviceCalibrationPlanDetailMapper.xml | 17
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenancePlanDetailsService.java | 17
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricRecordMapper.java | 16
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricsCopyMapper.java | 16
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceRecord.java | 70
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java | 20
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordDto.java | 28
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetric.java | 29
cnas-server/src/main/java/com/yuanchu/mom/service/IncidentReportService.java | 42
cnas-server/src/main/resources/mapper/DeviceMetricsCopyMapper.xml | 20
cnas-server/src/main/java/com/yuanchu/mom/mapper/DocumentDao.java | 9
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceInspectionRecordDto.java | 25
cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceFaultOneExcel.java | 33
cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentFileServiceImpl.java | 11
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenancePlanDetails.java | 62
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceStateService.java | 31
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMetricRecordAndMaintenanceDto.java | 38
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceScrappedDto.java | 26
cnas-server/src/main/java/com/yuanchu/mom/excel/IncidentReportExport.java | 31
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExaminePlanDetailsMapper.java | 27
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExternalApplyService.java | 42
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java | 4
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceTraceabilityManagementDetailsService.java | 16
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenancePlan.java | 75
cnas-server/src/main/java/com/yuanchu/mom/dto/IncidentReportAddDto.java | 26
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceRecordDto.java | 14
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceRecordMapper.java | 37
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCheckMapper.java | 7
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAcceptanceService.java | 39
cnas-server/src/main/java/com/yuanchu/mom/mapper/InstructionMapper.java | 23
cnas-server/src/main/resources/mapper/DeviceExternalApplyMapper.xml | 23
cnas-server/src/main/java/com/yuanchu/mom/dto/InstructionDto.java | 13
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceInspectionRecord.java | 93
cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceFaultOneExport.java | 34
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordDetailService.java | 16
cnas-server/src/main/java/com/yuanchu/mom/pojo/Instruction.java | 64
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceState.java | 107
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceFaultServiceImpl.java | 97
cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceRecordExport.java | 43
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMetricRecordController.java | 89
cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentReport.java | 142
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceScrappedServiceImpl.java | 181
cnas-server/src/main/resources/mapper/DeviceScrappedMapper.xml | 27
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExaminePlan.java | 67
cnas-server/src/main/resources/static/word/use-record.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceTraceabilityManagementDetailsMapper.java | 26
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricsCopyServiceImpl.java | 20
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCalibrationPlanDetail.java | 74
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCheckServiceImpl.java | 11
cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceLogService.java | 7
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceRecordService.java | 31
cnas-server/src/main/resources/mapper/InstructionMapper.xml | 30
cnas-server/src/main/resources/mapper/DeviceInspectionRecordMapper.xml | 33
cnas-server/src/main/resources/mapper/IncidentAcceptanceCheckMapper.xml | 16
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAccidentReportService.java | 41
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceFaultOneService.java | 20
cnas-server/src/main/resources/mapper/IncidentFileMapper.xml | 13
cnas-server/src/main/resources/mapper/IncidentInstallMapper.xml | 14
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAccidentReportMapper.java | 35
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceTraceabilityManagementDto.java | 27
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceScrappedMapper.java | 35
cnas-server/src/main/resources/static/word/maintenance-records.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/pojo/OperationInstruction.java | 89
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCalibrationPlanService.java | 70
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricServiceImpl.java | 11
cnas-server/src/main/resources/mapper/IncidentSparePartsMapper.xml | 14
cnas-server/src/main/resources/mapper/DeviceCalibrationPlanMapper.xml | 20
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordContrastDetailsMapper.java | 16
cnas-server/src/main/java/com/yuanchu/mom/excel/upload/DeviceCalibrationPlanDetailUpload.java | 36
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExaminePlanDetailsService.java | 16
cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentInstall.java | 44
inspect-server/src/main/java/com/yuanchu/mom/utils/UserUtils.java | 90
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java | 4
cnas-server/src/main/resources/static/word/examine-plan-detail.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceScrappedController.java | 86
cnas-server/src/main/resources/mapper/DeviceAcceptanceMapper.xml | 17
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceTraceabilityManagementMapper.java | 34
cnas-server/src/main/java/com/yuanchu/mom/mapper/OperationInstructionMapper.java | 20
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceFault.java | 39
cnas-server/src/main/java/com/yuanchu/mom/service/impl/InstructionServiceImpl.java | 72
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceExaminePlanController.java | 255 +
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMaintenancePlanController.java | 104
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceTraceabilityManagementController.java | 104
cnas-server/src/main/resources/mapper/DeviceMaintenanceMapper.xml | 22
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceFaultOneMapper.java | 20
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExternalApply.java | 123
cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentAcceptanceCheckMapper.java | 16
cnas-server/src/main/resources/static/word/quipment-details.docx | 0
cnas-server/src/main/resources/static/word/examine-record.docx | 0
cnas-server/src/main/resources/static/word/review-examine-record-contrast.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/service/OperationInstructionService.java | 20
cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceStateExport.java | 36
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAcceptanceMapper.java | 27
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAcceptanceFileMapper.java | 16
cnas-server/src/main/java/com/yuanchu/mom/service/InstructionService.java | 23
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceFaultOneDto.java | 17
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordServiceImpl.java | 196
cnas-server/src/main/resources/static/word/device-accident-report.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceBorrowController.java | 76
cnas-server/src/main/resources/static/word/traceability-management-details.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceInspectionRecordDetailsService.java | 16
cnas-server/src/main/resources/mapper/ReservationMapper.xml | 40
cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentInstallServiceImpl.java | 11
cnas-server/src/main/resources/static/word/device-external-apply.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExaminePlanDetailsDto.java | 16
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAcceptanceFile.java | 58
cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceBorrowExcel.java | 39
cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentSparePartsMapper.java | 16
cnas-server/src/main/java/com/yuanchu/mom/controller/ReservationController.java | 70
cnas-server/src/main/java/com/yuanchu/mom/pojo/Reservation.java | 84
cnas-server/src/main/resources/mapper/DeviceBorrowMapper.xml | 46
cnas-server/src/main/resources/mapper/DeviceStateMapper.xml | 44
cnas-server/src/main/resources/mapper/DeviceExamineRecordContrastMapper.xml | 39
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAccidentReportServiceImpl.java | 191
cnas-server/src/main/resources/static/word/device-calibration-plan.docx | 0
cnas-server/src/main/resources/mapper/DeviceExaminePlanMapper.xml | 33
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenancePlanService.java | 70
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordContrastDetails.java | 70
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCalibrationPlan.java | 67
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecord.java | 139
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceTraceabilityManagementServiceImpl.java | 244 +
cnas-server/src/main/resources/mapper/DeviceInspectionRecordDetailsMapper.xml | 19
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordContrastDetailsServiceImpl.java | 20
cnas-server/src/main/java/com/yuanchu/mom/dto/IncidentReportExportWordDto.java | 49
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordContrastDto.java | 47
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceBreakdownMaintenance.java | 90
cnas-server/src/main/java/com/yuanchu/mom/service/IncidentInstallService.java | 7
cnas-server/src/main/java/com/yuanchu/mom/controller/InstructionController.java | 109
cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceLeaseService.java | 7
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCalibrationPlanDto.java | 31
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceTraceabilityManagementService.java | 61
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricMapper.java | 9
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAcceptanceFileServiceImpl.java | 20
cnas-server/src/main/resources/mapper/DeviceAcceptanceFileMapper.xml | 18
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceInspectionRecordController.java | 104
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExaminePlanMapper.java | 35
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceBorrowMapper.java | 25
cnas-server/src/main/resources/mapper/DeviceExaminePlanDetailsMapper.xml | 18
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceTraceabilityManagementDetails.java | 68
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordDetailServiceImpl.java | 20
cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentAcceptanceCheck.java | 50
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordService.java | 43
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceLeaseServiceImpl.java | 11
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCheck.java | 24
cnas-server/src/main/java/com/yuanchu/mom/service/DocumentService.java | 7
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAcceptanceServiceImpl.java | 159
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMaintenanceController.java | 97
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExternalApplyMapper.java | 34
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExaminePlanServiceImpl.java | 254 +
cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentFile.java | 40
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCalibrationPlanDetailServiceImpl.java | 20
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceBreakdownMaintenanceServiceImpl.java | 154
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenanceMapper.java | 18
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenanceService.java | 24
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceTraceabilityManagementDetailsDto.java | 25
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceFaultService.java | 10
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceFaultOneController.java | 82
cnas-server/src/main/java/com/yuanchu/mom/controller/DocumentController.java | 44
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCollectionDto.java | 28
cnas-server/src/main/java/com/yuanchu/mom/service/IncidentFileService.java | 7
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMetricRecordDto.java | 13
cnas-server/src/main/java/com/yuanchu/mom/service/ReservationService.java | 26
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceInspectionRecordDetails.java | 63
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExaminePlanDetailsServiceImpl.java | 20
cnas-server/src/main/java/com/yuanchu/mom/excel/upload/DeviceExaminePlanUpload.java | 37
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAcceptance.java | 77
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordContrastDetailsService.java | 16
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenance.java | 42
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetricsCopy.java | 66
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCalibrationPlanDetailDto.java | 21
cnas-server/src/main/resources/mapper/DeviceMaintenancePlanMapper.xml | 34
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceFaultOne.java | 125
cnas-server/src/main/java/com/yuanchu/mom/controller/QrShowController.java | 34
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceCheckController.java | 46
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java | 2
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordContrastService.java | 46
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceFaultOneServiceImpl.java | 27
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java | 2
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCheckService.java | 7
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExaminePlanService.java | 69
cnas-server/src/main/resources/mapper/DeviceMetricRecordMapper.xml | 22
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricRecordServiceImpl.java | 20
cnas-server/src/main/java/com/yuanchu/mom/dto/OperationInstructionDto.java | 35
cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceInspectionRecordServiceImpl.java | 223
cnas-server/src/main/java/com/yuanchu/mom/service/impl/ReservationServiceImpl.java | 122
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceAccidentReportDto.java | 31
cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceBorrow.java | 159
cnas-server/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml | 50
cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExaminePlanDto.java | 33
cnas-server/src/main/resources/static/word/device-breakdown-maintenance.docx | 0
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceAcceptanceController.java | 142
cnas-server/src/main/resources/mapper/DeviceBreakdownMaintenanceMapper.xml | 17
cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceExternalApplyController.java | 88
cnas-server/src/main/java/com/yuanchu/mom/service/DeviceBorrowService.java | 27
cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenancePlanMapper.java | 34
292 files changed, 13,830 insertions(+), 6 deletions(-)
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceAcceptanceController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceAcceptanceController.java
new file mode 100644
index 0000000..a7b3ab9
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceAcceptanceController.java
@@ -0,0 +1,142 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.pojo.DeviceAcceptance;
+import com.yuanchu.mom.pojo.DeviceAcceptanceFile;
+import com.yuanchu.mom.service.DeviceAcceptanceFileService;
+import com.yuanchu.mom.service.DeviceAcceptanceService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璁惧楠屾敹(瑁呭) 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 01:45:14
+ */
+@Api(tags = "璁惧楠屾敹(瑁呭)")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/deviceAcceptance")
+public class DeviceAcceptanceController {
+
+ private DeviceAcceptanceService deviceAcceptanceService;
+ private DeviceAcceptanceFileService deviceAcceptanceFileService;
+
+ /**
+ * 璁惧楠屾敹鍒楄〃
+ * @param data
+ * @return
+ */
+ @ApiOperation(value = "璁惧楠屾敹鍒楄〃")
+ @PostMapping("/pageDeviceAcceptance")
+ public Result<IPage<DeviceAcceptance>> pageDeviceAcceptance(@RequestBody Map<String, Object> data) throws Exception {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceAcceptance deviceAcceptance = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceAcceptance.class);
+ return Result.success(deviceAcceptanceService.pageDeviceAcceptance(page, deviceAcceptance));
+ }
+
+ /**
+ * 鏌ヨ璁惧楠屾敹
+ * @return
+ */
+ @ApiOperation(value = "鏌ヨ璁惧楠屾敹")
+ @GetMapping("/getDeviceAcceptance")
+ public Result getDeviceAcceptance(Integer acceptanceId){
+ return Result.success(deviceAcceptanceService.getById(acceptanceId));
+ }
+
+ /**
+ * 鍒犻櫎璁惧楠屾敹
+ * @return
+ */
+ @ApiOperation(value = "鍒犻櫎璁惧楠屾敹")
+ @GetMapping("/delDeviceAcceptance")
+ public Result delDeviceAcceptance(Integer acceptanceId){
+ return Result.success(deviceAcceptanceService.removeById(acceptanceId));
+ }
+
+ /**
+ * 鏂板璁惧楠屾敹
+ * @return
+ */
+ @ApiOperation(value = "鏂板璁惧楠屾敹")
+ @PostMapping("/addDeviceAcceptance")
+ public Result addDeviceAcceptance(@RequestBody DeviceAcceptance deviceAcceptance){
+ return Result.success(deviceAcceptanceService.save(deviceAcceptance));
+ }
+
+ /**
+ * 鏂板璁惧楠屾敹
+ * @return
+ */
+ @ApiOperation(value = "缂栬緫璁惧楠屾敹")
+ @PostMapping("/updateDeviceAcceptance")
+ public Result updateDeviceAcceptance(@RequestBody DeviceAcceptance deviceAcceptance){
+ return Result.success(deviceAcceptanceService.updateById(deviceAcceptance));
+ }
+
+ /**
+ * 璁惧楠屾敹瀵煎嚭
+ * @param acceptanceId 璁惧楠屾敹id
+ * @param response 鍝嶅簲浣�
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "璁惧楠屾敹瀵煎嚭")
+ @GetMapping("/exportDeviceAcceptance")
+ public void exportDeviceAcceptance(Integer acceptanceId, HttpServletResponse response){
+ deviceAcceptanceService.exportDeviceAcceptance(acceptanceId, response);
+ }
+
+ /**
+ * 璁惧楠屾敹闄勪欢鏂板
+ * @param acceptanceId
+ * @param file
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "璁惧楠屾敹闄勪欢鏂板")
+ @PostMapping("/uploadDeviceAcceptanceFile")
+ public Result<?> uploadDeviceAcceptanceFile(Integer acceptanceId, MultipartFile file) {
+ return Result.success(deviceAcceptanceService.uploadDeviceAcceptanceFile(acceptanceId, file));
+ }
+
+
+ /**
+ * 璁惧楠屾敹闄勪欢鍒楄〃
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "璁惧楠屾敹闄勪欢鍒楄〃")
+ @GetMapping("/getDeviceAcceptanceFileList")
+ public Result<List<DeviceAcceptanceFile>> getVerifyMethodFileList(Integer acceptanceId){
+ return Result.success(deviceAcceptanceFileService.list(Wrappers.<DeviceAcceptanceFile>lambdaQuery()
+ .eq(DeviceAcceptanceFile::getAcceptanceId, acceptanceId)));
+ }
+
+ /**
+ * 璁惧楠屾敹闄勪欢鍒犻櫎
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "璁惧楠屾敹闄勪欢鍒犻櫎")
+ @GetMapping("/delDeviceAcceptanceFileList")
+ public Result delDeviceAcceptanceFileList(Integer acceptanceFileId){
+ return Result.success(deviceAcceptanceFileService.removeById(acceptanceFileId));
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceAccidentReportController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceAccidentReportController.java
new file mode 100644
index 0000000..7345adf
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceAccidentReportController.java
@@ -0,0 +1,88 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.DeviceAccidentReport;
+import com.yuanchu.mom.service.DeviceAccidentReportService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璁惧浜嬫晠鎶ュ憡鍗� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 06:31:12
+ */
+@Api(tags = "璁惧浜嬫晠鎶ュ憡鍗�")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/deviceAccidentReport")
+public class DeviceAccidentReportController {
+
+ private DeviceAccidentReportService deviceAccidentReportService;
+
+
+ /**
+ * 璁惧浜嬫晠鎶ュ憡鍒楄〃
+ * @param data
+ * @return
+ */
+ @ApiOperation(value = "璁惧浜嬫晠鎶ュ憡鍒楄〃")
+ @PostMapping("/pageDeviceAccidentReport")
+ public Result<IPage<DeviceAccidentReport>> pageDeviceAccidentReport(@RequestBody Map<String, Object> data) throws Exception {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceAccidentReport deviceAccidentReport = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceAccidentReport.class);
+ return Result.success(deviceAccidentReportService.pageDeviceAccidentReport(page, deviceAccidentReport));
+ }
+
+ /**
+ * 鏌ヨ璁惧浜嬫晠鎶ュ憡
+ * @return
+ */
+ @ApiOperation(value = "鏌ヨ璁惧浜嬫晠鎶ュ憡")
+ @GetMapping("/getDeviceAccidentReport")
+ public Result getDeviceAccidentReport(Integer accidentReportId){
+ return Result.success(deviceAccidentReportService.getById(accidentReportId));
+ }
+
+ /**
+ * 鍒犻櫎璁惧浜嬫晠鎶ュ憡
+ * @return
+ */
+ @ApiOperation(value = "鍒犻櫎璁惧浜嬫晠鎶ュ憡")
+ @GetMapping("/delDeviceAccidentReport")
+ public Result delDeviceAccidentReport(Integer accidentReportId){
+ return Result.success(deviceAccidentReportService.removeById(accidentReportId));
+ }
+
+ /**
+ * 鏂板璁惧浜嬫晠鎶ュ憡
+ * @return
+ */
+ @ApiOperation(value = "鏂板璁惧浜嬫晠鎶ュ憡")
+ @PostMapping("/addDeviceAccidentReport")
+ public Result addDeviceAccidentReport(@RequestBody DeviceAccidentReport deviceAccidentReport){
+ return Result.success(deviceAccidentReportService.addDeviceAccidentReport(deviceAccidentReport));
+ }
+
+ /**
+ * 瀵煎嚭璁惧浜嬫晠鎶ュ憡
+ * @param accidentReportId 璁惧浜嬫晠鎶ュ憡id
+ * @param response 鍝嶅簲
+ */
+ @ApiOperation(value = "瀵煎嚭璁惧浜嬫晠鎶ュ憡")
+ @GetMapping("/exportDeviceAccidentReport")
+ public Result exportDeviceAccidentReport(Integer accidentReportId, HttpServletResponse response) {
+ deviceAccidentReportService.exportDeviceAccidentReport(accidentReportId, response);
+ return Result.success();
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceBorrowController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceBorrowController.java
new file mode 100644
index 0000000..8e3bfa3
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceBorrowController.java
@@ -0,0 +1,76 @@
+package com.yuanchu.mom.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.DeviceBorrow;
+import com.yuanchu.mom.service.DeviceBorrowService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-21 10:53:51
+ */
+@RestController
+@RequestMapping("/deviceBorrow")
+public class DeviceBorrowController {
+
+ @Resource
+ private DeviceBorrowService deviceBorrowService;
+
+
+ //鍒嗛〉
+ @PostMapping("/deviceBorrowPage")
+ public Result deviceBorrowPage(@RequestBody Map<String, Object> data) throws Exception {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceBorrow deviceBorrow = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceBorrow.class);
+ return Result.success(deviceBorrowService.deviceBorrowPage(page, deviceBorrow));
+ }
+
+ //鏌ヨ
+ @GetMapping("/getDeviceBorrow")
+ public Result getDeviceBorrow(Integer id) {
+ return Result.success(deviceBorrowService.getDeviceBorrow(id));
+ }
+
+ //鏂板
+ @PostMapping("/saveDeviceBorrow")
+ public Result saveDeviceBorrow(@RequestBody DeviceBorrow deviceBorrow) {
+ return Result.success(deviceBorrowService.saveDeviceBorrow(deviceBorrow));
+ }
+
+ //鍒犻櫎
+ @PostMapping("/deleteDeviceBorrow")
+ public Result deleteDeviceBorrow(Integer id) {
+ return Result.success(deviceBorrowService.removeById(id));
+ }
+
+ //瀵煎嚭
+ @PostMapping("/deviceBorrowExport")
+ public Result deviceBorrowExport(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws Exception {
+ List<DeviceBorrow> deviceBorrows = deviceBorrowService.getDeviceBorrowBydeviceId(deviceId);
+ response.setHeader("requestType", "excel");
+ response.setHeader("Access-Control-Expose-Headers", "requestType");
+ // 璁剧疆鍗曞厓鏍兼牱寮�
+ // 淇濆瓨鍒扮涓�涓猻heet涓�
+ EasyExcel.write(response.getOutputStream())
+ .head(DeviceBorrow.class)
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 鑷�傚簲鍒楀
+ .sheet()
+ .doWrite(deviceBorrows);
+ return Result.success();
+ }
+
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceBreakdownMaintenanceController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceBreakdownMaintenanceController.java
new file mode 100644
index 0000000..57bb78b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceBreakdownMaintenanceController.java
@@ -0,0 +1,89 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.DeviceBreakdownMaintenance;
+import com.yuanchu.mom.service.DeviceBreakdownMaintenanceService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰缁翠慨琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 04:50:57
+ */
+@Api(tags = "璁惧鏁呴殰缁翠慨琛�")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/deviceBreakdownMaintenance")
+public class DeviceBreakdownMaintenanceController {
+
+ private DeviceBreakdownMaintenanceService deviceBreakdownMaintenanceService;
+
+
+ /**
+ * 璁惧鏁呴殰缁翠慨鍒楄〃
+ * @param data
+ * @return
+ */
+ @ApiOperation(value = "璁惧鏁呴殰缁翠慨鍒楄〃")
+ @PostMapping("/pageDeviceBreakdownMaintenance")
+ public Result<IPage<DeviceBreakdownMaintenance>> pageDeviceBreakdownMaintenance(@RequestBody Map<String, Object> data) throws Exception {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceBreakdownMaintenance deviceBreakdownMaintenance = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceBreakdownMaintenance.class);
+ return Result.success(deviceBreakdownMaintenanceService.pageDeviceBreakdownMaintenance(page, deviceBreakdownMaintenance));
+ }
+
+ /**
+ * 鏌ヨ璁惧鏁呴殰缁翠慨
+ * @return
+ */
+ @ApiOperation(value = "鏌ヨ璁惧鏁呴殰缁翠慨")
+ @GetMapping("/getDeviceBreakdownMaintenance")
+ public Result getDeviceBreakdownMaintenance(Integer maintenanceId){
+ return Result.success(deviceBreakdownMaintenanceService.getById(maintenanceId));
+ }
+
+ /**
+ * 鍒犻櫎璁惧鏁呴殰缁翠慨
+ * @return
+ */
+ @ApiOperation(value = "鍒犻櫎璁惧鏁呴殰缁翠慨")
+ @GetMapping("/delDeviceBreakdownMaintenance")
+ public Result delDeviceBreakdownMaintenance(Integer maintenanceId){
+ return Result.success(deviceBreakdownMaintenanceService.removeById(maintenanceId));
+ }
+
+ /**
+ * 鏂板璁惧鏁呴殰缁翠慨
+ * @return
+ */
+ @ApiOperation(value = "鏂板璁惧鏁呴殰缁翠慨")
+ @PostMapping("/addDeviceBreakdownMaintenance")
+ public Result addDeviceBreakdownMaintenance(@RequestBody DeviceBreakdownMaintenance deviceBreakdownMaintenance){
+ return Result.success(deviceBreakdownMaintenanceService.addDeviceBreakdownMaintenance(deviceBreakdownMaintenance));
+ }
+
+ /**
+ * 瀵煎嚭璁惧鏁呴殰缁翠慨
+ * @param maintenanceId 璁惧鏁呴殰缁翠慨id
+ * @param response 鍝嶅簲
+ * @return
+ */
+ @ApiOperation(value = "瀵煎嚭璁惧鏁呴殰缁翠慨")
+ @GetMapping("/exportDeviceBreakdownMaintenance")
+ public Result exportDeviceBreakdownMaintenance(Integer maintenanceId, HttpServletResponse response){
+ deviceBreakdownMaintenanceService.exportDeviceBreakdownMaintenance(maintenanceId, response);
+ return Result.success();
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceCalibrationPlanController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceCalibrationPlanController.java
new file mode 100644
index 0000000..8460bfa
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceCalibrationPlanController.java
@@ -0,0 +1,163 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.dto.DeviceCalibrationPlanDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.pojo.DeviceCalibrationPlan;
+import com.yuanchu.mom.pojo.DeviceCalibrationPlanDetail;
+import com.yuanchu.mom.service.DeviceCalibrationPlanDetailService;
+import com.yuanchu.mom.service.DeviceCalibrationPlanService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璁惧鏍″噯璁″垝涓昏〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 03:58:17
+ */
+@Api(tags = "璁惧鏍″噯璁″垝")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/deviceCalibrationPlan")
+public class DeviceCalibrationPlanController {
+
+ private DeviceCalibrationPlanService deviceCalibrationPlanService;
+
+ private DeviceCalibrationPlanDetailService deviceCalibrationPlanDetailService;
+
+ /**
+ * 鏂板璁惧鏍″噯璁″垝
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "鏂板璁惧鏍″噯璁″垝")
+ @PostMapping("/addDeviceCalibrationPlan")
+ public Result addDeviceCalibrationPlan(@RequestBody DeviceCalibrationPlanDto calibrationPlanDto){
+ return Result.success(deviceCalibrationPlanService.addDeviceCalibrationPlan(calibrationPlanDto));
+ }
+
+ /**
+ * 瀵煎叆璁惧鏍″噯璁″垝
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "瀵煎叆璁惧鏍″噯璁″垝")
+ @PostMapping("/importDeviceCalibrationPlan")
+ public Result importDeviceCalibrationPlan(MultipartFile file, String planYear){
+ return Result.success(deviceCalibrationPlanService.importDeviceCalibrationPlan(file, planYear));
+ }
+
+
+ /**
+ * 璁惧鏍″噯璁″垝鍒犻櫎
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "璁惧鏍″噯璁″垝鍒犻櫎")
+ @GetMapping("/delQualitySupervise")
+ public Result delQualitySupervise(Integer planId){
+ return Result.success(deviceCalibrationPlanService.removeById(planId));
+ }
+
+ /**
+ * 璁惧鏍″噯璁″垝鎵瑰噯
+ * @return
+ */
+ @ValueClassify("璐ㄩ噺璁惧鏍″噯璁″垝")
+ @ApiOperation(value = "璁惧鏍″噯璁″垝鎵瑰噯")
+ @PostMapping("/ratifyDeviceCalibrationPlan")
+ public Result ratifyDeviceCalibrationPlan(@RequestBody DeviceCalibrationPlan DeviceCalibrationPlan){
+ return Result.success(deviceCalibrationPlanService.ratifyDeviceCalibrationPlan(DeviceCalibrationPlan));
+ }
+
+
+ /**
+ * 璁惧鏍″噯璁″垝鍒楄〃
+ * @param data
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "璁惧鏍″噯璁″垝鍒楄〃")
+ @PostMapping("/pageDeviceCalibrationPlan")
+ public Result<IPage<DeviceCalibrationPlanDto>> pageDeviceCalibrationPlan(@RequestBody Map<String, Object> data) throws Exception {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceCalibrationPlan DeviceCalibrationPlan = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceCalibrationPlan.class);
+ return Result.success(deviceCalibrationPlanService.pageDeviceCalibrationPlan(page, DeviceCalibrationPlan));
+ }
+
+ /**
+ * 璁惧鏍″噯璁″垝璇︽儏鍒楄〃
+ * @param data
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "璁惧鏍″噯璁″垝璇︽儏鍒楄〃")
+ @PostMapping("/pageDeviceCalibrationPlanDetail")
+ public Result<IPage<DeviceCalibrationPlanDetail>> pageDeviceCalibrationPlanDetail(@RequestBody Map<String, Object> data) throws Exception {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceCalibrationPlanDetail deviceCalibrationPlanDetails = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceCalibrationPlanDetail.class);
+ return Result.success(deviceCalibrationPlanService.pageDeviceCalibrationPlanDetail(page, deviceCalibrationPlanDetails));
+ }
+
+ /**
+ * 鏂板璁惧鏍″噯璁″垝璇︽儏
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "鏂板璁惧鏍″噯璁″垝璇︽儏")
+ @PostMapping("/addDeviceCalibrationPlanDetail")
+ public Result addDeviceCalibrationPlanDetail(@RequestBody DeviceCalibrationPlanDetail deviceCalibrationPlanDetail){
+ if (deviceCalibrationPlanDetail.getPlanId() == null) {
+ throw new ErrorException("缂哄皯璁惧鏍″噯璁″垝涓昏〃id");
+ }
+ return Result.success(deviceCalibrationPlanDetailService.save(deviceCalibrationPlanDetail));
+ }
+
+ /**
+ * 淇敼璁惧鏍″噯璁″垝璇︽儏
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "淇敼璁惧鏍″噯璁″垝璇︽儏")
+ @PostMapping("/updateDeviceCalibrationPlanDetail")
+ public Result updateDeviceCalibrationPlanDetail(@RequestBody DeviceCalibrationPlanDetail deviceCalibrationPlanDetail){
+ return Result.success(deviceCalibrationPlanDetailService.updateById(deviceCalibrationPlanDetail));
+ }
+
+ /**
+ * 鍒犻櫎璁惧鏍″噯璁″垝璇︽儏
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "鍒犻櫎璁惧鏍″噯璁″垝璇︽儏")
+ @GetMapping("/delDeviceCalibrationPlanDetail")
+ public Result delDeviceCalibrationPlanDetail(Integer planDetailsId){
+ return Result.success(deviceCalibrationPlanDetailService.removeById(planDetailsId));
+ }
+
+ /**
+ * 瀵煎嚭璁惧鏍″噯璁″垝
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "瀵煎嚭璁惧鏍″噯璁″垝")
+ @GetMapping("/exportDeviceCalibrationPlanDetail")
+ public void exportDeviceCalibrationPlanDetail(Integer planId, HttpServletResponse response){
+ deviceCalibrationPlanService.exportDeviceCalibrationPlanDetail(planId, response);
+ }
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceCheckController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceCheckController.java
new file mode 100644
index 0000000..cf14c10
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceCheckController.java
@@ -0,0 +1,46 @@
+package com.yuanchu.mom.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.yuanchu.mom.pojo.DeviceCheck;
+import com.yuanchu.mom.service.DeviceCheckService;
+import com.yuanchu.mom.vo.Result;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/device-check")
+public class DeviceCheckController {
+ @Autowired
+ private DeviceCheckService deviceCheckService;
+
+ @PostMapping(consumes= MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+ public Result create(DeviceCheck deviceCheck) {
+ return Result.success(deviceCheckService.save(deviceCheck));
+ }
+
+ @GetMapping("/{id}")
+ public Result read(@PathVariable Integer id) {
+ LambdaQueryWrapper<DeviceCheck> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(DeviceCheck::getDeviceId,id);
+ return Result.success(deviceCheckService.list(lambdaQueryWrapper));
+ }
+
+ @PutMapping("/{id}")
+ public Result update(@PathVariable Integer id, @RequestBody DeviceCheck deviceCheck) {
+ deviceCheck.setDeviceId(id);
+ deviceCheckService.updateById(deviceCheck);
+ return Result.success();
+ }
+
+ @DeleteMapping("/{id}")
+ public Result delete(@PathVariable Integer id) {
+ return Result.success(deviceCheckService.removeById(id));
+ }
+
+ @GetMapping
+ public Result list() {
+ return Result.success(deviceCheckService.list());
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
index 4754723..c1df04d 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
@@ -59,10 +59,10 @@
@ValueClassify("璁惧")
@ApiOperation(value = "鏌ヨ璁惧璇︽儏鍒楄〃")
@PostMapping("/selectDeviceParameter")
- public Result selectDeviceParameter(@RequestBody Map<String, Object> data) throws Exception {
+ public Result selectDeviceParameter(@RequestBody Map<String, Object> data,@RequestParam(value = "laboratoryNameIsNull", required = false) Boolean laboratoryNameIsNull) throws Exception {
Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
DeviceDto itemParameter = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceDto.class);
- return Result.success(deviceService.selectDeviceParameter(page, itemParameter));
+ return Result.success(deviceService.selectDeviceParameter(page, itemParameter,laboratoryNameIsNull));
}
@ValueClassify("璁惧")
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceExaminePlanController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceExaminePlanController.java
new file mode 100644
index 0000000..cea4d7e
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceExaminePlanController.java
@@ -0,0 +1,255 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.dto.DeviceExaminePlanDto;
+import com.yuanchu.mom.dto.DeviceExamineRecordContrastDto;
+import com.yuanchu.mom.dto.DeviceExamineRecordDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.pojo.DeviceExaminePlan;
+import com.yuanchu.mom.pojo.DeviceExaminePlanDetails;
+import com.yuanchu.mom.service.DeviceExaminePlanDetailsService;
+import com.yuanchu.mom.service.DeviceExaminePlanService;
+import com.yuanchu.mom.service.DeviceExamineRecordContrastService;
+import com.yuanchu.mom.service.DeviceExamineRecordService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁″垝涓昏〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:04
+ */
+@Api(tags = "璁惧鏍告煡璁″垝")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/deviceExaminePlan")
+public class DeviceExaminePlanController {
+
+ private DeviceExaminePlanService deviceExaminePlanService;
+
+ private DeviceExaminePlanDetailsService deviceExaminePlanDetailsService;
+
+ private DeviceExamineRecordService deviceExamineRecordService;
+
+ private DeviceExamineRecordContrastService deviceExamineRecordContrastService;
+
+
+ /**
+ * 鏂板璁惧鏍告煡璁″垝
+ * @return
+ */
+ @ApiOperation(value = "鏂板璁惧鏍告煡璁″垝")
+ @PostMapping("/addDeviceExaminePlan")
+ public Result addDeviceExaminePlan(@RequestBody DeviceExaminePlanDto examinePlanDto){
+ return Result.success(deviceExaminePlanService.addDeviceExaminePlan(examinePlanDto));
+ }
+
+ /**
+ * 瀵煎叆璁惧鏍告煡璁″垝
+ * @return
+ */
+ @ApiOperation(value = "瀵煎叆璁惧鏍告煡璁″垝")
+ @PostMapping("/importDeviceExaminePlan")
+ public Result importDeviceExaminePlan(MultipartFile file){
+ return Result.success(deviceExaminePlanService.importDeviceExaminePlan(file));
+ }
+
+
+ /**
+ * 璁惧鏍告煡璁″垝鍒犻櫎
+ * @return
+ */
+ @ApiOperation(value = "璁惧鏍告煡璁″垝鍒犻櫎")
+ @GetMapping("/delQualitySupervise")
+ public Result delQualitySupervise(Integer planId){
+ return Result.success(deviceExaminePlanService.removeById(planId));
+ }
+
+ /**
+ * 璁惧鏍告煡璁″垝鎵瑰噯
+ * @return
+ */
+ @ValueClassify("璐ㄩ噺璁惧鏍告煡璁″垝")
+ @ApiOperation(value = "璁惧鏍告煡璁″垝鎵瑰噯")
+ @PostMapping("/ratifyDeviceExaminePlan")
+ public Result ratifyDeviceExaminePlan(@RequestBody DeviceExaminePlan DeviceExaminePlan){
+ return Result.success(deviceExaminePlanService.ratifyDeviceExaminePlan(DeviceExaminePlan));
+ }
+
+
+ /**
+ * 璁惧鏍告煡璁″垝鍒楄〃
+ * @param data
+ * @return
+ */
+ @ApiOperation(value = "璁惧鏍告煡璁″垝鍒楄〃")
+ @PostMapping("/pageDeviceExaminePlan")
+ public Result<IPage<DeviceExaminePlanDto>> pageDeviceExaminePlan(@RequestBody Map<String, Object> data) throws Exception {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceExaminePlan DeviceExaminePlan = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceExaminePlan.class);
+ return Result.success(deviceExaminePlanService.pageDeviceExaminePlan(page, DeviceExaminePlan));
+ }
+
+ /**
+ * 璁惧鏍告煡璁″垝璇︽儏鍒楄〃
+ * @param data
+ * @return
+ */
+ @ApiOperation(value = "璁惧鏍告煡璁″垝璇︽儏鍒楄〃")
+ @PostMapping("/pageDeviceExaminePlanDetail")
+ public Result<IPage<DeviceExaminePlanDetails>> pageDeviceExaminePlanDetail(@RequestBody Map<String, Object> data) throws Exception {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceExaminePlanDetails deviceExaminePlanDetails = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceExaminePlanDetails.class);
+ return Result.success(deviceExaminePlanService.pageDeviceExaminePlanDetail(page, deviceExaminePlanDetails));
+ }
+
+ /**
+ * 鏂板璁惧鏍告煡璁″垝璇︽儏
+ * @return
+ */
+ @ApiOperation(value = "鏂板璁惧鏍告煡璁″垝璇︽儏")
+ @PostMapping("/addDeviceExaminePlanDetail")
+ public Result addDeviceExaminePlanDetail(@RequestBody DeviceExaminePlanDetails deviceExaminePlanDetail){
+ if (deviceExaminePlanDetail.getPlanId() == null) {
+ throw new ErrorException("缂哄皯璁惧鏍告煡璁″垝涓昏〃id");
+ }
+ return Result.success(deviceExaminePlanDetailsService.save(deviceExaminePlanDetail));
+ }
+
+ /**
+ * 淇敼璁惧鏍告煡璁″垝璇︽儏
+ * @return
+ */
+ @ApiOperation(value = "淇敼璁惧鏍告煡璁″垝璇︽儏")
+ @PostMapping("/updateDeviceExaminePlanDetail")
+ public Result updateDeviceExaminePlanDetail(@RequestBody DeviceExaminePlanDetails deviceExaminePlanDetail){
+ return Result.success(deviceExaminePlanDetailsService.updateById(deviceExaminePlanDetail));
+ }
+
+ /**
+ * 鍒犻櫎璁惧鏍告煡璁″垝璇︽儏
+ * @return
+ */
+ @ApiOperation(value = "鍒犻櫎璁惧鏍告煡璁″垝璇︽儏")
+ @GetMapping("/delDeviceExaminePlanDetail")
+ public Result delDeviceExaminePlanDetail(Integer planDetailsId){
+ return Result.success(deviceExaminePlanDetailsService.removeById(planDetailsId));
+ }
+
+ /**
+ * 瀵煎嚭璁惧鏍告煡璁″垝
+ * @param planId 璁惧鏍告煡璁″垝id
+ * @return
+ */
+ @ApiOperation(value = "瀵煎嚭璁惧鏍告煡璁″垝")
+ @GetMapping("/exportDeviceExaminePlanDetail")
+ public void exportDeviceExaminePlanDetail(Integer planId, HttpServletResponse response){
+ deviceExaminePlanService.exportDeviceExaminePlanDetail(planId, response);
+ }
+
+ /*********************************************** 鎶ュ憡 **************************************************/
+
+ /**
+ * 鏌ヨ鏍告煡璁板綍
+ * @return
+ */
+ @ApiOperation(value = "鏌ヨ鏍告煡璁板綍")
+ @GetMapping("/getExamineRecord")
+ public Result<DeviceExamineRecordDto> getExamineRecord(Integer planDetailsId){
+ return Result.success(deviceExamineRecordService.getExamineRecord(planDetailsId));
+ }
+
+ /**
+ * 鏂板鏍告煡璁板綍
+ * @return
+ */
+ @ApiOperation(value = "鏂板鏍告煡璁板綍")
+ @PostMapping("/addExamineRecord")
+ public Result addExamineRecord(@RequestBody DeviceExamineRecordDto deviceExamineRecordDto){
+ return Result.success(deviceExamineRecordService.addExamineRecord(deviceExamineRecordDto));
+ }
+
+
+ /**
+ * 澶嶆牳鏍告煡璁板綍
+ * @return
+ */
+ @ApiOperation(value = "澶嶆牳鏍告煡璁板綍")
+ @PostMapping("/reviewExamineRecord")
+ public Result reviewExamineRecord(@RequestBody DeviceExamineRecordDto deviceExamineRecordDto){
+ return Result.success(deviceExamineRecordService.reviewExamineRecord(deviceExamineRecordDto));
+ }
+
+ /**
+ * 瀵煎嚭澶嶆牳鏍告煡璁板綍
+ * @param planDetailsId
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "瀵煎嚭澶嶆牳鏍告煡璁板綍")
+ @GetMapping("/exportReviewExamineRecordDetail")
+ public void exportReviewExamineRecordDetail(Integer planDetailsId, HttpServletResponse response){
+ deviceExamineRecordService.exportReviewExamineRecordDetail(planDetailsId, response);
+ }
+
+ /*********************************************** 鎶ュ憡瀵规瘮 **************************************************/
+
+
+ /**
+ * 鏌ヨ鏍告煡瀵规瘮璁板綍
+ * @return
+ */
+ @ApiOperation(value = "鏌ヨ鏍告煡瀵规瘮璁板綍")
+ @GetMapping("/getExamineRecordContrast")
+ public Result<DeviceExamineRecordContrastDto> getExamineRecordContrast(Integer planDetailsId){
+ return Result.success(deviceExamineRecordContrastService.getExamineRecordContrast(planDetailsId));
+ }
+
+ /**
+ * 鏂板鏍告煡瀵规瘮璁板綍
+ * @return
+ */
+ @ApiOperation(value = "鏂板鏍告煡瀵规瘮璁板綍")
+ @PostMapping("/addExamineRecordContrast")
+ public Result addExamineRecordContrast(@RequestBody DeviceExamineRecordContrastDto deviceExamineRecordContrastDto){
+ return Result.success(deviceExamineRecordContrastService.addExamineRecordContrast(deviceExamineRecordContrastDto));
+ }
+
+
+ /**
+ * 瀹℃牳鏍告煡瀵规瘮璁板綍
+ * @return
+ */
+ @ApiOperation(value = "瀹℃牳鏍告煡瀵规瘮璁板綍")
+ @PostMapping("/reviewExamineRecordContrast")
+ public Result reviewExamineRecordContrast(@RequestBody DeviceExamineRecordContrastDto deviceExamineRecordContrastDto){
+ return Result.success(deviceExamineRecordContrastService.reviewExamineRecordContrast(deviceExamineRecordContrastDto));
+ }
+
+ /**
+ * 瀵煎嚭瀹℃牳鏍告煡瀵规瘮璁板綍
+ * @param planDetailsId
+ * @return
+ */
+ @ValueAuth
+ @ApiOperation(value = "瀵煎嚭瀹℃牳鏍告煡瀵规瘮璁板綍")
+ @GetMapping("/exportReviewExamineRecordContrast")
+ public Result exportReviewExamineRecordContrast(Integer planDetailsId, HttpServletResponse response){
+ deviceExamineRecordContrastService.exportReviewExamineRecordContrast(planDetailsId, response);
+ return Result.success();
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceExternalApplyController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceExternalApplyController.java
new file mode 100644
index 0000000..edd9e06
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceExternalApplyController.java
@@ -0,0 +1,88 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.DeviceExternalApply;
+import com.yuanchu.mom.service.DeviceExternalApplyService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鍒╃敤澶栭儴璁惧鐢宠琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 10:28:43
+ */
+@Api(tags = "鍒╃敤澶栭儴璁惧鐢宠琛�")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/deviceExternalApply")
+public class DeviceExternalApplyController {
+
+ private DeviceExternalApplyService deviceExternalApplyService;
+
+
+ /**
+ * 鍒╃敤澶栭儴璁惧鐢宠鍒楄〃
+ * @param data
+ * @return
+ */
+ @ApiOperation(value = "鍒╃敤澶栭儴璁惧鐢宠鍒楄〃")
+ @PostMapping("/pageDeviceExternalApply")
+ public Result<IPage<DeviceExternalApply>> pageDeviceExternalApply(@RequestBody Map<String, Object> data) throws Exception {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceExternalApply deviceExternalApply = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceExternalApply.class);
+ return Result.success(deviceExternalApplyService.pageDeviceExternalApply(page, deviceExternalApply));
+ }
+
+ /**
+ * 鏌ヨ鍒╃敤澶栭儴璁惧鐢宠
+ * @return
+ */
+ @ApiOperation(value = "鏌ヨ鍒╃敤澶栭儴璁惧鐢宠")
+ @GetMapping("/getDeviceExternalApply")
+ public Result getDeviceExternalApply(Integer externalApplyId){
+ return Result.success(deviceExternalApplyService.getById(externalApplyId));
+ }
+
+ /**
+ * 鍒犻櫎鍒╃敤澶栭儴璁惧鐢宠
+ * @return
+ */
+ @ApiOperation(value = "鍒犻櫎鍒╃敤澶栭儴璁惧鐢宠")
+ @GetMapping("/delDeviceExternalApply")
+ public Result delDeviceExternalApply(Integer externalApplyId){
+ return Result.success(deviceExternalApplyService.removeById(externalApplyId));
+ }
+
+ /**
+ * 鏂板鍒╃敤澶栭儴璁惧鐢宠
+ * @return
+ */
+ @ApiOperation(value = "鏂板鍒╃敤澶栭儴璁惧鐢宠")
+ @PostMapping("/addDeviceExternalApply")
+ public Result addDeviceExternalApply(@RequestBody DeviceExternalApply deviceExternalApply){
+ return Result.success(deviceExternalApplyService.addDeviceExternalApply(deviceExternalApply));
+ }
+
+ /**
+ * 瀵煎嚭鍒╃敤澶栭儴璁惧鐢宠
+ * @param externalApplyId 澶栭儴璁惧鐢宠id
+ * @return
+ */
+ @ApiOperation(value = "瀵煎嚭鍒╃敤澶栭儴璁惧鐢宠")
+ @GetMapping("/exportDeviceExternalApply")
+ public Result exportDeviceExternalApply(Integer externalApplyId, HttpServletResponse response){
+ deviceExternalApplyService.exportDeviceExternalApply(externalApplyId, response);
+ return Result.success();
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceFaultController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceFaultController.java
new file mode 100644
index 0000000..c9b664a
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceFaultController.java
@@ -0,0 +1,50 @@
+package com.yuanchu.mom.controller;
+
+import com.yuanchu.mom.pojo.DeviceFault;
+import com.yuanchu.mom.service.DeviceFaultService;
+import com.yuanchu.mom.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api/device-faults")
+public class DeviceFaultController {
+
+ private final DeviceFaultService deviceFaultService;
+
+ @Autowired
+ public DeviceFaultController(DeviceFaultService deviceFaultService) {
+ this.deviceFaultService = deviceFaultService;
+ }
+
+ @GetMapping
+ public List<DeviceFault> getAllDeviceFaults() {
+ return deviceFaultService.list();
+ }
+
+ @PostMapping
+ public DeviceFault createDeviceFault(@RequestBody DeviceFault deviceFault) {
+ deviceFaultService.save(deviceFault);
+ return deviceFault;
+ }
+
+ @PutMapping("/{id}")
+ public DeviceFault updateDeviceFault(@PathVariable Integer id, @RequestBody DeviceFault deviceFault) {
+ deviceFault.setId(id);
+ deviceFaultService.updateById(deviceFault);
+ return deviceFault;
+ }
+
+ @DeleteMapping("/{id}")
+ public void deleteDeviceFault(@PathVariable Integer id) {
+ deviceFaultService.removeById(id);
+ }
+
+ @GetMapping("/device/{deviceId}")
+ public Result<Map<String,Object>> getDeviceFaultsByDeviceId(@PathVariable Integer deviceId) {
+ return Result.success(deviceFaultService.findByDeviceId(deviceId));
+ }
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceFaultOneController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceFaultOneController.java
new file mode 100644
index 0000000..e0521aa
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceFaultOneController.java
@@ -0,0 +1,82 @@
+package com.yuanchu.mom.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.DeviceFaultOneDto;
+import com.yuanchu.mom.excel.DeviceFaultOneExport;
+import com.yuanchu.mom.numgen.NumberGenerator;
+import com.yuanchu.mom.pojo.DeviceFaultOne;
+import com.yuanchu.mom.service.DeviceFaultOneService;
+import com.yuanchu.mom.vo.Result;
+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.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 02:03:29
+ */
+@RestController
+@RequestMapping("/deviceFaultOne")
+public class DeviceFaultOneController {
+
+ @Autowired
+ private DeviceFaultOneService deviceFaultOneService;
+
+ @Autowired
+ private NumberGenerator<DeviceFaultOne> numberGenerator;
+
+ @GetMapping("/deviceFaultOnePage")
+ public Result deviceFaultOnePage(@RequestParam("deviceId") Integer deviceId, Page page, String processNumber) {
+ return Result.success(deviceFaultOneService.deviceFaultOnePage(deviceId,page, processNumber));
+ }
+
+ @PostMapping("/addOrUpdateDeviceFaultOne")
+ public Result addOrUpdateDeviceFaultOne(@RequestBody DeviceFaultOne deviceFaultOne) {
+ if (ObjectUtils.isEmpty(deviceFaultOne.getProcessNumber())) {
+ String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
+ String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
+ String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceFaultOne::getProcessNumber);
+ deviceFaultOne.setProcessNumber(processNumber);
+ }
+ return Result.success(deviceFaultOneService.saveOrUpdate(deviceFaultOne));
+ }
+
+ @DeleteMapping("/deleteDeviceFaultOne")
+ public Result deleteDeviceFaultOne(@RequestParam("id") Integer id) {
+ return Result.success(deviceFaultOneService.removeById(id));
+ }
+
+ @ApiOperation(value = "濂栨儵璁板綍瀵煎嚭")
+ @PostMapping("exportRewardAndPunishmentRecords")
+ public void exportRewardAndPunishmentRecords(@RequestParam("deviceId") Integer deviceId, String processNumber,
+ HttpServletResponse response) throws Exception {
+ IPage<DeviceFaultOneDto> data = deviceFaultOneService.deviceFaultOnePage(deviceId, new Page<>(1, -1), processNumber);
+ List<DeviceFaultOneExport> studentList = JSONObject.parseArray(JSON.toJSONString(data.getRecords()), DeviceFaultOneExport.class);
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setHeader("requestType", "excel");
+ response.setHeader("Access-Control-Expose-Headers", "requestType");
+ // 璁剧疆鍗曞厓鏍兼牱寮�
+ // 淇濆瓨鍒扮涓�涓猻heet涓�
+ EasyExcel.write(response.getOutputStream())
+ .head(DeviceFaultOneExport.class)
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 鑷�傚簲鍒楀
+ .sheet("sheet")
+ .doWrite(studentList);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceInspectionRecordController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceInspectionRecordController.java
new file mode 100644
index 0000000..8def047
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceInspectionRecordController.java
@@ -0,0 +1,104 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.DeviceInspectionRecordDto;
+import com.yuanchu.mom.pojo.DeviceInspectionRecord;
+import com.yuanchu.mom.service.DeviceInspectionRecordService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.SneakyThrows;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璁惧鐐规璁板綍琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 04:25:14
+ */
+@Api(tags = "璁惧鐐规璁板綍")
+@RestController
+@RequestMapping("/deviceInspectionRecord")
+public class DeviceInspectionRecordController {
+ @Resource
+ private DeviceInspectionRecordService deviceInspectionRecordService;
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧鐐规璁板綍
+ * @param data 鍒嗛〉鍙傛暟
+ */
+ @ApiOperation("鍒嗛〉鏌ヨ璁惧鐐规璁板綍")
+ @PostMapping("/getDeviceInspectionRecordByPage")
+ @SneakyThrows
+ public Result<IPage<DeviceInspectionRecord>> getDeviceInspectionRecordByPage(@RequestBody Map<String, Object> data) {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceInspectionRecordDto itemParameter = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceInspectionRecordDto.class);
+ return deviceInspectionRecordService.getDeviceInspectionRecordByPage(page, itemParameter);
+ }
+
+ /**
+ * 鏌ヨ鐐规璇︽儏
+ */
+ @ApiOperation("鏌ヨ鐐规璇︽儏")
+ @GetMapping("/getDeviceInspectionRecord")
+ public Result getDeviceInspectionRecord(Integer inspectionRecordId) {
+ return deviceInspectionRecordService.getDeviceInspectionRecord(inspectionRecordId);
+ }
+
+ /**
+ * 鏂板璁惧鐐规璁板綍
+ * @param deviceInspectionRecord 璁惧鐐规璁板綍
+ */
+ @ApiOperation("鏂板璁惧鐐规璁板綍")
+ @PostMapping("/addDeviceInspectionRecord")
+ public Result addDeviceInspectionRecord(@RequestBody DeviceInspectionRecordDto deviceInspectionRecord) {
+ return deviceInspectionRecordService.addDeviceInspectionRecord(deviceInspectionRecord);
+ }
+
+ /**
+ * 淇敼璁惧鐐规璁板綍
+ */
+ @ApiOperation("淇敼璁惧鐐规璁板綍")
+ @PostMapping("/updateDeviceInspectionRecord")
+ public Result updateDeviceInspectionRecord(@RequestBody DeviceInspectionRecordDto deviceInspectionRecord) {
+ return deviceInspectionRecordService.updateInspectionRecordAndDetails(deviceInspectionRecord);
+ }
+
+ /**
+ * 鍒犻櫎璁惧鐐规璁板綍
+ */
+ @ApiOperation("鍒犻櫎璁惧鐐规璁板綍")
+ @GetMapping("/deleteDeviceInspectionRecord")
+ public Result deleteDeviceInspectionRecord(DeviceInspectionRecordDto deviceInspectionRecord) {
+ return deviceInspectionRecordService.deleteDeviceInspectionRecordOrDetails(deviceInspectionRecord);
+ }
+
+
+ /**
+ * 澶嶆牳鐐规璁板綍
+ * @return
+ */
+ @ApiOperation(value = "澶嶆牳鏍告煡璁板綍")
+ @PostMapping("/reviewDeviceInspectionRecord")
+ public Result reviewDeviceInspectionRecord(@RequestBody DeviceInspectionRecordDto deviceExamineRecordDto){
+ return deviceInspectionRecordService.reviewDeviceInspectionRecord(deviceExamineRecordDto);
+ }
+
+
+ /**
+ * 瀵煎嚭璁惧鐐规璁板綍
+ */
+ @ApiOperation("瀵煎嚭璁惧鐐规璁板綍")
+ @GetMapping("/exportDeviceInspectionRecord")
+ public Result exportDeviceInspectionRecord(@RequestParam("inspectionRecordId") Integer inspectionRecordId, HttpServletResponse response) {
+ return deviceInspectionRecordService.exportDeviceInspectionRecord(inspectionRecordId, response);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceLeaseController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceLeaseController.java
new file mode 100644
index 0000000..ccd1492
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceLeaseController.java
@@ -0,0 +1,44 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.yuanchu.mom.pojo.DeviceLease;
+import com.yuanchu.mom.service.IDeviceLeaseService;
+import com.yuanchu.mom.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/deviceleases")
+public class DeviceLeaseController {
+
+ @Autowired
+ private IDeviceLeaseService deviceLeaseService;
+
+ @PostMapping("")
+ public Result create( DeviceLease deviceLease) {
+ deviceLeaseService.save(deviceLease);
+ return Result.success();
+ }
+
+// @GetMapping("/{leaseId}")
+// public DeviceLease get(@PathVariable Integer leaseId) {
+// return deviceLeaseService.getById(leaseId);
+// }
+ @GetMapping("/list/{id}")
+ public Result get(@PathVariable Integer id) {
+ LambdaQueryWrapper<DeviceLease> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(DeviceLease::getDeviceId,id);
+ return Result.success(deviceLeaseService.list(lambdaQueryWrapper));
+ }
+
+ @PutMapping("/{leaseId}")
+ public boolean update(@PathVariable Integer leaseId, @RequestBody DeviceLease deviceLease) {
+ deviceLease.setLeaseId(leaseId);
+ return deviceLeaseService.updateById(deviceLease);
+ }
+
+ @DeleteMapping("/{leaseId}")
+ public boolean delete(@PathVariable Integer leaseId) {
+ return deviceLeaseService.removeById(leaseId);
+ }
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceLogController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceLogController.java
new file mode 100644
index 0000000..bdc0c15
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceLogController.java
@@ -0,0 +1,50 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.yuanchu.mom.pojo.DeviceLog;
+import com.yuanchu.mom.service.IDeviceLogService;
+import com.yuanchu.mom.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/device-log") // 鏇存柊璺緞
+//杩欓噷鐨勬帴鍙e叏閮ㄦ槸鍦ㄨ澶囨牎鍑嗙殑鍦版柟鐢ㄥ埌,浣嗘槸鍏朵粬鍦版柟浼氬彟澶栧啓
+public class DeviceLogController {
+
+ @Autowired
+ private IDeviceLogService deviceLogService; // 鏇存柊Service寮曠敤
+
+ @GetMapping
+ public List<DeviceLog> getAllDeviceLogs() { // 鏇存柊鏂规硶鍚�
+ return deviceLogService.list();
+ }
+ @GetMapping("/{id}")
+ public Result getAllDeviceLogsBydId(@PathVariable int id) { // 鏇存柊鏂规硶鍚�
+ LambdaQueryWrapper<DeviceLog> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(DeviceLog::getDeviceId,id);
+ lambdaQueryWrapper.eq(DeviceLog::getRelevanceForm,"device_maintenance");
+ return Result.success(deviceLogService.list(lambdaQueryWrapper));
+ }
+ @PostMapping
+ public Result createDeviceLog(DeviceLog deviceLog) { // 鏇存柊鏂规硶鍚�
+ deviceLog.setRelevanceForm("device_maintenance");//鍏宠仈璁惧鏍″噯
+ deviceLogService.save(deviceLog);
+ return Result.success();
+ }
+
+ @PutMapping("/{id}")
+ public DeviceLog updateDeviceLog(@PathVariable Integer id, @RequestBody DeviceLog deviceLog) { // 鏇存柊鏂规硶鍚�
+ deviceLog.setId(id);
+ deviceLogService.updateById(deviceLog);
+ return deviceLog;
+ }
+
+ @DeleteMapping("/{id}")
+ public Result deleteDeviceLog(@PathVariable Integer id) { // 鏇存柊鏂规硶鍚�
+ deviceLogService.removeById(id);
+ return Result.success();
+ }
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMaintenanceController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMaintenanceController.java
new file mode 100644
index 0000000..4fe3184
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMaintenanceController.java
@@ -0,0 +1,97 @@
+package com.yuanchu.mom.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.metadata.style.WriteCellStyle;
+import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.excel.DeviceMaintenanceExport;
+import com.yuanchu.mom.numgen.NumberGenerator;
+import com.yuanchu.mom.pojo.DeviceMaintenance;
+import com.yuanchu.mom.service.DeviceMaintenanceService;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+@RestController
+@RequestMapping("/device-maintain")
+public class DeviceMaintenanceController {
+
+ @Autowired
+ private DeviceMaintenanceService deviceMaintenanceService;
+
+ @Autowired
+ private NumberGenerator<DeviceMaintenance> numberGenerator;
+ //澧�
+ @PostMapping()
+ public Result create(DeviceMaintenance deviceMaintenance){
+ String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
+ String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
+ String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceMaintenance::getDeviceNumber);
+ deviceMaintenance.setDeviceNumber(processNumber);
+ return Result.success(deviceMaintenanceService.save(deviceMaintenance));
+ }
+
+ //閫氳繃deviceId鏌ヨ缁存姢鏁版嵁
+ @GetMapping("/getDeviceMaintenancePage")
+ public Result getDeviceMaintenancePage(@RequestParam("deviceId") Integer deviceId, Page page, String deviceNumber){
+ return Result.success(deviceMaintenanceService.getDeviceMaintenancePage(page, deviceId, deviceNumber));
+ }
+
+ //鍒�
+ @DeleteMapping("/delete/{id}")
+ public void deleteDeviceFault(@PathVariable Integer id) {
+ deviceMaintenanceService.removeById(id);
+ }
+
+ @GetMapping("/deviceMaintenanceExport")
+ public Result deviceMaintenanceExport(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws IOException {
+ List<DeviceMaintenanceExport> list = deviceMaintenanceService.deviceMaintenanceExport(deviceId);
+ response.setHeader("requestType","excel");
+ response.setHeader("Access-Control-Expose-Headers", "requestType");
+ // 璁剧疆鍗曞厓鏍兼牱寮�
+ // 淇濆瓨鍒扮涓�涓猻heet涓�
+ EasyExcel.write(response.getOutputStream())
+ .head(DeviceMaintenanceExport.class)
+ .registerWriteHandler(getHorizontalCellStyleStrategy((short) 12))
+ .sheet()
+ .doWrite(list);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "璁惧缁存姢璁板綍瀵煎嚭")
+ @GetMapping("/exportMaintenanceRecord")
+ @ValueAuth
+ public void exportMaintenanceRecord(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws Exception {
+ deviceMaintenanceService.exportMaintenanceRecord(deviceId, response);
+ }
+
+ /**
+ * 鍗曞厓鏍兼牱寮忕瓥鐣�
+ */
+ public static HorizontalCellStyleStrategy getHorizontalCellStyleStrategy(Short fontHeightInPoints) {
+ // 鍐呭鐨勭瓥鐣�
+ WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
+
+ // 銆愭按骞冲眳涓渶瑕佷娇鐢ㄤ互涓嬩袱琛屻��
+ // 璁剧疆鏂囧瓧宸﹀彸灞呬腑
+ contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
+ // 璁剧疆鏂囧瓧涓婁笅灞呬腑
+ contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+ // 璁剧疆 鑷姩鎹㈣
+ contentWriteCellStyle.setWrapped(true);
+
+ // 鏍峰紡绛栫暐
+ return new HorizontalCellStyleStrategy(null, contentWriteCellStyle);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMaintenancePlanController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMaintenancePlanController.java
new file mode 100644
index 0000000..6122748
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMaintenancePlanController.java
@@ -0,0 +1,104 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.DeviceMaintenancePlanDto;
+import com.yuanchu.mom.pojo.DeviceMaintenancePlan;
+import com.yuanchu.mom.service.DeviceMaintenancePlanService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.SneakyThrows;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:10:52
+ */
+@Api(tags = "璁惧淇濆吇璁″垝")
+@RestController
+@RequestMapping("/deviceMaintenancePlan")
+public class DeviceMaintenancePlanController {
+ @Resource
+ private DeviceMaintenancePlanService deviceMaintenancePlanService;
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧淇濆吇璁″垝
+ * @param data 鍒嗛〉鍙傛暟
+ * @return
+ */
+ @ApiOperation("鍒嗛〉鏌ヨ璁惧淇濆吇璁″垝")
+ @PostMapping("selectDeviceMaintenancePlanByPage")
+ @SneakyThrows
+ public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(@RequestBody Map<String, Object> data){
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceMaintenancePlanDto itemParameter = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceMaintenancePlanDto.class);
+ return deviceMaintenancePlanService.selectDeviceMaintenancePlanByPage(page, itemParameter);
+ }
+
+ /**
+ * 鏂板璁惧淇濆吇璁″垝
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @ApiOperation("鏂板璁惧淇濆吇璁″垝")
+ @PostMapping("/addMaintenancePlan")
+ public Result addMaintenancePlan(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ return deviceMaintenancePlanService.addMaintenancePlan(deviceMaintenancePlanDto);
+ }
+
+ /**
+ * 淇敼璁惧淇濆吇璁″垝
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @ApiOperation("淇敼璁惧淇濆吇璁″垝")
+ @PostMapping("/updateMaintenancePlan")
+ public Result updateMaintenancePlan(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ return deviceMaintenancePlanService.updateMaintenancePlan(deviceMaintenancePlanDto);
+ }
+
+ /**
+ * 鍒犻櫎璁惧淇濆吇璁″垝
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @ApiOperation("鍒犻櫎璁惧淇濆吇璁″垝")
+ @GetMapping("/deleteMaintenancePlan")
+ public Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ return deviceMaintenancePlanService.deleteMaintenancePlan(deviceMaintenancePlanDto);
+ }
+
+ /**
+ * 鏌ヨ璁惧淇濆吇璁″垝璇︽儏
+ */
+ @ApiOperation("鏌ヨ璁惧淇濆吇璁″垝璇︽儏")
+ @GetMapping("/getMaintenancePlanDetail")
+ public Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId) {
+ return deviceMaintenancePlanService.getMaintenancePlanDetail(maintenancePlanId);
+ }
+
+ /**
+ * 鏌ヨ璁惧淇濆吇璁″垝璇︽儏
+ */
+ @ApiOperation("淇濆吇璁″垝瀹℃牳鐘舵�佷慨鏀�")
+ @PostMapping("/reviewMaintenancePlanStatus")
+ public Result reviewMaintenancePlanStatus(@RequestBody DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ return deviceMaintenancePlanService.reviewMaintenancePlanStatus(deviceMaintenancePlanDto);
+ }
+
+ /**
+ * 瀵煎嚭璁惧淇濆吇璁″垝
+ */
+ @ApiOperation("瀵煎嚭璁惧淇濆吇璁″垝")
+ @GetMapping("/exportDeviceMaintenancePlan")
+ public Result exportDeviceMaintenancePlan(@RequestParam("maintenancePlanId") Integer maintenancePlanId, HttpServletResponse response) {
+ return deviceMaintenancePlanService.exportDeviceMaintenancePlanDto(maintenancePlanId, response);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMetricController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMetricController.java
new file mode 100644
index 0000000..c67c1d3
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMetricController.java
@@ -0,0 +1,35 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.yuanchu.mom.pojo.DeviceMetric;
+import com.yuanchu.mom.service.IDeviceMetricService;
+import com.yuanchu.mom.vo.Result;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/deviceMetrics")
+public class DeviceMetricController {
+
+ @Autowired
+ private IDeviceMetricService deviceMetricService;
+
+ @PostMapping("/saveOrUpdateDeviceMetric")
+ public Result create(@RequestBody DeviceMetric deviceMetric) {
+ return Result.success(deviceMetricService.saveOrUpdate(deviceMetric));
+ }
+
+ @GetMapping("/selectDeviceMetric")
+ public Result read(@RequestParam("deviceId") Integer deviceId, @RequestParam("type") String type) {
+ return Result.success(deviceMetricService.list(Wrappers.<DeviceMetric>lambdaQuery()
+ .eq(DeviceMetric::getDeviceId,deviceId)
+ .eq(DeviceMetric::getType,type)));
+ }
+
+ @DeleteMapping("/deleteDeviceMetrics")
+ public Result delete(@RequestParam("id") Integer id) {
+ return Result.success(deviceMetricService.removeById(id));
+ }
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMetricRecordController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMetricRecordController.java
new file mode 100644
index 0000000..9bfd1fd
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceMetricRecordController.java
@@ -0,0 +1,89 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.DeviceMetricRecordDto;
+import com.yuanchu.mom.numgen.NumberGenerator;
+import com.yuanchu.mom.pojo.DeviceMetricRecord;
+import com.yuanchu.mom.pojo.DeviceMetricsCopy;
+import com.yuanchu.mom.service.DeviceMetricRecordService;
+import com.yuanchu.mom.service.DeviceMetricsCopyService;
+import com.yuanchu.mom.utils.FileSaveUtil;
+import com.yuanchu.mom.vo.Result;
+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.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <p>
+ * 璁惧鏍″噯 - 鏍″噯璁板綍 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-27 10:20:01
+ */
+@Api(tags = "璁惧 - 璁惧鏍″噯")
+@RestController
+@RequestMapping("/deviceMetricRecord")
+public class DeviceMetricRecordController {
+
+ @Autowired
+ private DeviceMetricRecordService deviceMetricRecordService;
+
+ @Autowired
+ private DeviceMetricsCopyService deviceMetricsCopyService;
+
+ @Autowired
+ private NumberGenerator<DeviceMetricRecord> numberGenerator;
+
+ @ApiOperation("璁惧鏍″噯鍒嗛〉鏌ヨ")
+ @GetMapping("/deviceMetricRecordPage")
+ public Result deviceMetricRecordPage(@RequestParam("deviceId") Integer deviceId, Page page, @RequestParam("type") String type) {
+ return Result.success(deviceMetricRecordService.page(page, Wrappers.<DeviceMetricRecord>lambdaQuery()
+ .eq(DeviceMetricRecord::getDeviceId, deviceId)
+ .eq(DeviceMetricRecord::getType, type)));
+ }
+
+ @ApiOperation("璁惧鏍″噯 鏂板 鏇存柊")
+ @PostMapping("/addOrUpdateDeviceMetricRecord")
+ public Result addOrUpdateDeviceMetricRecord(@RequestBody DeviceMetricRecordDto deviceMetricRecordDto) {
+ if (ObjectUtils.isEmpty(deviceMetricRecordDto.getProcessNumber())) {
+ String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
+ String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
+ String processNumber = numberGenerator.generateNumberWithPrefix(5, "SBJZ" + year + month, DeviceMetricRecord::getProcessNumber);
+ deviceMetricRecordDto.setProcessNumber(processNumber);
+ }
+ deviceMetricRecordService.saveOrUpdate(deviceMetricRecordDto);
+ if (CollectionUtils.isNotEmpty(deviceMetricRecordDto.getDeviceMetricsCopyList())) {
+ deviceMetricRecordDto.getDeviceMetricsCopyList().forEach(i -> i.setDeviceMetricsId(deviceMetricRecordDto.getId()));
+ deviceMetricsCopyService.saveOrUpdateBatch(deviceMetricRecordDto.getDeviceMetricsCopyList());
+ }
+ return Result.success();
+ }
+
+ @ApiOperation("璁惧鏍″噯 鍒犻櫎")
+ @DeleteMapping("/deleteDeviceMetricRecord")
+ public Result deleteDeviceMetricRecord(@RequestParam("id") Integer id) {
+ DeviceMetricRecord deviceMetricRecord = deviceMetricRecordService.getById(id);
+ deviceMetricsCopyService.remove(Wrappers.<DeviceMetricsCopy>lambdaQuery()
+ .eq(DeviceMetricsCopy::getDeviceMetricsId, id));
+ // 鍒犻櫎鏂囦欢
+ FileSaveUtil.DeleteFile(deviceMetricRecord.getSystemFileName());
+ return Result.success(deviceMetricRecordService.removeById(id));
+ }
+
+ @ApiOperation("璁惧鏍″噯 鏍″噯鏉$洰鏌ヨ")
+ @GetMapping("/showDeviceMetricsCopy")
+ public Result showDeviceMetricsCopy(@RequestParam("id") Integer id, @RequestParam("type") String type) {
+ return Result.success(deviceMetricsCopyService.list(Wrappers.<DeviceMetricsCopy>lambdaQuery()
+ .eq(DeviceMetricsCopy::getDeviceMetricsId, id)
+ .eq(DeviceMetricsCopy::getType, type)));
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceRecordController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceRecordController.java
new file mode 100644
index 0000000..9e35023
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceRecordController.java
@@ -0,0 +1,70 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.numgen.NumberGenerator;
+import com.yuanchu.mom.pojo.DeviceRecord;
+import com.yuanchu.mom.service.DeviceRecordService;
+import com.yuanchu.mom.vo.Result;
+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;
+
+/**
+ * <p>
+ * cnas璁惧浣跨敤璁板綍琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-21 11:06:47
+ */
+@Api(tags = "璁惧浣跨敤璁板綍")
+@RestController
+@RequestMapping("/deviceRecord")
+public class DeviceRecordController {
+ @Autowired
+ private DeviceRecordService deviceRecordService;
+
+ @Autowired
+ private NumberGenerator<DeviceRecord> numberGenerator;
+
+ @ValueClassify("璁惧浣跨敤璁板綍")
+ @ApiOperation(value = "澶囦娇鐢ㄨ褰曟煡璇�")
+ @GetMapping("/deviceRecordPage")
+ public Result deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber) {
+ return Result.success(deviceRecordService.deviceRecordPage(deviceId, page, sampleCode, managementNumber));
+ }
+
+ @ApiOperation(value = "鏂板")
+ @PostMapping("/saveDeviceRecord")
+ public Result saveDeviceRecords(@RequestBody DeviceRecord deviceRecord) {
+ return Result.success(deviceRecordService.save(deviceRecord));
+ }
+
+ /**
+ * 缂栬緫璁惧浣跨敤璁板綍
+ * @param deviceRecord
+ * @return
+ */
+ @ApiOperation(value = "淇敼")
+ @PostMapping("/updateDeviceRecord")
+ public Result updateDeviceRecord(@RequestBody DeviceRecord deviceRecord) {
+ return Result.success(deviceRecordService.updateById(deviceRecord));
+ }
+
+ @DeleteMapping("/deleteDeviceRecord")
+ public Result deleteDeviceRecords(@RequestParam("id") Integer id) {
+ return Result.success(deviceRecordService.removeById(id));
+ }
+
+ @ApiOperation(value = "璁惧浣跨敤璁板綍瀵煎嚭")
+ @GetMapping("/exportUseRecord")
+ @ValueAuth
+ public void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response) throws Exception {
+ deviceRecordService.exportUseRecord(deviceId, exportDate, response);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceScrappedController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceScrappedController.java
new file mode 100644
index 0000000..033d586
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceScrappedController.java
@@ -0,0 +1,86 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.DeviceScrapped;
+import com.yuanchu.mom.service.DeviceScrappedService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璁惧鎶ュ簾鐢宠琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 01:53:47
+ */
+@Api(tags = "璁惧鎶ュ簾鐢宠琛�")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/deviceScrapped")
+public class DeviceScrappedController {
+
+ private DeviceScrappedService deviceScrappedService;
+
+
+ /**
+ * 璁惧鎶ュ簾鐢宠鍒楄〃
+ * @param data
+ * @return
+ */
+ @ApiOperation(value = "璁惧鎶ュ簾鐢宠鍒楄〃")
+ @PostMapping("/pageDeviceScrapped")
+ public Result<IPage<DeviceScrapped>> pageDeviceScrapped(@RequestBody Map<String, Object> data) throws Exception {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceScrapped deviceScrapped = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceScrapped.class);
+ return Result.success(deviceScrappedService.pageDeviceScrapped(page, deviceScrapped));
+ }
+
+ /**
+ * 鏌ヨ璁惧鎶ュ簾鐢宠
+ * @return
+ */
+ @ApiOperation(value = "鏌ヨ璁惧鎶ュ簾鐢宠")
+ @GetMapping("/getDeviceScrapped")
+ public Result getDeviceScrapped(Integer scrappedId){
+ return Result.success(deviceScrappedService.getById(scrappedId));
+ }
+
+ /**
+ * 鍒犻櫎璁惧鏍告煡璁″垝璇︽儏
+ * @return
+ */
+ @ApiOperation(value = "鍒犻櫎璁惧鎶ュ簾鐢宠")
+ @GetMapping("/delDeviceScrapped")
+ public Result delDeviceScrapped(Integer scrappedId){
+ return Result.success(deviceScrappedService.removeById(scrappedId));
+ }
+
+ /**
+ * 鏂板璁惧鎶ュ簾鐢宠
+ * @return
+ */
+ @ApiOperation(value = "鏂板璁惧鎶ュ簾鐢宠")
+ @PostMapping("/addDeviceScrapped")
+ public Result addDeviceScrapped(@RequestBody DeviceScrapped deviceScrapped){
+ return Result.success(deviceScrappedService.addDeviceScrapped(deviceScrapped));
+ }
+
+ /**
+ * 瀵煎嚭璁惧鎶ュ簾鐢宠
+ */
+ @ApiOperation("瀵煎嚭璁惧鎶ュ簾鐢宠")
+ @GetMapping("/exportDeviceScrapped")
+ public Result exportDeviceScrapped(Integer scrappedId, HttpServletResponse response) {
+ return deviceScrappedService.exportDeviceScrapped(scrappedId, response);
+ }
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceStateController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceStateController.java
new file mode 100644
index 0000000..8f697b5
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceStateController.java
@@ -0,0 +1,89 @@
+package com.yuanchu.mom.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.dto.DeviceStateDto;
+import com.yuanchu.mom.excel.DeviceStateExport;
+import com.yuanchu.mom.numgen.NumberGenerator;
+import com.yuanchu.mom.pojo.DeviceState;
+import com.yuanchu.mom.service.DeviceStateService;
+import com.yuanchu.mom.vo.Result;
+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.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * <p>
+ * 璁惧鍋滅敤/鍚敤 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 09:51:40
+ */
+@RestController
+@RequestMapping("/deviceState")
+public class DeviceStateController {
+
+ @Autowired
+ private DeviceStateService deviceStateService;
+
+ @Autowired
+ private NumberGenerator<DeviceState> numberGenerator;
+
+ @PostMapping("saveDeviceState")
+ public Result saveIncidentReportData(@RequestBody DeviceState deviceState) {
+ if (ObjectUtils.isEmpty(deviceState.getProcessNumber())) {
+ String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
+ String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
+ String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceState::getProcessNumber);
+ deviceState.setProcessNumber(processNumber);
+ }
+ deviceStateService.saveOrUpdate(deviceState);
+ return Result.success();
+ }
+
+ @GetMapping("/getDeviceStatePage")
+ public Result getDeviceStatePage(@RequestParam("deviceId") Integer deviceId, Page page, String processNumber){
+ return Result.success(deviceStateService.getDeviceStatePage(deviceId, page, processNumber));
+ }
+
+ @DeleteMapping("/deleteDeviceState")
+ public Result deleteDeviceState(@RequestParam("stateId") Integer stateId){
+ return Result.success(deviceStateService.removeById(stateId));
+ }
+
+ @PostMapping("/deviceStateExport")
+ public Result deviceStateExport(@RequestParam("deviceId") Integer deviceId, String processNumber, HttpServletResponse response) throws Exception {
+ IPage<DeviceStateDto> deviceBorrows = deviceStateService.getDeviceStatePage(deviceId, new Page<>(1, -1), processNumber);
+ List<DeviceStateExport> studentList = JSONObject.parseArray(JSON.toJSONString(deviceBorrows.getRecords()), DeviceStateExport.class);
+ response.setHeader("requestType", "excel");
+ response.setHeader("Access-Control-Expose-Headers", "requestType");
+ // 璁剧疆鍗曞厓鏍兼牱寮�
+ // 淇濆瓨鍒扮涓�涓猻heet涓�
+ EasyExcel.write(response.getOutputStream())
+ .head(DeviceStateExport.class)
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 鑷�傚簲鍒楀
+ .sheet("sheet")
+ .doWrite(studentList);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "璁惧鍚姩/鍋滄瀵煎嚭")
+ @GetMapping("/exportDeviceStatus")
+ @ValueAuth
+ public void exportDeviceStatus(@RequestParam("processNumber") String processNumber,@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws Exception {
+ deviceStateService.exportDeviceStatus(deviceId, processNumber, response);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceTraceabilityManagementController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceTraceabilityManagementController.java
new file mode 100644
index 0000000..51e42c3
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceTraceabilityManagementController.java
@@ -0,0 +1,104 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.DeviceTraceabilityManagementDto;
+import com.yuanchu.mom.pojo.DeviceTraceabilityManagement;
+import com.yuanchu.mom.service.DeviceTraceabilityManagementService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.SneakyThrows;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:44
+ */
+@Api(tags = "璁惧閲忓�兼函婧愯鍒�")
+@RestController
+@RequestMapping("/deviceTraceabilityManagement")
+public class DeviceTraceabilityManagementController {
+ @Resource
+ private DeviceTraceabilityManagementService deviceTraceabilityManagementService;
+
+ /**
+ * 鍒嗛〉鏌ヨ閲忓�兼函婧愯鍒�
+ * @param data 鍒嗛〉鍙傛暟
+ * @return
+ */
+ @ApiOperation("鍒嗛〉鏌ヨ閲忓�兼函婧愯鍒�")
+ @PostMapping("selectDeviceTraceabilityManagementByPage")
+ @SneakyThrows
+ public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(@RequestBody Map<String, Object> data){
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceTraceabilityManagementDto itemParameter = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceTraceabilityManagementDto.class);
+ return deviceTraceabilityManagementService.selectDeviceTraceabilityManagementByPage(page, itemParameter);
+ }
+
+ /**
+ * 鏂板閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ @ApiOperation("鏂板閲忓�兼函婧愯鍒�")
+ @PostMapping("/addTraceabilityManagement")
+ public Result addTraceabilityManagement(@RequestBody DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ return deviceTraceabilityManagementService.addTraceabilityManagement(deviceTraceabilityManagementDto);
+ }
+
+ /**
+ * 淇敼閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ @ApiOperation("淇敼閲忓�兼函婧愯鍒�")
+ @PostMapping("/updateTraceabilityManagement")
+ public Result updateTraceabilityManagement(@RequestBody DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ return deviceTraceabilityManagementService.updateTraceabilityManagement(deviceTraceabilityManagementDto);
+ }
+
+ /**
+ * 鍒犻櫎閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ @ApiOperation("鍒犻櫎閲忓�兼函婧愯鍒�")
+ @GetMapping("/deleteTraceabilityManagement")
+ public Result deleteTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ return deviceTraceabilityManagementService.deleteTraceabilityManagement(deviceTraceabilityManagementDto);
+ }
+
+ /**
+ * 鏌ヨ閲忓�兼函婧愯鍒掕鎯�
+ */
+ @ApiOperation("鏌ヨ閲忓�兼函婧愯鍒掕鎯�")
+ @GetMapping("/getTraceabilityManagementDetail")
+ public Result<DeviceTraceabilityManagementDto> getTraceabilityManagementDetail(Integer traceabilityManagementId) {
+ return deviceTraceabilityManagementService.getTraceabilityManagementDetail(traceabilityManagementId);
+ }
+
+ /**
+ * 閲忓�兼函婧愯鍒掑鏍哥姸鎬佷慨鏀�
+ */
+ @ApiOperation("閲忓�兼函婧愯鍒掑鏍哥姸鎬佷慨鏀�")
+ @PostMapping("/reviewTraceabilityManagementStatus")
+ public Result reviewTraceabilityManagementStatus(@RequestBody DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ return deviceTraceabilityManagementService.reviewTraceabilityManagementStatus(deviceTraceabilityManagementDto);
+ }
+
+ /**
+ * 瀵煎嚭閲忓�兼函婧愯鍒�
+ */
+ @ApiOperation("瀵煎嚭閲忓�兼函婧愯鍒�")
+ @GetMapping("/exportDeviceTraceabilityManagement")
+ public Result exportDeviceTraceabilityManagement(@RequestParam("traceabilityManagementId") Integer traceabilityManagementId, HttpServletResponse response) {
+ return deviceTraceabilityManagementService.exportDeviceTraceabilityManagementDto(traceabilityManagementId, response);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DocumentController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DocumentController.java
new file mode 100644
index 0000000..fbf50f0
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DocumentController.java
@@ -0,0 +1,44 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.yuanchu.mom.pojo.Document;
+import com.yuanchu.mom.service.DocumentService;
+import com.yuanchu.mom.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/documents")
+public class DocumentController {
+
+ @Autowired
+ private DocumentService documentService;
+
+ @PostMapping
+ public Result createDocument( Document document) {
+ documentService.save(document);
+ return Result.success("ok");
+ }
+
+ @GetMapping("/{id}")
+ public Document getDocumentById(@PathVariable Integer id) {
+ return documentService.getById(id);
+ }
+
+ @PutMapping("updateDocument")
+ public Result updateDocument(@RequestBody Document document) {
+ return Result.success(documentService.updateById(document));
+ }
+
+ @DeleteMapping("/{id}")
+ public Result deleteDocumentById(@PathVariable Integer id) {
+ return Result.success(documentService.removeById(id));
+ }
+
+ @GetMapping("/getListByDId/{id}")
+ public Result getAllDocuments(@PathVariable Integer id) {
+ LambdaQueryWrapper<Document> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(Document::getDeviceId,id);
+ return Result.success(documentService.list(lambdaQueryWrapper));
+ }
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/IncidentReportController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/IncidentReportController.java
new file mode 100644
index 0000000..9ce3f90
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/IncidentReportController.java
@@ -0,0 +1,84 @@
+package com.yuanchu.mom.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.dto.IncidentReportAddDto;
+import com.yuanchu.mom.excel.IncidentReportExport;
+import com.yuanchu.mom.service.IncidentReportService;
+import com.yuanchu.mom.vo.Result;
+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.io.IOException;
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧楠屾敹娣诲姞楠屾敹瀛楁琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 03:54:49
+ */
+@RestController
+@RequestMapping("/incident-report")
+public class IncidentReportController {
+ @Autowired
+ private IncidentReportService incidentReportService;
+
+ @PostMapping("saveIncidentReportData")
+ public Result saveIncidentReportData(@RequestBody IncidentReportAddDto incidentReportAddDto) {
+ incidentReportService.saveIncidentReportData(incidentReportAddDto);
+ return Result.success();
+ }
+
+ @GetMapping("/getShowIncidentReport")
+ public Result getShowIncidentReport(@RequestParam("id") Integer id) {
+ return Result.success(incidentReportService.getShowIncidentReport(id));
+ }
+
+ @DeleteMapping("/deleteIncidentReport")
+ public Result deleteIncidentReport(@RequestParam("id") Integer id) {
+ incidentReportService.deleteIncidentReport(id);
+ return Result.success();
+ }
+
+ @GetMapping("/incidentReportPage")
+ public Result incidentReportPage(@RequestParam("deviceId") Integer deviceId, Page page, String processNumber){
+ return Result.success(incidentReportService.getByDeviceId(deviceId, page, processNumber));
+ }
+
+ @DeleteMapping("deleteIncidentReportAll")
+ public Result deleteIncidentReport(Integer sparePartsId, Integer fileId, Integer installId, Integer acceptanceCheckId) {
+ incidentReportService.deleteIncidentReportAll(sparePartsId, fileId, installId, acceptanceCheckId);
+ return Result.success();
+ }
+
+ @GetMapping("/incidentReportExport")
+ public Result incidentReportPage(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws IOException {
+ List<IncidentReportExport> list = incidentReportService.incidentReportExport(deviceId);
+ response.setHeader("requestType", "excel");
+ response.setHeader("Access-Control-Expose-Headers", "requestType");
+ // 璁剧疆鍗曞厓鏍兼牱寮�
+ // 淇濆瓨鍒扮涓�涓猻heet涓�
+ EasyExcel.write(response.getOutputStream())
+ .head(IncidentReportExport.class)
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 鑷�傚簲鍒楀
+ .sheet()
+ .doWrite(list);
+ return Result.success();
+ }
+
+ @ValueClassify("璁惧楠屾敹")
+ @ApiOperation(value = "璁惧楠屾敹瀵煎嚭")
+ @GetMapping("/acceptanceCertificateExport")
+ @ValueAuth
+ public void acceptanceCertificateExport(@RequestParam("deviceId") Integer deviceId, @RequestParam("processNumber") String processNumber, HttpServletResponse response) throws Exception {
+ incidentReportService.acceptanceCertificateExport(deviceId, processNumber, response);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/InstructionController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/InstructionController.java
new file mode 100644
index 0000000..50f0966
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/InstructionController.java
@@ -0,0 +1,109 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.InstructionDto;
+import com.yuanchu.mom.dto.OperationInstructionDto;
+import com.yuanchu.mom.pojo.Instruction;
+import com.yuanchu.mom.pojo.OperationInstruction;
+import com.yuanchu.mom.service.InstructionService;
+import com.yuanchu.mom.service.OperationInstructionService;
+import com.yuanchu.mom.vo.OperationInstructionVo;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:29:18
+ */
+@RestController
+@RequestMapping("/instruction")
+public class InstructionController {
+
+ @Autowired
+ private InstructionService instructionService;
+
+ @Autowired
+ private OperationInstructionService operationInstructionService;
+
+ @Autowired
+ private GetLook getLook;
+
+ @ApiOperation(value = "浣滀笟鎸囧涔� 鍒嗛〉")
+ @GetMapping("/pageByPageQueryOfHomeworkInstructions")
+ public Result<IPage<Instruction>> pageByPageQueryOfHomeworkInstructions(Page page, OperationInstructionDto operationInstructionDto){
+ return Result.success(instructionService.pageByPageQueryOfHomeworkInstructions(page, operationInstructionDto));
+ }
+
+ @ApiOperation(value = "浣滀笟鎸囧涔︽柊澧�")
+ @PostMapping("/newHomeworkGuidebookAdded")
+ public Result newHomeworkGuidebookAdded(@RequestBody InstructionDto instructionDto){
+ instructionService.newHomeworkGuidebookAdded(instructionDto);
+ return Result.success();
+ }
+
+ @ValueAuth
+ @ApiOperation(value = "浣滀笟鎸囧涔︾紪杈�")
+ @GetMapping("/homeworkGuidebookEditor")
+ public Result<Map<String, Object>> homeworkGuidebookEditor(Integer instructionId){
+ Instruction instruction = instructionService.getById(instructionId);
+ List<OperationInstructionVo> list = operationInstructionService.homeworkGuidebookEditor(instructionId);
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("list", list);
+ map.put("instruction", instruction);
+ return Result.success(map);
+ }
+
+ @ApiOperation(value = "浣滀笟鎸囧涔﹀彈鎺ф枃浠跺垹闄�")
+ @GetMapping("/deleteHomeworkGuidebook")
+ public Result deleteHomeworkGuidebook(String ids){
+ if (ObjectUtils.isNotEmpty(ids)) {
+ String[] idArray = ids.split(",");
+ operationInstructionService.removeBatchByIds(Arrays.asList(idArray));
+ }
+ return Result.success();
+ }
+
+ @ApiOperation(value = "浣滀笟鎸囧涔﹀垹闄�")
+ @GetMapping("/homeworkGuidebook")
+ public Result homeworkGuidebook(String id, String instructionId){
+ // 鍒犻櫎瀛愯〃鏁版嵁
+ operationInstructionService.removeById(id);
+ // 濡傛灉瀛愯〃鏁版嵁涓虹┖
+ long count = operationInstructionService.count(Wrappers.<OperationInstruction>lambdaQuery()
+ .eq(OperationInstruction::getInstructionId, instructionId));
+ // 閭d箞灏卞垹闄ょ埗琛ㄦ暟鎹�
+ if (count < 1) {
+ instructionService.removeById(id);
+ }
+ return Result.success();
+ }
+
+ @ApiOperation(value = "浣滀笟鎸囧涔﹀鎵�")
+ @GetMapping("/approvalOfHomeworkInstructionManual")
+ public Result approvalOfHomeworkInstructionManual(String id, Boolean status){
+ Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
+ operationInstructionService.update(Wrappers.<OperationInstruction>lambdaUpdate()
+ .eq(OperationInstruction::getId, id)
+ .set(OperationInstruction::getStatus, status)
+ .set(OperationInstruction::getApproverId, map1.get("userId"))
+ .set(OperationInstruction::getEntryIntoForceTime, LocalDateTime.now()));
+ return Result.success();
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/QrShowController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/QrShowController.java
new file mode 100644
index 0000000..35b5f46
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/QrShowController.java
@@ -0,0 +1,34 @@
+package com.yuanchu.mom.controller;
+
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.enums.QrModelType;
+import com.yuanchu.mom.service.QrShowService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@Controller
+@RequestMapping("/qr")
+public class QrShowController {
+
+ @Autowired
+ private QrShowService qrShowService;
+
+ /**
+ * 浜岀淮鐮佹壂鐮佽姹傛帴鍙�
+ * @param model
+ * @param code 缂栧彿
+ * @param type 绫诲瀷(word/device)
+ * @return
+ */
+ @ValueAuth
+ @GetMapping("/qrScan")
+ public String hello(Model model, @RequestParam("code") String code,@RequestParam("type") String type){
+ qrShowService.transformModelByType(model,code,type);
+ return QrModelType.getValueByType(type);
+ }
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/ReservationController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/ReservationController.java
new file mode 100644
index 0000000..cb3b77d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/ReservationController.java
@@ -0,0 +1,70 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.DeviceDto;
+import com.yuanchu.mom.pojo.Reservation;
+import com.yuanchu.mom.service.DeviceService;
+import com.yuanchu.mom.service.ReservationService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璧勬簮棰勫畾鏂板缓棰勫畾琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author baomidou
+ * @since 2024-09-14
+ */
+@RestController
+@RequestMapping("/reservation")
+public class ReservationController {
+ @Autowired
+ private ReservationService reservationService;
+
+ @Resource
+ private DeviceService deviceService;
+
+ @PostMapping("/selectDeviceParameter")
+ public Result selectDeviceParameter(@RequestBody Map<String, Object> data, @RequestParam(value = "laboratoryNameIsNull", required = false) Boolean laboratoryNameIsNull,@RequestParam(value = "starttime", required = false)String starttime,@RequestParam(value = "endtime", required = false) String endtime) throws Exception {
+ Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+ DeviceDto itemParameter = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), DeviceDto.class);
+ Map<String, Object> map = reservationService.selectDeviceParameter(page, itemParameter, laboratoryNameIsNull,starttime,endtime);
+ return Result.success(map);
+ }
+
+ @PostMapping("/selectReservationParameterPage")
+ public Result selectReservationParameterPage(@RequestParam String deviceId,@RequestParam String reservationTime,@RequestParam String specificTime){
+ return Result.success(reservationService.selectReservationParameterPage(deviceId,reservationTime,specificTime));
+ }
+
+ @GetMapping("/{id}")
+ public Result getList(@PathVariable Integer id) {
+ LambdaQueryWrapper<Reservation> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(Reservation::getDeviceId,id);
+ return Result.success(reservationService.list(lambdaQueryWrapper));
+ }
+
+ @PostMapping("save")
+ public Result save(Reservation reservation){
+ reservation.setCreateDate(LocalDateTime.now());
+ reservationService.save(reservation);
+ return Result.success();
+ }
+
+
+ @DeleteMapping("/delete/{ids}")
+ public Result deleteReservation(@PathVariable String ids) {
+ String[] idArray = ids.split(",");
+ reservationService.removeBatchByIds(Arrays.asList(idArray));
+ return Result.success();
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceAccidentReportDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceAccidentReportDto.java
new file mode 100644
index 0000000..88030c6
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceAccidentReportDto.java
@@ -0,0 +1,31 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceAccidentReport;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-18 鏄熸湡涓� 10:00:48
+ * Description:
+ */
+@Data
+public class DeviceAccidentReportDto extends DeviceAccidentReport {
+ @ApiModelProperty("鏃堕棿")
+ private String accidentDateStr;
+
+ @ApiModelProperty("鎶ュ憡浜哄~鍐欐椂闂�")
+ private String reportDateStr;
+
+ @ApiModelProperty("璇勪及浜哄~鍐欐椂闂�")
+ private String assessorDateStr;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜哄~鍐欐椂闂�")
+ private String departmentHeadDateStr;
+
+ @ApiModelProperty("鎶�鏈礋璐d汉濉啓鏃堕棿")
+ private String technicalDirectorDateStr;
+
+ @ApiModelProperty("涓讳换濉啓鏃堕棿")
+ private String directorHeadDateStr;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCalibrationPlanDetailDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCalibrationPlanDetailDto.java
new file mode 100644
index 0000000..66a7d27
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCalibrationPlanDetailDto.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceCalibrationPlanDetail;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-17 鏄熸湡浜� 10:05:08
+ * Description:
+ */
+@Data
+public class DeviceCalibrationPlanDetailDto extends DeviceCalibrationPlanDetail {
+
+ @ApiModelProperty("搴忓彿")
+ private Integer index;
+ @ApiModelProperty("鏈�杩戞瀹氭椂闂碨tr")
+ private String lastDateStr;
+ @ApiModelProperty("鏈勾璁″垝鏍″噯鏃堕棿Str")
+ private String planDateStr;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCalibrationPlanDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCalibrationPlanDto.java
new file mode 100644
index 0000000..43e4522
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCalibrationPlanDto.java
@@ -0,0 +1,31 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceCalibrationPlan;
+import com.yuanchu.mom.pojo.DeviceCalibrationPlanDetail;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author zhuo
+ * @Date 2024/12/16
+ */
+@Data
+public class DeviceCalibrationPlanDto extends DeviceCalibrationPlan {
+
+ @ApiModelProperty("缂栧埗浜�")
+ private String writeName;
+
+ @ApiModelProperty("鎵瑰噯浜�")
+ private String ratifyName;
+
+ @ApiModelProperty("缂栧埗鏃堕棿")
+ private String writeTimeStr;
+
+ @ApiModelProperty("鎵瑰噯鏃堕棿")
+ private String ratifyTimeStr;
+
+ @ApiModelProperty("鏍″噯璁″垝璇︽儏")
+ private List<DeviceCalibrationPlanDetail> calibrationPlanDetailList;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCollectionDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCollectionDto.java
new file mode 100644
index 0000000..df52d4d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceCollectionDto.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 璁惧閲囬泦瀵硅薄
+ *
+ * @Author zhuo
+ * @Date 2024/12/3
+ */
+@Data
+public class DeviceCollectionDto {
+
+ @ApiModelProperty(value = "鏍峰搧id")
+ private Integer id;
+
+ @ApiModelProperty(value = "璁㈠崟缂栧彿")
+ private String entrustCode;
+
+ @ApiModelProperty(value = "鏍峰搧缂栧彿")
+ private String sampleCode;
+
+ @ApiModelProperty(value = "閲囬泦鐨勬楠岄」id")
+ private List<Integer> itemIds;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExaminePlanDetailsDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExaminePlanDetailsDto.java
new file mode 100644
index 0000000..e655f04
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExaminePlanDetailsDto.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceExaminePlanDetails;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-17 鏄熸湡浜� 15:34:44
+ * Description:
+ */
+@Data
+public class DeviceExaminePlanDetailsDto extends DeviceExaminePlanDetails {
+ @ApiModelProperty("搴忓彿")
+ private Integer index;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExaminePlanDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExaminePlanDto.java
new file mode 100644
index 0000000..1ac4597
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExaminePlanDto.java
@@ -0,0 +1,33 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceExaminePlan;
+import com.yuanchu.mom.pojo.DeviceExaminePlanDetails;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author zhuo
+ * @Date 2024/12/16
+ */
+@Data
+public class DeviceExaminePlanDto extends DeviceExaminePlan {
+
+ @ApiModelProperty("缂栧埗浜�")
+ private String writeName;
+
+ @ApiModelProperty("鎵瑰噯浜�")
+ private String ratifyName;
+
+ @ApiModelProperty("缂栧埗鏃堕棿")
+ private String writeTimeStr;
+
+ @ApiModelProperty("鎵瑰噯鏃堕棿")
+ private String ratifyTimeStr;
+
+ @ApiModelProperty("骞村害")
+ private String year;
+
+ private List<DeviceExaminePlanDetails> examinePlanDetailsList;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordContrastDetailsDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordContrastDetailsDto.java
new file mode 100644
index 0000000..00cdc0e
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordContrastDetailsDto.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceExamineRecordContrastDetails;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-17 鏄熸湡浜� 13:59:37
+ * Description:
+ */
+@Data
+public class DeviceExamineRecordContrastDetailsDto extends DeviceExamineRecordContrastDetails {
+ @ApiModelProperty("搴忓彿")
+ private Integer index;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordContrastDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordContrastDto.java
new file mode 100644
index 0000000..cd801eb
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordContrastDto.java
@@ -0,0 +1,47 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceExamineRecordContrast;
+import com.yuanchu.mom.pojo.DeviceExamineRecordContrastDetails;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author zhuo
+ * @Date 2024/12/16
+ */
+@Data
+public class DeviceExamineRecordContrastDto extends DeviceExamineRecordContrast {
+
+ @ApiModelProperty("鏍告煡璁板綍瀵规瘮璇︽儏")
+ private List<DeviceExamineRecordContrastDetails> recordContrastDetailsList;
+
+
+ @ApiModelProperty("A璁惧鍚嶇О")
+ private String aDeviceName;
+
+ @ApiModelProperty("A璁惧缂栧彿")
+ private String aDeviceNumber;
+
+ @ApiModelProperty("b璁惧鍚嶇О")
+ private String bDeviceName;
+
+ @ApiModelProperty("b璁惧缂栧彿")
+ private String bDeviceNumber;
+
+ @ApiModelProperty("c璁惧鍚嶇О")
+ private String cDeviceName;
+
+ @ApiModelProperty("c璁惧缂栧彿")
+ private String cDeviceNumber;
+
+ @ApiModelProperty("鏍告煡鏃ユ湡")
+ private String checkerTimeStr;
+
+ @ApiModelProperty("瀹℃牳鏃ユ湡")
+ private String reviewTimeStr;
+
+ @ApiModelProperty("瀹為獙瀹�")
+ private String labName;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordDto.java
new file mode 100644
index 0000000..5ddfb08
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExamineRecordDto.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceExamineRecord;
+import com.yuanchu.mom.pojo.DeviceExamineRecordDetail;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author zhuo
+ * @Date 2024/12/16
+ */
+@Data
+public class DeviceExamineRecordDto extends DeviceExamineRecord {
+
+ @ApiModelProperty("鏍告煡璁板綍璇︽儏")
+ private List<DeviceExamineRecordDetail> recordDetailList;
+
+ @ApiModelProperty("璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("璁惧缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("鏈�鍚庝竴娆′慨鏀规棩鏈�")
+ private String updateTimeStr;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExport.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExport.java
new file mode 100644
index 0000000..411130d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExport.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.Device;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-10 鏄熸湡浜� 15:55:29
+ * Description:
+ */
+@Data
+public class DeviceExport extends Device {
+ @ApiModelProperty("绠$悊浜�")
+ private String equipmentManagerName;
+
+ @ApiModelProperty("搴忓彿")
+ private Integer index;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExternalApplyDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExternalApplyDto.java
new file mode 100644
index 0000000..a59dd4e
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceExternalApplyDto.java
@@ -0,0 +1,12 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceExternalApply;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/12/19
+ */
+@Data
+public class DeviceExternalApplyDto extends DeviceExternalApply {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceFaultOneDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceFaultOneDto.java
new file mode 100644
index 0000000..82fe11c
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceFaultOneDto.java
@@ -0,0 +1,17 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceFaultOne;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DeviceFaultOneDto extends DeviceFaultOne {
+ @ApiModelProperty(value = "璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty(value = "瑙勬牸鍨嬪彿")
+ private String specificationModel;
+
+ @ApiModelProperty(value = "绠$悊缂栧彿")
+ private String managementNumber;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceInspectionRecordDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceInspectionRecordDto.java
new file mode 100644
index 0000000..cd717f6
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceInspectionRecordDto.java
@@ -0,0 +1,25 @@
+package com.yuanchu.mom.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.yuanchu.mom.pojo.DeviceInspectionRecord;
+import com.yuanchu.mom.pojo.DeviceInspectionRecordDetails;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-16 鏄熸湡涓� 17:23:22
+ * Description:
+ */
+@Data
+public class DeviceInspectionRecordDto extends DeviceInspectionRecord {
+
+ @TableField(exist = false)
+ @ApiModelProperty("娴嬭瘯璇︽儏鍐呭")
+ private List<DeviceInspectionRecordDetails> details;
+
+ @ApiModelProperty("娴嬭瘯鏃堕棿")
+ private String testDateString;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMaintenancePlanDetailsDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMaintenancePlanDetailsDto.java
new file mode 100644
index 0000000..512f4c8
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMaintenancePlanDetailsDto.java
@@ -0,0 +1,32 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceMaintenancePlanDetails;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-17 鏄熸湡浜� 9:26:48
+ * Description: 璁惧淇濆吇璁″垝璇︽儏
+ */
+@Data
+public class DeviceMaintenancePlanDetailsDto extends DeviceMaintenancePlanDetails {
+
+ @ApiModelProperty("搴忓彿")
+ private Integer index;
+
+ @ApiModelProperty("浠櫒璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("浠櫒璁惧缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("浠櫒璁惧鍨嬪彿")
+ private String specificationModel;
+
+ @ApiModelProperty("浠櫒缂栧彿")
+ private String managementNumber;
+
+ @ApiModelProperty("褰掑睘瀹為獙瀹�")
+ private String storagePoint;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMaintenancePlanDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMaintenancePlanDto.java
new file mode 100644
index 0000000..22e922b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMaintenancePlanDto.java
@@ -0,0 +1,30 @@
+package com.yuanchu.mom.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.yuanchu.mom.pojo.DeviceMaintenancePlan;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-16 鏄熸湡涓� 18:26:59
+ * Description:
+ */
+@Data
+public class DeviceMaintenancePlanDto extends DeviceMaintenancePlan {
+
+ @ApiModelProperty("璁惧淇濆吇璁″垝璇︽儏")
+ @TableField(exist = false)
+ private List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails;
+
+ @ApiModelProperty("缂栧埗鏃ユ湡")
+ private String datePreparationStr;
+
+ @ApiModelProperty("瀹℃牳鏃ユ湡")
+ private String auditDateStr;
+
+ @ApiModelProperty("璁惧Id")
+ private Integer deviceId;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMetricRecordAndMaintenanceDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMetricRecordAndMaintenanceDto.java
new file mode 100644
index 0000000..a2c1aea
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMetricRecordAndMaintenanceDto.java
@@ -0,0 +1,38 @@
+package com.yuanchu.mom.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-13 鏄熸湡浜� 10:43:06
+ * Description: 浠櫒璁惧妗f鍗′腑鏄剧ず鐨勮澶囨牎鍑嗚褰曞拰缁存姢璁板綍鐨勫垪琛ㄥ璞�
+ */
+@Data
+public class DeviceMetricRecordAndMaintenanceDto {
+ @ApiModelProperty("搴忓彿")
+ private Integer index;
+
+ // 鏍″噯琛ㄤ腑鐨勬暟鎹�
+ @ApiModelProperty("鏍″噯鏃ユ湡")
+ private String calibrationDateString;
+
+ @ApiModelProperty("璇佷功鏍囧彿")
+ private String certificateNumber;
+
+ @ApiModelProperty("鏍″噯鏈夋晥鏃ユ湡")
+ private String validityDateString;
+
+ @ApiModelProperty("鍒ゅ畾")
+ private String judgement;
+
+ // 缁翠慨璁板綍琛ㄤ腑鐨勬暟鎹�
+ @ApiModelProperty("缁翠慨鏃ユ湡")
+ private String maintenanceDateString;
+
+ @ApiModelProperty("澶勭悊鏂瑰紡")
+ private String handlingMethod;
+
+ @ApiModelProperty("澶囨敞")
+ private String comments;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMetricRecordDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMetricRecordDto.java
new file mode 100644
index 0000000..20aa80b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceMetricRecordDto.java
@@ -0,0 +1,13 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceMetricRecord;
+import com.yuanchu.mom.pojo.DeviceMetricsCopy;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceMetricRecordDto extends DeviceMetricRecord {
+
+ private List<DeviceMetricsCopy> deviceMetricsCopyList;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceRecordDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceRecordDto.java
new file mode 100644
index 0000000..af3eedf
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceRecordDto.java
@@ -0,0 +1,14 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceRecord;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DeviceRecordDto extends DeviceRecord {
+
+ @ApiModelProperty("璁惧鍚嶇О")
+ private String deviceName;
+ @ApiModelProperty("璁惧缂栧彿")
+ private String managementNumber;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceRecordExportWord.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceRecordExportWord.java
new file mode 100644
index 0000000..01bf749
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceRecordExportWord.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceRecord;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-10 鏄熸湡浜� 17:19:22
+ * Description:
+ */
+@Data
+public class DeviceRecordExportWord extends DeviceRecord {
+ @ApiModelProperty("浣跨敤鍓�0浠h〃涓嶆甯�1浠h〃姝e父")
+ private String useBeforeString;
+
+ @ApiModelProperty("浣跨敤鍚�0浠h〃涓嶆甯�1浠h〃姝e父")
+ private String useAfterString;
+
+ @ApiModelProperty("鎿嶄綔鏃堕棿 String yyyy-MM-dd")
+ private String operationDate;
+
+ @ApiModelProperty("浣跨敤寮�濮嬫棩鏈� String yyyy-MM-dd \n HH:mm:ss")
+ private String useStartDateString;
+
+ @ApiModelProperty("浣跨敤缁撴潫鏃ユ湡 String yyyy-MM-dd \n HH:mm:ss")
+ private String useEndDateString;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceScrappedDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceScrappedDto.java
new file mode 100644
index 0000000..c74cb62
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceScrappedDto.java
@@ -0,0 +1,26 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceScrapped;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-17 鏄熸湡浜� 18:34:17
+ * Description:
+ */
+@Data
+public class DeviceScrappedDto extends DeviceScrapped {
+
+ @ApiModelProperty("鐢宠鏃堕棿")
+ private String applicantDateStr;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜哄~鍐欐椂闂�")
+ private String departmentHeadDateStr;
+
+ @ApiModelProperty("璁¢噺瀹や汉濉啓鏃堕棿")
+ private String meteringRoomDateStr;
+
+ @ApiModelProperty("鎵瑰噯浜哄~鍐欐椂闂�")
+ private String approverDateStr;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceStateDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceStateDto.java
new file mode 100644
index 0000000..80f317b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceStateDto.java
@@ -0,0 +1,32 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceState;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DeviceStateDto extends DeviceState {
+ @ApiModelProperty(value = "璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty(value = "瑙勬牸鍨嬪彿")
+ private String specificationModel;
+
+ @ApiModelProperty(value = "绠$悊缂栧彿")
+ private String managementNumber;
+
+ @ApiModelProperty(value = "鎿嶄綔鏃ユ湡 yyyy-MM-dd")
+ private String submitDateString;
+
+ @ApiModelProperty("璐熻矗浜哄鎵规棩鏈� yyyy-MM-dd")
+ private String departmentDateString;
+
+ @ApiModelProperty("璁¢噺瀹ゅ鎵规棩鏈� yyyy-MM-dd")
+ private String measuringRoomDateString;
+
+ @ApiModelProperty("鎵瑰噯鏃ユ湡 yyyy-MM-dd")
+ private String approvalDateString;
+
+ @ApiModelProperty(value = "璁惧绫诲瀷")
+ private String largeCategory;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceTraceabilityManagementDetailsDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceTraceabilityManagementDetailsDto.java
new file mode 100644
index 0000000..b0bcba4
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceTraceabilityManagementDetailsDto.java
@@ -0,0 +1,25 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceTraceabilityManagementDetails;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-20 鏄熸湡浜� 15:05:02
+ * Description:
+ */
+@Data
+public class DeviceTraceabilityManagementDetailsDto extends DeviceTraceabilityManagementDetails {
+ @ApiModelProperty("搴忓彿")
+ private Integer index;
+
+ @ApiModelProperty("浠櫒璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("浠櫒璁惧鍨嬪彿")
+ private String specificationModel;
+
+ @ApiModelProperty("浠櫒缂栧彿")
+ private String managementNumber;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceTraceabilityManagementDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceTraceabilityManagementDto.java
new file mode 100644
index 0000000..553d8f2
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceTraceabilityManagementDto.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.DeviceTraceabilityManagement;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-20 鏄熸湡浜� 14:30:45
+ * Description:
+ */
+@Data
+public class DeviceTraceabilityManagementDto extends DeviceTraceabilityManagement {
+ @ApiModelProperty("璁惧閲忓�兼函婧愯鍒掕鎯�")
+ private List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetails;
+
+ @ApiModelProperty("缂栧埗鏃ユ湡")
+ private String datePreparationStr;
+
+ @ApiModelProperty("瀹℃牳鏃ユ湡")
+ private String auditDateStr;
+
+ @ApiModelProperty("璁惧Id")
+ private Integer deviceId;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DocumentExportWordDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DocumentExportWordDto.java
new file mode 100644
index 0000000..3ba6dc3
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DocumentExportWordDto.java
@@ -0,0 +1,45 @@
+package com.yuanchu.mom.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-13 鏄熸湡浜� 8:45:34
+ * Description: 鐢ㄤ簬浠櫒璁惧妗f鍗$殑瀵煎嚭
+ */
+@Data
+public class DocumentExportWordDto {
+
+ // 璁惧妗f宸﹀垪琛�
+ @ApiModelProperty("搴忓彿")
+ private Integer index1;
+
+ @ApiModelProperty("妗f鍚嶇О")
+ private String name1;
+
+ @ApiModelProperty("浠芥暟")
+ private Integer quantity1;
+
+ @ApiModelProperty("椤电爜")
+ private Integer pageCount1;
+
+ @ApiModelProperty("褰掓。鏃ユ湡")
+ private String archiveDateString1;
+
+ // 璁惧妗f鍙冲垪琛�
+ @ApiModelProperty("搴忓彿")
+ private Integer index2;
+
+ @ApiModelProperty("妗f鍚嶇О")
+ private String name2;
+
+ @ApiModelProperty("浠芥暟")
+ private Integer quantity2;
+
+ @ApiModelProperty("椤电爜")
+ private Integer pageCount2;
+
+ @ApiModelProperty("褰掓。鏃ユ湡")
+ private String archiveDateString2;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/IncidentReportAddDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/IncidentReportAddDto.java
new file mode 100644
index 0000000..9f57770
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/IncidentReportAddDto.java
@@ -0,0 +1,26 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.*;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class IncidentReportAddDto extends IncidentReport {
+ private List<IncidentSpareParts> sparePartsConfirmationList; // 澶囦欢纭List
+ private List<IncidentFile> fileClassConfirmationList; // 鏂囦欢纭List
+ private List<IncidentInstall> installationAcceptanceRecordList; // 瀹夎楠屾敹璁板綍
+ private List<IncidentAcceptanceCheck> acceptanceCheckRecordList; // 楠屾敹鏍告煡璁板綍
+
+ private String deviceName;
+
+ private String managementNumber;
+
+ private String submitUser;
+
+ private String saveState;
+
+ private String manufacturer;
+
+ private String specificationModel;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/IncidentReportExportWordDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/IncidentReportExportWordDto.java
new file mode 100644
index 0000000..4ef89ba
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/IncidentReportExportWordDto.java
@@ -0,0 +1,49 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.IncidentReport;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-12 鏄熸湡鍥� 10:39:23
+ * Description: 瀵煎嚭楠屾敹鎶ュ憡鍒皐ord鐨刣to
+ */
+public class IncidentReportExportWordDto extends IncidentReport {
+
+ @ApiModelProperty("璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("璁惧鍨嬪彿")
+ private String deviceModel;
+
+ @ApiModelProperty("閲戦")
+ private String amount;
+
+ @ApiModelProperty("鍑哄巶缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("鍒拌揣鏃ユ湡")
+ private String arrivalDateString;
+
+ @ApiModelProperty("瀛樻斁鍦扮偣")
+ private String deviceLocation;
+
+ @ApiModelProperty("鐢熶骇鍘傚")
+ private String manufacturer;
+
+ @ApiModelProperty("渚涘簲鍟�")
+ private String supplier;
+
+ @ApiModelProperty("缁翠慨鍗曚綅")
+ private String maintainUnit;
+
+ @ApiModelProperty("鏀惰澶囦富鏈哄拰澶囦欢鎯呭喌")
+ private String equipmentHostAndSpareParts;
+
+ @ApiModelProperty("楠屾敹鎯呭喌")
+ private String unpackingAcceptanceConclusionString;
+
+ @ApiModelProperty("鎻愪氦鏃ユ湡 yyyy-MM-dd")
+ private String submitDateString;
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/InstructionDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/InstructionDto.java
new file mode 100644
index 0000000..be6cd9a
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/InstructionDto.java
@@ -0,0 +1,13 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.Instruction;
+import com.yuanchu.mom.pojo.OperationInstruction;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class InstructionDto extends Instruction {
+
+ private List<OperationInstruction> feTempHumRecordList;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/InstructionFileDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/InstructionFileDto.java
new file mode 100644
index 0000000..5bdf40e
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/InstructionFileDto.java
@@ -0,0 +1,44 @@
+package com.yuanchu.mom.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.yuanchu.mom.pojo.Instruction;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class InstructionFileDto extends Instruction {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty(" 璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty(" 鏂囨。缂栧彿")
+ private String documentNumber;
+
+ @ApiModelProperty(" 璁惧缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty(" 鏂囨。鐗堟湰")
+ private String documentVersion;
+
+ @ApiModelProperty("闄勪欢")
+ private String attachmentInformation;
+
+ @ApiModelProperty(" 浣滆��")
+ private Integer author;
+
+ @ApiModelProperty("鎻愪氦鏃ユ湡")
+ private LocalDate submitDate;
+
+ @ApiModelProperty("鏂囨。璇存槑")
+ private String documentNote;
+
+ private String documentType;
+
+ private String deviceModel;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/OperationInstructionDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/OperationInstructionDto.java
new file mode 100644
index 0000000..34ce252
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/OperationInstructionDto.java
@@ -0,0 +1,35 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.OperationInstruction;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class OperationInstructionDto extends OperationInstruction {
+ @ApiModelProperty("鐢宠缂栧彿")
+ private String applicationNumber;
+
+ @ApiModelProperty("鐢宠閮ㄩ棬")
+ private String applicationDepartment;
+
+ @ApiModelProperty("璐d换浜�")
+ private String personLiable;
+
+ @ApiModelProperty("鍙楁帶鐢宠璇存槑")
+ private String controlledApplicationDescription;
+
+ @ApiModelProperty("绠$悊缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("鍨嬪彿")
+ private String deviceModel;
+
+ @ApiModelProperty("璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("涓婁紶浜�")
+ private String uploaderName;
+
+ @ApiModelProperty("瀹℃壒浜�")
+ private String approverName;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/ReservationDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/ReservationDto.java
new file mode 100644
index 0000000..b6341b5
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/ReservationDto.java
@@ -0,0 +1,10 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.Reservation;
+import lombok.Data;
+
+@Data
+public class ReservationDto extends Reservation {
+
+ private String name;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceBorrowExcel.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceBorrowExcel.java
new file mode 100644
index 0000000..0b8e0de
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceBorrowExcel.java
@@ -0,0 +1,39 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class DeviceBorrowExcel {
+
+ @ApiModelProperty("娴佺▼缂栧彿")
+ private String processNumber;
+
+ @ApiModelProperty(value = "璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty(value = "瑙勬牸鍨嬪彿")
+ private String specificationModel;
+
+ @ApiModelProperty(value = "绠$悊缂栧彿")
+ private String managementNumber;
+
+ @ApiModelProperty("0璁惧鐘舵��")
+ private String deviceStatus;
+
+ @ApiModelProperty("0鍋滅敤鍚敤鐞嗙敱")
+ private String reason;
+
+ @ExcelProperty(value = "鎻愪氦浜�")
+ private String createUser;
+
+ @ApiModelProperty("鎻愪氦鏃ユ湡")
+ @ExcelProperty(value = "鎻愪氦鏃ユ湡")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceFaultOneExcel.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceFaultOneExcel.java
new file mode 100644
index 0000000..0186de7
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceFaultOneExcel.java
@@ -0,0 +1,33 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDate;
+
+
+@Data
+@EqualsAndHashCode
+public class DeviceFaultOneExcel {
+ @ExcelProperty("搴忓彿")
+ private Long index;
+ @ExcelProperty("娴佺▼缂栧彿")
+ private String deviceNumber;
+ @ExcelProperty("璁惧鍚嶇О")
+ private String deviceName;
+ @ExcelProperty("缁熶竴缂栧彿")
+ private Double managementNumber;
+ @ExcelProperty("鏁呴殰鎯呭喌")
+ private String faultSituation;
+ @ExcelProperty("鎻愪氦浜�")
+ private String submitPerson;
+ @ExcelProperty("鎻愪氦鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+ private LocalDate faultDate;
+ @ExcelProperty("褰撳墠鐘舵��")
+ private String currentStatus;
+ @ExcelProperty("褰撳墠璐d换浜�")
+ private String currentResponsiblePerson;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceFaultOneExport.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceFaultOneExport.java
new file mode 100644
index 0000000..9d4fe3d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceFaultOneExport.java
@@ -0,0 +1,34 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class DeviceFaultOneExport {
+
+ @ExcelProperty("娴佺▼缂栧彿")
+ private String processNumber;
+
+ @ExcelProperty(value = "璁惧鍚嶇О")
+ private String deviceName;
+
+ @ExcelProperty(value = "缁熶竴缂栧彿")
+ private String managementNumber;
+
+ @ExcelProperty("鏁呴殰鎯呭喌")
+ private String faultSituation;
+
+ @ExcelProperty("鎻愪氦浜�")
+ private String submitPerson;
+
+ @ExcelProperty("鎻愪氦鏃ユ湡")
+ private LocalDateTime createTime;
+
+ @ExcelProperty("褰撳墠鐘舵��")
+ private String currentState;
+
+ @ExcelProperty("褰撳墠璐d换浜�")
+ private String currentResponsible;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceMaintenanceExport.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceMaintenanceExport.java
new file mode 100644
index 0000000..97add3a
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceMaintenanceExport.java
@@ -0,0 +1,45 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Data;
+
+@Data
+public class DeviceMaintenanceExport {
+
+ @ColumnWidth(20)
+ @ExcelProperty("璁惧鍚嶇О")
+ private String deviceName;
+
+ @ColumnWidth(20)
+ @ExcelProperty("娴佺▼缂栧彿")
+ private String deviceNumber;
+
+ @ColumnWidth(20)
+ @ExcelProperty("绠$悊缂栧彿")
+ private String managementNumber;
+
+ @ColumnWidth(50)
+ @ExcelProperty("缁存姢鍐呭")
+ private String content;
+
+ @ColumnWidth(20)
+ @ExcelProperty("缁存姢鏃堕棿")
+ private String date;
+
+ @ColumnWidth(20)
+ @ExcelProperty("涓嬫缁存姢鏃堕棿")
+ private String nextDate;
+
+ @ColumnWidth(20)
+ @ExcelProperty("缁存姢绫诲瀷")
+ private String maintenanceType;
+
+ @ColumnWidth(20)
+ @ExcelProperty("缁存姢浜�")
+ private String name;
+
+ @ColumnWidth(50)
+ @ExcelProperty("澶囨敞")
+ private String comments;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceRecordExport.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceRecordExport.java
new file mode 100644
index 0000000..7f04eb6
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceRecordExport.java
@@ -0,0 +1,43 @@
+package com.yuanchu.mom.excel;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class DeviceRecordExport {
+ @ExcelProperty("娴佺▼缂栧彿")
+ private String deviceNumber;
+
+ @ExcelProperty("璁惧鍚嶇О")
+ private String deviceName;
+
+ @ExcelProperty("绠$悊缂栧彿")
+ private String managementNumber;
+
+ @ExcelProperty("娓╁害")
+ private String temperature;
+
+ @ExcelProperty("婀垮害")
+ private String humidity;
+
+ @ExcelProperty("浣跨敤鍓�")
+ private String useBefore;
+
+ @ExcelProperty("浣跨敤鍚�")
+ private String useAfter;
+
+ @ExcelProperty("寮傚父鎯呭喌")
+ private String abnormal;
+
+ @ExcelProperty("浣跨敤鏃ユ湡")
+ private String useDate;
+
+ @ExcelProperty("浣跨敤浜�")
+ private String usePerson;
+
+ @ExcelProperty("澶囨敞")
+ private String remark;
+
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceStateExport.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceStateExport.java
new file mode 100644
index 0000000..98a69bf
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/DeviceStateExport.java
@@ -0,0 +1,36 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class DeviceStateExport {
+ @ExcelProperty(value = "璁惧鍚嶇О")
+ private String deviceName;
+
+ @ExcelProperty(value = "瑙勬牸鍨嬪彿")
+ private String specificationModel;
+
+ @ExcelProperty(value = "绠$悊缂栧彿")
+ private String managementNumber;
+
+ @ExcelProperty("璁惧鐘舵��")
+ private String deviceStatus;
+
+ @ExcelProperty("鍋滅敤鍚敤鐞嗙敱")
+ private String reason;
+
+ @ExcelProperty("鎻愪氦浜�")
+ private String createUser;
+
+ @ExcelProperty("鎻愪氦鏃ユ湡")
+ private LocalDateTime createTime;
+
+ @ExcelProperty("褰撳墠鐘舵��")
+ private String currentState;
+
+ @ExcelProperty("褰撳墠璐熻矗浜�")
+ private String currentResponsible;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/IncidentReportExport.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/IncidentReportExport.java
new file mode 100644
index 0000000..859525d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/IncidentReportExport.java
@@ -0,0 +1,31 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class IncidentReportExport {
+ @ExcelProperty(value = "娴佺▼缂栧彿")
+ private String processNumber;
+
+ @ExcelProperty(value = "璁惧鍚嶇О")
+ private String deviceName;
+
+ @ExcelProperty(value = "绠$悊缂栧彿")
+ private String managementNumber;
+
+ @ExcelProperty(value = "搴忓垪鍙�")
+ private String serialNumber;
+
+ @ExcelProperty(value = "鎻愪氦鑰�")
+ private String submitUser;
+
+ @ExcelProperty(value = "鎻愪氦鏃ユ湡")
+ private String createTime;
+
+ @ExcelProperty(value = "褰撳墠鐘舵��")
+ private String saveState;
+
+ @ExcelProperty("褰撳墠璐熻矗浜�")
+ private String currentResponsible;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/upload/DeviceCalibrationPlanDetailUpload.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/upload/DeviceCalibrationPlanDetailUpload.java
new file mode 100644
index 0000000..0508d3a
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/upload/DeviceCalibrationPlanDetailUpload.java
@@ -0,0 +1,36 @@
+package com.yuanchu.mom.excel.upload;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/12/20
+ */
+@Data
+public class DeviceCalibrationPlanDetailUpload {
+
+ @ApiModelProperty("璁惧鍚嶇О鍙婂瀷鍙�")
+ private String deviceName;
+
+ @ApiModelProperty("璁惧鏁伴噺")
+ private String deviceAmount;
+
+ @ApiModelProperty("浠櫒缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("妫�瀹氬崟浣�")
+ private String verificationUnit;
+
+ @ApiModelProperty("妫�瀹氬懆鏈�")
+ private String verificationCycles;
+
+ @ApiModelProperty("鏈�杩戞瀹氭椂闂�")
+ private String lastDate;
+
+ @ApiModelProperty("鏈勾璁″垝鏍″噯鏃堕棿")
+ private String planDate;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/excel/upload/DeviceExaminePlanUpload.java b/cnas-server/src/main/java/com/yuanchu/mom/excel/upload/DeviceExaminePlanUpload.java
new file mode 100644
index 0000000..d1f2948
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/excel/upload/DeviceExaminePlanUpload.java
@@ -0,0 +1,37 @@
+package com.yuanchu.mom.excel.upload;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/12/20
+ */
+@Data
+public class DeviceExaminePlanUpload {
+
+ @ApiModelProperty("璁惧缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("璁″垝鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("鏍告煡鏃堕棿")
+ private String checkTime;
+
+ @ApiModelProperty("鏍告煡鎸囨爣")
+ private String checkIndex;
+
+ @ApiModelProperty("鏍告煡鏂规硶")
+ private String checkMethod;
+
+ @ApiModelProperty("缁撴灉濡備綍鍒ゅ畾")
+ private String howResults;
+
+ @ApiModelProperty("鏍告煡璐d换浜�")
+ private String checkChargerUser;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAcceptanceFileMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAcceptanceFileMapper.java
new file mode 100644
index 0000000..5a70331
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAcceptanceFileMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.DeviceAcceptanceFile;
+
+/**
+ * <p>
+ * 璁惧楠屾敹(瑁呭)闄勪欢琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 01:45:26
+ */
+public interface DeviceAcceptanceFileMapper extends BaseMapper<DeviceAcceptanceFile> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAcceptanceMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAcceptanceMapper.java
new file mode 100644
index 0000000..ba823da
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAcceptanceMapper.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.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.yuanchu.mom.pojo.DeviceAcceptance;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧楠屾敹(瑁呭) Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 01:45:14
+ */
+public interface DeviceAcceptanceMapper extends BaseMapper<DeviceAcceptance> {
+
+ /**
+ * 璁惧楠屾敹鍒楄〃
+ * @param page
+ * @param ew
+ * @return
+ */
+ IPage<DeviceAcceptance> pageDeviceAcceptance(Page page, @Param("ew") QueryWrapper<DeviceAcceptance> ew);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAccidentReportMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAccidentReportMapper.java
new file mode 100644
index 0000000..eec03cb
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceAccidentReportMapper.java
@@ -0,0 +1,35 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceAccidentReportDto;
+import com.yuanchu.mom.pojo.DeviceAccidentReport;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧浜嬫晠鎶ュ憡鍗� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 06:31:12
+ */
+public interface DeviceAccidentReportMapper extends BaseMapper<DeviceAccidentReport> {
+
+ /**
+ * 璁惧浜嬫晠鎶ュ憡鍒楄〃
+ * @param page
+ * @param ew
+ * @return
+ */
+ IPage<DeviceAccidentReport> pageDeviceAccidentReport(Page page, @Param("ew") QueryWrapper<DeviceAccidentReport> ew);
+
+ /**
+ * 鏌ヨ璁惧浜嬫晠鎶ュ憡璇︽儏
+ * @param accidentReportId 璁惧浜嬫晠鎶ュ憡id
+ * @return
+ */
+ DeviceAccidentReportDto selectDeviceAccidentReportById(Integer accidentReportId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceBorrowMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceBorrowMapper.java
new file mode 100644
index 0000000..ea40b3d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceBorrowMapper.java
@@ -0,0 +1,25 @@
+package com.yuanchu.mom.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.yuanchu.mom.pojo.DeviceBorrow;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-21 10:53:51
+ */
+public interface DeviceBorrowMapper extends BaseMapper<DeviceBorrow> {
+
+ IPage<DeviceBorrow> deviceBorrowPage(Page page, @Param("ew")QueryWrapper<DeviceBorrow> ew);
+
+ List<DeviceBorrow> getDeviceBorrowBydeviceId(Integer deviceId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceBreakdownMaintenanceMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceBreakdownMaintenanceMapper.java
new file mode 100644
index 0000000..3842188
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceBreakdownMaintenanceMapper.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.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.yuanchu.mom.pojo.DeviceBreakdownMaintenance;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰缁翠慨琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 04:50:57
+ */
+public interface DeviceBreakdownMaintenanceMapper extends BaseMapper<DeviceBreakdownMaintenance> {
+
+ /**
+ * 璁惧鏁呴殰缁翠慨鍒楄〃
+ * @param page
+ * @param ew
+ * @return
+ */
+ IPage<DeviceBreakdownMaintenance> pageDeviceBreakdownMaintenance(Page page, @Param("ew") QueryWrapper<DeviceBreakdownMaintenance> ew);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCalibrationPlanDetailMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCalibrationPlanDetailMapper.java
new file mode 100644
index 0000000..fbf3f17
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCalibrationPlanDetailMapper.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.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.yuanchu.mom.pojo.DeviceCalibrationPlanDetail;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧鏍″噯璁″垝璇︽儏琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 03:58:29
+ */
+public interface DeviceCalibrationPlanDetailMapper extends BaseMapper<DeviceCalibrationPlanDetail> {
+
+ /**
+ * 璁惧鏍″噯璁″垝璇︽儏鍒楄〃
+ * @param page
+ * @param ew
+ * @return
+ */
+ IPage<DeviceCalibrationPlanDetail> pageDeviceCalibrationPlanDetail(Page page, @Param("ew") QueryWrapper<DeviceCalibrationPlanDetail> ew);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCalibrationPlanMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCalibrationPlanMapper.java
new file mode 100644
index 0000000..85120a7
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCalibrationPlanMapper.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceCalibrationPlanDto;
+import com.yuanchu.mom.pojo.DeviceCalibrationPlan;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧鏍″噯璁″垝涓昏〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 03:58:17
+ */
+public interface DeviceCalibrationPlanMapper extends BaseMapper<DeviceCalibrationPlan> {
+
+ /**
+ * 璁惧鏍″噯璁″垝鍒楄〃
+ * @param page
+ * @param ew
+ * @return
+ */
+ IPage<DeviceCalibrationPlanDto> pageDeviceCalibrationPlan(Page page, @Param("ew") QueryWrapper<DeviceCalibrationPlan> ew);
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCheckMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCheckMapper.java
new file mode 100644
index 0000000..305c2eb
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceCheckMapper.java
@@ -0,0 +1,7 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.DeviceCheck;
+
+public interface DeviceCheckMapper extends BaseMapper<DeviceCheck> {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExaminePlanDetailsMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExaminePlanDetailsMapper.java
new file mode 100644
index 0000000..8a928af
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExaminePlanDetailsMapper.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.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.yuanchu.mom.pojo.DeviceExaminePlanDetails;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁″垝璇︽儏琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:16
+ */
+public interface DeviceExaminePlanDetailsMapper extends BaseMapper<DeviceExaminePlanDetails> {
+
+ /**
+ * 璁惧鏍告煡璁″垝璇︽儏鍒楄〃
+ * @param page
+ * @param ew
+ * @return
+ */
+ IPage<DeviceExaminePlanDetails> pageDeviceExaminePlanDetail(Page page, @Param("ew") QueryWrapper<DeviceExaminePlanDetails> ew);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExaminePlanMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExaminePlanMapper.java
new file mode 100644
index 0000000..9240f37
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExaminePlanMapper.java
@@ -0,0 +1,35 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceExaminePlanDto;
+import com.yuanchu.mom.pojo.DeviceExaminePlan;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁″垝涓昏〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:04
+ */
+public interface DeviceExaminePlanMapper extends BaseMapper<DeviceExaminePlan> {
+
+ /**
+ * 璁惧鏍告煡璁″垝鍒楄〃
+ * @param page
+ * @param ew
+ * @return
+ */
+ IPage<DeviceExaminePlanDto> deviceExaminePlanDetailsMapper(Page page, @Param("ew") QueryWrapper<DeviceExaminePlan> ew);
+
+ /**
+ * 鏌ヨ璁惧鏍告煡璁″垝璇︽儏
+ * @param deviceExaminePlanId 璁惧鏍告煡璁″垝id
+ * @return
+ */
+ DeviceExaminePlanDto selectExamineExaminePlanDto(@Param("deviceExaminePlanId") Integer deviceExaminePlanId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordContrastDetailsMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordContrastDetailsMapper.java
new file mode 100644
index 0000000..e2e96f2
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordContrastDetailsMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.DeviceExamineRecordContrastDetails;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍瀵规瘮璇︽儏琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:57
+ */
+public interface DeviceExamineRecordContrastDetailsMapper extends BaseMapper<DeviceExamineRecordContrastDetails> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordContrastMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordContrastMapper.java
new file mode 100644
index 0000000..9e1b458
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordContrastMapper.java
@@ -0,0 +1,31 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.dto.DeviceExamineRecordContrastDto;
+import com.yuanchu.mom.pojo.DeviceExamineRecordContrast;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍瀵规瘮琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:43
+ */
+public interface DeviceExamineRecordContrastMapper extends BaseMapper<DeviceExamineRecordContrast> {
+
+ /**
+ * 鏌ヨ鏍告煡瀵规瘮璁板綍
+ * @param planDetailsId
+ * @return
+ */
+ DeviceExamineRecordContrastDto getExamineRecordContrast(Integer planDetailsId);
+
+ /**
+ * 鏌ヨ瀵规瘮璁板綍鐢ㄤ簬瀵煎嚭
+ * @param planDetailsId
+ * @return
+ */
+ DeviceExamineRecordContrastDto selectExamineRecordContrastDto(@Param("planDetailsId") Integer planDetailsId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordDetailMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordDetailMapper.java
new file mode 100644
index 0000000..295f513
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordDetailMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.DeviceExamineRecordDetail;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍璇︽儏琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:15:11
+ */
+public interface DeviceExamineRecordDetailMapper extends BaseMapper<DeviceExamineRecordDetail> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordMapper.java
new file mode 100644
index 0000000..2d32652
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExamineRecordMapper.java
@@ -0,0 +1,31 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.dto.DeviceExamineRecordDto;
+import com.yuanchu.mom.pojo.DeviceExamineRecord;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:28
+ */
+public interface DeviceExamineRecordMapper extends BaseMapper<DeviceExamineRecord> {
+
+ /**
+ * 鏌ヨ璁惧鏍告煡璁板綍
+ * @param planDetailsId
+ * @return
+ */
+ DeviceExamineRecordDto getExamineRecord(Integer planDetailsId);
+
+ /**
+ * 澶嶆牳鏍告煡璁板綍
+ * @param planDetailsId 澶嶆牳鏍告煡璁板綍id
+ * @return
+ */
+ DeviceExamineRecordDto selectReviewExamineRecordDto(@Param("planDetailsId") Integer planDetailsId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExternalApplyMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExternalApplyMapper.java
new file mode 100644
index 0000000..4523f7f
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceExternalApplyMapper.java
@@ -0,0 +1,34 @@
+package com.yuanchu.mom.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.yuanchu.mom.pojo.DeviceExternalApply;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 鍒╃敤澶栭儴璁惧鐢宠琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 10:28:43
+ */
+public interface DeviceExternalApplyMapper extends BaseMapper<DeviceExternalApply> {
+
+ /**
+ * 鍒╃敤澶栭儴璁惧鐢宠鍒楄〃
+ * @param page
+ * @param ew
+ * @return
+ */
+ IPage<DeviceExternalApply> pageDeviceExternalApply(Page page, @Param("ew") QueryWrapper<DeviceExternalApply> ew);
+
+ /**
+ * 瀵煎嚭鏌ヨ鍒╃敤澶栭儴璁惧鐢宠
+ * @param externalApplyId 澶栭儴璁惧鐢宠琛╥d
+ * @return
+ */
+ DeviceExternalApply selectDeviceExternalById(@Param("externalApplyId") Integer externalApplyId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceFaultMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceFaultMapper.java
new file mode 100644
index 0000000..03f8847
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceFaultMapper.java
@@ -0,0 +1,9 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.DeviceFault;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DeviceFaultMapper extends BaseMapper<DeviceFault> {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceFaultOneMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceFaultOneMapper.java
new file mode 100644
index 0000000..5aecc64
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceFaultOneMapper.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceFaultOneDto;
+import com.yuanchu.mom.pojo.DeviceFaultOne;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 02:03:29
+ */
+public interface DeviceFaultOneMapper extends BaseMapper<DeviceFaultOne> {
+
+ IPage<DeviceFaultOneDto> deviceFaultOnePage(Integer deviceId, Page page, String processNumber);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceInspectionRecordDetailsMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceInspectionRecordDetailsMapper.java
new file mode 100644
index 0000000..1be1910
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceInspectionRecordDetailsMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.DeviceInspectionRecordDetails;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 04:27:32
+ */
+public interface DeviceInspectionRecordDetailsMapper extends BaseMapper<DeviceInspectionRecordDetails> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceInspectionRecordMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceInspectionRecordMapper.java
new file mode 100644
index 0000000..6b2f8e6
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceInspectionRecordMapper.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceInspectionRecordDto;
+import com.yuanchu.mom.pojo.DeviceInspectionRecord;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 04:25:14
+ */
+public interface DeviceInspectionRecordMapper extends BaseMapper<DeviceInspectionRecord> {
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧鐐规璁板綍
+ * @param page
+ * @param queryWrappers
+ * @return
+ */
+ IPage<DeviceInspectionRecord> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceInspectionRecordDto> queryWrappers);
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceLeaseMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceLeaseMapper.java
new file mode 100644
index 0000000..f73004b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceLeaseMapper.java
@@ -0,0 +1,9 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.DeviceLease;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DeviceLeaseMapper extends BaseMapper<DeviceLease> {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceLogMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceLogMapper.java
new file mode 100644
index 0000000..e0149d0
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceLogMapper.java
@@ -0,0 +1,9 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.DeviceLog;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DeviceLogMapper extends BaseMapper<DeviceLog> {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenanceMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenanceMapper.java
new file mode 100644
index 0000000..a8c06ff
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenanceMapper.java
@@ -0,0 +1,18 @@
+package com.yuanchu.mom.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.excel.DeviceMaintenanceExport;
+import com.yuanchu.mom.pojo.DeviceMaintenance;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface DeviceMaintenanceMapper extends BaseMapper<DeviceMaintenance> {
+ List<DeviceMaintenance> getDeviceMaintenanceParam();
+
+// IPage<DeviceMaintenance> getDeviceMaintenancePage(Page page, Integer deviceId);
+
+ List<DeviceMaintenanceExport> deviceMaintenanceExport(Integer deviceId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenancePlanDetailsMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenancePlanDetailsMapper.java
new file mode 100644
index 0000000..81da4b4
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenancePlanDetailsMapper.java
@@ -0,0 +1,25 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.dto.DeviceMaintenancePlanDetailsDto;
+import com.yuanchu.mom.pojo.DeviceMaintenancePlanDetails;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝璇︽儏琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:11:46
+ */
+public interface DeviceMaintenancePlanDetailsMapper extends BaseMapper<DeviceMaintenancePlanDetails> {
+
+ /**
+ * 鏌ヨ璁惧淇濆吇璇︽儏
+ * @param maintenancePlanId 璁惧淇濆吇璁″垝id
+ */
+ List<DeviceMaintenancePlanDetailsDto> deviceInspectionRecordDetailsList(@Param("maintenancePlanId") Integer maintenancePlanId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenancePlanMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenancePlanMapper.java
new file mode 100644
index 0000000..0e0f76b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMaintenancePlanMapper.java
@@ -0,0 +1,34 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceMaintenancePlanDto;
+import com.yuanchu.mom.pojo.DeviceMaintenancePlan;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:10:52
+ */
+public interface DeviceMaintenancePlanMapper extends BaseMapper<DeviceMaintenancePlan> {
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧淇濆吇璁″垝
+ * @param page 褰撳墠椤�
+ * @param queryWrappers 鏌ヨ鏉′欢
+ * @return
+ */
+ IPage<DeviceMaintenancePlan> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceMaintenancePlanDto> queryWrappers);
+
+ /**
+ * 鏍规嵁淇濆吇璁″垝id鏌ヨ璁惧淇濆吇璁″垝
+ * @param maintenancePlanId 淇濆吇璁″垝id
+ * @return
+ */
+ DeviceMaintenancePlanDto selectMaintenancePlanById(@Param("maintenancePlanId") Integer maintenancePlanId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
index 597c683..74c00ee 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
@@ -32,7 +32,7 @@
//鏌ヨ璁惧璐熻矗浜�
List<Device> selectDevicePrincipal();
- IPage<DeviceDto> selectDeviceParameterPage(Page page, @Param("ew") QueryWrapper<DeviceDto> queryWrappers);
+ IPage<DeviceDto> selectDeviceParameterPage(Page page, @Param("ew") QueryWrapper<DeviceDto> queryWrappers,@Param("laboratoryNameIsNull") Boolean laboratoryNameIsNull);
List<Map<String, Object>> getInspectionItemSubclass(@Param("id") Integer id);
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricMapper.java
new file mode 100644
index 0000000..79795cd
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricMapper.java
@@ -0,0 +1,9 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.DeviceMetric;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DeviceMetricMapper extends BaseMapper<DeviceMetric> {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricRecordMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricRecordMapper.java
new file mode 100644
index 0000000..fecc91c
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricRecordMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.DeviceMetricRecord;
+
+/**
+ * <p>
+ * 璁惧鏍″噯 - 鏍″噯璁板綍 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-27 10:20:01
+ */
+public interface DeviceMetricRecordMapper extends BaseMapper<DeviceMetricRecord> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricsCopyMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricsCopyMapper.java
new file mode 100644
index 0000000..de2144b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceMetricsCopyMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.DeviceMetricsCopy;
+
+/**
+ * <p>
+ * 璁惧鏍″噯 - 鏍″噯璁板綍 - 鏍″噯鏉$洰 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-27 10:20:11
+ */
+public interface DeviceMetricsCopyMapper extends BaseMapper<DeviceMetricsCopy> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceRecordMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceRecordMapper.java
new file mode 100644
index 0000000..bfe4fe1
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceRecordMapper.java
@@ -0,0 +1,37 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceRecordDto;
+import com.yuanchu.mom.pojo.DeviceRecord;
+
+import java.util.List;
+
+/**
+ * <p>
+ * cnas璁惧浣跨敤璁板綍琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-21 11:06:47
+ */
+public interface DeviceRecordMapper extends BaseMapper<DeviceRecord> {
+
+ IPage<DeviceRecordDto> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber, Integer userId);
+
+
+ /**
+ * 鏌ヨ鏈~鍐欑殑璁惧
+ * @return
+ */
+ List<DeviceRecordDto> selectNotFilled();
+
+ /**
+ * 鏌ヨ瀵煎嚭璁惧浣跨敤璁板綍
+ * @param deviceId
+ * @param exportDate
+ * @return
+ */
+ List<DeviceRecord> selectExportList(Integer deviceId, String exportDate);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceScrappedMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceScrappedMapper.java
new file mode 100644
index 0000000..81bec98
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceScrappedMapper.java
@@ -0,0 +1,35 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceScrappedDto;
+import com.yuanchu.mom.pojo.DeviceScrapped;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧鎶ュ簾鐢宠琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 01:53:47
+ */
+public interface DeviceScrappedMapper extends BaseMapper<DeviceScrapped> {
+
+ /**
+ * 璁惧鎶ュ簾鐢宠鍒楄〃
+ * @param page
+ * @param ew
+ * @return
+ */
+ IPage<DeviceScrapped> pageDeviceScrapped(Page page, @Param("ew") QueryWrapper<DeviceScrapped> ew);
+
+ /**
+ * 鏍规嵁id鏌ヨ璁惧鎶ュ簾鐢宠
+ * @param scrappedId
+ * @return
+ */
+ DeviceScrappedDto selectDeviceScrappedById(@Param("scrappedId") Integer scrappedId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceStateMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceStateMapper.java
new file mode 100644
index 0000000..78eec80
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceStateMapper.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceStateDto;
+import com.yuanchu.mom.pojo.DeviceState;
+
+/**
+ * <p>
+ * 璁惧鍋滅敤/鍚敤 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 09:51:40
+ */
+public interface DeviceStateMapper extends BaseMapper<DeviceState> {
+
+ IPage<DeviceStateDto> getDeviceStatePage(Integer deviceId, Page page, String processNumber);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceTraceabilityManagementDetailsMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceTraceabilityManagementDetailsMapper.java
new file mode 100644
index 0000000..7f86413
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceTraceabilityManagementDetailsMapper.java
@@ -0,0 +1,26 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.dto.DeviceTraceabilityManagementDetailsDto;
+import com.yuanchu.mom.pojo.DeviceTraceabilityManagementDetails;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕鎯呰〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:58
+ */
+public interface DeviceTraceabilityManagementDetailsMapper extends BaseMapper<DeviceTraceabilityManagementDetails> {
+
+ /**
+ * 鏍规嵁婧簮璁″垝id鏌ヨ婧簮璁″垝璇︽儏
+ * @param traceabilityManagementId 婧簮璁″垝id
+ * @return 婧簮璁″垝璇︽儏
+ */
+ List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetailsList(@Param("traceabilityManagementId") Integer traceabilityManagementId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceTraceabilityManagementMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceTraceabilityManagementMapper.java
new file mode 100644
index 0000000..1dbefae
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DeviceTraceabilityManagementMapper.java
@@ -0,0 +1,34 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceTraceabilityManagementDto;
+import com.yuanchu.mom.pojo.DeviceTraceabilityManagement;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:44
+ */
+public interface DeviceTraceabilityManagementMapper extends BaseMapper<DeviceTraceabilityManagement> {
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧閲忓�兼函婧愯鍒�
+ * @param page
+ * @param queryWrappers
+ * @return
+ */
+ IPage<DeviceTraceabilityManagement> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceTraceabilityManagementDto> queryWrappers);
+
+ /**
+ * 鏍规嵁id鏌ヨ璁惧閲忓�兼函婧愯鍒�
+ * @param traceabilityManagementId
+ * @return
+ */
+ DeviceTraceabilityManagementDto selectDeviceTraceabilityManagementById(@Param("traceabilityManagementId") Integer traceabilityManagementId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/DocumentDao.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DocumentDao.java
new file mode 100644
index 0000000..197544f
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/DocumentDao.java
@@ -0,0 +1,9 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.Document;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DocumentDao extends BaseMapper<Document> {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentAcceptanceCheckMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentAcceptanceCheckMapper.java
new file mode 100644
index 0000000..79686a9
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentAcceptanceCheckMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.mybatis_config.MyBaseMapper;
+import com.yuanchu.mom.pojo.IncidentAcceptanceCheck;
+
+/**
+ * <p>
+ * 璁惧楠屾敹-楠屾敹鏍告煡 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 04:41:19
+ */
+public interface IncidentAcceptanceCheckMapper extends MyBaseMapper<IncidentAcceptanceCheck> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentFileMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentFileMapper.java
new file mode 100644
index 0000000..bc8d0e5
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentFileMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.mybatis_config.MyBaseMapper;
+import com.yuanchu.mom.pojo.IncidentFile;
+
+/**
+ * <p>
+ * 璁惧楠屾敹-鏂囦欢绫荤‘璁� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 04:41:36
+ */
+public interface IncidentFileMapper extends MyBaseMapper<IncidentFile> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentInstallMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentInstallMapper.java
new file mode 100644
index 0000000..bf6940d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentInstallMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.mybatis_config.MyBaseMapper;
+import com.yuanchu.mom.pojo.IncidentInstall;
+
+/**
+ * <p>
+ * 璁惧楠屾敹-瀹夎楠屾敹妫�鏌� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 04:41:50
+ */
+public interface IncidentInstallMapper extends MyBaseMapper<IncidentInstall> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentReportMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentReportMapper.java
new file mode 100644
index 0000000..66f1a94
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentReportMapper.java
@@ -0,0 +1,37 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.IncidentReportAddDto;
+import com.yuanchu.mom.dto.IncidentReportExportWordDto;
+import com.yuanchu.mom.excel.IncidentReportExport;
+import com.yuanchu.mom.pojo.IncidentReport;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧楠屾敹娣诲姞楠屾敹瀛楁琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 03:54:49
+ */
+public interface IncidentReportMapper extends BaseMapper<IncidentReport> {
+
+ IPage<IncidentReportAddDto> getByDeviceId(Page page, @Param("deviceId") Integer deviceId, @Param("processNumber") String processNumber);
+
+ IncidentReportAddDto getShowIncidentReport(Integer id);
+
+ List<IncidentReportExport> incidentReportExport(Integer deviceId);
+
+ /**
+ * 瀵煎嚭楠屾敹鎶ュ憡
+ * @param deviceId 璁惧id
+ * @param processNumber 娴佺▼鍙�
+ * @return
+ */
+ IncidentReportExportWordDto acceptanceCertificateExport(@Param("deviceId") Integer deviceId,@Param("processNumber") String processNumber);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentSparePartsMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentSparePartsMapper.java
new file mode 100644
index 0000000..01b1134
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/IncidentSparePartsMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.mybatis_config.MyBaseMapper;
+import com.yuanchu.mom.pojo.IncidentSpareParts;
+
+/**
+ * <p>
+ * 璁惧楠屾敹-澶囦欢纭 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 04:42:06
+ */
+public interface IncidentSparePartsMapper extends MyBaseMapper<IncidentSpareParts> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/InstructionMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/InstructionMapper.java
new file mode 100644
index 0000000..d235ba2
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/InstructionMapper.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.OperationInstructionDto;
+import com.yuanchu.mom.pojo.Instruction;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:29:18
+ */
+public interface InstructionMapper extends BaseMapper<Instruction> {
+
+
+ IPage<Instruction> pageByPageQueryOfHomeworkInstructions(Page page, @Param("ew") QueryWrapper<OperationInstructionDto> ew);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/OperationInstructionMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/OperationInstructionMapper.java
new file mode 100644
index 0000000..df732b8
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/OperationInstructionMapper.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.OperationInstruction;
+import com.yuanchu.mom.vo.OperationInstructionVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧 - 浣滀笟鎸囧涔� 娣诲姞鍙楁帶鏂囦欢 瀛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:43:32
+ */
+public interface OperationInstructionMapper extends BaseMapper<OperationInstruction> {
+
+ List<OperationInstructionVo> homeworkGuidebookEditor(Integer instructionId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/mapper/ReservationMapper.java b/cnas-server/src/main/java/com/yuanchu/mom/mapper/ReservationMapper.java
new file mode 100644
index 0000000..0038674
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/mapper/ReservationMapper.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.dto.ReservationDto;
+import com.yuanchu.mom.pojo.Reservation;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璧勬簮棰勫畾鏂板缓棰勫畾琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author baomidou
+ * @since 2024-09-14
+ */
+public interface ReservationMapper extends BaseMapper<Reservation> {
+
+
+ List<ReservationDto> selectReservationParameterPage(@Param("deviceId") Integer deviceId, @Param("reservationTime") String reservationTime, @Param("specificTime") String specificTime);
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAcceptance.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAcceptance.java
new file mode 100644
index 0000000..49fd79c
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAcceptance.java
@@ -0,0 +1,77 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧楠屾敹(瑁呭)
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 01:45:14
+ */
+@Getter
+@Setter
+@TableName("device_acceptance")
+@ApiModel(value = "DeviceAcceptance瀵硅薄", description = "璁惧楠屾敹(瑁呭)")
+public class DeviceAcceptance {
+
+ @TableId(value = "acceptance_id", type = IdType.AUTO)
+ private Integer acceptanceId;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("鍒拌揣鏃ユ湡")
+ private LocalDate arrivalDate;
+
+ @ApiModelProperty("閲戦")
+ private String goldAmount;
+
+ @ApiModelProperty("缁翠慨鍗曚綅")
+ private String maintenanceunit;
+
+ @ApiModelProperty("鏀惰澶囦富鏈哄拰澶囦唤鎯呭喌")
+ private String spareParts;
+
+ @ApiModelProperty("瀹夎鍜岃皟璇曟儏鍐�")
+ private String installationDebugging;
+
+ @ApiModelProperty("楠屾敹鎯呭喌")
+ private String checkSituation;
+
+ @ApiModelProperty("鎺ユ敹绛惧瓧")
+ private String receivingSignature;
+
+ @ApiModelProperty("鍘傚浠h〃")
+ private String producer;
+
+ @ApiModelProperty("鎺ユ敹浜�")
+ private String recipient;
+
+ @ApiModelProperty("鎺ユ敹鏃堕棿")
+ private String recipientDate;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAcceptanceFile.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAcceptanceFile.java
new file mode 100644
index 0000000..9ce26b2
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAcceptanceFile.java
@@ -0,0 +1,58 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧楠屾敹(瑁呭)闄勪欢琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 01:45:26
+ */
+@Getter
+@Setter
+@TableName("device_acceptance_file")
+@ApiModel(value = "DeviceAcceptanceFile瀵硅薄", description = "璁惧楠屾敹(瑁呭)闄勪欢琛�")
+public class DeviceAcceptanceFile implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "acceptance_file_id", type = IdType.AUTO)
+ private Integer acceptanceFileId;
+
+ @ApiModelProperty("璁惧楠屾敹id")
+ private Integer acceptanceId;
+
+ @ApiModelProperty("绫诲瀷:1鍥剧墖/2鏂囦欢")
+ private Integer type;
+
+ @ApiModelProperty("闄勪欢璺緞")
+ private String fileUrl;
+
+ @ApiModelProperty("闄勪欢鍚嶇О")
+ private String fileName;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAccidentReport.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAccidentReport.java
new file mode 100644
index 0000000..54b1d40
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceAccidentReport.java
@@ -0,0 +1,120 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧浜嬫晠鎶ュ憡鍗�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 06:31:12
+ */
+@Getter
+@Setter
+@TableName("device_accident_report")
+@ApiModel(value = "DeviceAccidentReport瀵硅薄", description = "璁惧浜嬫晠鎶ュ憡鍗�")
+public class DeviceAccidentReport {
+
+ @TableId(value = "accident_report_id", type = IdType.AUTO)
+ private Integer accidentReportId;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("鍦板潃")
+ private String address;
+
+ @ApiModelProperty("鏃堕棿")
+ private LocalDateTime accidentDate;
+
+ @ApiModelProperty("浜嬫晠鎯呭喌鎻忚堪")
+ private String descriptionOfAccident;
+
+ @ApiModelProperty("鎶ュ憡浜篿d")
+ private Integer reportUserId;
+
+ @ApiModelProperty("鎶ュ憡浜�")
+ private String reportUser;
+
+ @ApiModelProperty("鎶ュ憡浜哄~鍐欐椂闂�")
+ private LocalDate reportDate;
+
+ @ApiModelProperty("璇勪及浜烘剰瑙�")
+ private String assessorOpinion;
+
+ @ApiModelProperty("璇勪及浜篿d")
+ private Integer assessorUserId;
+
+ @ApiModelProperty("璇勪及浜�")
+ private String assessorUser;
+
+ @ApiModelProperty("璇勪及浜哄~鍐欐椂闂�")
+ private LocalDate assessorDate;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜烘剰瑙�")
+ private String departmentHeadOpinion;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜篿d")
+ private Integer departmentHeadUserId;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜�")
+ private String departmentHeadUser;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜哄~鍐欐椂闂�")
+ private LocalDate departmentHeadDate;
+
+ @ApiModelProperty("鎶�鏈礋璐d汉鎰忚")
+ private String technicalDirectorOpinion;
+
+ @ApiModelProperty("鎶�鏈礋璐d汉id")
+ private Integer technicalDirectorUserId;
+
+ @ApiModelProperty("鎶�鏈礋璐d汉")
+ private String technicalDirectorUser;
+
+ @ApiModelProperty("鎶�鏈礋璐d汉濉啓鏃堕棿")
+ private LocalDate technicalDirectorDate;
+
+ @ApiModelProperty("涓讳换鎰忚")
+ private String directorHeadOpinion;
+
+ @ApiModelProperty("涓讳换id")
+ private Integer directorHeadUserId;
+
+ @ApiModelProperty("涓讳换")
+ private String directorHeadUser;
+
+ @ApiModelProperty("涓讳换濉啓鏃堕棿")
+ private LocalDate directorHeadDate;
+
+ @ApiModelProperty("鏄惁缁撴潫,0 鏈粨鏉�, 1缁撴潫")
+ private Integer isFinish;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @TableField(exist = false,select = false)
+ @ApiModelProperty("娴佺▼, 0:鎶ュ憡, 1璇勪及, 2:閮ㄩ棬璐熻矗浜烘剰瑙�, 3:鎶�鏈礋璐d汉鎰忚, 4:涓讳换鎰忚")
+ private Integer flowType;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceBorrow.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceBorrow.java
new file mode 100644
index 0000000..79a4384
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceBorrow.java
@@ -0,0 +1,159 @@
+package com.yuanchu.mom.pojo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yuanchu.mom.annotation.ValueTableShow;
+import com.yuanchu.mom.common.OrderBy;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-21 10:53:51
+ */
+@Getter
+@Setter
+@TableName("device_borrow")
+@ApiModel(value = "DeviceBorrow瀵硅薄", description = "璁惧鍊熺敤")
+public class DeviceBorrow extends OrderBy implements Serializable {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ @ExcelIgnore
+ private Integer id;
+
+ @ValueTableShow(1)
+ @ApiModelProperty("娴佺▼缂栧彿")
+ @ExcelProperty(value = "娴佺▼缂栧彿")
+ private String processNumber;
+
+ @ApiModelProperty("璁惧id")
+ @ExcelIgnore
+ private Integer deviceId;
+
+ @ValueTableShow(3)
+ @ApiModelProperty("绠$悊缂栧彿")
+ @ExcelProperty(value = "绠$悊缂栧彿")
+ private String unifyNumber;
+
+ @ApiModelProperty("鍊熺敤浜�")
+ @ValueTableShow(4)
+ @ExcelProperty(value = "鍊熺敤浜�")
+ private String recipientUser;
+
+ @ValueTableShow(5)
+ @ExcelProperty(value = "鍊熺敤浜鸿仈绯绘柟寮�")
+ @ApiModelProperty("鍊熺敤浜鸿仈绯绘柟寮�")
+ private String borrowerContactInformation;
+
+ @ValueTableShow(6)
+ @ApiModelProperty("鍊熺敤鏃剁姸鎬�")
+ @ExcelProperty(value = "鍊熺敤鏃剁姸鎬�")
+ //0鍚堟牸;1缁翠慨;2鍋滅敤;3鎶ュ簾
+ private Integer recipientState;
+
+ @ValueTableShow(5)
+ @ApiModelProperty("鍊熺敤鏃ユ湡")
+ @ExcelProperty(value = "鎻愪氦鏃ユ湡")
+ private Date recipientTime;
+
+ @ApiModelProperty("鍊熷嚭浜�")
+ @ValueTableShow(7)
+ @ExcelProperty(value = "鍊熷嚭浜�")
+ private String submitUser;
+
+ @ValueTableShow(8)
+ @ApiModelProperty("鍊熷嚭鏃ユ湡")
+ @ExcelProperty(value = "鍊熷嚭鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ValueTableShow(9)
+ @ApiModelProperty("褰撳墠鐘舵��")
+ @ExcelProperty(value = "褰撳墠鐘舵��")
+ private String nowState;
+
+ @ApiModelProperty("褰撳墠璐d换浜�")
+ @ValueTableShow(10)
+ @ExcelProperty(value = "褰撳墠璐d换浜�")
+ private String nowUser;
+
+ @ExcelIgnore
+ @ApiModelProperty("闄勪欢")
+ //璺緞
+ private String url;
+
+ @ValueTableShow(11)
+ @ApiModelProperty("闄勪欢")
+ @ExcelProperty(value = "闄勪欢")
+ //鏂囦欢鍚�
+ private String fileName;
+
+ @ApiModelProperty("涓嬬幆鑺傝矗浠讳汉")
+ @ExcelIgnore
+ private String nextUser;
+
+ @ApiModelProperty("鎻愪氦鎿嶄綔浜�")
+ @ExcelIgnore
+ private String submitOperationUser;
+
+ @ApiModelProperty("鎻愪氦鎿嶄綔鏃堕棿")
+ @ExcelIgnore
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime submitOperationTime;
+
+ @ApiModelProperty("褰掕繕浜�")
+ @ExcelIgnore
+ private String rebackUser;
+
+ @ApiModelProperty("褰掕繕鏃ユ湡")
+ @ExcelIgnore
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime rebackTime;
+
+ @ApiModelProperty("鎺ュ彈鐘舵��0鍚堟牸;1缁翠慨;2鍋滅敤;3鎶ュ簾")
+ @ExcelIgnore
+ private Integer receiveState;
+
+ @ApiModelProperty("璁惧璐d换浜�")
+ @ExcelIgnore
+ private String deviceUser;
+
+ @ApiModelProperty("澶囨敞")
+ @ExcelIgnore
+ private String note;
+
+ @ApiModelProperty("鎺ユ敹鎿嶄綔浜�")
+ @ExcelIgnore
+ private String receiveOperationUser;
+
+ @ApiModelProperty("鎺ユ敹鎿嶄綔鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ExcelIgnore
+ private LocalDateTime receiveOperationTime;
+
+ @ValueTableShow(2)
+ @ApiModelProperty("璁惧鍚嶇О")
+ @TableField(select = false, exist = false)
+ @ExcelProperty(value = "璁惧鍚嶇О")
+ private String deviceName;
+
+
+ @ApiModelProperty("娴佺▼璺熻釜")
+ @TableField(select = false, exist = false)
+ @ExcelIgnore
+ private List<DeviceLog> deviceLogs;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceBreakdownMaintenance.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceBreakdownMaintenance.java
new file mode 100644
index 0000000..fbf109a
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceBreakdownMaintenance.java
@@ -0,0 +1,90 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰缁翠慨琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 04:50:57
+ */
+@Getter
+@Setter
+@TableName("device_breakdown_maintenance")
+@ApiModel(value = "DeviceBreakdownMaintenance瀵硅薄", description = "璁惧鏁呴殰缁翠慨琛�")
+public class DeviceBreakdownMaintenance {
+
+ @TableId(value = "maintenance_id", type = IdType.AUTO)
+ private Integer maintenanceId;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("瀹夎鍦板潃")
+ private String location;
+
+ @ApiModelProperty("鎹熷潖鎴栨晠闅滄儏鍐�")
+ private String damageOrMalfunction;
+
+ @ApiModelProperty("鐢宠浜篿d")
+ private Integer applicantUserId;
+
+ @ApiModelProperty("鐢宠浜�")
+ private String applicantUser;
+
+ @ApiModelProperty("瑕佹眰淇鏃堕棿")
+ private LocalDate repairDate;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜烘剰瑙�")
+ private String departmentHeadOpinion;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜篿d")
+ private Integer departmentHeadUserId;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜�")
+ private String departmentHeadUser;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜哄~鍐欐椂闂�")
+ private LocalDate departmentHeadDate;
+
+ @ApiModelProperty("缁翠慨璁颁簨")
+ private String maintenanceRecord;
+
+ @ApiModelProperty("缁翠慨浜�")
+ private String maintenanceUser;
+
+ @ApiModelProperty("缁翠慨鏃堕棿")
+ private LocalDate maintenanceDate;
+
+ @ApiModelProperty("鏄惁缁撴潫,0 鏈粨鏉�, 1缁撴潫")
+ private Integer isFinish;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @TableField(exist = false,select = false)
+ @ApiModelProperty("娴佺▼, 0:鐢宠, 1鐢宠閮ㄩ棬璐熻矗浜烘剰瑙�, 2:缁翠慨璁颁簨")
+ private Integer flowType;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCalibrationPlan.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCalibrationPlan.java
new file mode 100644
index 0000000..11a12d3
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCalibrationPlan.java
@@ -0,0 +1,67 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏍″噯璁″垝涓昏〃
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 03:58:17
+ */
+@Getter
+@Setter
+@TableName("device_calibration_plan")
+@ApiModel(value = "DeviceCalibrationPlan瀵硅薄", description = "璁惧鏍″噯璁″垝涓昏〃")
+public class DeviceCalibrationPlan {
+
+ @TableId(value = "plan_id", type = IdType.AUTO)
+ private Integer planId;
+
+ @ApiModelProperty("璁″垝鍚嶇О")
+ private String planName;
+
+ @ApiModelProperty("璁″垝骞翠唤")
+ private String planYear;
+
+ @ApiModelProperty("缂栧埗浜�")
+ private Integer writeUserId;
+
+ @ApiModelProperty("缂栧埗鏃堕棿")
+ private LocalDateTime writeTime;
+
+ @ApiModelProperty("鎵瑰噯浜�")
+ private Integer ratifyUserId;
+
+ @ApiModelProperty("鎵瑰噯鏃堕棿")
+ private LocalDateTime ratifyTime;
+
+ @ApiModelProperty("鎵瑰噯鐘舵��,0 涓嶉�氳繃, 1 閫氳繃")
+ private Integer ratifyStatus;
+
+ @ApiModelProperty("鎵瑰噯淇℃伅")
+ private String ratifyRemark;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCalibrationPlanDetail.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCalibrationPlanDetail.java
new file mode 100644
index 0000000..e673ffe
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCalibrationPlanDetail.java
@@ -0,0 +1,74 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏍″噯璁″垝璇︽儏琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 03:58:29
+ */
+@Getter
+@Setter
+@TableName("device_calibration_plan_detail")
+@ApiModel(value = "DeviceCalibrationPlanDetail瀵硅薄", description = "璁惧鏍″噯璁″垝璇︽儏琛�")
+public class DeviceCalibrationPlanDetail {
+
+ @TableId(value = "plan_detail_id", type = IdType.AUTO)
+ private Integer planDetailId;
+
+ @ApiModelProperty("璁″垝涓昏〃id")
+ private Integer planId;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("璁惧鍚嶇О鍙婂瀷鍙�")
+ private String deviceName;
+
+ @ApiModelProperty("璁惧鏁伴噺")
+ private String deviceAmount;
+
+ @ApiModelProperty("浠櫒缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("妫�瀹氬崟浣�")
+ private String verificationUnit;
+
+ @ApiModelProperty("妫�瀹氬懆鏈�")
+ private String verificationCycles;
+
+ @ApiModelProperty("鏈�杩戞瀹氭椂闂�")
+ private LocalDate lastDate;
+
+ @ApiModelProperty("鏈勾璁″垝鏍″噯鏃堕棿")
+ private LocalDate planDate;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCheck.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCheck.java
new file mode 100644
index 0000000..dce68da
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceCheck.java
@@ -0,0 +1,24 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@TableName("device_check")
+public class DeviceCheck {
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id; //id
+ private Integer deviceId; // 璁惧ID
+ private String measurementParameter; // 璁¢噺鍙傛暟
+ private String rangeOfMeasurement; // 閲忕▼鑼冨洿
+ private String maxPermissibleError; // 鏈�澶у厑璁歌宸�
+ private String judgmentCriteria; // 鍒ゅ畾鏍囧噯
+ private String createdBy; // 鍒涘缓浜�
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime creationTime; // 鍒涘缓鏃堕棿
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExaminePlan.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExaminePlan.java
new file mode 100644
index 0000000..95ea60a
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExaminePlan.java
@@ -0,0 +1,67 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁″垝涓昏〃
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:04
+ */
+@Getter
+@Setter
+@TableName("device_examine_plan")
+@ApiModel(value = "DeviceExaminePlan瀵硅薄", description = "璁惧鏍告煡璁″垝涓昏〃")
+public class DeviceExaminePlan {
+
+ @TableId(value = "plan_id", type = IdType.AUTO)
+ private Integer planId;
+
+ @ApiModelProperty("璁″垝鍚嶇О")
+ private String planName;
+
+ @ApiModelProperty("璁″垝鍚嶇О")
+ private String planYear;
+
+ @ApiModelProperty("缂栧埗浜�")
+ private Integer writeUserId;
+
+ @ApiModelProperty("缂栧埗鏃堕棿")
+ private LocalDateTime writeTime;
+
+ @ApiModelProperty("鎵瑰噯浜�")
+ private Integer ratifyUserId;
+
+ @ApiModelProperty("鎵瑰噯鏃堕棿")
+ private LocalDateTime ratifyTime;
+
+ @ApiModelProperty("鎵瑰噯鐘舵��,0 涓嶉�氳繃, 1 閫氳繃")
+ private Integer ratifyStatus;
+
+ @ApiModelProperty("鎵瑰噯淇℃伅")
+ private String ratifyRemark;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExaminePlanDetails.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExaminePlanDetails.java
new file mode 100644
index 0000000..315fba3
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExaminePlanDetails.java
@@ -0,0 +1,76 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁″垝璇︽儏琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:16
+ */
+@Getter
+@Setter
+@TableName("device_examine_plan_details")
+@ApiModel(value = "DeviceExaminePlanDetails瀵硅薄", description = "璁惧鏍告煡璁″垝璇︽儏琛�")
+public class DeviceExaminePlanDetails {
+
+ @TableId(value = "plan_details_id", type = IdType.AUTO)
+ private Integer planDetailsId;
+
+ @ApiModelProperty("涓昏〃id")
+ private Integer planId;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("璁惧缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("璁″垝鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("鏍告煡鏃堕棿")
+ private String checkTime;
+
+ @ApiModelProperty("鏍告煡鎸囨爣")
+ private String checkIndex;
+
+ @ApiModelProperty("鏍告煡鏂规硶")
+ private String checkMethod;
+
+ @ApiModelProperty("缁撴灉濡備綍鍒ゅ畾")
+ private String howResults;
+
+ @ApiModelProperty("鏍告煡璐d换浜篿d")
+ private Integer checkChargerUserId;
+
+ @ApiModelProperty("鏍告煡璐d换浜�")
+ private String checkChargerUser;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecord.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecord.java
new file mode 100644
index 0000000..6288573
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecord.java
@@ -0,0 +1,139 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:28
+ */
+@Getter
+@Setter
+@TableName("device_examine_record")
+@ApiModel(value = "DeviceExamineRecord瀵硅薄", description = "璁惧鏍告煡璁板綍琛�")
+public class DeviceExamineRecord implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "record_id", type = IdType.AUTO)
+ private Integer recordId;
+
+ @ApiModelProperty("璁惧鏍告煡璇︽儏id")
+ private Integer planDetailsId;
+
+ @ApiModelProperty("绮惧害绛夌骇")
+ private String accuracyGrade;
+
+ @ApiModelProperty("浣跨敤鐗╄川鍚嶇О")
+ private String materialName;
+
+ @ApiModelProperty("浣跨敤鐗╄川绠$悊缂栧彿")
+ private String materialNumber;
+
+ @ApiModelProperty("浣跨敤鐗╄川绮惧害/涓嶇‘瀹氬害")
+ private String materialAccuracyUncertainty;
+
+ @ApiModelProperty("浣跨敤鐗╄川瑙勬牸鍨嬪彿")
+ private String materialModel;
+
+ @ApiModelProperty("浣跨敤鐗╄川鏍告煡鏂瑰紡")
+ private String materialCheckMethod;
+
+ @ApiModelProperty("浣跨敤鐗╄川鏍告煡椤圭洰")
+ private String materialCheckItems;
+
+ @ApiModelProperty("娓╁害")
+ private String temperature;
+
+ @ApiModelProperty("婀垮害")
+ private String humidity;
+
+ @ApiModelProperty("鍒ゅ畾")
+ private String determine;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @ApiModelProperty("鏍告煡浜篿d")
+ private Integer checkerUserId;
+
+ @ApiModelProperty("鏍告煡浜�")
+ private String checkerUser;
+
+ @ApiModelProperty("澶嶆牳浜篿d")
+ private Integer reviewUserId;
+
+ @ApiModelProperty("澶嶆牳浜�")
+ private String reviewUser;
+
+ @ApiModelProperty("瀹℃牳鐘舵��0,涓嶉�氳繃, 1閫氳繃")
+ private Integer reviewStatus;
+
+ @ApiModelProperty("瀹℃牳澶囨敞")
+ private String reviewRemark;
+
+ @ApiModelProperty("娴嬭瘯鐐�1")
+ private String dataValue1;
+ @ApiModelProperty("娴嬭瘯鐐�2")
+ private String dataValue2;
+ @ApiModelProperty("娴嬭瘯鐐�3")
+ private String dataValue3;
+ @ApiModelProperty("娴嬭瘯鐐�4")
+ private String dataValue4;
+ @ApiModelProperty("娴嬭瘯鐐�5")
+ private String dataValue5;
+ @ApiModelProperty("娴嬭瘯鐐�6")
+ private String dataValue6;
+
+ @ApiModelProperty("鏈�澶у亸宸�1")
+ private String maximun1;
+ @ApiModelProperty("鏈�澶у亸宸�2")
+ private String maximun2;
+ @ApiModelProperty("鏈�澶у亸宸�3")
+ private String maximun3;
+ @ApiModelProperty("鏈�澶у亸宸�4")
+ private String maximun4;
+ @ApiModelProperty("鏈�澶у亸宸�5")
+ private String maximun5;
+ @ApiModelProperty("鏈�澶у亸宸�6")
+ private String maximun6;
+
+ @ApiModelProperty("鐩稿鍋忓樊1")
+ private String relative1;
+ @ApiModelProperty("鐩稿鍋忓樊2")
+ private String relative2;
+ @ApiModelProperty("鐩稿鍋忓樊3")
+ private String relative3;
+ @ApiModelProperty("鐩稿鍋忓樊4")
+ private String relative4;
+ @ApiModelProperty("鐩稿鍋忓樊5")
+ private String relative5;
+ @ApiModelProperty("鐩稿鍋忓樊6")
+ private String relative6;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordContrast.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordContrast.java
new file mode 100644
index 0000000..91f4099
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordContrast.java
@@ -0,0 +1,97 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍瀵规瘮琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:43
+ */
+@Getter
+@Setter
+@TableName("device_examine_record_contrast")
+@ApiModel(value = "DeviceExamineRecordContrast瀵硅薄", description = "璁惧鏍告煡璁板綍瀵规瘮琛�")
+public class DeviceExamineRecordContrast implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "record_contrast_id", type = IdType.AUTO)
+ private Integer recordContrastId;
+
+ @ApiModelProperty("鏍告煡鏂瑰紡")
+ private String checkMethod;
+
+ @ApiModelProperty("璁惧鏍告煡璇︽儏id")
+ private Integer planDetailsId;
+
+ @ApiModelProperty("璁惧idA")
+ private Integer aDeviceId;
+
+ @ApiModelProperty("璁惧idb")
+ private Integer bDeviceId;
+
+ @ApiModelProperty("璁惧idc")
+ private Integer cDeviceId;
+
+ @ApiModelProperty("鑼冨洿涓嶇‘瀹氬害A")
+ private String aRangeUncertainty;
+
+ @ApiModelProperty("鑼冨洿涓嶇‘瀹氬害b")
+ private String bRangeUncertainty;
+
+ @ApiModelProperty("鑼冨洿涓嶇‘瀹氬害c")
+ private String cRangeUncertainty;
+
+ @ApiModelProperty("缁煎悎鍒ゅ畾")
+ private String judgment;
+
+ @ApiModelProperty("鏍告煡浜篿d")
+ private Integer checkerUserId;
+
+ @ApiModelProperty("鏍告煡浜�")
+ private String checkerUser;
+
+ @ApiModelProperty("鏍告煡鏃ユ湡")
+ private LocalDateTime checkerTime;
+
+ @ApiModelProperty("瀹℃牳浜篿d")
+ private Integer reviewUserId;
+
+ @ApiModelProperty("瀹℃牳浜�")
+ private String reviewUser;
+
+ @ApiModelProperty("瀹℃牳鐘舵��0,涓嶉�氳繃, 1閫氳繃")
+ private Integer reviewStatus;
+
+ @ApiModelProperty("瀹℃牳澶囨敞")
+ private String reviewRemark;
+
+ @ApiModelProperty("瀹℃牳鏃ユ湡")
+ private LocalDateTime reviewTime;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordContrastDetails.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordContrastDetails.java
new file mode 100644
index 0000000..761d626
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordContrastDetails.java
@@ -0,0 +1,70 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍瀵规瘮璇︽儏琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:57
+ */
+@Getter
+@Setter
+@TableName("device_examine_record_contrast_details")
+@ApiModel(value = "DeviceExamineRecordContrastDetails瀵硅薄", description = "璁惧鏍告煡璁板綍瀵规瘮璇︽儏琛�")
+public class DeviceExamineRecordContrastDetails implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "record_contrast_details_id", type = IdType.AUTO)
+ private Integer recordContrastDetailsId;
+
+ @ApiModelProperty("璁惧鏍告煡璇︽儏id")
+ private Integer recordContrastId;
+
+ @ApiModelProperty("鏍告煡椤圭洰")
+ private String checkItems;
+
+ @ApiModelProperty("a浠櫒绀哄��")
+ private String indicationA;
+
+ @ApiModelProperty("b浠櫒绀哄��")
+ private String indicationB;
+
+ @ApiModelProperty("c浠櫒绀哄��")
+ private String indicationC;
+
+ @ApiModelProperty("宸��")
+ private String dValue;
+
+ @ApiModelProperty("鍋忓樊")
+ private String deviation;
+
+ @ApiModelProperty("鍒ゅ畾")
+ private String determine;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordDetail.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordDetail.java
new file mode 100644
index 0000000..a871313
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExamineRecordDetail.java
@@ -0,0 +1,70 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍璇︽儏琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:15:11
+ */
+@Getter
+@Setter
+@TableName("device_examine_record_detail")
+@ApiModel(value = "DeviceExamineRecordDetail瀵硅薄", description = "璁惧鏍告煡璁板綍璇︽儏琛�")
+public class DeviceExamineRecordDetail implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "record_detail_id", type = IdType.AUTO)
+ private Integer recordDetailId;
+
+ @ApiModelProperty("璁捐澶囨牳鏌ヨ褰昳d")
+ private Integer recordId;
+
+ @ApiModelProperty("娴嬭瘯鐐�")
+ private String testPoint;
+
+ @ApiModelProperty("鍐呭鍊�1")
+ private String dataValue1;
+
+ @ApiModelProperty("鍐呭鍊�2")
+ private String dataValue2;
+
+ @ApiModelProperty("鍐呭鍊�3")
+ private String dataValue3;
+
+ @ApiModelProperty("鍐呭鍊�4")
+ private String dataValue4;
+
+ @ApiModelProperty("鍐呭鍊�5")
+ private String dataValue5;
+
+ @ApiModelProperty("鍐呭鍊�6")
+ private String dataValue6;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExternalApply.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExternalApply.java
new file mode 100644
index 0000000..19efa1b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceExternalApply.java
@@ -0,0 +1,123 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 鍒╃敤澶栭儴璁惧鐢宠琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 10:28:43
+ */
+@Getter
+@Setter
+@TableName("device_external_apply")
+@ApiModel(value = "DeviceExternalApply瀵硅薄", description = "鍒╃敤澶栭儴璁惧鐢宠琛�")
+public class DeviceExternalApply {
+
+ @TableId(value = "external_apply_id", type = IdType.AUTO)
+ private Integer externalApplyId;
+
+ @ApiModelProperty("鍗曚綅鍚嶇О")
+ private String unitName;
+
+ @ApiModelProperty("鍦板潃")
+ private String address;
+
+ @ApiModelProperty("浠櫒鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("浠櫒鍨嬪彿")
+ private String deviceModel;
+
+ @ApiModelProperty("閰嶄欢")
+ private String parts;
+
+ @ApiModelProperty("瀵规柟浠櫒缂栧彿")
+ private String instrumentNumber;
+
+ @ApiModelProperty("鎶�鏈寚鏍�")
+ private String technicalIndex;
+
+ @ApiModelProperty("鎶�鏈姹�")
+ private String technicalRequirements;
+
+ @ApiModelProperty("鍒╃敤鍘熷洜")
+ private String useReason;
+
+ @ApiModelProperty("0鐢宠浜篿d")
+ private Integer applicantUserId;
+
+ @ApiModelProperty("0鐢宠浜�")
+ private String applicantUser;
+
+ @ApiModelProperty("0鐢宠鏃堕棿")
+ private LocalDate applicantDate;
+
+ @ApiModelProperty("1閮ㄩ棬璐熻矗浜烘剰瑙�")
+ private String departmentHeadOpinion;
+
+ @ApiModelProperty("1閮ㄩ棬璐熻矗浜篿d")
+ private Integer departmentHeadUserId;
+
+ @ApiModelProperty("1閮ㄩ棬璐熻矗浜�")
+ private String departmentHeadUser;
+
+ @ApiModelProperty("1閮ㄩ棬璐熻矗浜哄~鍐欐椂闂�")
+ private LocalDate departmentHeadDate;
+
+ @ApiModelProperty("2璁¢噺瀹ゆ剰瑙�")
+ private String meteringRoomOpinion;
+
+ @ApiModelProperty("2璁¢噺瀹や汉id")
+ private Integer meteringRoomUserId;
+
+ @ApiModelProperty("2璁¢噺瀹や汉")
+ private String meteringRoomUser;
+
+ @ApiModelProperty("2璁¢噺瀹や汉濉啓鏃堕棿")
+ private LocalDate meteringRoomDate;
+
+ @ApiModelProperty("3鎵瑰噯浜烘剰瑙�")
+ private String approverOpinion;
+
+ @ApiModelProperty("3鎵瑰噯浜篿d")
+ private Integer approverUserId;
+
+ @ApiModelProperty("3鎵瑰噯浜�")
+ private String approverUser;
+
+ @ApiModelProperty("3鎵瑰噯浜哄~鍐欐椂闂�")
+ private LocalDate approverDate;
+
+ @ApiModelProperty("鏄惁缁撴潫,0: 鏈粨鏉�, 1:缁撴潫")
+ private Integer isFinish;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @TableField(exist = false,select = false)
+ @ApiModelProperty("娴佺▼, 0:鐢宠, 1鐢宠閮ㄩ棬璐熻矗浜烘剰瑙�, 2:璁¢噺瀹ゆ剰瑙�, 3:鎵瑰噯浜�")
+ private Integer flowType;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceFault.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceFault.java
new file mode 100644
index 0000000..727f3d3
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceFault.java
@@ -0,0 +1,39 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+@TableName("device_faults")
+public class DeviceFault {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ //璁惧di
+ private Integer deviceId;
+ //鏁呴殰娆℃暟
+ private Integer faultCount;
+ //鏈�杩戞晠闅滄棩鏈�
+ private LocalDate recentFaultDate;
+ //鏈�杩戞牎鍑嗘棩鏈�
+ private LocalDate recentCalibrationDate;
+ // 鏈�杩戞牎鍑嗙粨璁�
+ private String calibrationConclusion;
+ // 鏈�杩戞鏌ユ棩鏈�
+ private LocalDate recentCheckDate;
+ // 涓嬩竴娆℃鏌ユ棩鏈�
+ private LocalDate nextCheckDate;
+//妫�鏌ョ粨璁�
+ private String checkConclusion;
+//缁存姢绫诲瀷
+ private String maintenanceType;
+//缁存姢浜哄憳
+ private String maintenancePerson;
+//澶囨敞
+ private String comments;
+
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceFaultOne.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceFaultOne.java
new file mode 100644
index 0000000..3e6cb6e
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceFaultOne.java
@@ -0,0 +1,125 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 02:03:29
+ */
+@Getter
+@Setter
+@TableName("device_fault_one")
+@ApiModel(value = "DeviceFaultOne瀵硅薄", description = "璁惧鏁呴殰琛�")
+public class DeviceFaultOne implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("1娴佺▼缂栧彿")
+ private String processNumber;
+
+ @ApiModelProperty("1鍑嗙‘搴﹂噺鍊�")
+ private String measureOfAccuracy;
+
+ @ApiModelProperty("1鏁呴殰鎯呭喌")
+ private String faultSituation;
+
+ @ApiModelProperty("1鏂囦欢鍘熷悕")
+ private String fileName;
+
+ @ApiModelProperty("1绯荤粺鏂囦欢鍚�")
+ private String systemFileName;
+
+ @ApiModelProperty("1涓嬬幆鑺傝礋璐d汉")
+ private String submitNextPesponsible;
+
+ @ApiModelProperty("1鎿嶄綔浜�")
+ private String submitOperatingPersonnel;
+
+ @ApiModelProperty("1鏃ユ湡")
+ private LocalDateTime submitDate;
+
+ @ApiModelProperty("2缁翠慨鏂瑰紡鍙婅垂鐢�")
+ private String methodCost;
+
+ @ApiModelProperty("2瀹℃牳鎰忚")
+ private String adminAuditOption;
+
+ @ApiModelProperty("2璁惧绠$悊鍛�-涓嬬幆鑺傝礋璐d汉")
+ private String adminNextPesponsible;
+
+ @ApiModelProperty("2绠$悊鍛�-鎿嶄綔浜�")
+ private String adminOperatingPersonnel;
+
+ @ApiModelProperty("2绠$悊鍛�-鏃ユ湡")
+ private LocalDateTime adminDate;
+
+ @ApiModelProperty("3 鎶�鏈礋璐d汉 瀹℃牳鎰忚")
+ private String technicalAuditOption;
+
+ @ApiModelProperty("3鎶�鏈礋璐d汉 涓嬬幆鑺傝礋璐d汉")
+ private String technicalNextPesponsible;
+
+ @ApiModelProperty("3 鎶�鏈礋璐d汉 鎿嶄綔浜�")
+ private String technicalOperatingPersonnel;
+
+ @ApiModelProperty("3 鎶�鏈礋璐d汉 鏃ユ湡")
+ private LocalDateTime technicalDate;
+
+ @ApiModelProperty("4缁翠慨鎯呭喌")
+ private String maintainSituation;
+
+ @ApiModelProperty("4 缁翠慨 涓嬬幆鑺傝礋璐d汉")
+ private String maintainNextPesponsible;
+
+ @ApiModelProperty("4 缁翠慨 鎿嶄綔浜�")
+ private String maintainOperatingPersonnel;
+
+ @ApiModelProperty("4 缁翠慨 鏃ユ湡")
+ private LocalDateTime maintainDate;
+
+ @ApiModelProperty("5楠屾敹纭鏍″噯鎯呭喌")
+ private String checkCalSituation;
+
+ @ApiModelProperty("5 缁翠慨鍚� 鎿嶄綔浜�")
+ private String afterMaintenanceOperatingPersonnel;
+
+ @ApiModelProperty("5 缁翠慨鍚� 鏃ユ湡")
+ private LocalDateTime afterMaintenanceDate;
+
+ @ApiModelProperty("褰撳墠鐘舵��")
+ private String currentState;
+
+ @ApiModelProperty("鎻愪氦浜�")
+ private String submitPerson;
+
+ @ApiModelProperty("褰撳墠璐d换浜�")
+ private String currentResponsible;
+
+ @ApiModelProperty("鍒涘缓鏃ユ湡")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鏁呴殰鏃ユ湡")
+ private LocalDate faultDate;
+
+ @ApiModelProperty("瑕佹眰淇鏃ユ湡")
+ private LocalDate requestRepairDate;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceInspectionRecord.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceInspectionRecord.java
new file mode 100644
index 0000000..3780a7d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceInspectionRecord.java
@@ -0,0 +1,93 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鐐规璁板綍
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 04:25:14
+ */
+@Getter
+@Setter
+@TableName("device_inspection_record")
+@ApiModel(value = "DeviceInspectionRecord瀵硅薄", description = "")
+public class DeviceInspectionRecord implements Serializable {
+
+ @ApiModelProperty("璁惧鐐规璁板綍id")
+ @TableId(value = "inspection_record_id", type = IdType.AUTO)
+ private Integer inspectionRecordId;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("娴嬮噺鑼冨洿")
+ private String measurementScope;
+
+ @ApiModelProperty("鐐规浣跨敤鐗╄川鍚嶇О")
+ private String materialName;
+
+ @ApiModelProperty("鐐规浣跨敤鐗╄川瑙勬牸鍨嬪彿")
+ private String materialModel;
+
+ @ApiModelProperty("鐐规浣跨敤鐗╄川绠$悊缂栧彿")
+ private String materialManagementNumber;
+
+ @ApiModelProperty("鐐规浣跨敤鐗╄川绮惧害绛夌骇")
+ private String materialAccuracyGrade;
+
+ @ApiModelProperty("娓╁害")
+ private String temperature;
+
+ @ApiModelProperty("婀垮害")
+ private String humidity;
+
+ @ApiModelProperty("娴嬭瘯缁撹")
+ private String testConclusion;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @ApiModelProperty("鐘舵�侊紙鏄惁澶嶆牳锛�0鏈鏍革紝1澶嶆牳")
+ private Integer status;
+
+ @ApiModelProperty("娴嬭瘯浜�")
+ private String recorder;
+
+ @ApiModelProperty("娴嬭瘯浜篿d")
+ private Integer recorderId;
+
+ @ApiModelProperty("澶嶆牳浜�")
+ private String reviewer;
+
+ @ApiModelProperty("澶嶆牳浜篿d")
+ private Integer reviewerId;
+
+ @ApiModelProperty("澶嶆牳淇℃伅")
+ private String reviewerRemark;
+
+ @ApiModelProperty("娴嬭瘯鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private LocalDateTime testDate;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("淇敼浜篿d")
+ private Integer updateUserId;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceInspectionRecordDetails.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceInspectionRecordDetails.java
new file mode 100644
index 0000000..3bd7b90
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceInspectionRecordDetails.java
@@ -0,0 +1,63 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 04:27:32
+ */
+@Getter
+@Setter
+@TableName("device_inspection_record_details")
+@ApiModel(value = "DeviceInspectionRecordDetails瀵硅薄", description = "")
+public class DeviceInspectionRecordDetails implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("鐐规璇︽儏id")
+ @TableId(value = "inspection_record_detail_id", type = IdType.AUTO)
+ private Integer inspectionRecordDetailId;
+
+ @ApiModelProperty("鐐规id")
+ private Integer inspectionRecordId;
+
+ @ApiModelProperty("娴嬭瘯椤圭洰")
+ private String testItems;
+
+ @ApiModelProperty("鏍囧噯鍊�")
+ private String standardValue;
+
+ @ApiModelProperty("瀹炴祴鍊�")
+ private String measuredValue;
+
+ @ApiModelProperty("绀哄�艰宸�")
+ private String indicationError;
+
+ @ApiModelProperty("鍏佽璇樊")
+ private String allowableError;
+
+ @ApiModelProperty("鍗曢」缁撹")
+ private String singleItemConclusion;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("淇敼浜篿d")
+ private Integer updateUserId;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceLease.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceLease.java
new file mode 100644
index 0000000..28da273
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceLease.java
@@ -0,0 +1,47 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("device_leases")
+public class DeviceLease implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId
+ private Integer leaseId;
+
+ private String processNumber;
+
+ private String deviceName;
+
+ private String managementNumber;
+
+ private String borrower;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDate borrowDate;
+
+ private String borrowStatus;
+
+ private String submitter;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime submissionDate;
+
+ private String currentStatus;
+
+ private String currentResponsible;
+
+ private int deviceId;
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceLog.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceLog.java
new file mode 100644
index 0000000..9481bad
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceLog.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("device_log") // 璁板綍
+public class DeviceLog implements Serializable {
+
+ @TableId(type= IdType.AUTO)
+ private Integer id;
+ private String operator;
+// @JsonFormat()
+ private LocalDateTime operationTime;
+ private String operationType;
+ private String operationContent;
+ private Integer deviceId;
+
+ //鍏宠仈鐨勮〃鍚�
+ private String relevanceForm;
+
+ //鍏宠仈鐨刬d
+ private Integer relevanceId;
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenance.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenance.java
new file mode 100644
index 0000000..f2b81a1
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenance.java
@@ -0,0 +1,42 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+//@Accessors(chain = true)
+@TableName("device_maintenance")
+public class DeviceMaintenance {
+// @TableId(value = "id", type = IdType.AUTO)
+ private static final long serialVersionUID = 1L;
+ //璁惧id
+ @TableId(type=IdType.AUTO)
+ private Integer id;
+ private Integer deviceId;
+
+ private String deviceName;
+ //缂栧彿
+ private String deviceNumber;
+ //缁熶竴缂栧彿
+ private String managementNumber;
+ //缁存姢鍐呭
+ private String content;
+ //缁存姢鏃ユ湡
+ @TableField(fill = FieldFill.INSERT)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate date;
+ //涓嬫缁存姢鏃ユ湡
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate nextDate;
+ //缁存姢绫诲瀷
+ private Integer maintenanceType;
+ //缁存姢浜哄憳
+ private String name;
+ //澶囨敞
+ private String comments;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenancePlan.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenancePlan.java
new file mode 100644
index 0000000..1b9ec7d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenancePlan.java
@@ -0,0 +1,75 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:10:52
+ */
+@Getter
+@Setter
+@TableName("device_maintenance_plan")
+@ApiModel(value = "DeviceMaintenancePlan瀵硅薄", description = "璁惧淇濆吇璁″垝琛�")
+public class DeviceMaintenancePlan implements Serializable {
+
+ @ApiModelProperty("璁惧淇濆吇璁″垝id")
+ @TableId(value = "maintenance_plan_id", type = IdType.AUTO)
+ private Integer maintenancePlanId;
+
+ @ApiModelProperty("缂栧埗浜�")
+ private String compiler;
+
+ @ApiModelProperty("璁″垝鍚嶇О")
+ private String planName;
+
+ @ApiModelProperty("璁″垝骞翠唤")
+ private String planYear;
+
+ @ApiModelProperty("缂栧埗浜篿d")
+ private Integer compilerId;
+
+ @ApiModelProperty("缂栧埗鏃ユ湡")
+ private LocalDateTime datePreparation;
+
+ @ApiModelProperty("瀹℃牳鐘舵�侊紝0鏈鏍革紝1瀹℃牳")
+ private Integer status;
+
+ @ApiModelProperty("瀹℃牳浜篿d")
+ private Integer auditId;
+
+ @ApiModelProperty("瀹℃牳浜�")
+ private String audit;
+
+ @ApiModelProperty("瀹℃牳鏃ユ湡")
+ private LocalDateTime auditDate;
+
+ @ApiModelProperty("瀹℃牳淇℃伅")
+ private String auditRemark;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenancePlanDetails.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenancePlanDetails.java
new file mode 100644
index 0000000..69b80d9
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMaintenancePlanDetails.java
@@ -0,0 +1,62 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝璇︽儏琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:11:46
+ */
+@Getter
+@Setter
+@TableName("device_maintenance_plan_details")
+@ApiModel(value = "DeviceMaintenancePlanDetails瀵硅薄", description = "璁惧淇濆吇璁″垝璇︽儏琛�")
+public class DeviceMaintenancePlanDetails implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("淇濆吇璁″垝璇︽儏id")
+ @TableId(value = "maintenance_plan_detail_id", type = IdType.AUTO)
+ private Integer maintenancePlanDetailId;
+
+ @ApiModelProperty("淇濆吇璁″垝id")
+ private Integer maintenancePlanId;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("淇濆吇鍏抽敭閮ㄤ綅")
+ private String maintenanceSite;
+
+ @ApiModelProperty("淇濆吇鍐呭")
+ private String maintenanceContent;
+
+ @ApiModelProperty("淇濆吇鍛ㄦ湡")
+ private String maintenanceIntervals;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetric.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetric.java
new file mode 100644
index 0000000..6fa0bf5
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetric.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("device_metrics")
+public class DeviceMetric implements Serializable {
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id; //id
+ private Integer deviceId; // 璁惧ID
+ private String measurementParameter; // 璁¢噺鍙傛暟
+ private String rangeOfMeasurement; // 閲忕▼鑼冨洿
+ private String maxPermissibleError; // 鏈�澶у厑璁歌宸�
+ private String judgmentCriteria; // 鍒ゅ畾鏍囧噯
+ private String createdBy; // 鍒涘缓浜�
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime creationTime; // 鍒涘缓鏃堕棿
+
+ @ApiModelProperty("calibrate锛氭牎鍑嗭紱examine锛氭牳鏌�")
+ private String type; // 绫诲瀷
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetricRecord.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetricRecord.java
new file mode 100644
index 0000000..5dffcf7
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetricRecord.java
@@ -0,0 +1,89 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * <p>
+ * 璁惧鏍″噯 - 鏍″噯璁板綍
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-27 10:20:01
+ */
+@Getter
+@Setter
+@TableName("device_metric_record")
+@ApiModel(value = "DeviceMetricRecord瀵硅薄", description = "璁惧鏍″噯 - 鏍″噯璁板綍")
+public class DeviceMetricRecord implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("涓婚敭id")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("璁板綍缂栧彿")
+ private String processNumber;
+
+ @ApiModelProperty("璁¢噺鍗曚綅")
+ private String unitOfMeasure;
+
+ @ApiModelProperty("鏍″噯鏃ユ湡")
+ private Date calibrationDate;
+
+ @ApiModelProperty("涓嬫鏍″噯鏃ユ湡")
+ private Date nextCalibrationDate;
+
+ @ApiModelProperty("璁$畻鍣ㄥ叿")
+ private String calculatingApparatus;
+
+ @ApiModelProperty("璁$畻鏍囧噯閲忕▼")
+ private String standardRange;
+
+ @ApiModelProperty("璁¢噺鏍囧噯涓嶇‘瀹氬害")
+ private String calibrationStandardUncertainty;
+
+ @ApiModelProperty("渚濇嵁鏂囦欢")
+ private String byDocument;
+
+ @ApiModelProperty("璇佷功缂栧彿")
+ private String certificateSerialNumber;
+
+ @ApiModelProperty("鐘舵��")
+ private String status;
+
+ @ApiModelProperty("鍘熸枃浠跺悕绉�")
+ private String fileName;
+
+ @ApiModelProperty("绯荤粺鐢熸垚鏂囦欢鍚嶇О")
+ private String systemFileName;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿 / 鐧昏鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鐧昏浜�")
+ private String createUser;
+
+ @ApiModelProperty("calibrate锛氭牎鍑嗭紱examine锛氭牳鏌�")
+ private String type;
+
+ @ApiModelProperty("纭鏃堕棿")
+ private Date confirmDate;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetricsCopy.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetricsCopy.java
new file mode 100644
index 0000000..290c530
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceMetricsCopy.java
@@ -0,0 +1,66 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鏍″噯 - 鏍″噯璁板綍 - 鏍″噯鏉$洰
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-27 10:20:11
+ */
+@Getter
+@Setter
+@TableName("device_metrics_copy")
+@ApiModel(value = "DeviceMetricsCopy瀵硅薄", description = "璁惧鏍″噯 - 鏍″噯璁板綍 - 鏍″噯鏉$洰")
+public class DeviceMetricsCopy implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("id")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("璁惧鏍″噯 - 鏍″噯璁板綍id")
+ private Integer deviceMetricsId;
+
+ @ApiModelProperty("璁¢噺鍙傛暟")
+ private String measurementParameter;
+
+ @ApiModelProperty("閲忕▼鑼冨洿")
+ private String rangeOfMeasurement;
+
+ @ApiModelProperty("鏈�澶у厑璁歌宸�")
+ private String maxPermissibleError;
+
+ @ApiModelProperty("鍒ゅ畾鏍囧噯")
+ private String judgmentCriteria;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ private String createdBy;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ private LocalDateTime creationTime;
+
+ @ApiModelProperty("鏄惁鏍″噯")
+ private String isCalibration;
+
+ @ApiModelProperty("鍒ゅ畾缁撴灉")
+ private String result;
+
+ @ApiModelProperty("鍗曢」缁撴灉璇存槑")
+ private String singleResultStatement;
+
+ @ApiModelProperty("calibrate锛氭牎鍑嗭紱examine锛氭牳鏌�")
+ private String type;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceRecord.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceRecord.java
new file mode 100644
index 0000000..5198d9f
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceRecord.java
@@ -0,0 +1,70 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * cnas璁惧浣跨敤璁板綍琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-21 11:06:47
+ */
+@Getter
+@Setter
+@TableName("device_record")
+@ApiModel(value = "DeviceRecord瀵硅薄", description = "cnas璁惧浣跨敤璁板綍琛�")
+public class DeviceRecord implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private Integer deviceId;
+
+ @ApiModelProperty("璁㈠崟id")
+ private Integer insOrderId;
+
+ @ApiModelProperty("鏍峰搧缂栧彿")
+ private String sampleCode;
+
+ @ApiModelProperty("娓╁害")
+ private String temperature;
+
+ @ApiModelProperty("婀垮害")
+ private String humidity;
+
+ @ApiModelProperty("浣跨敤鍓�0寮傚父1鑹ソ")
+ private Integer useBefore;
+
+ @ApiModelProperty("浣跨敤鍚�0寮傚父1鑹ソ")
+ private Integer useAfter;
+
+ @ApiModelProperty("寮傚父鎯呭喌")
+ private String abnormal;
+
+ @ApiModelProperty("浣跨敤浜篿d")
+ private Integer usePersonId;
+
+ @ApiModelProperty("浣跨敤浜�")
+ private String usePerson;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @ApiModelProperty("浣跨敤寮�濮嬫棩鏈�")
+ private LocalDateTime useStartDate;
+
+ @ApiModelProperty("浣跨敤缁撴潫鏃ユ湡")
+ private LocalDateTime useEndDate;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceScrapped.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceScrapped.java
new file mode 100644
index 0000000..b412c4a
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceScrapped.java
@@ -0,0 +1,105 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鎶ュ簾鐢宠琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 01:53:47
+ */
+@Getter
+@Setter
+@TableName("device_scrapped")
+@ApiModel(value = "DeviceScrapped瀵硅薄", description = "璁惧鎶ュ簾鐢宠琛�")
+public class DeviceScrapped {
+
+ @TableId(value = "scrapped_id", type = IdType.AUTO)
+ private Integer scrappedId;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("閰嶄欢")
+ private String parts;
+
+ @ApiModelProperty("鎶ュ簾鐞嗙敱")
+ private String reasonsForScrap;
+
+ @ApiModelProperty("鐢宠浜篿d")
+ private Integer applicantUserId;
+
+ @ApiModelProperty("鐢宠浜�")
+ private String applicantUser;
+
+ @ApiModelProperty("鐢宠鏃堕棿")
+ private LocalDate applicantDate;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜烘剰瑙�")
+ private String departmentHeadOpinion;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜篿d")
+ private Integer departmentHeadUserId;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜�")
+ private String departmentHeadUser;
+
+ @ApiModelProperty("閮ㄩ棬璐熻矗浜哄~鍐欐椂闂�")
+ private LocalDate departmentHeadDate;
+
+ @ApiModelProperty("璁¢噺瀹ゆ剰瑙�")
+ private String meteringRoomOpinion;
+
+ @ApiModelProperty("璁¢噺瀹や汉id")
+ private Integer meteringRoomUserId;
+
+ @ApiModelProperty("璁¢噺瀹や汉")
+ private String meteringRoomUser;
+
+ @ApiModelProperty("璁¢噺瀹や汉濉啓鏃堕棿")
+ private LocalDate meteringRoomDate;
+
+ @ApiModelProperty("鎵瑰噯浜烘剰瑙�")
+ private String approverOpinion;
+
+ @ApiModelProperty("鎵瑰噯浜篿d")
+ private Integer approverUserId;
+
+ @ApiModelProperty("鎵瑰噯浜�")
+ private String approverUser;
+
+ @ApiModelProperty("鎵瑰噯浜哄~鍐欐椂闂�")
+ private LocalDate approverDate;
+
+ @ApiModelProperty("鏄惁缁撴潫,0: 鏈粨鏉�, 1:缁撴潫")
+ private Integer isFinish;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @TableField(exist = false,select = false)
+ @ApiModelProperty("娴佺▼, 0:鎶ュ簾鐢宠, 1鐢宠閮ㄩ棬璐熻矗浜烘剰瑙�, 2:璁¢噺瀹ゆ剰瑙�, 3:鎵瑰噯浜�")
+ private Integer flowType;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceState.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceState.java
new file mode 100644
index 0000000..4b829d4
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceState.java
@@ -0,0 +1,107 @@
+package com.yuanchu.mom.pojo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧鍋滅敤/鍚敤
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 09:51:40
+ */
+@Getter
+@Setter
+@TableName("device_state")
+@ApiModel(value = "DeviceState瀵硅薄", description = "璁惧鍋滅敤/鍚敤")
+public class DeviceState implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("璁惧鍋滅敤鍚敤id")
+ @TableId(value = "state_id", type = IdType.AUTO)
+ private Integer stateId;
+
+ @ApiModelProperty("娴佺▼缂栧彿")
+ private String processNumber;
+
+ @ApiModelProperty("0閰嶄欢")
+ private String accessoryPart;
+
+ @ApiModelProperty("0璁惧鐘舵��")
+ private String deviceStatus;
+
+ @ApiModelProperty("0鍋滅敤鍚敤鐞嗙敱")
+ private String reason;
+
+ @ApiModelProperty("0涓嬬幆鑺傝矗浠讳汉")
+ private String submitNextPesponsible;
+
+ @ApiModelProperty("0鎿嶄綔浜�")
+ private String submitOperatingPersonnel;
+
+ @ApiModelProperty("0鏃ユ湡")
+ private LocalDateTime submitDate;
+
+ @ApiModelProperty("1閮ㄩ棬璐熻矗浜烘剰瑙�")
+ private String departmentReviewOpinion;
+
+ @ApiModelProperty("1涓嬬幆鑺傝矗浠讳汉")
+ private String departmentNextPesponsible;
+
+ @ApiModelProperty("1鎿嶄綔浜�")
+ private String departmentOperatingPersonnel;
+
+ @ApiModelProperty("1鏃ユ湡")
+ private LocalDateTime departmentDate;
+
+ @ApiModelProperty("2璁¢噺瀹ゆ剰瑙�")
+ private String measuringRoomReviewOpinion;
+
+ @ApiModelProperty("2涓嬬幆鑺傝矗浠讳汉")
+ private String measuringRoomNextPesponsible;
+
+ @ApiModelProperty("2鎿嶄綔浜�")
+ private String measuringRoomOperatingPersonnel;
+
+ @ApiModelProperty("2鏃ユ湡")
+ private LocalDateTime measuringRoomDate;
+
+ @ApiModelProperty("3鎵瑰噯鎰忚")
+ private String approvalOpinion;
+
+ @ApiModelProperty("3涓嬬幆鑺傝矗浠讳汉")
+ private String approvalNextPesponsible;
+
+ @ApiModelProperty("3鎿嶄綔浜�")
+ private String approvalOperatingPersonnel;
+
+ @ApiModelProperty("3鏃ユ湡")
+ private LocalDateTime approvalDate;
+
+ @ApiModelProperty("褰撳墠鐘舵��")
+ private String currentState;
+
+ @ApiModelProperty("璁惧Id")
+ private Integer deviceId;
+
+ @ApiModelProperty("褰撳墠鐜妭璐熻矗浜�")
+ private String currentResponsible;
+
+ @ApiModelProperty("鎻愪氦浜�")
+ @ExcelProperty(value = "鎻愪氦浜�")
+ private String createUser;
+
+ @ApiModelProperty("鎻愪氦鏃ユ湡")
+ @ExcelProperty(value = "鎻愪氦鏃ユ湡")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceTraceabilityManagement.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceTraceabilityManagement.java
new file mode 100644
index 0000000..0398118
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceTraceabilityManagement.java
@@ -0,0 +1,77 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕〃
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:44
+ */
+@Getter
+@Setter
+@TableName("device_traceability_management")
+@ApiModel(value = "DeviceTraceabilityManagement瀵硅薄", description = "璁惧閲忓�兼函婧愯鍒掕〃")
+public class DeviceTraceabilityManagement {
+
+ @ApiModelProperty("璁惧閲忓�兼函婧愯鍒抜d")
+ @TableId(value = "traceability_management_id", type = IdType.AUTO)
+ private Integer traceabilityManagementId;
+
+ @ApiModelProperty("鏂囦欢鍚嶇О")
+ private String fileName;
+
+ @ApiModelProperty("璁″垝鍚嶇О")
+ private String planName;
+
+ @ApiModelProperty("璁″垝骞翠唤")
+ private String planYear;
+
+ @ApiModelProperty("缂栧埗浜篿d")
+ private Integer compilerId;
+
+ @ApiModelProperty("缂栧埗浜�")
+ private String compiler;
+
+ @ApiModelProperty("缂栧埗鏃堕棿")
+ private LocalDateTime datePreparation;
+
+ @ApiModelProperty("瀹℃牳鐘舵�侊紝0鏈鏍革紝1瀹℃牳")
+ private Integer status;
+
+ @ApiModelProperty("淇敼浜篿d")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("瀹℃牳浜篿d")
+ private Integer auditId;
+
+ @ApiModelProperty("瀹℃牳浜�")
+ private String audit;
+
+ @ApiModelProperty("瀹℃牳鏃ユ湡")
+ private LocalDateTime auditDate;
+
+ @ApiModelProperty("瀹℃牳淇℃伅")
+ private String auditRemark;
+
+ @ApiModelProperty("鍒涘缓浜篿d")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃ユ湡")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceTraceabilityManagementDetails.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceTraceabilityManagementDetails.java
new file mode 100644
index 0000000..7d00d32
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/DeviceTraceabilityManagementDetails.java
@@ -0,0 +1,68 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕鎯呰〃
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:58
+ */
+@Getter
+@Setter
+@TableName("device_traceability_management_details")
+@ApiModel(value = "DeviceTraceabilityManagementDetails瀵硅薄", description = "璁惧閲忓�兼函婧愯鍒掕鎯呰〃")
+public class DeviceTraceabilityManagementDetails implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("璁惧閲忓�兼函婧愯鍒掕鎯卛d")
+ @TableId(value = "traceability_management_detail_id", type = IdType.AUTO)
+ private Integer traceabilityManagementDetailId;
+
+ @ApiModelProperty("璁惧閲忓�兼函婧愯鍒抜d")
+ private Integer traceabilityManagementId;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("鎶�鏈寚鏍囧弬鏁�")
+ private String technicalIndexParameters;
+
+ @ApiModelProperty("鎶�鏈寚鏍囪姹�")
+ private String technicalRequirements;
+
+ @ApiModelProperty("妫�瀹氬懆鏈�")
+ private String verificationCycle;
+
+ @ApiModelProperty("妫�瀹氬崟浣�")
+ private String verificationUnit;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @ApiModelProperty("鍒涘缓浜篿d")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鍒涘缓鏃ユ湡")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜篿d")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/Document.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/Document.java
new file mode 100644
index 0000000..bf7fa04
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/Document.java
@@ -0,0 +1,91 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+
+@Data
+@TableName(value = "device_documents")
+public class Document implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 鏂囨。绫诲瀷锛堟灇涓撅級
+ */
+ private String documentType;
+
+ /**
+ * 鍚嶇О
+ */
+ private String name;
+
+ /**
+ * 鐗堟湰鍙�
+ */
+ private String version;
+
+ /**
+ * 鏁伴噺
+ */
+ private Integer quantity;
+
+ /**
+ * 椤垫暟
+ */
+ private Integer pageCount;
+
+ /**
+ * 鎻愪緵鍟�
+ */
+ private String provider;
+
+ /**
+ * 鎻愪緵鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime provideDate;
+
+ /**
+ * 澶囨敞
+ */
+ private String comments;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime createdAt;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updatedAt;
+
+ private int deviceId;
+
+ @ApiModelProperty("璧勪骇缂栧彿")
+ private String number;
+
+ @ApiModelProperty("鍘熷鏂囦欢鍚嶇О")
+ private String systemFileName;
+
+ @ApiModelProperty("绯荤粺鐢熸垚鏂囦欢鍚嶇О")
+ private String fileName;
+
+
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentAcceptanceCheck.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentAcceptanceCheck.java
new file mode 100644
index 0000000..b45fd60
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentAcceptanceCheck.java
@@ -0,0 +1,50 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 璁惧楠屾敹-楠屾敹鏍告煡
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 04:41:19
+ */
+@Getter
+@Setter
+@TableName("device_incident_acceptance_check")
+@ApiModel(value = "IncidentAcceptanceCheck瀵硅薄", description = "璁惧楠屾敹-楠屾敹鏍告煡")
+public class IncidentAcceptanceCheck implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("涓婚敭id")
+ @TableId(type = IdType.AUTO)
+ private Integer acceptanceCheckId;
+
+ @ApiModelProperty("浠櫒妯″潡")
+ private String instrumentModule;
+
+ @ApiModelProperty("鏍告煡鍙傛暟")
+ private String verificationParameter;
+
+ @ApiModelProperty("鍙帴鏀堕檺")
+ private String acceptableLimit;
+
+ @ApiModelProperty("鏍告煡缁撴灉")
+ private String verificationResult;
+
+ @ApiModelProperty("鏍告煡缁撹")
+ private String verificationConclusion;
+
+ @ApiModelProperty("璁惧楠屾敹ID")
+ private Integer incidentId;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentFile.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentFile.java
new file mode 100644
index 0000000..363c580
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentFile.java
@@ -0,0 +1,40 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 璁惧楠屾敹-鏂囦欢绫荤‘璁�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 04:41:36
+ */
+@Getter
+@Setter
+@TableName("device_incident_file")
+@ApiModel(value = "IncidentFile瀵硅薄", description = "璁惧楠屾敹-鏂囦欢绫荤‘璁�")
+public class IncidentFile implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(type = IdType.AUTO)
+ private Integer fileId;
+
+ @ApiModelProperty("搴旀湁鍐屾暟")
+ private Integer expectedCopies;
+
+ @ApiModelProperty("瀹為檯鏀跺埌鍐屾暟")
+ private Integer actualCopies;
+
+ @ApiModelProperty("璁惧楠屾敹id")
+ private Integer incidentId;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentInstall.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentInstall.java
new file mode 100644
index 0000000..672319f
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentInstall.java
@@ -0,0 +1,44 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 璁惧楠屾敹-瀹夎楠屾敹妫�鏌�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 04:41:50
+ */
+@Getter
+@Setter
+@TableName("device_incident_install")
+@ApiModel(value = "IncidentInstall瀵硅薄", description = "璁惧楠屾敹-瀹夎楠屾敹妫�鏌�")
+public class IncidentInstall implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("涓婚敭id")
+ @TableId(type = IdType.AUTO)
+ private Integer installId;
+
+ @ApiModelProperty("椤圭洰")
+ private String installationProject;
+
+ @ApiModelProperty("瀹夎鎯呭喌")
+ private String installationSituation;
+
+ @ApiModelProperty("瀹夎瀹屾垚")
+ private String installationCompleted;
+
+ @ApiModelProperty("璁惧楠屾敹")
+ private Integer incidentId;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentReport.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentReport.java
new file mode 100644
index 0000000..179521c
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentReport.java
@@ -0,0 +1,142 @@
+package com.yuanchu.mom.pojo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧楠屾敹娣诲姞楠屾敹瀛楁琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 03:54:49
+ */
+@Getter
+@Setter
+@TableName("device_incident_report")
+@ApiModel(value = "IncidentReport瀵硅薄", description = "璁惧楠屾敹娣诲姞楠屾敹瀛楁琛�")
+public class IncidentReport implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ExcelProperty(value = "娴佺▼缂栧彿")
+ @ApiModelProperty("娴佺▼缂栧彿")
+ private String processNumber;
+
+ @ApiModelProperty("璁惧id")
+ private Integer deviceId;
+
+ @ApiModelProperty("搴忓垪鍙�")
+ private String serialNumber;
+
+ @ApiModelProperty("璁惧绫诲埆")
+ private String deviceClass;
+
+ @ApiModelProperty("寮�绠卞墠妫�鏌ュ鍖呰鏈夋棤鐮存崯")
+ private String checkOuterPackaging;
+
+ @ApiModelProperty("鍘熸枃浠跺悕绉�")
+ private String fileName;
+
+ @ApiModelProperty("绯荤粺鐢熸垚鏂囦欢鍚嶇О")
+ private String systemFileName;
+
+ @ApiModelProperty("璁惧寮�绠遍獙鏀剁粨璁�")
+ private String unpackingAcceptanceConclusion;
+
+ @ApiModelProperty("1鎻愪氦 涓嬬幆鑺傝礋璐d汉鍚嶇О")
+ private String submitNextPesponsible;
+
+ @ApiModelProperty("1鎻愪氦 鎻愪氦澶囨敞")
+ private String submitRemarks;
+
+ @ApiModelProperty("1鎻愪氦 鎻愪氦鎿嶄綔浜�")
+ private String submitOperatingPersonnel;
+
+ @ApiModelProperty("1鎻愪氦 鎻愪氦鏃ユ湡")
+ private LocalDateTime submitDate;
+
+ @ApiModelProperty("2寮�绠遍獙鏀跺鏍� 澶嶆牳鎰忚")
+ private String unpackingReviewOpinion;
+
+ @ApiModelProperty("2寮�绠遍獙鏀跺鏍� 涓嬬幆鑺傝礋璐d汉")
+ private String unpackingNextPesponsible;
+
+ @ApiModelProperty("2寮�绠遍獙鏀跺鏍� 鎿嶄綔浜�")
+ private String unpackingOperatingPersonnel;
+
+ @ApiModelProperty("2寮�绠遍獙鏀跺鏍� 鏃ユ湡")
+ private LocalDateTime unpackingDate;
+
+ @ApiModelProperty("3瀹夎浣嶇疆")
+ private String installLocation;
+
+ @ApiModelProperty("3瀹夎澶囨敞")
+ private String installRemarks;
+
+ @ApiModelProperty("3瀹夎涓嬬幆鑺傝礋璐d汉")
+ private String installNextPesponsible;
+
+ @ApiModelProperty("3瀹夎鎿嶄綔浜�")
+ private String installOperatingPersonnel;
+
+ @ApiModelProperty("3瀹夎鏃ユ湡")
+ private LocalDateTime installDate;
+
+ @ApiModelProperty("4瀹夎楠屾敹澶嶆牳鎰忚")
+ private String installationAcceptanceCompoundOpinion;
+
+ @ApiModelProperty("4瀹夎楠屾敹涓嬬幆鑺傝礋璐d汉")
+ private String installationAcceptanceNextPesponsible;
+
+ @ApiModelProperty("4瀹夎楠屾敹鎿嶄綔浜�")
+ private String installationAcceptanceOperatingPersonnel;
+
+ @ApiModelProperty("4瀹夎楠屾敹鏃ユ湡")
+ private LocalDateTime installationAcceptanceDate;
+
+ @ApiModelProperty("5楠屾敹鏍告煡 璁惧寮�绠遍獙鏀剁粨璁�")
+ private String acceptanceCheckUnpackingConclusion;
+
+ @ApiModelProperty("5楠屾敹鏍告煡 涓嬬幆鑺傝礋璐d汉")
+ private String acceptanceCheckNextPesponsible;
+
+ @ApiModelProperty("5楠屾敹鏍告煡 鎿嶄綔浜�")
+ private String acceptanceCheckOperatingPersonnel;
+
+ @ApiModelProperty("5楠屾敹鏍告煡 鏃ユ湡")
+ private LocalDateTime acceptanceCheckDate;
+
+ @ApiModelProperty("6楠屾敹鏍告煡瀹℃牳 瀹℃牳鎰忚")
+ private String acceptanceAuditAuditOpinion;
+
+ @ApiModelProperty("6楠屾敹鏍告煡瀹℃牳 鎿嶄綔浜�")
+ private String acceptanceAuditOperatingPersonnel;
+
+ @ApiModelProperty("6楠屾敹鏍告煡瀹℃牳 鏃ユ湡")
+ private LocalDateTime acceptanceAuditDate;
+
+ @ApiModelProperty(value = "鍒涘缓浜篿d")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("褰撳墠鐘舵��")
+ private String currentState;
+
+ @ApiModelProperty(value = "鍒涘缓鏃ユ湡 / 鎻愪氦鏃ユ湡")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("褰撳墠璐熻矗浜�")
+ private String currentResponsible;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentSpareParts.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentSpareParts.java
new file mode 100644
index 0000000..20f2ce7
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/IncidentSpareParts.java
@@ -0,0 +1,44 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 璁惧楠屾敹-澶囦欢纭
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 04:42:06
+ */
+@Getter
+@Setter
+@TableName("device_incident_spare_parts")
+@ApiModel(value = "IncidentSpareParts瀵硅薄", description = "璁惧楠屾敹-澶囦欢纭")
+public class IncidentSpareParts implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("涓婚敭id")
+ @TableId(type = IdType.AUTO)
+ private Integer sparePartsId;
+
+ @ApiModelProperty("鍚嶇О")
+ private String name;
+
+ @ApiModelProperty("鏁伴噺")
+ private Integer number;
+
+ @ApiModelProperty("澶囨敞")
+ private String note;
+
+ @ApiModelProperty("璁惧楠屾敹ID")
+ private Integer incidentId;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/Instruction.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/Instruction.java
new file mode 100644
index 0000000..3e16b62
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/Instruction.java
@@ -0,0 +1,64 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:29:18
+ */
+@Getter
+@Setter
+@TableName("device_instruction")
+@ApiModel(value = "Instruction瀵硅薄", description = "浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃")
+public class Instruction implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("鐢宠缂栧彿")
+ private String applicationNumber;
+
+ @ApiModelProperty("鐢宠閮ㄩ棬")
+ private String applicationDepartment;
+
+ @ApiModelProperty("璐d换浜�")
+ private String personLiable;
+
+ @ApiModelProperty("鍙楁帶鐢宠璇存槑")
+ private String controlledApplicationDescription;
+
+ @ApiModelProperty("绯荤粺鐢熸垚鍚嶇О")
+ private String fileName;
+
+ @ApiModelProperty("绯荤粺鐢熸垚鍚嶇О")
+ private String fileSystemName;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("鏇存柊浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/OperationInstruction.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/OperationInstruction.java
new file mode 100644
index 0000000..ad91937
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/OperationInstruction.java
@@ -0,0 +1,89 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁惧 - 浣滀笟鎸囧涔� 娣诲姞鍙楁帶鏂囦欢 瀛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:43:32
+ */
+@Getter
+@Setter
+@TableName("device_operation_instruction")
+@ApiModel(value = "OperationInstruction瀵硅薄", description = "璁惧 - 浣滀笟鎸囧涔� 娣诲姞鍙楁帶鏂囦欢 瀛�")
+public class OperationInstruction {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("璁惧涓婚敭id")
+ private String deviceId;
+
+ @ApiModelProperty("鏂囦欢绫诲瀷")
+ private String documentType;
+
+ @ApiModelProperty("鏂囨。缂栧彿")
+ private String documentNumber;
+
+ @ApiModelProperty("鏂囦欢鐗堟湰")
+ private String documentVersion;
+
+ @ApiModelProperty("浣滆��")
+ private String author;
+
+ @ApiModelProperty("鎻愪氦鏃ユ湡")
+ private LocalDate submitDate;
+
+ @ApiModelProperty("鏂囨。璇存槑")
+ private String documentNote;
+
+ @ApiModelProperty("绯荤粺鐢熸垚鍚嶇О")
+ private String fileName;
+
+ @ApiModelProperty("绯荤粺鐢熸垚鍚嶇О")
+ private String fileSystemName;
+
+ @ApiModelProperty("浣滀笟鎸囧涔d")
+ private Integer instructionId;
+
+ @ApiModelProperty("涓婁紶浜篿d")
+ private Integer uploader;
+
+ @ApiModelProperty("瀹℃壒浜篿d")
+ private Integer approverId;
+
+ @ApiModelProperty("瀹℃壒鐘舵��")
+ private Boolean status;
+
+ @ApiModelProperty("鐢熸晥鏃堕棿")
+ private LocalDateTime entryIntoForceTime;
+
+ @ApiModelProperty("涓婁紶鏃堕棿")
+ private LocalDateTime uploadTime;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鏇存柊浜篿d")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty("鍒涘缓浜篿d")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/Reservation.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/Reservation.java
new file mode 100644
index 0000000..f048e6f
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/pojo/Reservation.java
@@ -0,0 +1,84 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璧勬簮棰勫畾鏂板缓棰勫畾琛�
+ * </p>
+ *
+ * @author baomidou
+ * @since 2024-09-14
+ */
+@Getter
+@Setter
+@TableName("device_reservation")
+public class Reservation implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 璁惧id
+ */
+ private Integer deviceId;
+
+ /**
+ * 棰勫畾璁惧
+ */
+ private String deviceName;
+
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ private String customerName;
+
+ /**
+ * 棰勫畾鏃堕棿
+ */
+
+ private String reservationTime;
+
+ /**
+ * 鍏蜂綋鏃堕棿
+ */
+ private String specificTime;
+
+
+
+ /**
+ * 鑱旂郴浜�
+ */
+ private String linkPerson;
+
+ /**
+ * 鑱旂郴鐢佃瘽
+ */
+ private String phone;
+
+ /**
+ * 娴佺▼缂栧彿
+ */
+ private String deviceNumber;
+
+ /**
+ * 棰勫畾璇存槑
+ */
+ private String reservationSpecification;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDateTime createDate;
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAcceptanceFileService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAcceptanceFileService.java
new file mode 100644
index 0000000..8e25b77
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAcceptanceFileService.java
@@ -0,0 +1,17 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceAcceptanceFile;
+
+/**
+ * <p>
+ * 璁惧楠屾敹(瑁呭)闄勪欢琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 01:45:26
+ */
+public interface DeviceAcceptanceFileService extends IService<DeviceAcceptanceFile> {
+
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAcceptanceService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAcceptanceService.java
new file mode 100644
index 0000000..0fcc541
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAcceptanceService.java
@@ -0,0 +1,39 @@
+package com.yuanchu.mom.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.yuanchu.mom.pojo.DeviceAcceptance;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧楠屾敹(瑁呭) 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 01:45:14
+ */
+public interface DeviceAcceptanceService extends IService<DeviceAcceptance> {
+
+ /**
+ * 璁惧楠屾敹鍒楄〃
+ * @param page
+ * @param deviceAcceptance
+ * @return
+ */
+ IPage<DeviceAcceptance> pageDeviceAcceptance(Page page, DeviceAcceptance deviceAcceptance);
+
+
+ boolean uploadDeviceAcceptanceFile(Integer acceptanceId, MultipartFile file);
+
+ /**
+ * 璁惧楠屾敹瀵煎嚭
+ * @param acceptanceId 璁惧楠屾敹id
+ * @param response 鍝嶅簲浣�
+ * @return
+ */
+ void exportDeviceAcceptance(Integer acceptanceId, HttpServletResponse response);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAccidentReportService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAccidentReportService.java
new file mode 100644
index 0000000..c7ff366
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceAccidentReportService.java
@@ -0,0 +1,41 @@
+package com.yuanchu.mom.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.yuanchu.mom.pojo.DeviceAccidentReport;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧浜嬫晠鎶ュ憡鍗� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 06:31:12
+ */
+public interface DeviceAccidentReportService extends IService<DeviceAccidentReport> {
+
+ /**
+ * 璁惧浜嬫晠鎶ュ憡鍒楄〃
+ * @param page
+ * @param deviceAccidentReport
+ * @return
+ */
+ IPage<DeviceAccidentReport> pageDeviceAccidentReport(Page page, DeviceAccidentReport deviceAccidentReport);
+
+ /**
+ * 鏂板璁惧浜嬫晠鎶ュ憡
+ * @param deviceAccidentReport
+ * @return
+ */
+ boolean addDeviceAccidentReport(DeviceAccidentReport deviceAccidentReport);
+
+ /**
+ * 瀵煎嚭璁惧浜嬫晠鎶ュ憡
+ * @param accidentReportId 璁惧浜嬫晠鎶ュ憡id
+ * @param response 鍝嶅簲
+ */
+ void exportDeviceAccidentReport(Integer accidentReportId, HttpServletResponse response);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceBorrowService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceBorrowService.java
new file mode 100644
index 0000000..b33cf6c
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceBorrowService.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceBorrow;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-21 10:53:51
+ */
+public interface DeviceBorrowService extends IService<DeviceBorrow> {
+
+ Map<String,Object> deviceBorrowPage(Page page, DeviceBorrow deviceBorrow);
+
+ int saveDeviceBorrow(DeviceBorrow deviceBorrow);
+
+ DeviceBorrow getDeviceBorrow(Integer id);
+
+ List<DeviceBorrow> getDeviceBorrowBydeviceId(Integer deviceId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceBreakdownMaintenanceService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceBreakdownMaintenanceService.java
new file mode 100644
index 0000000..2245a26
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceBreakdownMaintenanceService.java
@@ -0,0 +1,41 @@
+package com.yuanchu.mom.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.yuanchu.mom.pojo.DeviceBreakdownMaintenance;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰缁翠慨琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 04:50:57
+ */
+public interface DeviceBreakdownMaintenanceService extends IService<DeviceBreakdownMaintenance> {
+
+ /**
+ * 璁惧鏁呴殰缁翠慨鍒楄〃
+ * @param page
+ * @param deviceBreakdownMaintenance
+ * @return
+ */
+ IPage<DeviceBreakdownMaintenance> pageDeviceBreakdownMaintenance(Page page, DeviceBreakdownMaintenance deviceBreakdownMaintenance);
+
+ /**
+ * 鏂板璁惧鏁呴殰缁翠慨
+ * @param deviceBreakdownMaintenance
+ * @return
+ */
+ boolean addDeviceBreakdownMaintenance(DeviceBreakdownMaintenance deviceBreakdownMaintenance);
+
+ /**
+ * 瀵煎嚭璁惧鏁呴殰缁翠慨
+ * @param maintenanceId 璁惧鏁呴殰缁翠慨id
+ * @param response 鍝嶅簲
+ */
+ void exportDeviceBreakdownMaintenance(Integer maintenanceId, HttpServletResponse response);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCalibrationPlanDetailService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCalibrationPlanDetailService.java
new file mode 100644
index 0000000..dffd454
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCalibrationPlanDetailService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceCalibrationPlanDetail;
+
+/**
+ * <p>
+ * 璁惧鏍″噯璁″垝璇︽儏琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 03:58:29
+ */
+public interface DeviceCalibrationPlanDetailService extends IService<DeviceCalibrationPlanDetail> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCalibrationPlanService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCalibrationPlanService.java
new file mode 100644
index 0000000..c88037d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCalibrationPlanService.java
@@ -0,0 +1,70 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceCalibrationPlanDto;
+import com.yuanchu.mom.pojo.DeviceCalibrationPlan;
+import com.yuanchu.mom.pojo.DeviceCalibrationPlanDetail;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧鏍″噯璁″垝涓昏〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 03:58:17
+ */
+public interface DeviceCalibrationPlanService extends IService<DeviceCalibrationPlan> {
+
+ /**
+ * 鏂板璁惧鏍″噯璁″垝
+ * @param calibrationPlanDto
+ * @return
+ */
+ boolean addDeviceCalibrationPlan(DeviceCalibrationPlanDto calibrationPlanDto);
+
+ /**
+ * 瀵煎叆璁惧鏍″噯璁″垝
+ * @param file
+ * @return
+ */
+ boolean importDeviceCalibrationPlan(MultipartFile file, String planYear);
+
+
+ /**
+ * 璁惧鏍″噯璁″垝鎵瑰噯
+ * @param DeviceCalibrationPlan
+ * @return
+ */
+ boolean ratifyDeviceCalibrationPlan(DeviceCalibrationPlan DeviceCalibrationPlan);
+
+ /**
+ * 璁惧鏍″噯璁″垝鍒楄〃
+ * @param page
+ * @param DeviceCalibrationPlan
+ * @return
+ */
+ IPage<DeviceCalibrationPlanDto> pageDeviceCalibrationPlan(Page page, DeviceCalibrationPlan DeviceCalibrationPlan);
+
+ /**
+ * 璁惧鏍″噯璁″垝璇︽儏鍒楄〃
+ * @param page
+ * @param DeviceCalibrationPlanDetails
+ * @return
+ */
+ IPage<DeviceCalibrationPlanDetail> pageDeviceCalibrationPlanDetail(Page page, DeviceCalibrationPlanDetail DeviceCalibrationPlanDetails);
+
+
+ /**
+ * 瀵煎嚭璁惧鏍″噯璁″垝
+ *
+ * @param DeviceCalibrationPlanId
+ * @param response
+ */
+ void exportDeviceCalibrationPlanDetail(Integer DeviceCalibrationPlanId, HttpServletResponse response);
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCheckService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCheckService.java
new file mode 100644
index 0000000..5485dae
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceCheckService.java
@@ -0,0 +1,7 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceCheck;
+
+public interface DeviceCheckService extends IService<DeviceCheck> {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExaminePlanDetailsService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExaminePlanDetailsService.java
new file mode 100644
index 0000000..0d2f2cc
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExaminePlanDetailsService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceExaminePlanDetails;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁″垝璇︽儏琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:16
+ */
+public interface DeviceExaminePlanDetailsService extends IService<DeviceExaminePlanDetails> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExaminePlanService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExaminePlanService.java
new file mode 100644
index 0000000..b99728b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExaminePlanService.java
@@ -0,0 +1,69 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceExaminePlanDto;
+import com.yuanchu.mom.pojo.DeviceExaminePlan;
+import com.yuanchu.mom.pojo.DeviceExaminePlanDetails;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁″垝涓昏〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:04
+ */
+public interface DeviceExaminePlanService extends IService<DeviceExaminePlan> {
+
+ /**
+ * 鏂板璁惧鏍告煡璁″垝
+ * @param examinePlanDto
+ * @return
+ */
+ boolean addDeviceExaminePlan(DeviceExaminePlanDto examinePlanDto);
+
+ /**
+ * 瀵煎叆璁惧鏍告煡璁″垝
+ * @param file
+ * @return
+ */
+ boolean importDeviceExaminePlan(MultipartFile file);
+
+
+ /**
+ * 璁惧鏍告煡璁″垝鎵瑰噯
+ * @param DeviceExaminePlan
+ * @return
+ */
+ boolean ratifyDeviceExaminePlan(DeviceExaminePlan DeviceExaminePlan);
+
+ /**
+ * 璁惧鏍告煡璁″垝鍒楄〃
+ * @param page
+ * @param DeviceExaminePlan
+ * @return
+ */
+ IPage<DeviceExaminePlanDto> pageDeviceExaminePlan(Page page, DeviceExaminePlan DeviceExaminePlan);
+
+ /**
+ * 璁惧鏍告煡璁″垝璇︽儏鍒楄〃
+ * @param page
+ * @param DeviceExaminePlanDetails
+ * @return
+ */
+ IPage<DeviceExaminePlanDetails> pageDeviceExaminePlanDetail(Page page, DeviceExaminePlanDetails DeviceExaminePlanDetails);
+
+
+ /**
+ * 瀵煎嚭璁惧鏍告煡璁″垝
+ * @param deviceExaminePlanId 璁惧鏍告煡璁″垝id
+ * @param response 鍝嶅簲
+ */
+ void exportDeviceExaminePlanDetail(Integer deviceExaminePlanId, HttpServletResponse response);
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordContrastDetailsService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordContrastDetailsService.java
new file mode 100644
index 0000000..0611952
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordContrastDetailsService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceExamineRecordContrastDetails;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍瀵规瘮璇︽儏琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:57
+ */
+public interface DeviceExamineRecordContrastDetailsService extends IService<DeviceExamineRecordContrastDetails> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordContrastService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordContrastService.java
new file mode 100644
index 0000000..5e1fdb4
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordContrastService.java
@@ -0,0 +1,46 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.dto.DeviceExamineRecordContrastDto;
+import com.yuanchu.mom.pojo.DeviceExamineRecordContrast;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍瀵规瘮琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:43
+ */
+public interface DeviceExamineRecordContrastService extends IService<DeviceExamineRecordContrast> {
+
+ /**
+ * 鏌ヨ鏍告煡瀵规瘮璁板綍
+ * @return
+ */
+ DeviceExamineRecordContrastDto getExamineRecordContrast(Integer planDetailsId);
+
+ /**
+ * 鏂板鏍告煡瀵规瘮璁板綍
+ * @return
+ *
+ */
+ boolean addExamineRecordContrast(DeviceExamineRecordContrastDto deviceExamineRecordContrastDto);
+
+ /**
+ * 瀹℃牳鏍告煡瀵规瘮璁板綍
+ * @return
+ */
+ boolean reviewExamineRecordContrast(DeviceExamineRecordContrastDto deviceExamineRecordContrastDto);
+
+ /**
+ * 瀵煎嚭瀹℃牳鏍告煡瀵规瘮璁板綍
+ *
+ * @param recordId 瀹℃牳鏍告煡瀵规瘮璁板綍id
+ * @param response
+ * @return
+ */
+ void exportReviewExamineRecordContrast(Integer recordId, HttpServletResponse response);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordDetailService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordDetailService.java
new file mode 100644
index 0000000..5ea8d87
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordDetailService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceExamineRecordDetail;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍璇︽儏琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:15:11
+ */
+public interface DeviceExamineRecordDetailService extends IService<DeviceExamineRecordDetail> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordService.java
new file mode 100644
index 0000000..cf52709
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExamineRecordService.java
@@ -0,0 +1,43 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.dto.DeviceExamineRecordDto;
+import com.yuanchu.mom.pojo.DeviceExamineRecord;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:28
+ */
+public interface DeviceExamineRecordService extends IService<DeviceExamineRecord> {
+
+ /**
+ * 鏌ヨ鏍告煡璁板綍
+ * @return
+ */
+ DeviceExamineRecordDto getExamineRecord(Integer planDetailsId);
+
+ /**
+ * 鏂板鏍告煡璁板綍
+ * @return
+ */
+ boolean addExamineRecord(DeviceExamineRecordDto deviceExamineRecordDto);
+
+ /**
+ * 澶嶆牳鏍告煡璁板綍
+ * @return
+ */
+ boolean reviewExamineRecord(DeviceExamineRecordDto deviceExamineRecordDto);
+
+ /**
+ * 瀵煎嚭澶嶆牳鏍告煡璁板綍
+ * @param planDetailsId
+ * @param response 鍝嶅簲
+ */
+ void exportReviewExamineRecordDetail(Integer planDetailsId, HttpServletResponse response);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExternalApplyService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExternalApplyService.java
new file mode 100644
index 0000000..f5cf59d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceExternalApplyService.java
@@ -0,0 +1,42 @@
+package com.yuanchu.mom.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.yuanchu.mom.pojo.DeviceExternalApply;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 鍒╃敤澶栭儴璁惧鐢宠琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 10:28:43
+ */
+public interface DeviceExternalApplyService extends IService<DeviceExternalApply> {
+
+ /**
+ * 鍒╃敤澶栭儴璁惧鐢宠鍒楄〃
+ * @param page
+ * @param deviceExternalApply
+ * @return
+ */
+ IPage<DeviceExternalApply> pageDeviceExternalApply(Page page, DeviceExternalApply deviceExternalApply);
+
+ /**
+ * 鏂板鍒╃敤澶栭儴璁惧鐢宠
+ * @param deviceExternalApply
+ * @return
+ */
+ boolean addDeviceExternalApply(DeviceExternalApply deviceExternalApply);
+
+ /**
+ * 瀵煎嚭鍒╃敤澶栭儴璁惧鐢宠
+ *
+ * @param externalApplyId 澶栭儴璁惧鐢宠id
+ * @param response
+ */
+ void exportDeviceExternalApply(Integer externalApplyId, HttpServletResponse response);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceFaultOneService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceFaultOneService.java
new file mode 100644
index 0000000..84a545a
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceFaultOneService.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceFaultOneDto;
+import com.yuanchu.mom.pojo.DeviceFaultOne;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 02:03:29
+ */
+public interface DeviceFaultOneService extends IService<DeviceFaultOne> {
+
+ IPage<DeviceFaultOneDto> deviceFaultOnePage(Integer deviceId, Page page, String processNumber);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceFaultService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceFaultService.java
new file mode 100644
index 0000000..e0cc5ab
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceFaultService.java
@@ -0,0 +1,10 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceFault;
+
+import java.util.Map;
+
+public interface DeviceFaultService extends IService<DeviceFault> {
+ Map<String,Object> findByDeviceId(Integer deviceId);
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceInspectionRecordDetailsService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceInspectionRecordDetailsService.java
new file mode 100644
index 0000000..8c3bd6f
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceInspectionRecordDetailsService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceInspectionRecordDetails;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 04:27:32
+ */
+public interface DeviceInspectionRecordDetailsService extends IService<DeviceInspectionRecordDetails> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceInspectionRecordService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceInspectionRecordService.java
new file mode 100644
index 0000000..59dd4e2
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceInspectionRecordService.java
@@ -0,0 +1,69 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.dto.DeviceInspectionRecordDto;
+import com.yuanchu.mom.pojo.DeviceInspectionRecord;
+import com.yuanchu.mom.vo.Result;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧鐐规璁板綍琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 04:25:14
+ */
+public interface DeviceInspectionRecordService extends IService<DeviceInspectionRecord> {
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧鐐规璁板綍
+ * @param page
+ */
+ Result<IPage<DeviceInspectionRecord>> getDeviceInspectionRecordByPage(IPage page, DeviceInspectionRecordDto deviceInspectionRecord);
+
+
+ /**
+ * 鏌ヨ鐐规璇︽儏
+ * @param inspectionRecordId
+ * @return
+ */
+ Result getDeviceInspectionRecord(Integer inspectionRecordId);
+
+ /**
+ * 鏂板璁惧鐐规璁板綍
+ *
+ * @param deviceInspectionRecord 璁惧鐐规璁板綍
+ */
+ Result addDeviceInspectionRecord(DeviceInspectionRecordDto deviceInspectionRecord);
+
+ /**
+ * 淇敼璁惧鐐规璁板綍
+ * @param deviceInspectionRecord 璁惧鐐规璁板綍
+ */
+ Result updateInspectionRecordAndDetails(DeviceInspectionRecordDto deviceInspectionRecord);
+
+ /**
+ * 鍒犻櫎璁惧鐐规璁板綍
+ * @param deviceInspectionRecord 璁惧鐐规璁板綍
+ */
+ Result deleteDeviceInspectionRecordOrDetails(DeviceInspectionRecordDto deviceInspectionRecord);
+
+ /**
+ * 澶嶆牳鐐规璁板綍
+ * @param deviceExamineRecordDto
+ * @return
+ */
+ Result reviewDeviceInspectionRecord(DeviceInspectionRecordDto deviceExamineRecordDto);
+
+ /**
+ * 瀵煎嚭璁惧鐐规璁板綍
+ *
+ * @param deviceInspectionRecordId 璁惧鐐规璁板綍id
+ * @param response
+ */
+ Result exportDeviceInspectionRecord(Integer deviceInspectionRecordId, HttpServletResponse response);
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenancePlanDetailsService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenancePlanDetailsService.java
new file mode 100644
index 0000000..3ffd81c
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenancePlanDetailsService.java
@@ -0,0 +1,17 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceMaintenancePlanDetails;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝璇︽儏琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:11:46
+ */
+public interface DeviceMaintenancePlanDetailsService extends IService<DeviceMaintenancePlanDetails> {
+
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenancePlanService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenancePlanService.java
new file mode 100644
index 0000000..bde6a68
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenancePlanService.java
@@ -0,0 +1,70 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.dto.DeviceMaintenancePlanDto;
+import com.yuanchu.mom.pojo.DeviceMaintenancePlan;
+import com.yuanchu.mom.vo.Result;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:10:52
+ */
+public interface DeviceMaintenancePlanService extends IService<DeviceMaintenancePlan> {
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧淇濆吇璁″垝
+ * @param page 褰撳墠椤�
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ * @return
+ */
+ Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+
+ /**
+ * 鏂板璁惧淇濆吇璁″垝
+ *
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ Result addMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+
+ /**
+ * 淇敼璁惧淇濆吇璁″垝
+ *
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ Result updateMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+
+ /**
+ * 鍒犻櫎璁惧淇濆吇璁″垝
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+
+ /**
+ * 瀵煎嚭璁惧淇濆吇璁″垝
+ *
+ * @param maintenancePlanId 璁惧淇濆吇璁″垝id
+ * @param response 鍝嶅簲
+ */
+ Result exportDeviceMaintenancePlanDto(Integer maintenancePlanId, HttpServletResponse response);
+
+ /**
+ * 鏌ョ湅璁惧淇濆吇璁″垝璇︽儏
+ * @param maintenancePlanId 璁惧淇濆吇璁″垝id
+ * @return
+ */
+ Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId);
+
+ /**
+ * 瀹℃牳璁惧淇濆吇璁″垝鐘舵��
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ * @return
+ */
+ Result reviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenanceService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenanceService.java
new file mode 100644
index 0000000..0b8e1d3
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMaintenanceService.java
@@ -0,0 +1,24 @@
+package com.yuanchu.mom.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.yuanchu.mom.excel.DeviceMaintenanceExport;
+import com.yuanchu.mom.pojo.DeviceMaintenance;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+public interface DeviceMaintenanceService extends IService<DeviceMaintenance> {
+ IPage<DeviceMaintenance> getDeviceMaintenancePage(Page page, Integer deviceId, String deviceNumber);
+
+ List<DeviceMaintenanceExport> deviceMaintenanceExport(Integer deviceId);
+
+ /**
+ * 瀵煎嚭Word璁惧缁存姢璁板綍
+ *
+ * @param deviceId
+ * @param response
+ */
+ void exportMaintenanceRecord(Integer deviceId, HttpServletResponse response);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMetricRecordService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMetricRecordService.java
new file mode 100644
index 0000000..be629d1
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMetricRecordService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceMetricRecord;
+
+/**
+ * <p>
+ * 璁惧鏍″噯 - 鏍″噯璁板綍 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-27 10:20:01
+ */
+public interface DeviceMetricRecordService extends IService<DeviceMetricRecord> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMetricsCopyService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMetricsCopyService.java
new file mode 100644
index 0000000..881e1a1
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceMetricsCopyService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceMetricsCopy;
+
+/**
+ * <p>
+ * 璁惧鏍″噯 - 鏍″噯璁板綍 - 鏍″噯鏉$洰 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-27 10:20:11
+ */
+public interface DeviceMetricsCopyService extends IService<DeviceMetricsCopy> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceRecordService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceRecordService.java
new file mode 100644
index 0000000..bf261f4
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceRecordService.java
@@ -0,0 +1,31 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceRecordDto;
+import com.yuanchu.mom.pojo.DeviceRecord;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * cnas璁惧浣跨敤璁板綍琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-21 11:06:47
+ */
+public interface DeviceRecordService extends IService<DeviceRecord> {
+
+ IPage<DeviceRecordDto> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber);
+
+
+ /**
+ * 瀵煎嚭璁惧浣跨敤璁板綍
+ *
+ * @param deviceId
+ * @param response
+ */
+ void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceScrappedService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceScrappedService.java
new file mode 100644
index 0000000..5d93aa7
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceScrappedService.java
@@ -0,0 +1,43 @@
+package com.yuanchu.mom.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.yuanchu.mom.pojo.DeviceScrapped;
+import com.yuanchu.mom.vo.Result;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧鎶ュ簾鐢宠琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 01:53:47
+ */
+public interface DeviceScrappedService extends IService<DeviceScrapped> {
+
+ /**
+ * 璁惧鎶ュ簾鐢宠鍒楄〃
+ * @param page
+ * @param deviceScrapped
+ * @return
+ */
+ IPage<DeviceScrapped> pageDeviceScrapped(Page page, DeviceScrapped deviceScrapped);
+
+ /**
+ * 鏂板璁惧鎶ュ簾鐢宠
+ * @param deviceScrapped
+ * @return
+ */
+ boolean addDeviceScrapped(DeviceScrapped deviceScrapped);
+
+ /**
+ * 淇敼璁惧鎶ュ簾鐢宠
+ * @param scrappedId 璁惧鎶ュ簾鐢宠id
+ * @return
+ */
+ Result exportDeviceScrapped(Integer scrappedId, HttpServletResponse response);
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
index e1e034d..4f08b8b 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
@@ -19,7 +19,7 @@
List<User> selectUserList();
- Map<String, Object> selectDeviceParameter(Page page, DeviceDto itemParameter);
+ Map<String, Object> selectDeviceParameter(Page page, DeviceDto itemParameter,Boolean laboratoryNameIsNull);
int addDeviceParameter(Device itemParameter);
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceStateService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceStateService.java
new file mode 100644
index 0000000..ff9fbbf
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceStateService.java
@@ -0,0 +1,31 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceStateDto;
+import com.yuanchu.mom.pojo.DeviceState;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧鍋滅敤/鍚敤 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 09:51:40
+ */
+public interface DeviceStateService extends IService<DeviceState> {
+
+ IPage<DeviceStateDto> getDeviceStatePage(Integer deviceId, Page page, String processNumber);
+
+ /**
+ * 瀵煎嚭璁惧鐘舵��
+ *
+ * @param deviceId
+ * @param processNumber
+ * @param response
+ */
+ void exportDeviceStatus(Integer deviceId, String processNumber, HttpServletResponse response);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceTraceabilityManagementDetailsService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceTraceabilityManagementDetailsService.java
new file mode 100644
index 0000000..297a544
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceTraceabilityManagementDetailsService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceTraceabilityManagementDetails;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕鎯呰〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:58
+ */
+public interface DeviceTraceabilityManagementDetailsService extends IService<DeviceTraceabilityManagementDetails> {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceTraceabilityManagementService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceTraceabilityManagementService.java
new file mode 100644
index 0000000..7a406ee
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceTraceabilityManagementService.java
@@ -0,0 +1,61 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.dto.DeviceTraceabilityManagementDto;
+import com.yuanchu.mom.pojo.DeviceTraceabilityManagement;
+import com.yuanchu.mom.vo.Result;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:44
+ */
+public interface DeviceTraceabilityManagementService extends IService<DeviceTraceabilityManagement> {
+
+ /**
+ * 鍒嗛〉鏌ヨ閲忓�兼函婧愯鍒�
+ * @param page 鍒嗛〉鍙傛暟
+ * @param itemParameter 閲忓�兼函婧愯鍒�
+ * @return
+ */
+ Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(IPage page, DeviceTraceabilityManagementDto itemParameter);
+
+ /**
+ * 鏂板閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ Result addTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
+
+ /**
+ * 淇敼閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ Result updateTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
+
+ /**
+ * 鍒犻櫎閲忓�兼函婧愯鍒�
+ * @param deviceTraceabilityManagementDto 閲忓�兼函婧愯鍒�
+ */
+ Result deleteTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
+
+ /**
+ * 鏌ヨ閲忓�兼函婧愯鍒掕鎯�
+ */
+ Result<DeviceTraceabilityManagementDto> getTraceabilityManagementDetail(Integer traceabilityManagementId);
+
+ /**
+ * 閲忓�兼函婧愯鍒掑鏍哥姸鎬佷慨鏀�
+ */
+ Result reviewTraceabilityManagementStatus(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto);
+
+ /**
+ * 閲忓�兼函婧愯鍒掑鍑�
+ */
+ Result exportDeviceTraceabilityManagementDto(Integer traceabilityManagementId, HttpServletResponse response);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DocumentService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DocumentService.java
new file mode 100644
index 0000000..4d64b65
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DocumentService.java
@@ -0,0 +1,7 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.Document;
+
+public interface DocumentService extends IService<Document> {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceLeaseService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceLeaseService.java
new file mode 100644
index 0000000..c1bc242
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceLeaseService.java
@@ -0,0 +1,7 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceLease;
+
+public interface IDeviceLeaseService extends IService<DeviceLease> {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceLogService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceLogService.java
new file mode 100644
index 0000000..1442c8c
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceLogService.java
@@ -0,0 +1,7 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceLog;
+
+public interface IDeviceLogService extends IService<DeviceLog> {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceMetricService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceMetricService.java
new file mode 100644
index 0000000..6d1d311
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/IDeviceMetricService.java
@@ -0,0 +1,7 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.DeviceMetric;
+
+public interface IDeviceMetricService extends IService<DeviceMetric> {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentAcceptanceCheckService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentAcceptanceCheckService.java
new file mode 100644
index 0000000..abb187b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentAcceptanceCheckService.java
@@ -0,0 +1,7 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.IncidentAcceptanceCheck;
+
+public interface IncidentAcceptanceCheckService extends IService<IncidentAcceptanceCheck> {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentFileService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentFileService.java
new file mode 100644
index 0000000..0f92eaa
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentFileService.java
@@ -0,0 +1,7 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.IncidentFile;
+
+public interface IncidentFileService extends IService<IncidentFile> {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentInstallService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentInstallService.java
new file mode 100644
index 0000000..aad567d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentInstallService.java
@@ -0,0 +1,7 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.IncidentInstall;
+
+public interface IncidentInstallService extends IService<IncidentInstall> {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentReportService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentReportService.java
new file mode 100644
index 0000000..9cb895a
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentReportService.java
@@ -0,0 +1,42 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.IncidentReportAddDto;
+import com.yuanchu.mom.excel.IncidentReportExport;
+import com.yuanchu.mom.pojo.IncidentReport;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧楠屾敹娣诲姞楠屾敹瀛楁琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 03:54:49
+ */
+public interface IncidentReportService extends IService<IncidentReport> {
+
+ void saveIncidentReportData(IncidentReportAddDto incidentReportAddDto);
+
+ IPage<IncidentReportAddDto> getByDeviceId(Integer deviceId, Page page, String processNumber);
+
+ void deleteIncidentReport(Integer id);
+
+ IncidentReportAddDto getShowIncidentReport(Integer id);
+
+ void deleteIncidentReportAll(Integer sparePartsId, Integer fileId, Integer installId, Integer acceptanceCheckId);
+
+ List<IncidentReportExport> incidentReportExport(Integer deviceId);
+
+ /**
+ * 瀵煎嚭楠屾敹鎶ュ憡
+ * @param deviceId 璁惧id
+ * @param processNumber 娴佺▼鍙�
+ * @param response 鍝嶅簲Word鏂囨。
+ */
+ void acceptanceCertificateExport(Integer deviceId, String processNumber, HttpServletResponse response);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentSparePartsService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentSparePartsService.java
new file mode 100644
index 0000000..5074fbf
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/IncidentSparePartsService.java
@@ -0,0 +1,7 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.IncidentSpareParts;
+
+public interface IncidentSparePartsService extends IService<IncidentSpareParts> {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/InstructionService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/InstructionService.java
new file mode 100644
index 0000000..e8a033c
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/InstructionService.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.InstructionDto;
+import com.yuanchu.mom.dto.OperationInstructionDto;
+import com.yuanchu.mom.pojo.Instruction;
+
+/**
+ * <p>
+ * 浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:29:18
+ */
+public interface InstructionService extends IService<Instruction> {
+
+ IPage<Instruction> pageByPageQueryOfHomeworkInstructions(Page page, OperationInstructionDto operationInstructionDto);
+
+ void newHomeworkGuidebookAdded(InstructionDto instructionDto);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/OperationInstructionService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/OperationInstructionService.java
new file mode 100644
index 0000000..297587b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/OperationInstructionService.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.OperationInstruction;
+import com.yuanchu.mom.vo.OperationInstructionVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧 - 浣滀笟鎸囧涔� 娣诲姞鍙楁帶鏂囦欢 瀛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:43:32
+ */
+public interface OperationInstructionService extends IService<OperationInstruction> {
+
+ List<OperationInstructionVo> homeworkGuidebookEditor(Integer instructionId);
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/QrShowService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/QrShowService.java
new file mode 100644
index 0000000..2a04d21
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/QrShowService.java
@@ -0,0 +1,9 @@
+package com.yuanchu.mom.service;
+
+import org.springframework.ui.Model;
+
+public interface QrShowService {
+
+ void transformModelByType(Model model,String code,String type);
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/ReservationService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/ReservationService.java
new file mode 100644
index 0000000..3450451
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/ReservationService.java
@@ -0,0 +1,26 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.dto.DeviceDto;
+import com.yuanchu.mom.dto.ReservationDto;
+import com.yuanchu.mom.pojo.Reservation;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璧勬簮棰勫畾鏂板缓棰勫畾琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author baomidou
+ * @since 2024-09-14
+ */
+public interface ReservationService extends IService<Reservation> {
+
+ Map<String, Object> selectDeviceParameter(Page page, DeviceDto itemParameter, Boolean laboratoryNameIsNull, String starttime, String endtime);
+
+ List<ReservationDto> selectReservationParameterPage( String deviceId, String reservationTime, String specificTime);
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAcceptanceFileServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAcceptanceFileServiceImpl.java
new file mode 100644
index 0000000..ef6a8e9
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAcceptanceFileServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceAcceptanceFileMapper;
+import com.yuanchu.mom.pojo.DeviceAcceptanceFile;
+import com.yuanchu.mom.service.DeviceAcceptanceFileService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧楠屾敹(瑁呭)闄勪欢琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 01:45:26
+ */
+@Service
+public class DeviceAcceptanceFileServiceImpl extends ServiceImpl<DeviceAcceptanceFileMapper, DeviceAcceptanceFile> implements DeviceAcceptanceFileService {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAcceptanceServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAcceptanceServiceImpl.java
new file mode 100644
index 0000000..836daa0
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAcceptanceServiceImpl.java
@@ -0,0 +1,159 @@
+package com.yuanchu.mom.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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.DeviceAcceptanceFileMapper;
+import com.yuanchu.mom.mapper.DeviceAcceptanceMapper;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.pojo.Device;
+import com.yuanchu.mom.pojo.DeviceAcceptance;
+import com.yuanchu.mom.pojo.DeviceAcceptanceFile;
+import com.yuanchu.mom.service.DeviceAcceptanceService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+
+/**
+ * <p>
+ * 璁惧楠屾敹(瑁呭) 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 01:45:14
+ */
+@Service
+public class DeviceAcceptanceServiceImpl extends ServiceImpl<DeviceAcceptanceMapper, DeviceAcceptance> implements DeviceAcceptanceService {
+
+ @Resource
+ private DeviceAcceptanceFileMapper deviceAcceptanceFileMapper;
+
+ @Resource
+ private DeviceMapper deviceMapper;
+
+ @Value("${file.path}")
+ private String imgUrl;
+
+ @Value("${wordUrl}")
+ private String wordUrl;
+
+ /**
+ * 璁惧楠屾敹鍒楄〃
+ * @param page
+ * @param deviceAcceptance
+ * @return
+ */
+ @Override
+ public IPage<DeviceAcceptance> pageDeviceAcceptance(Page page, DeviceAcceptance deviceAcceptance) {
+ return baseMapper.pageDeviceAcceptance(page, QueryWrappers.queryWrappers(deviceAcceptance));
+ }
+
+ /**
+ * 璁惧楠屾敹闄勪欢
+ * @param acceptanceId
+ * @param file
+ * @return
+ */
+ @Override
+ public boolean uploadDeviceAcceptanceFile(Integer acceptanceId, MultipartFile file) {
+ if (acceptanceId == null) {
+ throw new ErrorException("缂哄皯楠屾敹id");
+ }
+
+ String urlString;
+ String pathName;
+ String path;
+ String filename = file.getOriginalFilename();
+ String contentType = file.getContentType();
+ DeviceAcceptanceFile acceptanceFile = new DeviceAcceptanceFile();
+ acceptanceFile.setAcceptanceId(acceptanceId);
+ acceptanceFile.setFileName(filename);
+ if (contentType != null && contentType.startsWith("image/")) {
+ // 鏄浘鐗�
+ path = imgUrl;
+ acceptanceFile.setType(1);
+ } else {
+ // 鏄枃浠�
+ path = wordUrl;
+ acceptanceFile.setType(2);
+ }
+ try {
+ File realpath = new File(path);
+ if (!realpath.exists()) {
+ realpath.mkdirs();
+ }
+ pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + file.getOriginalFilename();
+ urlString = realpath + "/" + pathName;
+ file.transferTo(new File(urlString));
+ acceptanceFile.setFileUrl(pathName);
+ deviceAcceptanceFileMapper.insert(acceptanceFile);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.err.println("闄勪欢涓婁紶閿欒");
+ return false;
+ }
+ }
+
+ /**
+ * 璁惧楠屾敹瀵煎嚭
+ * @param acceptanceId 璁惧楠屾敹id
+ * @param response 鍝嶅簲浣�
+ * @return
+ */
+ @Override
+ public void exportDeviceAcceptance(Integer acceptanceId, HttpServletResponse response) {
+ DeviceAcceptance deviceAcceptance = baseMapper.selectById(acceptanceId);
+ if (deviceAcceptance == null) {
+ throw new ErrorException("璁惧楠屾敹涓嶅瓨鍦�");
+ }
+ Device device = null;
+ if (deviceAcceptance.getDeviceId() != null) {
+ device = deviceMapper.selectById(deviceAcceptance.getDeviceId());
+ }
+
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/acceptance-certificate.docx");
+ Configure configure = Configure.builder()
+ .bind("deviceInspectionRecordDetailsList", new HackLoopTableRenderPolicy())
+ .build();
+ Device finalDevice = device;
+ String deviceName = device.getDeviceName() == null ? "" : device.getDeviceName();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceAcceptance", deviceAcceptance);
+ put("device", finalDevice);
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ deviceName+ "楠屾敹鍗�", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAccidentReportServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAccidentReportServiceImpl.java
new file mode 100644
index 0000000..516bc94
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceAccidentReportServiceImpl.java
@@ -0,0 +1,191 @@
+package com.yuanchu.mom.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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceAccidentReportDto;
+import com.yuanchu.mom.mapper.DeviceAccidentReportMapper;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.Device;
+import com.yuanchu.mom.pojo.DeviceAccidentReport;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.DeviceAccidentReportService;
+import com.yuanchu.mom.utils.QueryWrappers;
+import com.yuanchu.mom.utils.UserUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.util.HashMap;
+
+/**
+ * <p>
+ * 璁惧浜嬫晠鎶ュ憡鍗� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 06:31:12
+ */
+@Service
+public class DeviceAccidentReportServiceImpl extends ServiceImpl<DeviceAccidentReportMapper, DeviceAccidentReport> implements DeviceAccidentReportService {
+
+ @Resource
+ private UserMapper userMapper;
+
+ @Resource
+ private GetLook getLook;
+
+ @Resource
+ private DeviceMapper deivceMapper;
+
+ /**
+ * 璁惧浜嬫晠鎶ュ憡鍒楄〃
+ * @param page
+ * @param deviceAccidentReport
+ * @return
+ */
+ @Override
+ public IPage<DeviceAccidentReport> pageDeviceAccidentReport(Page page, DeviceAccidentReport deviceAccidentReport) {
+ return baseMapper.pageDeviceAccidentReport(page, QueryWrappers.queryWrappers(deviceAccidentReport));
+ }
+
+ /**
+ * 鏂板璁惧浜嬫晠鎶ュ憡
+ * @param deviceAccidentReport
+ * @return
+ */
+ @Override
+ public boolean addDeviceAccidentReport(DeviceAccidentReport deviceAccidentReport) {
+ DeviceAccidentReport accidentReport = new DeviceAccidentReport();
+ User user = userMapper.selectById(getLook.selectPowerByMethodAndUserId(null).get("userId"));
+ switch (deviceAccidentReport.getFlowType()) {
+ case 0:
+ // 鎶ュ憡
+ BeanUtils.copyProperties(deviceAccidentReport, accidentReport);
+ accidentReport.setDescriptionOfAccident(deviceAccidentReport.getDescriptionOfAccident());
+ accidentReport.setReportUserId(user.getId());
+ accidentReport.setReportUser(user.getName());
+ accidentReport.setReportDate(LocalDate.now());
+
+ // 璇勪及浜轰俊鎭�
+ User assessorUser = userMapper.selectById(deviceAccidentReport.getAssessorUserId());
+ accidentReport.setAssessorUserId(assessorUser.getId());
+ accidentReport.setAssessorUser(assessorUser.getName());
+
+ baseMapper.insert(accidentReport);
+ break;
+ case 1:
+ accidentReport.setAccidentReportId(deviceAccidentReport.getAccidentReportId());
+ // 璇勪及
+ accidentReport.setAssessorOpinion(deviceAccidentReport.getAssessorOpinion());
+ accidentReport.setAssessorDate(LocalDate.now());
+
+ // 閮ㄩ棬璐熻矗浜�
+ User departmentHeadUser = userMapper.selectById(deviceAccidentReport.getDepartmentHeadUserId());
+ accidentReport.setDepartmentHeadUserId(departmentHeadUser.getId());
+ accidentReport.setDepartmentHeadUser(departmentHeadUser.getName());
+
+ baseMapper.updateById(accidentReport);
+
+ break;
+ case 2:
+ accidentReport.setAccidentReportId(deviceAccidentReport.getAccidentReportId());
+ // 閮ㄩ棬璐熻矗浜烘剰瑙�
+ accidentReport.setDepartmentHeadOpinion(deviceAccidentReport.getDepartmentHeadOpinion());
+ accidentReport.setDepartmentHeadDate(LocalDate.now());
+
+ // 鎶�鏈礋璐d汉淇℃伅
+ User technicalDirectorUser = userMapper.selectById(deviceAccidentReport.getTechnicalDirectorUserId());
+ accidentReport.setTechnicalDirectorUserId(technicalDirectorUser.getId());
+ accidentReport.setTechnicalDirectorUser(technicalDirectorUser.getName());
+
+ baseMapper.updateById(accidentReport);
+
+ break;
+ case 3:
+ accidentReport.setAccidentReportId(deviceAccidentReport.getAccidentReportId());
+ // 鎶�鏈礋璐d汉鎰忚
+ accidentReport.setTechnicalDirectorOpinion(deviceAccidentReport.getTechnicalDirectorOpinion());
+ accidentReport.setTechnicalDirectorDate(LocalDate.now());
+
+ // 涓讳换淇℃伅
+ User directorHeadUser = userMapper.selectById(deviceAccidentReport.getDirectorHeadUserId());
+ accidentReport.setDirectorHeadUserId(directorHeadUser.getId());
+ accidentReport.setDirectorHeadUser(directorHeadUser.getName());
+
+ baseMapper.updateById(accidentReport);
+
+ break;
+ case 4:
+ accidentReport.setAccidentReportId(deviceAccidentReport.getAccidentReportId());
+ // 涓讳换鎰忚
+ accidentReport.setDirectorHeadOpinion(deviceAccidentReport.getDirectorHeadOpinion());
+ accidentReport.setDirectorHeadDate(LocalDate.now());
+
+ accidentReport.setIsFinish(1);
+ baseMapper.updateById(accidentReport);
+ break;
+ }
+ return true;
+ }
+
+ /**
+ * 瀵煎嚭璁惧浜嬫晠鎶ュ憡
+ * @param accidentReportId 璁惧浜嬫晠鎶ュ憡id
+ * @param response 鍝嶅簲
+ */
+ @Override
+ public void exportDeviceAccidentReport(Integer accidentReportId, HttpServletResponse response) {
+ // 鏌ヨ浜嬫晠鎶ュ憡
+ DeviceAccidentReportDto deviceAccidentReport = baseMapper.selectDeviceAccidentReportById(accidentReportId);
+
+ Device device = deivceMapper.selectById(deviceAccidentReport.getDeviceId());
+ device = device == null ? new Device() : device;
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-accident-report.docx");
+ Configure configure = Configure.builder()
+ .build();
+ Device finalDevice = device;
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceAccidentReport", deviceAccidentReport);
+ put("device", finalDevice);
+ // 鎶ュ憡浜虹鍚�
+ put("reportUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getReportUserId()));
+ // 璇勪及浜虹鍚�
+ put("assessorUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getAssessorUserId()));
+ // 閮ㄩ棬璐熻矗浜虹鍚�
+ put("departmentHeadUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getDepartmentHeadUserId()));
+ // 鎶�鏈礋璐d汉绛惧悕
+ put("technicalDirectorUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getTechnicalDirectorUserId()));
+ // 涓讳换绛惧悕
+ put("directorHeadUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getDepartmentHeadUserId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String deviceName = device.getDeviceName() == null ? "" : device.getDeviceName();
+ String fileName = URLEncoder.encode(
+ deviceName + "璁惧浜嬫晠鎶ュ憡鍗�", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceBorrowServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceBorrowServiceImpl.java
new file mode 100644
index 0000000..ce5b3f5
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceBorrowServiceImpl.java
@@ -0,0 +1,124 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+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.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.mapper.DeviceBorrowMapper;
+import com.yuanchu.mom.mapper.DeviceLogMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.numgen.NumberGenerator;
+import com.yuanchu.mom.pojo.DeviceBorrow;
+import com.yuanchu.mom.pojo.DeviceLog;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.DeviceBorrowService;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.*;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-21 10:53:51
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class DeviceBorrowServiceImpl extends ServiceImpl<DeviceBorrowMapper, DeviceBorrow> implements DeviceBorrowService {
+
+ @Resource
+ DeviceBorrowMapper deviceBorrowMapper;
+
+ @Resource
+ DeviceLogMapper deviceLogMapper;
+
+ @Resource
+ GetLook getLook;
+
+ @Resource
+ UserMapper userMapper;
+
+ @Autowired
+ private NumberGenerator<DeviceBorrow> numberGenerator;
+
+ @Override
+ public Map<String, Object> deviceBorrowPage(Page page, DeviceBorrow deviceBorrow) {
+ Map<String, Object> map = new HashMap<>();
+ map.put("head", PrintChina.printChina(DeviceBorrow.class));
+ IPage<DeviceBorrow> iPage = deviceBorrowMapper.deviceBorrowPage(page, QueryWrappers.queryWrappers(deviceBorrow));
+ map.put("body", iPage);
+ return map;
+ }
+
+ @Override
+ public int saveDeviceBorrow(DeviceBorrow deviceBorrow) {
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ User user = userMapper.selectById(userId);
+ //鏂板鐨勬椂鍊欐坊鍔犳柊寤烘祦绋�
+ if (ObjectUtils.isEmpty(deviceBorrow.getId())) {
+ deviceBorrow.setSubmitUser(user.getName());
+ String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
+ String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
+ String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceBorrow::getProcessNumber);
+ deviceBorrow.setProcessNumber(processNumber);
+ deviceBorrowMapper.insert(deviceBorrow);
+ DeviceLog deviceLog = new DeviceLog();
+ deviceLog.setOperator(user.getName());
+ deviceLog.setOperationTime(LocalDateTime.now());
+ deviceLog.setOperationType("鏂板缓");
+ deviceLog.setOperationContent("鏂板缓娴佺▼");
+ deviceLog.setRelevanceForm("device_borrow");
+ deviceLog.setRelevanceId(deviceBorrow.getId());
+ deviceLogMapper.insert(deviceLog);
+ } else {
+ DeviceBorrow borrow = deviceBorrowMapper.selectById(deviceBorrow.getId());
+ deviceBorrowMapper.updateById(deviceBorrow);
+ //閫氳繃鎴栬�呴┏鍥炲鍔犳祦绋嬭窡韪�
+ if (deviceBorrow.getNowState().equals("鍏抽棴")) {
+ DeviceLog deviceLog = new DeviceLog();
+ deviceLog.setOperator(user.getName());
+ deviceLog.setOperationTime(LocalDateTime.now());
+ deviceLog.setOperationType("鎺ユ敹閫氳繃");
+ deviceLog.setRelevanceForm("device_borrow");
+ deviceLog.setRelevanceId(deviceBorrow.getId());
+ deviceLogMapper.insert(deviceLog);
+ }
+ else if (deviceBorrow.getNowState().equals("鎻愪氦") && borrow.getNowState().equals("鎺ユ敹")) {
+ DeviceLog deviceLog = new DeviceLog();
+ deviceLog.setOperator(user.getName());
+ deviceLog.setOperationTime(LocalDateTime.now());
+ deviceLog.setOperationType("鎺ユ敹椹冲洖");
+ deviceLog.setRelevanceForm("device_borrow");
+ deviceLog.setRelevanceId(deviceBorrow.getId());
+ deviceLogMapper.insert(deviceLog);
+ }
+ }
+ return 0;
+ }
+
+ @Override
+ public DeviceBorrow getDeviceBorrow(Integer id) {
+ List<DeviceLog> deviceLogs = deviceLogMapper.selectList(Wrappers.<DeviceLog>lambdaQuery()
+ .eq(DeviceLog::getRelevanceForm, "device_borrow")
+ .eq(DeviceLog::getRelevanceId, id));
+ DeviceBorrow deviceBorrow = deviceBorrowMapper.selectById(id);
+ deviceBorrow.setDeviceLogs(deviceLogs);
+ return deviceBorrow;
+ }
+
+ @Override
+ public List<DeviceBorrow> getDeviceBorrowBydeviceId(Integer deviceId) {
+ return deviceBorrowMapper.getDeviceBorrowBydeviceId(deviceId);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceBreakdownMaintenanceServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceBreakdownMaintenanceServiceImpl.java
new file mode 100644
index 0000000..1475979
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceBreakdownMaintenanceServiceImpl.java
@@ -0,0 +1,154 @@
+package com.yuanchu.mom.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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.mapper.DeviceBreakdownMaintenanceMapper;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.Device;
+import com.yuanchu.mom.pojo.DeviceBreakdownMaintenance;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.DeviceBreakdownMaintenanceService;
+import com.yuanchu.mom.utils.UserUtils;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.util.HashMap;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰缁翠慨琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 04:50:57
+ */
+@Service
+public class DeviceBreakdownMaintenanceServiceImpl extends ServiceImpl<DeviceBreakdownMaintenanceMapper, DeviceBreakdownMaintenance> implements DeviceBreakdownMaintenanceService {
+
+ @Resource
+ private UserMapper userMapper;
+ @Resource
+ private GetLook getLook;
+ @Resource
+ private DeviceMapper deivceMapper;
+
+ /**
+ * 璁惧鏁呴殰缁翠慨鍒楄〃
+ * @param page
+ * @param deviceBreakdownMaintenance
+ * @return
+ */
+ @Override
+ public IPage<DeviceBreakdownMaintenance> pageDeviceBreakdownMaintenance(Page page, DeviceBreakdownMaintenance deviceBreakdownMaintenance) {
+ return baseMapper.pageDeviceBreakdownMaintenance(page, QueryWrappers.queryWrappers(deviceBreakdownMaintenance));
+ }
+
+ /**
+ * 鏂板璁惧鏁呴殰缁翠慨
+ * @param deviceBreakdownMaintenance
+ * @return
+ */
+ @Override
+ public boolean addDeviceBreakdownMaintenance(DeviceBreakdownMaintenance deviceBreakdownMaintenance) {
+ DeviceBreakdownMaintenance breakdownMaintenance = new DeviceBreakdownMaintenance();
+ //褰撳墠鐧诲綍鐢ㄦ埛
+ User user = userMapper.selectById(getLook.selectPowerByMethodAndUserId(null).get("userId"));
+
+ switch (deviceBreakdownMaintenance.getFlowType()) {
+ case 0:
+ BeanUtils.copyProperties(deviceBreakdownMaintenance, breakdownMaintenance);
+ // 鐢宠
+ breakdownMaintenance.setDamageOrMalfunction(deviceBreakdownMaintenance.getDamageOrMalfunction());
+ breakdownMaintenance.setApplicantUserId(user.getId());
+ breakdownMaintenance.setApplicantUser(user.getName());
+ breakdownMaintenance.setRepairDate(deviceBreakdownMaintenance.getRepairDate());
+
+ // 澶勭悊浜轰俊鎭�
+ User departmentHeadUser = userMapper.selectById(deviceBreakdownMaintenance.getDepartmentHeadUserId());
+ breakdownMaintenance.setApplicantUserId(departmentHeadUser.getId());
+ breakdownMaintenance.setApplicantUser(departmentHeadUser.getName());
+
+ baseMapper.insert(breakdownMaintenance);
+ break;
+ case 1:
+ breakdownMaintenance.setMaintenanceId(deviceBreakdownMaintenance.getMaintenanceId());
+ // 鐢宠閮ㄩ棬璐熻矗浜烘剰瑙�
+ breakdownMaintenance.setDepartmentHeadOpinion(deviceBreakdownMaintenance.getDepartmentHeadOpinion());
+ breakdownMaintenance.setDepartmentHeadDate(LocalDate.now());
+
+ baseMapper.updateById(breakdownMaintenance);
+ break;
+ case 2:
+ breakdownMaintenance.setMaintenanceId(deviceBreakdownMaintenance.getMaintenanceId());
+ // 璁¢噺瀹ゆ剰瑙�
+ breakdownMaintenance.setMaintenanceRecord(deviceBreakdownMaintenance.getMaintenanceRecord());
+ breakdownMaintenance.setMaintenanceUser(deviceBreakdownMaintenance.getMaintenanceUser());
+ breakdownMaintenance.setMaintenanceDate(deviceBreakdownMaintenance.getMaintenanceDate());
+
+ breakdownMaintenance.setIsFinish(1);
+
+ baseMapper.updateById(breakdownMaintenance);
+ break;
+ }
+ return true;
+ }
+
+ /**
+ * 瀵煎嚭璁惧鏁呴殰缁翠慨
+ * @param maintenanceId 璁惧鏁呴殰缁翠慨id
+ * @param response 鍝嶅簲
+ */
+ @Override
+ public void exportDeviceBreakdownMaintenance(Integer maintenanceId, HttpServletResponse response) {
+ // 鏌ヨ澶栭儴璁惧鐢宠
+ DeviceBreakdownMaintenance deviceBreakdownMaintenance = baseMapper.selectById(maintenanceId);
+
+ Device device = null;
+ if (deviceBreakdownMaintenance.getDeviceId() != null) {
+ device = deivceMapper.selectById(deviceBreakdownMaintenance.getDeviceId());
+ device = device == null ? new Device() : device;
+ }
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-breakdown-maintenance.docx");
+ Configure configure = Configure.builder()
+ .build();
+ Device finalDevice = device;
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceBreakdownMaintenance", deviceBreakdownMaintenance);
+ put("device", finalDevice);
+ // 鐢宠浜虹鍚�
+ put("applicantUrl", UserUtils.getFinalUserSignatureUrl(deviceBreakdownMaintenance.getApplicantUserId()));
+ // 閮ㄩ棬璐熻矗浜虹鍚�
+ put("headUrl", UserUtils.getFinalUserSignatureUrl(deviceBreakdownMaintenance.getDepartmentHeadUserId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String deviceName = device.getDeviceName() == null ? "" : device.getDeviceName();
+ String fileName = URLEncoder.encode(
+ deviceName + "璁惧鏁呴殰缁翠慨鐢宠琛�", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCalibrationPlanDetailServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCalibrationPlanDetailServiceImpl.java
new file mode 100644
index 0000000..5c9ea18
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCalibrationPlanDetailServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceCalibrationPlanDetailMapper;
+import com.yuanchu.mom.pojo.DeviceCalibrationPlanDetail;
+import com.yuanchu.mom.service.DeviceCalibrationPlanDetailService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧鏍″噯璁″垝璇︽儏琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 03:58:29
+ */
+@Service
+public class DeviceCalibrationPlanDetailServiceImpl extends ServiceImpl<DeviceCalibrationPlanDetailMapper, DeviceCalibrationPlanDetail> implements DeviceCalibrationPlanDetailService {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCalibrationPlanServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCalibrationPlanServiceImpl.java
new file mode 100644
index 0000000..de965da
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCalibrationPlanServiceImpl.java
@@ -0,0 +1,252 @@
+package com.yuanchu.mom.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceCalibrationPlanDetailDto;
+import com.yuanchu.mom.dto.DeviceCalibrationPlanDto;
+import com.yuanchu.mom.excel.upload.DeviceCalibrationPlanDetailUpload;
+import com.yuanchu.mom.mapper.DeviceCalibrationPlanDetailMapper;
+import com.yuanchu.mom.mapper.DeviceCalibrationPlanMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.DeviceCalibrationPlan;
+import com.yuanchu.mom.pojo.DeviceCalibrationPlanDetail;
+import com.yuanchu.mom.service.DeviceCalibrationPlanDetailService;
+import com.yuanchu.mom.service.DeviceCalibrationPlanService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.UserUtils;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧鏍″噯璁″垝涓昏〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 03:58:17
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class DeviceCalibrationPlanServiceImpl extends ServiceImpl<DeviceCalibrationPlanMapper, DeviceCalibrationPlan> implements DeviceCalibrationPlanService {
+
+ @Resource
+ private DeviceCalibrationPlanDetailMapper deviceCalibrationPlanDetailMapper;
+ @Resource
+ private DeviceCalibrationPlanDetailService deviceCalibrationPlanDetailService;
+
+ @Resource
+ private UserMapper userMapper;
+
+ @Resource
+ private GetLook getLook;
+
+ /**
+ * 鏂板璁惧鏍″噯璁″垝
+ * @param calibrationPlanDto
+ * @return
+ */
+ @Override
+ public boolean addDeviceCalibrationPlan(DeviceCalibrationPlanDto calibrationPlanDto) {
+ // 褰撳墠鐧诲綍鐢ㄦ埛
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ // 缂栧埗鏃ユ湡
+ calibrationPlanDto.setWriteUserId(userId);
+ calibrationPlanDto.setWriteTime(LocalDateTime.now());
+ baseMapper.insert(calibrationPlanDto);
+
+ // 娣诲姞璇︽儏
+ if (CollectionUtils.isNotEmpty(calibrationPlanDto.getCalibrationPlanDetailList())) {
+ for (DeviceCalibrationPlanDetail calibrationPlanDetail : calibrationPlanDto.getCalibrationPlanDetailList()) {
+ calibrationPlanDetail.setPlanId(calibrationPlanDto.getPlanId());
+ }
+ deviceCalibrationPlanDetailService.saveBatch(calibrationPlanDto.getCalibrationPlanDetailList());
+ }
+
+ return true;
+ }
+
+ /**
+ * 瀵煎叆璁惧鏍″噯璁″垝
+ * @param file
+ * @return
+ */
+ @Override
+ public boolean importDeviceCalibrationPlan(MultipartFile file, String planYear) {
+ // 褰撳墠鐧诲綍鐢ㄦ埛
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ // 鏂囦欢鍚嶇О
+ String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf("."));
+ DeviceCalibrationPlan calibrationPlan = new DeviceCalibrationPlan();
+ calibrationPlan.setPlanName(fileName);
+ calibrationPlan.setPlanYear(planYear);
+ calibrationPlan.setWriteUserId(userId);
+ calibrationPlan.setWriteTime(LocalDateTime.now());
+ baseMapper.insert(calibrationPlan);
+
+ List<DeviceCalibrationPlanDetail> detailsUploadList = new ArrayList<>();
+ // 瀵煎叆闄勪欢鍐呭
+ try {
+ // excel瑙f瀽
+ EasyExcel.read(file.getInputStream(), DeviceCalibrationPlanDetailUpload.class, new AnalysisEventListener<DeviceCalibrationPlanDetailUpload>() {
+ @Override
+ public void invoke(DeviceCalibrationPlanDetailUpload detailsUpload, AnalysisContext analysisContext) {
+ // 鍒ゆ柇鏄惁涓虹┖
+ if (StringUtils.isNotBlank(detailsUpload.getDeviceName()) &&
+ StringUtils.isNotBlank(detailsUpload.getDeviceNumber())) {
+ // 瀵硅薄澶嶅埗
+ DeviceCalibrationPlanDetail calibrationPlanDetail = new DeviceCalibrationPlanDetail();
+ BeanUtils.copyProperties(detailsUpload, calibrationPlanDetail);
+ // 鏍煎紡璇濇渶杩戞瀹氭椂闂村拰鏈勾璁″垝鏍″噯鏃堕棿
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
+ calibrationPlanDetail.setLastDate(LocalDate.parse(detailsUpload.getLastDate(), formatter));
+ calibrationPlanDetail.setPlanDate(LocalDate.parse(detailsUpload.getLastDate(), formatter));
+
+ calibrationPlanDetail.setPlanId(calibrationPlan.getPlanId());
+ detailsUploadList.add(calibrationPlanDetail);
+ }
+ }
+
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+ }
+ }).sheet().doRead();
+ deviceCalibrationPlanDetailService.saveBatch(detailsUploadList);
+
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return true;
+ }
+
+ /**
+ * 璁惧鏍″噯璁″垝鎵瑰噯
+ * @param deviceCalibrationPlan
+ * @return
+ */
+ @Override
+ public boolean ratifyDeviceCalibrationPlan(DeviceCalibrationPlan deviceCalibrationPlan) {
+ // 褰撳墠鐧诲綍鐢ㄦ埛
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ baseMapper.update(null, Wrappers.<DeviceCalibrationPlan>lambdaUpdate()
+ .eq(DeviceCalibrationPlan::getPlanId, deviceCalibrationPlan.getPlanId())
+ .set(DeviceCalibrationPlan::getRatifyUserId, userId)
+ .set(DeviceCalibrationPlan::getRatifyRemark, deviceCalibrationPlan.getRatifyRemark())
+ .set(DeviceCalibrationPlan::getRatifyStatus, deviceCalibrationPlan.getRatifyStatus())
+ .set(DeviceCalibrationPlan::getRatifyTime, LocalDateTime.now())
+ );
+ return true;
+ }
+
+ /**
+ * 璁惧鏍″噯璁″垝鍒楄〃
+ * @param page
+ * @param deviceCalibrationPlan
+ * @return
+ */
+ @Override
+ public IPage<DeviceCalibrationPlanDto> pageDeviceCalibrationPlan(Page page, DeviceCalibrationPlan deviceCalibrationPlan) {
+ return baseMapper.pageDeviceCalibrationPlan(page, QueryWrappers.queryWrappers(deviceCalibrationPlan));
+ }
+
+ /**
+ * 璁惧鏍″噯璁″垝璇︽儏鍒楄〃
+ * @param page
+ * @param deviceCalibrationPlanDetails
+ * @return
+ */
+ @Override
+ public IPage<DeviceCalibrationPlanDetail> pageDeviceCalibrationPlanDetail(Page page, DeviceCalibrationPlanDetail deviceCalibrationPlanDetails) {
+ if (deviceCalibrationPlanDetails.getPlanId() == null) {
+ return new Page();
+ }
+ return deviceCalibrationPlanDetailMapper.pageDeviceCalibrationPlanDetail(page, QueryWrappers.queryWrappers(deviceCalibrationPlanDetails));
+ }
+
+ /**
+ * 瀵煎嚭璁惧鏍″噯璁″垝
+ * @param deviceCalibrationPlanId
+ * @param response
+ */
+ @Override
+ public void exportDeviceCalibrationPlanDetail(Integer deviceCalibrationPlanId, HttpServletResponse response) {
+ // 鏌ヨ璁惧鏍″噯璁″垝
+ DeviceCalibrationPlan deviceCalibrationPlan = baseMapper.selectById(deviceCalibrationPlanId);
+ DeviceCalibrationPlanDto deviceCalibrationPlanDto = new DeviceCalibrationPlanDto();
+ BeanUtils.copyProperties(deviceCalibrationPlan, deviceCalibrationPlanDto);
+ // 璁剧疆缂栧埗鍜屾壒鍑嗘椂闂存牸寮�
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ deviceCalibrationPlanDto.setWriteTimeStr(deviceCalibrationPlan.getWriteTime() == null ? null : deviceCalibrationPlan.getWriteTime().format(formatter));
+ deviceCalibrationPlanDto.setRatifyTimeStr(deviceCalibrationPlan.getRatifyTime() == null ? null : deviceCalibrationPlan.getRatifyTime().format(formatter));
+
+ // 鏌ヨ璁惧鏍″噯璁″垝璇︽儏
+ List<DeviceCalibrationPlanDetail> deviceCalibrationPlanDetailList = deviceCalibrationPlanDetailMapper.selectList(Wrappers.<DeviceCalibrationPlanDetail>lambdaQuery().eq(DeviceCalibrationPlanDetail::getPlanId, deviceCalibrationPlanId));
+ // 璁剧疆搴忓彿 鍜� 鏃堕棿
+ ArrayList<DeviceCalibrationPlanDetailDto> deviceCalibrationPlanDetailDtoList = new ArrayList<>();
+ deviceCalibrationPlanDetailList.forEach(deviceCalibrationPlanDetail -> {
+ DeviceCalibrationPlanDetailDto deviceCalibrationPlanDetailDto = new DeviceCalibrationPlanDetailDto();
+ BeanUtils.copyProperties(deviceCalibrationPlanDetail, deviceCalibrationPlanDetailDto);
+ deviceCalibrationPlanDetailDto.setIndex(deviceCalibrationPlanDetailList.indexOf(deviceCalibrationPlanDetail) + 1);
+ deviceCalibrationPlanDetailDto.setLastDateStr((deviceCalibrationPlanDetail.getLastDate().format(formatter)));
+ deviceCalibrationPlanDetailDto.setPlanDateStr((deviceCalibrationPlanDetail.getPlanDate().format(formatter)));
+ deviceCalibrationPlanDetailDtoList.add(deviceCalibrationPlanDetailDto);
+ });
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-calibration-plan.docx");
+ Configure configure = Configure.builder()
+ .bind("deviceCalibrationPlanDetailDtoList", new HackLoopTableRenderPolicy())
+ .build();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceCalibrationPlan", deviceCalibrationPlanDto);
+ put("deviceCalibrationPlanDetailDtoList", deviceCalibrationPlanDetailDtoList);
+ //鑾峰彇缂栧埗浜虹殑绛惧悕鍦板潃
+ put("organizationUrl", UserUtils.getFinalUserSignatureUrl(deviceCalibrationPlan.getRatifyUserId()));
+ //鑾峰彇鎵瑰噯浜虹殑绛惧悕鍦板潃
+ put("approvedUrl", UserUtils.getFinalUserSignatureUrl(deviceCalibrationPlan.getWriteUserId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "璁惧鏍″噯璁″垝琛�", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCheckServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCheckServiceImpl.java
new file mode 100644
index 0000000..a9dbfb2
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceCheckServiceImpl.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceCheckMapper;
+import com.yuanchu.mom.pojo.DeviceCheck;
+import com.yuanchu.mom.service.DeviceCheckService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DeviceCheckServiceImpl extends ServiceImpl<DeviceCheckMapper, DeviceCheck> implements DeviceCheckService {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExaminePlanDetailsServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExaminePlanDetailsServiceImpl.java
new file mode 100644
index 0000000..c6302d1
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExaminePlanDetailsServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceExaminePlanDetailsMapper;
+import com.yuanchu.mom.pojo.DeviceExaminePlanDetails;
+import com.yuanchu.mom.service.DeviceExaminePlanDetailsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁″垝璇︽儏琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:16
+ */
+@Service
+public class DeviceExaminePlanDetailsServiceImpl extends ServiceImpl<DeviceExaminePlanDetailsMapper, DeviceExaminePlanDetails> implements DeviceExaminePlanDetailsService {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExaminePlanServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExaminePlanServiceImpl.java
new file mode 100644
index 0000000..0abd5e4
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExaminePlanServiceImpl.java
@@ -0,0 +1,254 @@
+package com.yuanchu.mom.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceExaminePlanDetailsDto;
+import com.yuanchu.mom.dto.DeviceExaminePlanDto;
+import com.yuanchu.mom.excel.upload.DeviceExaminePlanUpload;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.DeviceExaminePlanDetailsMapper;
+import com.yuanchu.mom.mapper.DeviceExaminePlanMapper;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.Device;
+import com.yuanchu.mom.pojo.DeviceExaminePlan;
+import com.yuanchu.mom.pojo.DeviceExaminePlanDetails;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.DeviceExaminePlanDetailsService;
+import com.yuanchu.mom.service.DeviceExaminePlanService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.UserUtils;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁″垝涓昏〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:04
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class DeviceExaminePlanServiceImpl extends ServiceImpl<DeviceExaminePlanMapper, DeviceExaminePlan> implements DeviceExaminePlanService {
+
+ @Resource
+ private DeviceExaminePlanDetailsMapper deviceExaminePlanDetailsMapper;
+ @Resource
+ private DeviceExaminePlanDetailsService deviceExaminePlanDetailsService;
+ @Resource
+ private DeviceMapper deviceMapper;
+ @Resource
+ private GetLook getLook;
+ @Resource
+ private UserMapper userMapper;
+
+ /**
+ * 鏂板璁惧鏍告煡璁″垝
+ * @param examinePlanDto
+ * @return
+ */
+ @Override
+ public boolean addDeviceExaminePlan(DeviceExaminePlanDto examinePlanDto) {
+ // 褰撳墠鐧诲綍鐢ㄦ埛
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ // 鏂囦欢鍚嶇О
+ examinePlanDto.setWriteUserId(userId);
+ examinePlanDto.setWriteTime(LocalDateTime.now());
+ baseMapper.insert(examinePlanDto);
+
+ // 娣诲姞璇︽儏
+ if (CollectionUtils.isNotEmpty(examinePlanDto.getExaminePlanDetailsList())) {
+ for (DeviceExaminePlanDetails deviceExaminePlanDetails : examinePlanDto.getExaminePlanDetailsList()) {
+ deviceExaminePlanDetails.setPlanId(examinePlanDto.getPlanId());
+ }
+ deviceExaminePlanDetailsService.saveBatch(examinePlanDto.getExaminePlanDetailsList());
+ }
+ return true;
+ }
+
+ /**
+ * 瀵煎叆璁惧鏍告煡璁″垝
+ * @param file
+ * @return
+ */
+ @Override
+ public boolean importDeviceExaminePlan(MultipartFile file) {
+ // 褰撳墠鐧诲綍鐢ㄦ埛
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ // 鏂囦欢鍚嶇О
+ String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf("."));
+ DeviceExaminePlan examinePlan = new DeviceExaminePlan();
+ examinePlan.setPlanName(fileName);
+ examinePlan.setWriteUserId(userId);
+ examinePlan.setWriteTime(LocalDateTime.now());
+ baseMapper.insert(examinePlan);
+
+ List<DeviceExaminePlanDetails> examinePlanDetails = new ArrayList<>();
+ // 瀵煎叆闄勪欢鍐呭
+ try {
+ // excel瑙f瀽
+ EasyExcel.read(file.getInputStream(), DeviceExaminePlanUpload.class, new AnalysisEventListener<DeviceExaminePlanUpload>() {
+ @Override
+ public void invoke(DeviceExaminePlanUpload detailsUpload, AnalysisContext analysisContext) {
+ // 鍒ゆ柇鏄惁涓虹┖
+ if (StringUtils.isNotBlank(detailsUpload.getDeviceName()) &&
+ StringUtils.isNotBlank(detailsUpload.getDeviceNumber())) {
+ // 瀵硅薄澶嶅埗
+ DeviceExaminePlanDetails planDetails = new DeviceExaminePlanDetails();
+ BeanUtils.copyProperties(detailsUpload, planDetails);
+
+ planDetails.setPlanId(examinePlan.getPlanId());
+ examinePlanDetails.add(planDetails);
+ }
+ }
+
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+ }
+ }).sheet().doRead();
+ for (DeviceExaminePlanDetails examinePlanDetail : examinePlanDetails) {
+ Device device = deviceMapper.selectOne(Wrappers.<Device>lambdaQuery()
+ .eq(Device::getManagementNumber, examinePlanDetail.getDeviceNumber().trim()));
+ if (device == null) {
+ throw new ErrorException("璁惧缂栧彿" + examinePlanDetail.getDeviceNumber() + "鏈煡璇㈠埌璁惧, 璇烽噸鏂板鍏�");
+ }
+ User user = userMapper.selectOne(Wrappers.<User>lambdaQuery()
+ .eq(User::getName, examinePlanDetail.getCheckChargerUser()));
+ if (user == null) {
+ throw new ErrorException("璁惧缂栧彿" + examinePlanDetail.getDeviceNumber() + "鏈煡璇㈠埌鏍告煡浜�");
+ }
+ examinePlanDetail.setDeviceId(device.getId());
+ examinePlanDetail.setCheckChargerUserId(user.getId());
+ }
+
+ deviceExaminePlanDetailsService.saveBatch(examinePlanDetails);
+
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return true;
+ }
+
+ /**
+ * 璁惧鏍告煡璁″垝鎵瑰噯
+ * @param deviceExaminePlan
+ * @return
+ */
+ @Override
+ public boolean ratifyDeviceExaminePlan(DeviceExaminePlan deviceExaminePlan) {
+ // 褰撳墠鐧诲綍鐢ㄦ埛
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ baseMapper.update(null, Wrappers.<DeviceExaminePlan>lambdaUpdate()
+ .eq(DeviceExaminePlan::getPlanId, deviceExaminePlan.getPlanId())
+ .set(DeviceExaminePlan::getRatifyUserId, userId)
+ .set(DeviceExaminePlan::getRatifyRemark, deviceExaminePlan.getRatifyRemark())
+ .set(DeviceExaminePlan::getRatifyStatus, deviceExaminePlan.getRatifyStatus())
+ .set(DeviceExaminePlan::getRatifyTime, LocalDateTime.now())
+ );
+ return true;
+ }
+
+ /**
+ * 璁惧鏍告煡璁″垝鍒楄〃
+ * @param page
+ * @param deviceExaminePlan
+ * @return
+ */
+ @Override
+ public IPage<DeviceExaminePlanDto> pageDeviceExaminePlan(Page page, DeviceExaminePlan deviceExaminePlan) {
+ return baseMapper.deviceExaminePlanDetailsMapper(page, QueryWrappers.queryWrappers(deviceExaminePlan));
+ }
+
+ /**
+ * 璁惧鏍告煡璁″垝璇︽儏鍒楄〃
+ * @param page
+ * @param deviceExaminePlanDetails
+ * @return
+ */
+ @Override
+ public IPage<DeviceExaminePlanDetails> pageDeviceExaminePlanDetail(Page page, DeviceExaminePlanDetails deviceExaminePlanDetails) {
+ if (deviceExaminePlanDetails.getPlanId() == null) {
+ return new Page();
+ }
+ return deviceExaminePlanDetailsMapper.pageDeviceExaminePlanDetail(page, QueryWrappers.queryWrappers(deviceExaminePlanDetails));
+ }
+
+ /**
+ * 瀵煎嚭璁惧鏍告煡璁″垝
+ * @param deviceExaminePlanId 璁惧鏍告煡璁″垝id
+ * @param response 鍝嶅簲浣�
+ */
+ @Override
+ public void exportDeviceExaminePlanDetail(Integer deviceExaminePlanId, HttpServletResponse response) {
+ // 鏌ヨ璁惧鏍告煡璁″垝
+ DeviceExaminePlanDto deviceExaminePlanDto = baseMapper.selectExamineExaminePlanDto(deviceExaminePlanId);
+
+ // 鏌ヨ璁惧鏍告煡璁″垝璇︽儏
+ List<DeviceExaminePlanDetails> deviceExaminePlanDetailsList = deviceExaminePlanDetailsMapper.selectList(Wrappers.<DeviceExaminePlanDetails>lambdaQuery().eq(DeviceExaminePlanDetails::getPlanId, deviceExaminePlanId));
+ // 璁剧疆搴忓彿
+ ArrayList<DeviceExaminePlanDetailsDto> deviceExaminePlanDetailsDtoList = new ArrayList<>();
+ deviceExaminePlanDetailsList.forEach(deviceExamineRecordContrastDetail -> {
+ DeviceExaminePlanDetailsDto deviceExaminePlanDetailsDto = new DeviceExaminePlanDetailsDto();
+ BeanUtils.copyProperties(deviceExamineRecordContrastDetail, deviceExaminePlanDetailsDto);
+ deviceExaminePlanDetailsDto.setIndex(deviceExaminePlanDetailsList.indexOf(deviceExamineRecordContrastDetail) + 1);
+ deviceExaminePlanDetailsDtoList.add(deviceExaminePlanDetailsDto);
+ });
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/examine-plan-detail.docx");
+ Configure configure = Configure.builder()
+ .bind("deviceExaminePlanDetailsDtoList", new HackLoopTableRenderPolicy())
+ .build();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceExaminePlan", deviceExaminePlanDto);
+ put("deviceExaminePlanDetailsDtoList", deviceExaminePlanDetailsDtoList);
+ //鑾峰彇鏍告煡浜虹殑绛惧悕鍦板潃
+ put("writeUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExaminePlanDto.getWriteUserId()));
+ //鑾峰彇瀹℃煡浜虹殑绛惧悕鍦板潃
+ put("reviewUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExaminePlanDto.getRatifyUserId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "璁惧鏍告煡璁″垝", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordContrastDetailsServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordContrastDetailsServiceImpl.java
new file mode 100644
index 0000000..2be725c
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordContrastDetailsServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceExamineRecordContrastDetailsMapper;
+import com.yuanchu.mom.pojo.DeviceExamineRecordContrastDetails;
+import com.yuanchu.mom.service.DeviceExamineRecordContrastDetailsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍瀵规瘮璇︽儏琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:57
+ */
+@Service
+public class DeviceExamineRecordContrastDetailsServiceImpl extends ServiceImpl<DeviceExamineRecordContrastDetailsMapper, DeviceExamineRecordContrastDetails> implements DeviceExamineRecordContrastDetailsService {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordContrastServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordContrastServiceImpl.java
new file mode 100644
index 0000000..8fcb01b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordContrastServiceImpl.java
@@ -0,0 +1,195 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceExamineRecordContrastDetailsDto;
+import com.yuanchu.mom.dto.DeviceExamineRecordContrastDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.DeviceExaminePlanDetailsMapper;
+import com.yuanchu.mom.mapper.DeviceExamineRecordContrastMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.DeviceExaminePlanDetails;
+import com.yuanchu.mom.pojo.DeviceExamineRecordContrast;
+import com.yuanchu.mom.pojo.DeviceExamineRecordContrastDetails;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.DeviceExamineRecordContrastDetailsService;
+import com.yuanchu.mom.service.DeviceExamineRecordContrastService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.UserUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍瀵规瘮琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:43
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class DeviceExamineRecordContrastServiceImpl extends ServiceImpl<DeviceExamineRecordContrastMapper, DeviceExamineRecordContrast> implements DeviceExamineRecordContrastService {
+
+ @Resource
+ private DeviceExamineRecordContrastDetailsService deviceExamineRecordContrastDetailsService;
+ @Resource
+ private DeviceExaminePlanDetailsMapper deviceExaminePlanDetailsMapper;
+ @Resource
+ private GetLook getLook;
+ @Resource
+ private UserMapper userMapper;
+ /**
+ * 鏌ヨ鏍告煡瀵规瘮璁板綍
+ * @return
+ */
+ @Override
+ public DeviceExamineRecordContrastDto getExamineRecordContrast(Integer planDetailsId) {
+ DeviceExamineRecordContrastDto contrastDto = baseMapper.getExamineRecordContrast(planDetailsId);
+ // 鍒ゆ柇鏄惁涓虹┖
+ if (contrastDto == null) {
+ contrastDto = new DeviceExamineRecordContrastDto();
+ // 鏌ヨ璁惧璇︽儏
+ DeviceExaminePlanDetails deviceExaminePlanDetails = deviceExaminePlanDetailsMapper.selectById(planDetailsId);
+ contrastDto.setPlanDetailsId(deviceExaminePlanDetails.getPlanDetailsId());
+
+ } else {
+ // 鏌ヨ璇︽儏
+ List<DeviceExamineRecordContrastDetails> list = deviceExamineRecordContrastDetailsService.list(Wrappers.<DeviceExamineRecordContrastDetails>lambdaQuery()
+ .eq(DeviceExamineRecordContrastDetails::getRecordContrastId, contrastDto.getRecordContrastId()));
+ contrastDto.setRecordContrastDetailsList(list);
+ }
+
+ return contrastDto;
+ }
+
+ /**
+ * 鏂板鏍告煡瀵规瘮璁板綍
+ * @return
+ */
+ @Override
+ public boolean addExamineRecordContrast(DeviceExamineRecordContrastDto dto) {
+ if (dto.getPlanDetailsId() == null) {
+ throw new ErrorException("缂哄皯璁″垝璇︾粏淇℃伅id");
+ }
+ if (dto.getRecordContrastId() == null) {
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ User user = userMapper.selectById(userId);
+ dto.setCheckerUserId(userId);
+ dto.setCheckerUser(user.getName());
+
+ // 鏌ヨ瀹℃煡浜篿d
+ if (dto.getReviewUserId() != null) {
+ User reviewUser = userMapper.selectById(dto.getReviewUserId());
+ dto.setReviewUser(reviewUser.getName());
+ }
+ }
+ this.saveOrUpdate(dto);
+
+ // 鍒犻櫎鍏ㄩ儴璇︽儏
+ deviceExamineRecordContrastDetailsService.remove(Wrappers.<DeviceExamineRecordContrastDetails>lambdaQuery()
+ .eq(DeviceExamineRecordContrastDetails::getRecordContrastId, dto.getRecordContrastId()));
+ //娣诲姞璇︽儏
+ if (CollectionUtils.isNotEmpty(dto.getRecordContrastDetailsList())) {
+ for (DeviceExamineRecordContrastDetails details : dto.getRecordContrastDetailsList()) {
+ details.setRecordContrastId(dto.getRecordContrastId());
+ }
+ deviceExamineRecordContrastDetailsService.saveBatch(dto.getRecordContrastDetailsList());
+ }
+ return false;
+ }
+
+
+ /**
+ * 瀹℃牳鏍告煡瀵规瘮璁板綍
+ * @return
+ */
+ @Override
+ public boolean reviewExamineRecordContrast(DeviceExamineRecordContrastDto dto) {
+ if (dto.getPlanDetailsId() == null) {
+ throw new ErrorException("缂哄皯璁″垝璇︾粏淇℃伅id");
+ }
+ LambdaUpdateWrapper<DeviceExamineRecordContrast> wrapper = Wrappers.<DeviceExamineRecordContrast>lambdaUpdate()
+ .eq(DeviceExamineRecordContrast::getPlanDetailsId, dto.getPlanDetailsId())
+ .set(DeviceExamineRecordContrast::getReviewStatus, dto.getReviewStatus())
+ .set(DeviceExamineRecordContrast::getReviewRemark, dto.getReviewRemark())
+ .set(DeviceExamineRecordContrast::getReviewTime, LocalDateTime.now());
+ // 涓�0娓呴櫎瀹℃牳浜�
+ if (dto.getReviewStatus().equals(0)) {
+ wrapper.set(DeviceExamineRecordContrast::getReviewUserId, null)
+ .set(DeviceExamineRecordContrast::getReviewUser, null);
+ }
+
+ this.update(wrapper);
+ return true;
+ }
+
+ /**
+ * 瀵煎嚭瀹℃牳鏍告煡瀵规瘮璁板綍
+ *
+ * @param planDetailsId 璇︽儏id
+ * @param response
+ */
+ @Override
+ public void exportReviewExamineRecordContrast(Integer planDetailsId, HttpServletResponse response) {
+ // 鏌ヨ瀵规瘮璁板綍
+ DeviceExamineRecordContrastDto deviceExamineRecordContrast = baseMapper.selectExamineRecordContrastDto(planDetailsId);
+
+ // 鏌ヨ瀵规瘮璁板綍璇︽儏
+ List<DeviceExamineRecordContrastDetails> deviceExamineRecordContrastDetailList = deviceExamineRecordContrastDetailsService.list(Wrappers.<DeviceExamineRecordContrastDetails>lambdaQuery().eq(DeviceExamineRecordContrastDetails::getRecordContrastId, deviceExamineRecordContrast.getRecordContrastId()));
+ // 璁剧疆搴忓彿
+ ArrayList<DeviceExamineRecordContrastDetailsDto> deviceExamineRecordContrastDetailsDtoList = new ArrayList<>();
+ deviceExamineRecordContrastDetailList.forEach(deviceExamineRecordContrastDetail -> {
+ DeviceExamineRecordContrastDetailsDto deviceExamineRecordContrastDetailsDto = new DeviceExamineRecordContrastDetailsDto();
+ BeanUtils.copyProperties(deviceExamineRecordContrastDetail, deviceExamineRecordContrastDetailsDto);
+ deviceExamineRecordContrastDetailsDto.setIndex(deviceExamineRecordContrastDetailList.indexOf(deviceExamineRecordContrastDetail) + 1);
+ deviceExamineRecordContrastDetailsDtoList.add(deviceExamineRecordContrastDetailsDto);
+ });
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/review-examine-record-contrast.docx");
+ Configure configure = Configure.builder()
+ .bind("deviceExamineRecordContrastDetailsDtoList", new HackLoopTableRenderPolicy())
+ .build();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceExamineRecordContrast", deviceExamineRecordContrast);
+ put("deviceExamineRecordContrastDetailsDtoList", deviceExamineRecordContrastDetailsDtoList);
+ //鑾峰彇鏍告煡浜虹殑绛惧悕鍦板潃
+ put("checkerUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExamineRecordContrast.getCheckerUserId()));
+ //鑾峰彇瀹℃煡浜虹殑绛惧悕鍦板潃
+ put("reviewUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExamineRecordContrast.getReviewUserId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "瀹℃牳鏍告煡瀵规瘮璁板綍", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordDetailServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordDetailServiceImpl.java
new file mode 100644
index 0000000..642f032
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordDetailServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceExamineRecordDetailMapper;
+import com.yuanchu.mom.pojo.DeviceExamineRecordDetail;
+import com.yuanchu.mom.service.DeviceExamineRecordDetailService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍璇︽儏琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:15:11
+ */
+@Service
+public class DeviceExamineRecordDetailServiceImpl extends ServiceImpl<DeviceExamineRecordDetailMapper, DeviceExamineRecordDetail> implements DeviceExamineRecordDetailService {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordServiceImpl.java
new file mode 100644
index 0000000..51a1cd7
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExamineRecordServiceImpl.java
@@ -0,0 +1,196 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceExamineRecordDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.DeviceExaminePlanDetailsMapper;
+import com.yuanchu.mom.mapper.DeviceExamineRecordMapper;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.service.DeviceExamineRecordDetailService;
+import com.yuanchu.mom.service.DeviceExamineRecordService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.UserUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧鏍告煡璁板綍琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 07:14:28
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class DeviceExamineRecordServiceImpl extends ServiceImpl<DeviceExamineRecordMapper, DeviceExamineRecord> implements DeviceExamineRecordService {
+
+ @Resource
+ private DeviceExamineRecordDetailService deviceExamineRecordDetailService;
+ @Resource
+ private DeviceExaminePlanDetailsMapper deviceExaminePlanDetailsMapper;
+ @Resource
+ private DeviceMapper deviceMapper;
+ @Resource
+ private GetLook getLook;
+ @Resource
+ private UserMapper userMapper;
+
+ /**
+ * 鏌ヨ鏍告煡璁板綍
+ *
+ * @return
+ */
+ @Override
+ public DeviceExamineRecordDto getExamineRecord(Integer planDetailsId) {
+ DeviceExamineRecordDto deviceExamineRecord = baseMapper.getExamineRecord(planDetailsId);
+
+ // 鍒ゆ柇鏄惁涓虹┖
+ if (deviceExamineRecord == null) {
+ deviceExamineRecord = new DeviceExamineRecordDto();
+ // 鏌ヨ璁惧璇︽儏
+ DeviceExaminePlanDetails deviceExaminePlanDetails = deviceExaminePlanDetailsMapper.selectById(planDetailsId);
+ Device device = deviceMapper.selectById(deviceExaminePlanDetails.getDeviceId());
+ if (device != null) {
+ deviceExamineRecord.setDeviceName(device.getDeviceName());
+ deviceExamineRecord.setDeviceNumber(device.getManagementNumber());
+ deviceExamineRecord.setPlanDetailsId(deviceExaminePlanDetails.getPlanDetailsId());
+ }
+ } else {
+ // 鏌ヨ璇︽儏
+ List<DeviceExamineRecordDetail> list = deviceExamineRecordDetailService.list(Wrappers.<DeviceExamineRecordDetail>lambdaQuery()
+ .eq(DeviceExamineRecordDetail::getRecordId, deviceExamineRecord.getRecordId()));
+ deviceExamineRecord.setRecordDetailList(list);
+ }
+
+ return deviceExamineRecord;
+ }
+
+ /**
+ * 鏂板鏍告煡璁板綍
+ *
+ * @return
+ */
+ @Override
+ public boolean addExamineRecord(DeviceExamineRecordDto deviceExamineRecordDto) {
+ if (deviceExamineRecordDto.getPlanDetailsId() == null) {
+ throw new ErrorException("缂哄皯璁″垝璇︾粏淇℃伅id");
+ }
+ if (deviceExamineRecordDto.getRecordId() == null) {
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ User user = userMapper.selectById(userId);
+ deviceExamineRecordDto.setCheckerUserId(userId);
+ deviceExamineRecordDto.setCheckerUser(user.getName());
+
+ // 鏌ヨ瀹℃煡浜篿d
+ if (deviceExamineRecordDto.getReviewUserId() != null) {
+ User reviewUser = userMapper.selectById(deviceExamineRecordDto.getReviewUserId());
+ deviceExamineRecordDto.setReviewUser(reviewUser.getName());
+ }
+
+ }
+ this.saveOrUpdate(deviceExamineRecordDto);
+
+ // 鍒犻櫎鍏ㄩ儴璇︽儏
+ deviceExamineRecordDetailService.remove(Wrappers.<DeviceExamineRecordDetail>lambdaQuery()
+ .eq(DeviceExamineRecordDetail::getRecordId, deviceExamineRecordDto.getRecordId()));
+ //娣诲姞璇︽儏
+ if (CollectionUtils.isNotEmpty(deviceExamineRecordDto.getRecordDetailList())) {
+ for (DeviceExamineRecordDetail deviceExamineRecordDetail : deviceExamineRecordDto.getRecordDetailList()) {
+ deviceExamineRecordDetail.setRecordId(deviceExamineRecordDto.getRecordId());
+ }
+ deviceExamineRecordDetailService.saveBatch(deviceExamineRecordDto.getRecordDetailList());
+ }
+
+ return true;
+ }
+
+
+ /**
+ * 澶嶆牳鏍告煡璁板綍
+ *
+ * @return
+ */
+ @Override
+ public boolean reviewExamineRecord(DeviceExamineRecordDto dto) {
+ if (dto.getPlanDetailsId() == null) {
+ throw new ErrorException("缂哄皯璁″垝璇︾粏淇℃伅id");
+ }
+ LambdaUpdateWrapper<DeviceExamineRecord> wrapper = Wrappers.<DeviceExamineRecord>lambdaUpdate()
+ .eq(DeviceExamineRecord::getPlanDetailsId, dto.getPlanDetailsId())
+ .set(DeviceExamineRecord::getReviewStatus, dto.getReviewStatus())
+ .set(DeviceExamineRecord::getReviewRemark, dto.getReviewRemark());
+
+ // 涓�0娓呴櫎瀹℃牳浜�
+ if (dto.getReviewStatus().equals(0)) {
+ wrapper.set(DeviceExamineRecord::getReviewUserId, null)
+ .set(DeviceExamineRecord::getReviewUser, null);
+ }
+
+ this.update(wrapper);
+ return true;
+ }
+
+ /**
+ * 瀵煎嚭澶嶆牳鏍告煡璁板綍
+ *
+ * @param planDetailsId 澶嶆牳鏍告煡璁板綍id
+ * @return
+ */
+ @Override
+ public void exportReviewExamineRecordDetail(Integer planDetailsId, HttpServletResponse response) {
+ // 鏌ヨ澶嶆牳鏍告煡璁板綍
+ DeviceExamineRecordDto deviceExamineRecordDto = baseMapper.selectReviewExamineRecordDto(planDetailsId);
+
+ // 鏌ヨ澶嶆牳鏍告煡璁板綍璇︽儏
+ List<DeviceExamineRecordDetail> deviceExamineRecordDetailList = deviceExamineRecordDetailService.list(Wrappers.<DeviceExamineRecordDetail>lambdaQuery().eq(DeviceExamineRecordDetail::getRecordId, deviceExamineRecordDto.getRecordId()));
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/examine-record.docx");
+ Configure configure = Configure.builder()
+ .bind("deviceExamineRecordDetailList", new HackLoopTableRenderPolicy())
+ .build();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceExamineRecordDto", deviceExamineRecordDto);
+ put("deviceExamineRecordDetailList", deviceExamineRecordDetailList);
+ //鑾峰彇鏍告煡浜虹殑绛惧悕鍦板潃
+ put("checkerUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExamineRecordDto.getCheckerUserId()));
+ //鑾峰彇瀹℃煡浜虹殑绛惧悕鍦板潃
+ put("reviewUserUrl", UserUtils.getFinalUserSignatureUrl(deviceExamineRecordDto.getReviewUserId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String deviceName = StringUtils.isNotEmpty(deviceExamineRecordDto.getDeviceName()) ? deviceExamineRecordDto.getDeviceName() : "";
+ String fileName = URLEncoder.encode(
+ deviceName+ "鏍告煡璁板綍", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExternalApplyServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExternalApplyServiceImpl.java
new file mode 100644
index 0000000..3797992
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceExternalApplyServiceImpl.java
@@ -0,0 +1,163 @@
+package com.yuanchu.mom.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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.mapper.DeviceExternalApplyMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.DeviceExternalApply;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.DeviceExternalApplyService;
+import com.yuanchu.mom.utils.UserUtils;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.util.HashMap;
+
+/**
+ * <p>
+ * 鍒╃敤澶栭儴璁惧鐢宠琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 10:28:43
+ */
+@Service
+public class DeviceExternalApplyServiceImpl extends ServiceImpl<DeviceExternalApplyMapper, DeviceExternalApply> implements DeviceExternalApplyService {
+
+ @Resource
+ private UserMapper userMapper;
+ @Resource
+ private GetLook getLook;
+
+ /**
+ * 鍒╃敤澶栭儴璁惧鐢宠鍒楄〃
+ * @param page
+ * @param deviceExternalApply
+ * @return
+ */
+ @Override
+ public IPage<DeviceExternalApply> pageDeviceExternalApply(Page page, DeviceExternalApply deviceExternalApply) {
+ return baseMapper.pageDeviceExternalApply(page, QueryWrappers.queryWrappers(deviceExternalApply));
+ }
+
+ /**
+ * 鏂板鍒╃敤澶栭儴璁惧鐢宠
+ * @param deviceExternalApply
+ * @return
+ */
+ @Override
+ public boolean addDeviceExternalApply(DeviceExternalApply deviceExternalApply) {
+ DeviceExternalApply apply = new DeviceExternalApply();
+ // 褰撳墠鐧诲綍鐢ㄦ埛淇℃伅鍜岄儴闂�
+ User user = userMapper.selectById(getLook.selectPowerByMethodAndUserId(null).get("userId"));
+ switch (deviceExternalApply.getFlowType()) {
+ case 0:
+ BeanUtils.copyProperties(deviceExternalApply, apply);
+ // 鐢宠
+ apply.setUseReason(deviceExternalApply.getUseReason());
+ apply.setApplicantUserId(user.getId());
+ apply.setApplicantUser(user.getName());
+ apply.setApplicantDate(LocalDate.now());
+
+ // 澶勭悊浜轰俊鎭�
+ User departmentHeadUser = userMapper.selectById(deviceExternalApply.getDepartmentHeadUserId());
+ apply.setApplicantUserId(departmentHeadUser.getId());
+ apply.setApplicantUser(departmentHeadUser.getName());
+
+ baseMapper.insert(apply);
+ break;
+ case 1:
+ apply.setExternalApplyId(deviceExternalApply.getExternalApplyId());
+ // 鐢宠閮ㄩ棬璐熻矗浜烘剰瑙�
+ apply.setDepartmentHeadOpinion(deviceExternalApply.getDepartmentHeadOpinion());
+ apply.setDepartmentHeadDate(LocalDate.now());
+
+ // 璁¢噺瀹や俊鎭�
+ User meteringRoomUser = userMapper.selectById(deviceExternalApply.getMeteringRoomUserId());
+ apply.setMeteringRoomUserId(meteringRoomUser.getId());
+ apply.setMeteringRoomUser(meteringRoomUser.getName());
+
+ baseMapper.updateById(apply);
+ break;
+ case 2:
+ apply.setExternalApplyId(deviceExternalApply.getExternalApplyId());
+ // 璁¢噺瀹ゆ剰瑙�
+ apply.setMeteringRoomOpinion(deviceExternalApply.getMeteringRoomOpinion());
+ apply.setMeteringRoomDate(LocalDate.now());
+
+ // 鎵瑰噯浜轰俊鎭�
+ User approverUser = userMapper.selectById(deviceExternalApply.getApproverUserId());
+ apply.setApproverUserId(approverUser.getId());
+ apply.setApproverUser(approverUser.getName());
+
+ baseMapper.updateById(apply);
+ break;
+ case 3:
+ apply.setExternalApplyId(deviceExternalApply.getExternalApplyId());
+ //鎵瑰噯浜�
+ apply.setApproverOpinion(deviceExternalApply.getApproverOpinion());
+ apply.setApproverDate(LocalDate.now());
+
+ apply.setIsFinish(1);
+ baseMapper.updateById(apply);
+ break;
+ }
+
+ return true;
+ }
+
+ /**
+ * 瀵煎嚭鍒╃敤澶栭儴璁惧鐢宠
+ *
+ * @param externalApplyId 澶栭儴璁惧鐢宠id
+ * @param response
+ */
+ @Override
+ public void exportDeviceExternalApply(Integer externalApplyId, HttpServletResponse response) {
+ // 鏌ヨ澶栭儴璁惧鐢宠
+ DeviceExternalApply deviceAccidentReport = baseMapper.selectDeviceExternalById(externalApplyId);
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-external-apply.docx");
+ Configure configure = Configure.builder()
+ .build();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceAccidentReport", deviceAccidentReport);
+ // 鐢宠浜虹鍚�
+ put("applicantUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getApplicantUserId()));
+ // 閮ㄩ棬璐熻矗浜虹鍚�
+ put("departmentHeadUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getDepartmentHeadUserId()));
+ // 璁¢噺瀹や汉绛惧悕
+ put("meteringRoomUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getMeteringRoomUserId()));
+ // 鎵瑰噯浜虹鍚�
+ put("approverUserUrl", UserUtils.getFinalUserSignatureUrl(deviceAccidentReport.getApproverUserId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "鍒╃敤澶栭儴璁惧鐢宠", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceFaultOneServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceFaultOneServiceImpl.java
new file mode 100644
index 0000000..6a75732
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceFaultOneServiceImpl.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.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.yuanchu.mom.dto.DeviceFaultOneDto;
+import com.yuanchu.mom.mapper.DeviceFaultOneMapper;
+import com.yuanchu.mom.pojo.DeviceFaultOne;
+import com.yuanchu.mom.service.DeviceFaultOneService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧鏁呴殰琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 02:03:29
+ */
+@Service
+public class DeviceFaultOneServiceImpl extends ServiceImpl<DeviceFaultOneMapper, DeviceFaultOne> implements DeviceFaultOneService {
+
+ @Override
+ public IPage<DeviceFaultOneDto> deviceFaultOnePage(Integer deviceId, Page page, String processNumber) {
+ return baseMapper.deviceFaultOnePage(deviceId, page, processNumber);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceFaultServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceFaultServiceImpl.java
new file mode 100644
index 0000000..d725167
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceFaultServiceImpl.java
@@ -0,0 +1,97 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.*;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.service.DeviceFaultService;
+import com.yuanchu.mom.service.EnumService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class DeviceFaultServiceImpl extends ServiceImpl<DeviceFaultMapper, DeviceFault> implements DeviceFaultService {
+
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Autowired
+ private QrShowServiceImpl qrShowService;
+
+ @Autowired
+ private DeviceMaintenanceMapper deviceMaintenanceMapper;
+
+ @Autowired
+ private StructureItemParameterMapper structureItemParameterMapper;
+
+ @Autowired
+ private DeviceFaultOneMapper deviceFaultOneMapper;
+
+ @Autowired
+ private EnumService enumService;
+
+ @Override
+ public Map<String,Object> findByDeviceId(Integer deviceId) {
+ Map<String,Object> map = new HashMap<>();
+ if(Objects.isNull(deviceId)){
+ return map;
+ }
+ //鏌ヨ璁惧涓昏〃淇℃伅
+ Device device = deviceMapper.selectById(deviceId);
+ if(!Objects.isNull(device)){
+ //鏌ヨ璁惧鏍″噯淇℃伅
+ DeviceMetricRecord calibrate = qrShowService.getDeviceMetricRecord(device.getId(), "calibrate");
+ //鏌ヨ璁惧鏍告煡淇℃伅
+ DeviceMetricRecord examine = qrShowService.getDeviceMetricRecord(device.getId(), "examine");
+ //鏌ヨ璁惧缁存姢璁板綍
+ DeviceMaintenance deviceMaintenance = Optional.ofNullable(deviceMaintenanceMapper.selectOne(Wrappers.<DeviceMaintenance>lambdaQuery()
+ .eq(DeviceMaintenance::getDeviceId, device.getId())
+ .orderByDesc(DeviceMaintenance::getId)
+ .last("limit 1"))).orElse(new DeviceMaintenance());
+ //鏌ヨ璁惧鏁呴殰淇℃伅
+ List<DeviceFaultOne> deviceFaultOneList = Optional.ofNullable(deviceFaultOneMapper.selectList(Wrappers.<DeviceFaultOne>lambdaQuery()
+ .eq(DeviceFaultOne::getDeviceId, device.getId())
+ .orderByDesc(DeviceFaultOne::getId))).orElse(new ArrayList<>());
+ //鏌ヨ璁惧鐘舵�佸瓧鍏�
+ List<Enums> deviceStatus = enumService.selectEnumByCategory("璁惧鐘舵��");
+ Enums findEnum = deviceStatus.stream().filter(e-> Integer.parseInt(e.getValue()) ==device.getDeviceStatus()).findFirst().orElse(new Enums());
+ map.put("progress",qrShowService.calcDeviceNextCheckRatio(calibrate.getCalibrationDate(),calibrate.getNextCalibrationDate()));//璺濈涓嬫鏍″噯鏃ユ湡鐨勫ぉ鏁扮櫨鍒嗘瘮
+ map.put("deviceName",device.getDeviceName());//璁惧鍚嶇О
+ map.put("deviceCode",device.getManagementNumber());//璁惧缂栧彿
+ map.put("usedYears",qrShowService.calcUsedYears(device.getActivationDate()));//鍚敤鏃堕暱(骞�)
+ map.put("deviceStatus",findEnum.getLabel());//璁惧杩愯鐘舵��
+ map.put("faultCount",deviceFaultOneList.size());//鏁呴殰娆℃暟
+ String faultDate = !deviceFaultOneList.isEmpty() ?qrShowService.formatDate(deviceFaultOneList.get(0).getFaultDate(),"yyyy-MM-dd"):"";
+ map.put("faultDate",faultDate);//鏈�杩戞晠闅滄棩鏈�
+ map.put("lastCalibrationDate",qrShowService.formatDate(calibrate.getCalibrationDate(),"yyyy-MM-dd"));//鏈�杩戞牎鍑嗘棩鏈�
+ map.put("nextCalibrationDate",qrShowService.formatDate(calibrate.getNextCalibrationDate(),"yyyy-MM-dd"));//涓嬫鏍″噯鏃ユ湡
+ String calibrateStatus = "0yes".equals(calibrate.getStatus())?"鍚堟牸":"1no".equals(calibrate.getStatus())?"涓嶅悎鏍�":"鍏朵粬";
+ map.put("calibrateStatus",Objects.isNull(calibrate.getCalibrationDate())?"":calibrateStatus);//鏍″噯鎬荤粨璁�
+ map.put("lastExamineDate",examine.getCalibrationDate());//鏈�杩戞牳鏌ユ棩鏈�
+ map.put("nextExamineDate",examine.getNextCalibrationDate());//涓嬫鏍告煡鏃ユ湡
+ String examineStatus = "0yes".equals(examine.getStatus())?"鍚堟牸":"1no".equals(examine.getStatus())?"涓嶅悎鏍�":"鍏朵粬";
+ map.put("examineStatus",Objects.isNull(examine.getCalibrationDate())?"":examineStatus);//鏍告煡鎬荤粨璁�
+ map.put("maintenanceDate",deviceMaintenance.getDate());//鏈�杩戠淮鎶ゆ棩鏈�
+ map.put("nextMaintenanceDate",deviceMaintenance.getNextDate());//涓嬫缁存姢鏃ユ湡
+ String maintenanceType = "";
+ if(!Objects.isNull(deviceMaintenance.getMaintenanceType())){
+ maintenanceType = 0==deviceMaintenance.getMaintenanceType()?"浣跨敤鍓嶇淮鎶�":"浣跨敤鍚庣淮鎶�";
+ }
+ map.put("maintenanceType",maintenanceType);//缁存姢鎬荤粨璁�
+ //娴嬮噺椤圭洰
+ String insProduct = "";
+ if(StringUtils.isNotBlank(device.getInsProductIds())){
+ String[] ids = device.getInsProductIds().split(",");
+ List<StructureItemParameter> parameters = structureItemParameterMapper.selectBatchIds(Arrays.asList(ids));
+ List<String> itemList = parameters.stream().map(StructureItemParameter::getInspectionItem).distinct().collect(Collectors.toList());
+ insProduct = String.join(",",itemList);
+ }
+ map.put("insProduct",insProduct);//娴嬮噺椤圭洰
+ }
+ return map;
+ }
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceInspectionRecordDetailsServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceInspectionRecordDetailsServiceImpl.java
new file mode 100644
index 0000000..36b279f
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceInspectionRecordDetailsServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceInspectionRecordDetailsMapper;
+import com.yuanchu.mom.pojo.DeviceInspectionRecordDetails;
+import com.yuanchu.mom.service.DeviceInspectionRecordDetailsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 04:27:32
+ */
+@Service
+public class DeviceInspectionRecordDetailsServiceImpl extends ServiceImpl<DeviceInspectionRecordDetailsMapper, DeviceInspectionRecordDetails> implements DeviceInspectionRecordDetailsService {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceInspectionRecordServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceInspectionRecordServiceImpl.java
new file mode 100644
index 0000000..801c07f
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceInspectionRecordServiceImpl.java
@@ -0,0 +1,223 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceInspectionRecordDto;
+import com.yuanchu.mom.mapper.DeviceInspectionRecordMapper;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.Device;
+import com.yuanchu.mom.pojo.DeviceInspectionRecord;
+import com.yuanchu.mom.pojo.DeviceInspectionRecordDetails;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.DeviceInspectionRecordDetailsService;
+import com.yuanchu.mom.service.DeviceInspectionRecordService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.UserUtils;
+import com.yuanchu.mom.utils.QueryWrappers;
+import com.yuanchu.mom.vo.Result;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧鐐规璁板綍琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 04:25:14
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class DeviceInspectionRecordServiceImpl extends ServiceImpl<DeviceInspectionRecordMapper, DeviceInspectionRecord> implements DeviceInspectionRecordService {
+ @Resource
+ private UserMapper userMapper;
+ @Resource
+ private GetLook getLook;
+ @Resource
+ private DeviceMapper deviceMapper;
+ @Resource
+ private DeviceInspectionRecordDetailsService deviceInspectionRecordDetailsService;
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧鐐规璁板綍
+ *
+ * @param page 褰撳墠椤电爜
+ */
+ @Override
+ public Result<IPage<DeviceInspectionRecord>> getDeviceInspectionRecordByPage(IPage page, DeviceInspectionRecordDto deviceInspectionRecordDto) {
+ IPage<DeviceInspectionRecord> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceInspectionRecordDto));
+ return Result.success(iPage);
+ }
+
+
+ /**
+ * 鏌ヨ鐐规璇︽儏
+ * @param inspectionRecordId
+ * @return
+ */
+ @Override
+ public Result getDeviceInspectionRecord(Integer inspectionRecordId) {
+ DeviceInspectionRecord deviceInspectionRecord = baseMapper.selectById(inspectionRecordId);
+ DeviceInspectionRecordDto dto = new DeviceInspectionRecordDto();
+ BeanUtils.copyProperties(deviceInspectionRecord, dto);
+ List<DeviceInspectionRecordDetails> list = deviceInspectionRecordDetailsService.list(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, inspectionRecordId));
+ dto.setDetails(list);
+ return Result.success(dto);
+ }
+
+ /**
+ * 鏂板璁惧鐐规璁板綍
+ *
+ * @param deviceInspectionRecord 璁惧鐐规璁板綍
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Result addDeviceInspectionRecord(DeviceInspectionRecordDto deviceInspectionRecord) {
+
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ User user = userMapper.selectById(userId);
+ deviceInspectionRecord.setRecorderId(userId);
+ deviceInspectionRecord.setRecorder(user.getName());
+
+ // 鏌ヨ澶嶆牳浜篿d
+ if (deviceInspectionRecord.getReviewerId() != null) {
+ User reviewUser = userMapper.selectById(deviceInspectionRecord.getReviewerId());
+ deviceInspectionRecord.setReviewer(reviewUser.getName());
+ }
+ this.saveOrUpdate(deviceInspectionRecord);
+ if (CollectionUtils.isNotEmpty(deviceInspectionRecord.getDetails())) {
+ for (DeviceInspectionRecordDetails detail : deviceInspectionRecord.getDetails()) {
+ detail.setInspectionRecordId(deviceInspectionRecord.getInspectionRecordId());
+ }
+ deviceInspectionRecordDetailsService.saveBatch( deviceInspectionRecord.getDetails());
+ }
+
+ return Result.success();
+ }
+
+
+ /**
+ * 淇敼璁惧鐐规璁板綍
+ *
+ * @param deviceInspectionRecord 璁惧鐐规璁板綍
+ */
+ @Override
+ public Result updateInspectionRecordAndDetails(DeviceInspectionRecordDto deviceInspectionRecord) {
+ // 鏌ヨ澶嶆牳浜篿d
+ if (deviceInspectionRecord.getReviewerId() != null) {
+ User reviewUser = userMapper.selectById(deviceInspectionRecord.getReviewerId());
+ deviceInspectionRecord.setReviewer(reviewUser.getName());
+ }
+ this.saveOrUpdate(deviceInspectionRecord);
+ deviceInspectionRecordDetailsService.remove(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, deviceInspectionRecord.getInspectionRecordId()));
+ if (CollectionUtils.isNotEmpty(deviceInspectionRecord.getDetails())) {
+ for (DeviceInspectionRecordDetails detail : deviceInspectionRecord.getDetails()) {
+ detail.setInspectionRecordId(deviceInspectionRecord.getInspectionRecordId());
+ }
+ deviceInspectionRecordDetailsService.saveBatch( deviceInspectionRecord.getDetails());
+ }
+ return Result.success();
+ }
+
+ /**
+ * 鍒犻櫎璁惧鐐规璁板綍
+ *
+ * @param deviceInspectionRecord 璁惧鐐规璁板綍
+ */
+ @Override
+ public Result deleteDeviceInspectionRecordOrDetails(DeviceInspectionRecordDto deviceInspectionRecord) {
+ this.removeById(deviceInspectionRecord);
+ deviceInspectionRecordDetailsService.remove(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, deviceInspectionRecord.getInspectionRecordId()));
+ return Result.success();
+ }
+
+ /**
+ * 澶嶆牳鐐规璁板綍
+ * @param dto
+ * @return
+ */
+ @Override
+ public Result reviewDeviceInspectionRecord(DeviceInspectionRecordDto dto) {
+ LambdaUpdateWrapper<DeviceInspectionRecord> wrapper = Wrappers.<DeviceInspectionRecord>lambdaUpdate()
+ .eq(DeviceInspectionRecord::getInspectionRecordId, dto.getInspectionRecordId())
+ .set(DeviceInspectionRecord::getStatus, dto.getStatus())
+ .set(DeviceInspectionRecord::getReviewerRemark, dto.getReviewerRemark());
+
+ // 涓�0娓呴櫎瀹℃牳浜�
+ if (dto.getStatus().equals(0)) {
+ wrapper.set(DeviceInspectionRecord::getReviewerId, null)
+ .set(DeviceInspectionRecord::getReviewer, null);
+ }
+ this.update(wrapper);
+
+ return Result.success();
+ }
+
+ /**
+ * 瀵煎嚭璁惧鐐规璁板綍
+ *
+ * @param deviceInspectionRecordId 璁惧鐐规璁板綍id
+ * @param response 鍝嶅簲
+ */
+ @Override
+ public Result exportDeviceInspectionRecord(Integer deviceInspectionRecordId, HttpServletResponse response) {
+ DeviceInspectionRecord deviceInspectionRecord = baseMapper.selectById(deviceInspectionRecordId);
+ DeviceInspectionRecordDto deviceInspectionRecordDto = new DeviceInspectionRecordDto();
+ BeanUtils.copyProperties(deviceInspectionRecord, deviceInspectionRecordDto);
+ DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ deviceInspectionRecordDto.setTestDateString(deviceInspectionRecord.getTestDate() == null ? null : deviceInspectionRecord.getTestDate().format(dateFormatter));
+
+ List<DeviceInspectionRecordDetails> deviceInspectionRecordDetailsList = deviceInspectionRecordDetailsService.list(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, deviceInspectionRecordId));
+
+ Integer deviceId = deviceInspectionRecord.getDeviceId();
+
+ Device device = deviceMapper.selectById(deviceId);
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-inspection-record.docx");
+ Configure configure = Configure.builder()
+ .bind("deviceInspectionRecordDetailsList", new HackLoopTableRenderPolicy())
+ .build();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceInspectionRecord", deviceInspectionRecordDto);
+ put("deviceInspectionRecordDetailsList", deviceInspectionRecordDetailsList);
+ put("device", device);
+ put("recorderUrl", UserUtils.getFinalUserSignatureUrl(deviceInspectionRecordDto.getRecorderId()));
+ put("reviewerUrl", UserUtils.getFinalUserSignatureUrl(deviceInspectionRecordDto.getReviewerId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ device.getDeviceName() + "鐐规璁板綍", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ return Result.success();
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceLeaseServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceLeaseServiceImpl.java
new file mode 100644
index 0000000..1fac358
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceLeaseServiceImpl.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceLeaseMapper;
+import com.yuanchu.mom.pojo.DeviceLease;
+import com.yuanchu.mom.service.IDeviceLeaseService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DeviceLeaseServiceImpl extends ServiceImpl<DeviceLeaseMapper, DeviceLease> implements IDeviceLeaseService {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceLogServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceLogServiceImpl.java
new file mode 100644
index 0000000..91e1365
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceLogServiceImpl.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceLogMapper;
+import com.yuanchu.mom.pojo.DeviceLog;
+import com.yuanchu.mom.service.IDeviceLogService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DeviceLogServiceImpl extends ServiceImpl<DeviceLogMapper, DeviceLog> implements IDeviceLogService {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenanceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenanceImpl.java
new file mode 100644
index 0000000..a40ab69
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenanceImpl.java
@@ -0,0 +1,97 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.excel.DeviceMaintenanceExport;
+import com.yuanchu.mom.mapper.DeviceMaintenanceMapper;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.pojo.DeviceMaintenance;
+import com.yuanchu.mom.service.DeviceMaintenanceService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.List;
+
+@Service
+public class DeviceMaintenanceImpl extends ServiceImpl<DeviceMaintenanceMapper, DeviceMaintenance> implements DeviceMaintenanceService {
+ @Resource
+ DeviceMaintenanceMapper deviceMaintenanceMapper;
+ @Resource
+ private DeviceMapper deviceMapper;
+
+ @Override
+ public IPage<DeviceMaintenance> getDeviceMaintenancePage(Page page, Integer deviceId, String deviceNumber) {
+ return baseMapper.selectPage(page, Wrappers.<DeviceMaintenance>lambdaQuery()
+ .eq(DeviceMaintenance::getDeviceId, deviceId)
+ .like(DeviceMaintenance::getDeviceNumber, deviceNumber));
+ }
+
+ @Override
+ public List<DeviceMaintenanceExport> deviceMaintenanceExport(Integer deviceId) {
+ return baseMapper.deviceMaintenanceExport(deviceId);
+ }
+
+ @Override
+ public void exportMaintenanceRecord(Integer deviceId, HttpServletResponse response) {
+ // 鏌ヨcnas璁惧缁翠慨璁板綍
+ List<DeviceMaintenance> deviceMaintenanceList = baseMapper.selectList(Wrappers.<DeviceMaintenance>lambdaQuery()
+ .eq(DeviceMaintenance::getDeviceId, deviceId)
+ .select(DeviceMaintenance::getDate,
+ DeviceMaintenance::getDeviceNumber,
+ DeviceMaintenance::getDeviceName,
+ DeviceMaintenance::getManagementNumber,
+ DeviceMaintenance::getContent,
+ DeviceMaintenance::getName,
+ DeviceMaintenance::getComments));
+
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/maintenance-records.docx");
+ Configure configure = Configure.builder()
+ .bind("deviceMaintenanceList", new HackLoopTableRenderPolicy())
+ .build();
+ // 鑾峰彇璁惧 鍚嶇О 鍜� 缂栧彿
+ DeviceMaintenance deviceMaintenance = deviceMaintenanceList.get(0);
+ String deviceName = deviceMaintenance.getDeviceName();
+ String managementNumber = deviceMaintenance.getManagementNumber();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceMaintenanceList", deviceMaintenanceList);
+ put("deviceName", deviceName);
+ put("managementNumber", managementNumber);
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "璁惧缁存姢淇濆吇璁板綍", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+// @Override
+// public List<DeviceMaintenance> getDeviceMaintenanceParam() {
+// Map<String, Object> map = new HashMap<>();
+// map.put("head",PrintChina.printChina(DeviceMaintenance.class));
+// IPage<DeviceMaintenance> iPage = deviceMaintenanceMapper.getDeviceMaintenanceParam(page, QueryWrappers.queryWrappers(itemParameter));
+// map.put("body",page);
+// return deviceMaintenanceMapper.getDeviceMaintenanceParam();
+// }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java
new file mode 100644
index 0000000..ee45b41
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenancePlanDetailsServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceMaintenancePlanDetailsMapper;
+import com.yuanchu.mom.pojo.DeviceMaintenancePlanDetails;
+import com.yuanchu.mom.service.DeviceMaintenancePlanDetailsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝璇︽儏琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:11:46
+ */
+@Service
+public class DeviceMaintenancePlanDetailsServiceImpl extends ServiceImpl<DeviceMaintenancePlanDetailsMapper, DeviceMaintenancePlanDetails> implements DeviceMaintenancePlanDetailsService {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenancePlanServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenancePlanServiceImpl.java
new file mode 100644
index 0000000..81ca79f
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMaintenancePlanServiceImpl.java
@@ -0,0 +1,239 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceMaintenancePlanDetailsDto;
+import com.yuanchu.mom.dto.DeviceMaintenancePlanDto;
+import com.yuanchu.mom.mapper.DeviceMaintenancePlanDetailsMapper;
+import com.yuanchu.mom.mapper.DeviceMaintenancePlanMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.DeviceMaintenancePlan;
+import com.yuanchu.mom.pojo.DeviceMaintenancePlanDetails;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.DeviceMaintenancePlanDetailsService;
+import com.yuanchu.mom.service.DeviceMaintenancePlanService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.UserUtils;
+import com.yuanchu.mom.utils.QueryWrappers;
+import com.yuanchu.mom.vo.Result;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 璁惧淇濆吇璁″垝琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 06:10:52
+ */
+@Service
+public class DeviceMaintenancePlanServiceImpl extends ServiceImpl<DeviceMaintenancePlanMapper, DeviceMaintenancePlan> implements DeviceMaintenancePlanService {
+
+ @Resource
+ private DeviceMaintenancePlanDetailsService deviceMaintenancePlanDetailsService;
+
+ @Resource
+ private DeviceMaintenancePlanDetailsMapper deviceMaintenancePlanDetailsMapper;
+
+ @Resource
+ private GetLook getLook;
+
+ @Resource
+ private UserMapper userMapper;
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧淇濆吇璁″垝
+ *
+ * @param page
+ * @return
+ */
+ @Override
+ public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ IPage<DeviceMaintenancePlan> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceMaintenancePlanDto));
+ return Result.success(iPage);
+ }
+
+ /**
+ * 鏂板璁惧淇濆吇璁″垝
+ *
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @Override
+ public Result addMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ User user = userMapper.selectById(userId);
+ deviceMaintenancePlanDto.setCompilerId(userId);
+ deviceMaintenancePlanDto.setCompiler(user.getName());
+ deviceMaintenancePlanDto.setDatePreparation(LocalDateTime.now());
+
+ // 鏌ヨ瀹℃牳浜篿d
+ if (deviceMaintenancePlanDto.getAuditId() != null) {
+ User auditUser = userMapper.selectById(deviceMaintenancePlanDto.getAuditId());
+ deviceMaintenancePlanDto.setAudit(auditUser.getName());
+ }
+ this.saveOrUpdate(deviceMaintenancePlanDto);
+
+ // 璇︽儏璧嬪�煎苟淇濆瓨
+ List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails = deviceMaintenancePlanDto.getDeviceMaintenancePlanDetails();
+ if (CollectionUtils.isNotEmpty(deviceMaintenancePlanDetails)) { // 璇︽儏涓嶄负绌�
+ List<DeviceMaintenancePlanDetails> collect = deviceMaintenancePlanDetails.stream().map(deviceMaintenancePlanDetail -> { // 閬嶅巻璇︽儏
+ deviceMaintenancePlanDetail.setDeviceId(deviceMaintenancePlanDto.getDeviceId()); // 璁惧ID
+ deviceMaintenancePlanDetail.setMaintenancePlanId(deviceMaintenancePlanDto.getMaintenancePlanId()); // 淇濆吇璁″垝ID
+ DeviceMaintenancePlanDetails planDetails = new DeviceMaintenancePlanDetails();
+ BeanUtils.copyProperties(deviceMaintenancePlanDetail, planDetails);
+ return planDetails;
+ }).collect(Collectors.toList());
+ deviceMaintenancePlanDetailsService.saveBatch(collect);
+ }
+
+ return Result.success();
+ }
+
+ /**
+ * 淇敼璁惧淇濆吇璁″垝
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @Override
+ public Result updateMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ // 鏌ヨ瀹℃牳浜篿d
+ if (deviceMaintenancePlanDto.getAuditId() != null) {
+ User auditUser = userMapper.selectById(deviceMaintenancePlanDto.getAuditId());
+ deviceMaintenancePlanDto.setAudit(auditUser.getName());
+ }
+ this.saveOrUpdate(deviceMaintenancePlanDto);
+
+ // 鍒犻櫎鍘熸湰鐨勮鎯�
+ deviceMaintenancePlanDetailsService.remove(Wrappers.<DeviceMaintenancePlanDetails>lambdaQuery().eq(DeviceMaintenancePlanDetails::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId()));
+ // 璇︽儏璧嬪�煎苟淇濆瓨
+ List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetails = deviceMaintenancePlanDto.getDeviceMaintenancePlanDetails();
+ if (CollectionUtils.isNotEmpty(deviceMaintenancePlanDetails)) { // 璇︽儏涓嶄负绌�
+ List<DeviceMaintenancePlanDetails> collect = deviceMaintenancePlanDetails.stream().map(deviceMaintenancePlanDetail -> { // 閬嶅巻璇︽儏
+ deviceMaintenancePlanDetail.setDeviceId(deviceMaintenancePlanDto.getDeviceId()); // 璁惧ID
+ deviceMaintenancePlanDetail.setMaintenancePlanId(deviceMaintenancePlanDto.getMaintenancePlanId()); // 淇濆吇璁″垝ID
+ DeviceMaintenancePlanDetails planDetails = new DeviceMaintenancePlanDetails();
+ BeanUtils.copyProperties(deviceMaintenancePlanDetail, planDetails);
+ return planDetails;
+ }).collect(Collectors.toList());
+ deviceMaintenancePlanDetailsService.saveBatch(collect);
+ }
+ return Result.success();
+ }
+
+ /**
+ * 鍒犻櫎璁惧淇濆吇璁″垝
+ *
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @Override
+ public Result deleteMaintenancePlan(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ this.removeById(deviceMaintenancePlanDto);
+ deviceMaintenancePlanDetailsService.remove(Wrappers.<DeviceMaintenancePlanDetails>lambdaQuery().eq(DeviceMaintenancePlanDetails::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId()));
+ return Result.success();
+ }
+
+ /**
+ * 瀵煎嚭璁惧淇濆吇璁″垝
+ *
+ * @param maintenancePlanId 璁惧淇濆吇璁″垝id
+ * @param response 鍝嶅簲
+ */
+ @Override
+ public Result exportDeviceMaintenancePlanDto(Integer maintenancePlanId, HttpServletResponse response) {
+ // 鏌ヨ璁惧淇濆吇璁″垝
+ DeviceMaintenancePlanDto deviceMaintenancePlan = baseMapper.selectMaintenancePlanById(maintenancePlanId);
+
+ // 鏌ヨ璁惧淇濆吇璁″垝璇︽儏
+ List<DeviceMaintenancePlanDetailsDto> deviceMaintenancePlanDetailsDtoList = deviceMaintenancePlanDetailsMapper.deviceInspectionRecordDetailsList(maintenancePlanId);
+ // 璁剧疆搴忓彿
+ deviceMaintenancePlanDetailsDtoList.forEach(deviceInspectionRecordDetails -> {
+ deviceInspectionRecordDetails.setIndex(deviceMaintenancePlanDetailsDtoList.indexOf(deviceInspectionRecordDetails) + 1);
+ });
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/maintenance-plan.docx");
+ Configure configure = Configure.builder()
+ .bind("deviceMaintenancePlanDetailsDtoList", new HackLoopTableRenderPolicy())
+ .build();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceMaintenancePlan", deviceMaintenancePlan);
+ put("deviceMaintenancePlanDetailsDtoList", deviceMaintenancePlanDetailsDtoList);
+ // 缂栧埗浜虹鍚嶅湴鍧�
+ put("compilerUrl", UserUtils.getFinalUserSignatureUrl(deviceMaintenancePlan.getCompilerId()));
+ // 瀹℃牳浜虹鍚嶅湴鍧�
+ put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceMaintenancePlan.getAuditId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "璁惧淇濆吇璁″垝琛�", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ return Result.success();
+ }
+
+ /**
+ * 鏌ヨ璁惧淇濆吇璁″垝璇︽儏
+ *
+ * @param maintenancePlanId 璁惧淇濆吇璁″垝id
+ */
+ @Override
+ public Result<DeviceMaintenancePlanDto> getMaintenancePlanDetail(Integer maintenancePlanId) {
+ // 鏌ヨ璁惧淇濆吇璁″垝
+ DeviceMaintenancePlan deviceMaintenancePlan = baseMapper.selectById(maintenancePlanId);
+ // 鏌ヨ璇︽儏
+ DeviceMaintenancePlanDto deviceMaintenancePlanDto = new DeviceMaintenancePlanDto();
+ BeanUtils.copyProperties(deviceMaintenancePlan, deviceMaintenancePlanDto);
+ deviceMaintenancePlanDto.setDeviceMaintenancePlanDetails(deviceMaintenancePlanDetailsMapper.deviceInspectionRecordDetailsList(maintenancePlanId));
+ return Result.success(deviceMaintenancePlanDto);
+ }
+
+ /**
+ * 瀹℃牳璁惧淇濆吇璁″垝
+ *
+ * @param deviceMaintenancePlanDto 璁惧淇濆吇璁″垝
+ */
+ @Override
+ public Result reviewMaintenancePlanStatus(DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
+ LambdaUpdateWrapper<DeviceMaintenancePlan> wrapper = Wrappers.<DeviceMaintenancePlan>lambdaUpdate()
+ .eq(DeviceMaintenancePlan::getMaintenancePlanId, deviceMaintenancePlanDto.getMaintenancePlanId())
+ .set(DeviceMaintenancePlan::getStatus, deviceMaintenancePlanDto.getStatus()) // 瀹℃牳鐘舵��
+ .set(DeviceMaintenancePlan::getAuditRemark, deviceMaintenancePlanDto.getAuditRemark());// 瀹℃牳澶囨敞
+
+ // 涓�0娓呴櫎瀹℃牳浜�
+ if (deviceMaintenancePlanDto.getStatus().equals(0)) {
+ wrapper.set(DeviceMaintenancePlan::getAuditId, null)
+ .set(DeviceMaintenancePlan::getAudit, null);
+ }
+ this.update(wrapper); // 鏇存柊
+ return Result.success();
+ }
+
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricRecordServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricRecordServiceImpl.java
new file mode 100644
index 0000000..51cc359
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricRecordServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceMetricRecordMapper;
+import com.yuanchu.mom.pojo.DeviceMetricRecord;
+import com.yuanchu.mom.service.DeviceMetricRecordService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧鏍″噯 - 鏍″噯璁板綍 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-27 10:20:01
+ */
+@Service
+public class DeviceMetricRecordServiceImpl extends ServiceImpl<DeviceMetricRecordMapper, DeviceMetricRecord> implements DeviceMetricRecordService {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricServiceImpl.java
new file mode 100644
index 0000000..0de34e0
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricServiceImpl.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceMetricMapper;
+import com.yuanchu.mom.pojo.DeviceMetric;
+import com.yuanchu.mom.service.IDeviceMetricService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DeviceMetricServiceImpl extends ServiceImpl<DeviceMetricMapper, DeviceMetric> implements IDeviceMetricService {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricsCopyServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricsCopyServiceImpl.java
new file mode 100644
index 0000000..3aba303
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceMetricsCopyServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceMetricsCopyMapper;
+import com.yuanchu.mom.pojo.DeviceMetricsCopy;
+import com.yuanchu.mom.service.DeviceMetricsCopyService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧鏍″噯 - 鏍″噯璁板綍 - 鏍″噯鏉$洰 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-27 10:20:11
+ */
+@Service
+public class DeviceMetricsCopyServiceImpl extends ServiceImpl<DeviceMetricsCopyMapper, DeviceMetricsCopy> implements DeviceMetricsCopyService {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceRecordServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceRecordServiceImpl.java
new file mode 100644
index 0000000..f043077
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceRecordServiceImpl.java
@@ -0,0 +1,142 @@
+package com.yuanchu.mom.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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceRecordDto;
+import com.yuanchu.mom.dto.DeviceRecordExportWord;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.mapper.DeviceRecordMapper;
+import com.yuanchu.mom.mapper.LaboratoryMapper;
+import com.yuanchu.mom.pojo.Device;
+import com.yuanchu.mom.pojo.DeviceRecord;
+import com.yuanchu.mom.service.DeviceRecordService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * cnas璁惧浣跨敤璁板綍琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-21 11:06:47
+ */
+@Service
+public class DeviceRecordServiceImpl extends ServiceImpl<DeviceRecordMapper, DeviceRecord> implements DeviceRecordService {
+ @Resource
+ private LaboratoryMapper laboratoryMapper;
+ @Resource
+ private DeviceMapper deviceMapper;
+ @Resource
+ private GetLook getLook;
+
+ @Override
+ public IPage<DeviceRecordDto> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber) {
+ Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("deviceRecordPage");
+ Integer userId = null;
+ if (map1.get("look") == 1) {
+ //涓汉
+ userId = map1.get("userId");
+ }
+
+ return baseMapper.deviceRecordPage(deviceId, page, sampleCode, managementNumber, userId);
+ }
+
+
+ @Override
+ public void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response) {
+ // 鏌ヨcnas璁惧浣跨敤璁板綍
+ List<DeviceRecord> deviceList = baseMapper.selectExportList(deviceId, exportDate);
+ // 璁惧淇℃伅
+ Device device = deviceMapper.selectById(deviceId);
+
+
+ // 鏌ヨ璁惧灞炰簬鍝釜瀹為獙瀹�
+ String laboratoryName = "瑁呭绾跨紗瀹為獙瀹�";
+
+ // 瑕佹槧灏勫埌word鏁版嵁
+ List<DeviceRecordExportWord> deviceExportList = new ArrayList<>();
+ // deviceExportList 璧嬪��
+ for (DeviceRecord deviceRecord : deviceList) {
+ // 澶勭悊璁惧 寮�濮嬩娇鐢ㄦ椂闂� 鍜� 缁撴潫鏃堕棿
+ String startTime = "";
+ String endTime = "";
+ String operationDate = "";
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+ if (deviceRecord.getUseStartDate() != null) {
+ startTime = deviceRecord.getUseStartDate().format(formatter);
+ endTime = deviceRecord.getUseEndDate().format(formatter);
+ String[] startTimeSplit = startTime.split(" ");
+ String[] endTimeSplit = endTime.split(" ");
+ startTime = startTimeSplit[1];
+ if (startTimeSplit[0].equals(endTimeSplit[0])) {
+ endTime = endTimeSplit[1];
+ } else {
+ endTime = endTimeSplit[0] + '\n' + endTimeSplit[1];
+ }
+ DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy.M.d");
+ operationDate = deviceRecord.getUseStartDate().format(formatter2);
+ }
+ // 澶勭悊浣跨敤鍓嶅拰浣跨敤鍚�
+ String useBeforeString = deviceRecord.getUseBefore() == 0? "寮傚父" : "鑹ソ";
+ String useAfterString = deviceRecord.getUseAfter() == 0 ? "寮傚父" : "鑹ソ";
+
+ DeviceRecordExportWord deviceRecordExportWord = new DeviceRecordExportWord();
+ // 杩涜璧嬪��
+ BeanUtils.copyProperties(deviceRecord, deviceRecordExportWord);
+ deviceRecordExportWord.setUseBeforeString(useBeforeString); // 浣跨敤鍓�
+ deviceRecordExportWord.setUseAfterString(useAfterString); // 浣跨敤鍚�
+ deviceRecordExportWord.setOperationDate(operationDate); // 璁惧鎿嶄綔鏃ユ湡
+ deviceRecordExportWord.setUseStartDateString(startTime); // 寮�濮嬫椂闂�
+ deviceRecordExportWord.setUseEndDateString(endTime); // 缁撴潫鏃堕棿
+ deviceExportList.add(deviceRecordExportWord);
+ }
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/use-record.docx");
+ Configure configure = Configure.builder()
+ .bind("useRecord", new HackLoopTableRenderPolicy())
+ .build();
+ String deviceName = device.getDeviceName();
+ String managementNumber = device.getManagementNumber();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("useRecord", deviceExportList);
+ put("deviceName", deviceName);
+ put("managementNumber", managementNumber);
+ put("laboratory", laboratoryName);
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "浠櫒浣跨敤璁板綍琛�", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceScrappedServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceScrappedServiceImpl.java
new file mode 100644
index 0000000..ffccb7d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceScrappedServiceImpl.java
@@ -0,0 +1,181 @@
+package com.yuanchu.mom.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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceScrappedDto;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.mapper.DeviceScrappedMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.Device;
+import com.yuanchu.mom.pojo.DeviceScrapped;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.DeviceScrappedService;
+import com.yuanchu.mom.utils.UserUtils;
+import com.yuanchu.mom.utils.QueryWrappers;
+import com.yuanchu.mom.vo.Result;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.util.HashMap;
+
+/**
+ * <p>
+ * 璁惧鎶ュ簾鐢宠琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-17 01:53:47
+ */
+@Service
+public class DeviceScrappedServiceImpl extends ServiceImpl<DeviceScrappedMapper, DeviceScrapped> implements DeviceScrappedService {
+
+ @Resource
+ private DeviceMapper deivceMapper;
+ @Resource
+ private UserMapper userMapper;
+ @Resource
+ private GetLook getLook;
+
+
+ /**
+ * 璁惧鎶ュ簾鐢宠鍒楄〃
+ *
+ * @param deviceScrapped
+ * @return
+ */
+ @Override
+ public IPage<DeviceScrapped> pageDeviceScrapped(Page page, DeviceScrapped deviceScrapped) {
+ return baseMapper.pageDeviceScrapped(page, QueryWrappers.queryWrappers(deviceScrapped));
+ }
+
+ /**
+ * 鏂板璁惧鎶ュ簾鐢宠
+ *
+ * @return
+ */
+ @Override
+ public boolean addDeviceScrapped(DeviceScrapped deviceScrapped) {
+ DeviceScrapped scrapped = new DeviceScrapped();
+ // 褰撳墠鐧诲綍鐢ㄦ埛淇℃伅鍜岄儴闂�
+ User user = userMapper.selectById(getLook.selectPowerByMethodAndUserId(null).get("userId"));
+ switch (deviceScrapped.getFlowType()) {
+ case 0:
+ BeanUtils.copyProperties(deviceScrapped, scrapped);
+ // 鐢宠
+ scrapped.setReasonsForScrap(deviceScrapped.getReasonsForScrap());
+ scrapped.setApplicantUserId(user.getId());
+ scrapped.setApplicantUser(user.getName());
+ scrapped.setApplicantDate(LocalDate.now());
+
+ // 澶勭悊浜轰俊鎭�
+ User departmentHeadUser = userMapper.selectById(deviceScrapped.getDepartmentHeadUserId());
+ scrapped.setApplicantUserId(departmentHeadUser.getId());
+ scrapped.setApplicantUser(departmentHeadUser.getName());
+
+ baseMapper.insert(scrapped);
+ break;
+ case 1:
+ scrapped.setScrappedId(deviceScrapped.getScrappedId());
+ // 鐢宠閮ㄩ棬璐熻矗浜烘剰瑙�
+ scrapped.setDepartmentHeadOpinion(deviceScrapped.getDepartmentHeadOpinion());
+ scrapped.setDepartmentHeadDate(LocalDate.now());
+
+ // 璁¢噺瀹や俊鎭�
+ User meteringRoomUser = userMapper.selectById(deviceScrapped.getMeteringRoomUserId());
+ scrapped.setMeteringRoomUserId(meteringRoomUser.getId());
+ scrapped.setMeteringRoomUser(meteringRoomUser.getName());
+
+ baseMapper.updateById(scrapped);
+ break;
+ case 2:
+ scrapped.setScrappedId(deviceScrapped.getScrappedId());
+ // 璁¢噺瀹ゆ剰瑙�
+ scrapped.setMeteringRoomOpinion(deviceScrapped.getMeteringRoomOpinion());
+ scrapped.setMeteringRoomDate(LocalDate.now());
+
+ // 鎵瑰噯浜轰俊鎭�
+ User approverUser = userMapper.selectById(deviceScrapped.getApproverUserId());
+ scrapped.setApproverUserId(approverUser.getId());
+ scrapped.setApproverUser(approverUser.getName());
+
+ baseMapper.updateById(scrapped);
+ break;
+ case 3:
+ scrapped.setScrappedId(deviceScrapped.getScrappedId());
+ //鎵瑰噯浜�
+ scrapped.setApproverOpinion(deviceScrapped.getApproverOpinion());
+ scrapped.setApproverDate(LocalDate.now());
+ scrapped.setIsFinish(1);
+ baseMapper.updateById(scrapped);
+ break;
+ }
+
+ return true;
+ }
+
+ /**
+ * 瀵煎嚭璁惧鎶ュ簾鐢宠
+ *
+ * @param scrappedId 璁惧鎶ュ簾鐢宠id
+ * @param response 鍝嶅簲
+ * @return 缁撴灉
+ */
+ @Override
+ public Result<?> exportDeviceScrapped(Integer scrappedId, HttpServletResponse response) {
+ // 鏌ヨ鎶ュ簾鏁版嵁
+ DeviceScrappedDto deviceScrapped = baseMapper.selectDeviceScrappedById(scrappedId);
+ if (deviceScrapped == null) {
+ return Result.fail("璁惧鎶ュ簾鐢宠涓嶅瓨鍦�");
+ }
+ Device device = null;
+ if (deviceScrapped.getDeviceId() != null) {
+ device = deivceMapper.selectById(deviceScrapped.getDeviceId());
+ device = device == null ? new Device() : device;
+ }
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-scrapped.docx");
+ Configure configure = Configure.builder()
+ .build();
+ Device finalDevice = device;
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceScrapped", deviceScrapped);
+ put("device", finalDevice);
+ // 鐢宠浜虹鍚�
+ put("applicantUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getApplicantUserId()));
+ // 閮ㄩ棬璐熻矗浜虹鍚�
+ put("headUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getDepartmentHeadUserId()));
+ // 璁¢噺瀹ょ鍚�
+ put("metrologyRoomUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getMeteringRoomUserId()));
+ // 鎵瑰噯浜虹鍚�
+ put("approverUrl", UserUtils.getFinalUserSignatureUrl(deviceScrapped.getApproverUserId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String deviceName = device.getDeviceName() == null ? "" : device.getDeviceName();
+ String fileName = URLEncoder.encode(
+ deviceName + "璁惧鎶ュ簾鐢宠", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ return Result.success();
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
index 616b615..d6abe8c 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
@@ -62,12 +62,12 @@
}
@Override
- public Map<String, Object> selectDeviceParameter(Page page, DeviceDto itemParameter) {
+ public Map<String, Object> selectDeviceParameter(Page page, DeviceDto itemParameter,Boolean laboratoryNameIsNull) {
Map<String, Object> map = new HashMap<>();
map.put("head", PrintChina.printChina(DeviceDto.class));
Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectDeviceParameter");
if (map1.get("look") == 1) itemParameter.setCreateUser(map1.get("userId"));
- IPage<DeviceDto> iPage = deviceMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(itemParameter));
+ IPage<DeviceDto> iPage = deviceMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(itemParameter),laboratoryNameIsNull);
map.put("body", iPage);
return map;
}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceStateServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceStateServiceImpl.java
new file mode 100644
index 0000000..fad8214
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceStateServiceImpl.java
@@ -0,0 +1,159 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
+import com.yuanchu.mom.dto.DeviceStateDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.DeviceStateMapper;
+import com.yuanchu.mom.mapper.LaboratoryMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.DeviceState;
+import com.yuanchu.mom.pojo.Laboratory;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.DeviceStateService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+
+/**
+ * <p>
+ * 璁惧鍋滅敤/鍚敤 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-09-26 09:51:40
+ */
+@Service
+public class DeviceStateServiceImpl extends ServiceImpl<DeviceStateMapper, DeviceState> implements DeviceStateService {
+
+ @Resource
+ private LaboratoryMapper laboratoryMapper;
+
+ @Resource
+ private UserMapper userMapper;
+
+ @Value("${file.path}")
+ private String imgUrl;
+
+ @Override
+ public IPage<DeviceStateDto> getDeviceStatePage(Integer deviceId, Page page, String processNumber) {
+ return baseMapper.getDeviceStatePage(deviceId, page, processNumber);
+ }
+
+ @Override
+ public void exportDeviceStatus(Integer deviceId, String processNumber, HttpServletResponse response) {
+ // 鏍规嵁娴佺▼缂栧彿 鏌ヨcnas璁惧鐘舵��
+ DeviceStateDto deviceStateDto = baseMapper.getDeviceStatePage(deviceId,new Page<DeviceStateDto>(1,1), processNumber).getRecords().get(0);
+
+ // 瀵规椂闂磋繘琛屼慨鏀�
+ DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�");
+ deviceStateDto.setSubmitDateString(deviceStateDto.getSubmitDate() != null ? deviceStateDto.getSubmitDate().format(format) : " 骞� 鏈� 鏃�");
+ deviceStateDto.setDepartmentDateString(deviceStateDto.getDepartmentDate() != null? deviceStateDto.getDepartmentDate().format(format) : " 骞� 鏈� 鏃�");
+ deviceStateDto.setMeasuringRoomDateString(deviceStateDto.getMeasuringRoomDate() != null? deviceStateDto.getMeasuringRoomDate().format(format) : " 骞� 鏈� 鏃�");
+ deviceStateDto.setApprovalDateString(deviceStateDto.getApprovalDate() != null? deviceStateDto.getApprovalDate().format(format) : " 骞� 鏈� 鏃�");
+
+ // 鏌ヨ璁惧灞炰簬鍝釜瀹為獙瀹�
+ String laboratoryName;
+ String largeCategory = deviceStateDto.getLargeCategory();
+ if (StringUtils.isNotBlank(largeCategory)) {
+ largeCategory = largeCategory.substring(0, 1);
+ Laboratory laboratory = laboratoryMapper.selectOne(Wrappers.<Laboratory>lambdaQuery()
+ .eq(Laboratory::getLaboratoryNumber, largeCategory)
+ .select(Laboratory::getLaboratoryName));
+ laboratoryName = laboratory.getLaboratoryName();
+ } else {
+ laboratoryName = "";
+ }
+
+ //todo: 璁惧鐘舵�佹煡璇㈢鍚嶅湴鍧� 鏆傛椂浜哄悕鏌ヨ
+ //鑾峰彇鐢宠浜虹殑绛惧悕鍦板潃
+ String applicantUrl = null;
+ if (deviceStateDto.getSubmitOperatingPersonnel() != null) {
+ applicantUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery()
+ .eq(User::getName, deviceStateDto.getSubmitOperatingPersonnel()))
+ .getSignatureUrl();
+ if (StringUtils.isBlank(applicantUrl)) {
+ throw new ErrorException("鎵句笉鍒扮敵璇蜂汉鐨勭鍚�");
+ }
+ }
+
+ //鑾峰彇閮ㄩ棬璐熻矗浜虹殑绛惧悕鍦板潃
+ String headOfDepartmentUrl = null;
+ if (deviceStateDto.getDepartmentNextPesponsible() != null) {
+ headOfDepartmentUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery()
+ .eq(User::getName, deviceStateDto.getDepartmentNextPesponsible()))
+ .getSignatureUrl();
+ if (StringUtils.isBlank(headOfDepartmentUrl)) {
+ throw new ErrorException("鎵句笉鍒伴儴闂ㄨ礋璐d汉鐨勭鍚�");
+ }
+ }
+
+ //鑾峰彇璁¢噺瀹ゅ娴嬩汉鐨勭鍚嶅湴鍧�
+ String measurementRoomUrl = null;
+ if (deviceStateDto.getMeasuringRoomNextPesponsible() != null) {
+ measurementRoomUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery()
+ .eq(User::getName, deviceStateDto.getMeasuringRoomNextPesponsible()))
+ .getSignatureUrl();
+ if (StringUtils.isBlank(measurementRoomUrl)) {
+ throw new ErrorException("鎵句笉鍒拌閲忓澶嶆祴浜虹殑绛惧悕");
+ }
+ }
+
+ //鑾峰彇鎵瑰噯浜虹殑绛惧悕鍦板潃
+ String approvedUrl = null;
+ if (deviceStateDto.getApprovalNextPesponsible() != null) {
+ approvedUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery()
+ .eq(User::getName, deviceStateDto.getApprovalNextPesponsible()))
+ .getSignatureUrl();
+ if (StringUtils.isBlank(approvedUrl)) {
+ throw new ErrorException("鎵句笉鍒版壒鍑嗕汉鐨勭鍚�");
+ }
+ }
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-status.docx");
+ Configure configure = Configure.builder()
+ .build();
+ String finalApplicantUrl = applicantUrl; // 鐢宠浜虹殑绛惧悕鍦板潃
+ String finalHeadOfDepartmentUrl = headOfDepartmentUrl; // 閮ㄩ棬璐熻矗浜虹殑绛惧悕鍦板潃
+ String finalMeasurementRoomUrl = measurementRoomUrl; // 璁¢噺瀹ゅ娴嬩汉鐨勭鍚嶅湴鍧�
+ String finalApprovedUrl = approvedUrl; // 鎵瑰噯浜虹殑绛惧悕鍦板潃
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceStateDto", deviceStateDto);
+ put("submitOperatingPersonnelUrl", StringUtils.isNotBlank(finalApplicantUrl) ? Pictures.ofLocal(imgUrl + "/" + finalApplicantUrl).create() : null);
+ put("departmentNextPesponsibleUrl", StringUtils.isNotBlank(finalHeadOfDepartmentUrl) ? Pictures.ofLocal(imgUrl + "/" + finalHeadOfDepartmentUrl).create() : null);
+ put("measuringRoomNextPesponsibleUrl", StringUtils.isNotBlank(finalMeasurementRoomUrl) ? Pictures.ofLocal(imgUrl + "/" + finalMeasurementRoomUrl).create() : null);
+ put("approvalNextPesponsibleUrl", StringUtils.isNotBlank(finalApprovedUrl) ? Pictures.ofLocal(imgUrl + "/" + finalApprovedUrl).create() : null);
+ put("laboratory", laboratoryName);
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "璁惧缁存姢淇濆吇璁板綍", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceTraceabilityManagementDetailsServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceTraceabilityManagementDetailsServiceImpl.java
new file mode 100644
index 0000000..a4a3903
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceTraceabilityManagementDetailsServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DeviceTraceabilityManagementDetailsMapper;
+import com.yuanchu.mom.pojo.DeviceTraceabilityManagementDetails;
+import com.yuanchu.mom.service.DeviceTraceabilityManagementDetailsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕鎯呰〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:58
+ */
+@Service
+public class DeviceTraceabilityManagementDetailsServiceImpl extends ServiceImpl<DeviceTraceabilityManagementDetailsMapper, DeviceTraceabilityManagementDetails> implements DeviceTraceabilityManagementDetailsService {
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceTraceabilityManagementServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceTraceabilityManagementServiceImpl.java
new file mode 100644
index 0000000..86ef8b6
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceTraceabilityManagementServiceImpl.java
@@ -0,0 +1,244 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.DeviceTraceabilityManagementDetailsDto;
+import com.yuanchu.mom.dto.DeviceTraceabilityManagementDto;
+import com.yuanchu.mom.mapper.DeviceTraceabilityManagementDetailsMapper;
+import com.yuanchu.mom.mapper.DeviceTraceabilityManagementMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.DeviceTraceabilityManagement;
+import com.yuanchu.mom.pojo.DeviceTraceabilityManagementDetails;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.DeviceTraceabilityManagementDetailsService;
+import com.yuanchu.mom.service.DeviceTraceabilityManagementService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.UserUtils;
+import com.yuanchu.mom.utils.QueryWrappers;
+import com.yuanchu.mom.vo.Result;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 璁惧閲忓�兼函婧愯鍒掕〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-20 02:27:44
+ */
+@Service
+public class DeviceTraceabilityManagementServiceImpl extends ServiceImpl<DeviceTraceabilityManagementMapper, DeviceTraceabilityManagement> implements DeviceTraceabilityManagementService {
+
+ @Resource
+ private DeviceTraceabilityManagementDetailsService deviceTraceabilityManagementDetailsService;
+
+ @Resource
+ private DeviceTraceabilityManagementDetailsMapper deviceTraceabilityManagementDetailsMapper;
+
+ @Resource
+ private GetLook getLook;
+
+ @Resource
+ private UserMapper userMapper;
+
+ /**
+ * 鍒嗛〉鏌ヨ璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param page
+ * @return
+ */
+ @Override
+ public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(IPage page, DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ IPage<DeviceTraceabilityManagement> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceTraceabilityManagementDto));
+ return Result.success(iPage);
+ }
+
+
+ /**
+ * 鏂板璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param deviceTraceabilityManagementDto 璁惧閲忓�兼函婧愯鍒�
+ */
+ @Override
+ public Result addTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ User user = userMapper.selectById(userId);
+ deviceTraceabilityManagementDto.setCompilerId(userId);
+ deviceTraceabilityManagementDto.setCompiler(user.getName());
+ deviceTraceabilityManagementDto.setDatePreparation(LocalDateTime.now());
+
+ // 鏌ヨ瀹℃牳浜篿d
+ if (deviceTraceabilityManagementDto.getAuditId() != null) {
+ User auditUser = userMapper.selectById(deviceTraceabilityManagementDto.getAuditId());
+ deviceTraceabilityManagementDto.setAudit(auditUser.getName());
+ }
+ this.saveOrUpdate(deviceTraceabilityManagementDto);
+
+ // 璇︽儏璧嬪�煎苟淇濆瓨
+ List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetails = deviceTraceabilityManagementDto.getDeviceTraceabilityManagementDetails();
+ if (CollectionUtils.isNotEmpty(deviceTraceabilityManagementDetails)) { // 璇︽儏涓嶄负绌�
+ List<DeviceTraceabilityManagementDetails> collect = deviceTraceabilityManagementDetails.stream().map(detailsDto -> {
+ detailsDto.setTraceabilityManagementId(deviceTraceabilityManagementDto.getTraceabilityManagementId()); // 閲忓�兼函婧愯鍒扞D
+ DeviceTraceabilityManagementDetails details = new DeviceTraceabilityManagementDetails();
+ BeanUtils.copyProperties(detailsDto, details);
+ return details;
+ }).collect(Collectors.toList());
+ deviceTraceabilityManagementDetailsService.saveBatch(collect);
+ }
+
+ return Result.success();
+ }
+
+ /**
+ * 淇敼璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param deviceTraceabilityManagementDto 璁惧閲忓�兼函婧愯鍒�
+ */
+ @Override
+ public Result updateTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ // 鏌ヨ瀹℃牳浜篿d
+ if (deviceTraceabilityManagementDto.getAuditId() != null) {
+ User auditUser = userMapper.selectById(deviceTraceabilityManagementDto.getAuditId());
+ deviceTraceabilityManagementDto.setAudit(auditUser.getName());
+ }
+ this.saveOrUpdate(deviceTraceabilityManagementDto);
+
+ // 鍒犻櫎鍘熸湰鐨勮鎯�
+ deviceTraceabilityManagementDetailsService.remove(Wrappers.<DeviceTraceabilityManagementDetails>lambdaQuery().eq(DeviceTraceabilityManagementDetails::getTraceabilityManagementId, deviceTraceabilityManagementDto.getTraceabilityManagementId()));
+ // 璇︽儏璧嬪�煎苟淇濆瓨
+ List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetails = deviceTraceabilityManagementDto.getDeviceTraceabilityManagementDetails();
+ if (CollectionUtils.isNotEmpty(deviceTraceabilityManagementDetails)) { // 璇︽儏涓嶄负绌�
+ List<DeviceTraceabilityManagementDetails> collect = deviceTraceabilityManagementDetails.stream().map(detailsDto -> {
+ detailsDto.setTraceabilityManagementId(deviceTraceabilityManagementDto.getTraceabilityManagementId()); // 閲忓�兼函婧愯鍒扞D
+ DeviceTraceabilityManagementDetails details = new DeviceTraceabilityManagementDetails();
+ BeanUtils.copyProperties(detailsDto, details);
+ return details;
+ }).collect(Collectors.toList());
+ deviceTraceabilityManagementDetailsService.saveBatch(collect);
+ }
+ return Result.success();
+ }
+
+ /**
+ * 鍒犻櫎璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param deviceTraceabilityManagementDto 璁惧閲忓�兼函婧愯鍒�
+ */
+ @Override
+ public Result deleteTraceabilityManagement(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ this.removeById(deviceTraceabilityManagementDto);
+ deviceTraceabilityManagementDetailsService.remove(Wrappers.<DeviceTraceabilityManagementDetails>lambdaQuery().eq(DeviceTraceabilityManagementDetails::getTraceabilityManagementId, deviceTraceabilityManagementDto.getTraceabilityManagementId()));
+ return Result.success();
+ }
+
+ /**
+ * 鏌ヨ璁惧閲忓�兼函婧愯鍒掕鎯�
+ *
+ * @param traceabilityManagementId 璁惧閲忓�兼函婧愯鍒抜d
+ */
+ @Override
+ public Result<DeviceTraceabilityManagementDto> getTraceabilityManagementDetail(Integer traceabilityManagementId) {
+ // 鏌ヨ璁惧閲忓�兼函婧愯鍒�
+ DeviceTraceabilityManagement deviceTraceabilityManagement = baseMapper.selectById(traceabilityManagementId);
+ // 鏌ヨ璇︽儏
+ DeviceTraceabilityManagementDto deviceTraceabilityManagementDto = new DeviceTraceabilityManagementDto();
+ BeanUtils.copyProperties(deviceTraceabilityManagement, deviceTraceabilityManagementDto);
+ deviceTraceabilityManagementDto.setDeviceTraceabilityManagementDetails(deviceTraceabilityManagementDetailsMapper.deviceTraceabilityManagementDetailsList(traceabilityManagementId));
+ return Result.success(deviceTraceabilityManagementDto);
+ }
+
+ /**
+ * 瀹℃牳璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param deviceTraceabilityManagementDto 璁惧閲忓�兼函婧愯鍒�
+ */
+ @Override
+ public Result reviewTraceabilityManagementStatus(DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
+ Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+ User user = userMapper.selectById(userId);
+
+ LambdaUpdateWrapper<DeviceTraceabilityManagement> wrapper = Wrappers.<DeviceTraceabilityManagement>lambdaUpdate()
+ .eq(DeviceTraceabilityManagement::getTraceabilityManagementId, deviceTraceabilityManagementDto.getTraceabilityManagementId())
+ .set(DeviceTraceabilityManagement::getAuditDate, LocalDateTime.now())
+ .set(DeviceTraceabilityManagement::getAuditId, user.getId())
+ .set(DeviceTraceabilityManagement::getAudit, user.getName())
+ .set(DeviceTraceabilityManagement::getStatus, deviceTraceabilityManagementDto.getStatus()) // 瀹℃牳鐘舵��
+ .set(DeviceTraceabilityManagement::getAuditRemark, deviceTraceabilityManagementDto.getAuditRemark());// 瀹℃牳澶囨敞
+
+ // 涓�0娓呴櫎瀹℃牳浜�
+ if (deviceTraceabilityManagementDto.getStatus().equals(0)) {
+ wrapper.set(DeviceTraceabilityManagement::getAuditId, null)
+ .set(DeviceTraceabilityManagement::getAudit, null);
+ }
+ this.update(wrapper); // 鏇存柊
+ return Result.success();
+ }
+
+ /**
+ * 瀵煎嚭璁惧閲忓�兼函婧愯鍒�
+ *
+ * @param traceabilityManagementId 璁惧閲忓�兼函婧愯鍒抜d
+ */
+ @Override
+ public Result exportDeviceTraceabilityManagementDto(Integer traceabilityManagementId, HttpServletResponse response) {
+ // 鏌ヨ璁惧淇濆吇璁″垝
+ DeviceTraceabilityManagementDto deviceTraceabilityManagement = baseMapper.selectDeviceTraceabilityManagementById(traceabilityManagementId);
+
+ // 鏌ヨ璁惧淇濆吇璁″垝璇︽儏
+ List<DeviceTraceabilityManagementDetailsDto> deviceTraceabilityManagementDetailsDtoList = deviceTraceabilityManagementDetailsMapper.deviceTraceabilityManagementDetailsList(traceabilityManagementId);
+ // 璁剧疆搴忓彿
+ deviceTraceabilityManagementDetailsDtoList.forEach(deviceTraceabilityManagementDetails -> {
+ deviceTraceabilityManagementDetails.setIndex(deviceTraceabilityManagementDetailsDtoList.indexOf(deviceTraceabilityManagementDetails) + 1);
+ });
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/traceability-management-details.docx");
+ Configure configure = Configure.builder()
+ .bind("deviceTraceabilityManagementDetailsDtoList", new HackLoopTableRenderPolicy())
+ .build();
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("deviceTraceabilityManagement", deviceTraceabilityManagement);
+ put("deviceTraceabilityManagementDetailsDtoList", deviceTraceabilityManagementDetailsDtoList);
+ // 缂栧埗浜虹鍚嶅湴鍧�
+ put("compilerUrl", UserUtils.getFinalUserSignatureUrl(deviceTraceabilityManagement.getCompilerId()));
+ // 瀹℃牳浜虹鍚嶅湴鍧�
+ put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceTraceabilityManagement.getAuditId()));
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String finalFileName = deviceTraceabilityManagement.getFileName() == null ? "" : deviceTraceabilityManagement.getFileName() + "_";
+ String fileName = URLEncoder.encode(
+ finalFileName+ "璁惧閲忓�兼函婧愯鍒�", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ return Result.success();
+ }
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DocumentServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DocumentServiceImpl.java
new file mode 100644
index 0000000..ae2481d
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DocumentServiceImpl.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.DocumentDao;
+import com.yuanchu.mom.pojo.Document;
+import com.yuanchu.mom.service.DocumentService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DocumentServiceImpl extends ServiceImpl<DocumentDao, Document> implements DocumentService {
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentAcceptanceCheckServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentAcceptanceCheckServiceImpl.java
new file mode 100644
index 0000000..b2174e2
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentAcceptanceCheckServiceImpl.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.IncidentAcceptanceCheckMapper;
+import com.yuanchu.mom.pojo.IncidentAcceptanceCheck;
+import com.yuanchu.mom.service.IncidentAcceptanceCheckService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class IncidentAcceptanceCheckServiceImpl extends ServiceImpl<IncidentAcceptanceCheckMapper, IncidentAcceptanceCheck> implements IncidentAcceptanceCheckService {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentFileServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentFileServiceImpl.java
new file mode 100644
index 0000000..f7d37ab
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentFileServiceImpl.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.IncidentFileMapper;
+import com.yuanchu.mom.pojo.IncidentFile;
+import com.yuanchu.mom.service.IncidentFileService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class IncidentFileServiceImpl extends ServiceImpl<IncidentFileMapper, IncidentFile> implements IncidentFileService {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentInstallServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentInstallServiceImpl.java
new file mode 100644
index 0000000..1933426
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentInstallServiceImpl.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.IncidentInstallMapper;
+import com.yuanchu.mom.pojo.IncidentInstall;
+import com.yuanchu.mom.service.IncidentInstallService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class IncidentInstallServiceImpl extends ServiceImpl<IncidentInstallMapper, IncidentInstall> implements IncidentInstallService {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentReportServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentReportServiceImpl.java
new file mode 100644
index 0000000..8edf35b
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentReportServiceImpl.java
@@ -0,0 +1,187 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
+import com.yuanchu.mom.dto.IncidentReportAddDto;
+import com.yuanchu.mom.dto.IncidentReportExportWordDto;
+import com.yuanchu.mom.excel.IncidentReportExport;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.IncidentReportMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.numgen.NumberGenerator;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.service.*;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * <p>
+ * 璁惧楠屾敹娣诲姞楠屾敹瀛楁琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-09-19 03:54:49
+ */
+@Service
+//@AllArgsConstructor
+@Transactional(rollbackFor = Exception.class)
+public class IncidentReportServiceImpl extends ServiceImpl<IncidentReportMapper, IncidentReport> implements IncidentReportService {
+
+ private UserMapper userMapper;
+ private IncidentSparePartsService incidentSparePartsService;
+ private IncidentFileService incidentFileService;
+ private IncidentInstallService incidentInstallService;
+ private IncidentAcceptanceCheckService incidentAcceptanceCheckService;
+
+ private final NumberGenerator<IncidentReport> numberGenerator;
+
+ @Value("${file.path}")
+ private String imgUrl;
+
+ public IncidentReportServiceImpl(UserMapper userMapper, IncidentSparePartsService incidentSparePartsService, IncidentFileService incidentFileService, IncidentInstallService incidentInstallService, IncidentAcceptanceCheckService incidentAcceptanceCheckService, NumberGenerator<IncidentReport> numberGenerator) {
+ this.userMapper = userMapper;
+ this.incidentSparePartsService = incidentSparePartsService;
+ this.incidentFileService = incidentFileService;
+ this.incidentInstallService = incidentInstallService;
+ this.incidentAcceptanceCheckService = incidentAcceptanceCheckService;
+ this.numberGenerator = numberGenerator;
+ }
+
+ @Override
+ public void saveIncidentReportData(IncidentReportAddDto incidentReportAddDto) {
+ if (ObjectUtils.isEmpty(incidentReportAddDto.getProcessNumber())) {
+ String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
+ String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
+ String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-07FM " + month + "-" + year + month, IncidentReport::getProcessNumber);
+ incidentReportAddDto.setProcessNumber(processNumber);
+ }
+ this.saveOrUpdate(incidentReportAddDto);
+ // 澶囦欢纭List
+ if (ObjectUtils.isNotEmpty(incidentReportAddDto.getSparePartsConfirmationList())) {
+ incidentReportAddDto.getSparePartsConfirmationList().forEach(i -> i.setIncidentId(incidentReportAddDto.getId()));
+ incidentSparePartsService.saveOrUpdateBatch(incidentReportAddDto.getSparePartsConfirmationList());
+ }
+ // 鏂囦欢纭List
+ if (ObjectUtils.isNotEmpty(incidentReportAddDto.getFileClassConfirmationList())) {
+ incidentReportAddDto.getFileClassConfirmationList().forEach(i -> i.setIncidentId(incidentReportAddDto.getId()));
+ incidentFileService.saveOrUpdateBatch(incidentReportAddDto.getFileClassConfirmationList());
+ }
+ // 瀹夎楠屾敹璁板綍
+ if (ObjectUtils.isNotEmpty(incidentReportAddDto.getInstallationAcceptanceRecordList())) {
+ incidentReportAddDto.getInstallationAcceptanceRecordList().forEach(i -> i.setIncidentId(incidentReportAddDto.getId()));
+ incidentInstallService.saveOrUpdateBatch(incidentReportAddDto.getInstallationAcceptanceRecordList());
+ }
+ // 楠屾敹鏍告煡璁板綍
+ if (ObjectUtils.isNotEmpty(incidentReportAddDto.getAcceptanceCheckRecordList())) {
+ incidentReportAddDto.getAcceptanceCheckRecordList().forEach(i -> i.setIncidentId(incidentReportAddDto.getId()));
+ incidentAcceptanceCheckService.saveOrUpdateBatch(incidentReportAddDto.getAcceptanceCheckRecordList());
+ }
+ }
+
+ @Override
+ public IPage<IncidentReportAddDto> getByDeviceId(Integer deviceId, Page page, String processNumber) {
+ return baseMapper.getByDeviceId(page, deviceId, processNumber);
+ }
+
+ @Override
+ public void deleteIncidentReport(Integer id) {
+ baseMapper.deleteById(id);
+ incidentSparePartsService.remove(Wrappers.<IncidentSpareParts>lambdaQuery().eq(IncidentSpareParts::getIncidentId, id));
+ incidentFileService.remove(Wrappers.<IncidentFile>lambdaQuery().eq(IncidentFile::getIncidentId, id));
+ incidentInstallService.remove(Wrappers.<IncidentInstall>lambdaQuery().eq(IncidentInstall::getIncidentId, id));
+ incidentAcceptanceCheckService.remove(Wrappers.<IncidentAcceptanceCheck>lambdaQuery().eq(IncidentAcceptanceCheck::getIncidentId, id));
+ }
+
+ @Override
+ public IncidentReportAddDto getShowIncidentReport(Integer id) {
+ return baseMapper.getShowIncidentReport(id);
+ }
+
+ @Override
+ public void deleteIncidentReportAll(Integer sparePartsId, Integer fileId, Integer installId, Integer acceptanceCheckId) {
+ if (ObjectUtils.isNotEmpty(sparePartsId)) {
+ incidentSparePartsService.removeById(sparePartsId);
+ }
+ if (ObjectUtils.isNotEmpty(fileId)) {
+ incidentFileService.removeById(fileId);
+ }
+ if (ObjectUtils.isNotEmpty(installId)) {
+ incidentInstallService.removeById(installId);
+ }
+ if (ObjectUtils.isNotEmpty(acceptanceCheckId)) {
+ incidentAcceptanceCheckService.removeById(acceptanceCheckId);
+ }
+ }
+
+ @Override
+ public List<IncidentReportExport> incidentReportExport(Integer deviceId) {
+ return baseMapper.incidentReportExport(deviceId);
+ }
+
+ /**
+ * 瀵煎嚭楠屾敹鎶ュ憡
+ * @param deviceId 璁惧id
+ * @param processNumber 娴佺▼鍙�
+ * @param response 鍝嶅簲Word鏂囨。
+ */
+ @Override
+ public void acceptanceCertificateExport(Integer deviceId, String processNumber, HttpServletResponse response) {
+ IncidentReportExportWordDto incidentReport = baseMapper.acceptanceCertificateExport(deviceId, processNumber);
+
+ String submitOperatingPersonnel = incidentReport.getSubmitOperatingPersonnel();
+
+ String operatingPersonnelNameUrl = null;
+ if (submitOperatingPersonnel != null) {
+ operatingPersonnelNameUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery()
+ .eq(User::getName, submitOperatingPersonnel))
+ .getSignatureUrl();
+ if (StringUtils.isBlank(operatingPersonnelNameUrl)) {
+ throw new ErrorException("鎵句笉鍒扮敵璇蜂汉鐨勭鍚�");
+ }
+ }
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/incident-report.docx");
+ Configure configure = Configure.builder()
+ .build();
+ String fileOperatingPersonnelNameUrl = operatingPersonnelNameUrl;
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("incidentReport", incidentReport);
+ put("submitOperatingPersonnelUrl", StringUtils.isNotBlank(fileOperatingPersonnelNameUrl) ? Pictures.ofLocal( imgUrl + "/" + fileOperatingPersonnelNameUrl).create() : null);
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ "璁惧楠屾敹鎶ュ憡", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentSparePartsServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentSparePartsServiceImpl.java
new file mode 100644
index 0000000..45f0176
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/IncidentSparePartsServiceImpl.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.IncidentSparePartsMapper;
+import com.yuanchu.mom.pojo.IncidentSpareParts;
+import com.yuanchu.mom.service.IncidentSparePartsService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class IncidentSparePartsServiceImpl extends ServiceImpl<IncidentSparePartsMapper, IncidentSpareParts> implements IncidentSparePartsService {
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/InstructionServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/InstructionServiceImpl.java
new file mode 100644
index 0000000..6b90e5e
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/InstructionServiceImpl.java
@@ -0,0 +1,72 @@
+package com.yuanchu.mom.service.impl;
+
+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.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.InstructionDto;
+import com.yuanchu.mom.dto.OperationInstructionDto;
+import com.yuanchu.mom.mapper.InstructionMapper;
+import com.yuanchu.mom.numgen.NumberGenerator;
+import com.yuanchu.mom.pojo.Instruction;
+import com.yuanchu.mom.service.InstructionService;
+import com.yuanchu.mom.service.OperationInstructionService;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * <p>
+ * 浣滀笟鎸囧涔︽坊鍔犲彈鎺ф枃浠惰〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:29:18
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class InstructionServiceImpl extends ServiceImpl<InstructionMapper, Instruction> implements InstructionService {
+
+ @Autowired
+ private OperationInstructionService operationInstructionService;
+
+ @Autowired
+ private NumberGenerator<Instruction> numberGenerator;
+
+ @Autowired
+ private GetLook getLook;
+
+ @Override
+ public IPage<Instruction> pageByPageQueryOfHomeworkInstructions(Page page, OperationInstructionDto operationInstructionDto) {
+ return baseMapper.pageByPageQueryOfHomeworkInstructions(page, QueryWrappers.queryWrappers(operationInstructionDto));
+ }
+
+ @Override
+ public void newHomeworkGuidebookAdded(InstructionDto instructionDto) {
+ Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
+ if (ObjectUtils.isEmpty(instructionDto.getApplicationNumber())) {
+ String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
+ String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
+ String day = new SimpleDateFormat("dd", Locale.CHINESE).format(new Date());
+ String processNumber = numberGenerator.generateNumberWithPrefix(3, "WJSK" + year + month + day, Instruction::getApplicationNumber);
+ instructionDto.setApplicationNumber(processNumber);
+ }
+ saveOrUpdate(instructionDto);
+ if (ObjectUtils.isNotEmpty(instructionDto.getFeTempHumRecordList())) {
+ instructionDto.getFeTempHumRecordList().forEach(i -> {
+ i.setInstructionId(instructionDto.getId());
+ i.setUploader(map1.get("userId"));
+ i.setUpdateTime(LocalDateTime.now());
+ });
+ operationInstructionService.saveOrUpdateBatch(instructionDto.getFeTempHumRecordList());
+ }
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/OperationInstructionServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/OperationInstructionServiceImpl.java
new file mode 100644
index 0000000..4602127
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/OperationInstructionServiceImpl.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.OperationInstructionMapper;
+import com.yuanchu.mom.pojo.OperationInstruction;
+import com.yuanchu.mom.service.OperationInstructionService;
+import com.yuanchu.mom.vo.OperationInstructionVo;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧 - 浣滀笟鎸囧涔� 娣诲姞鍙楁帶鏂囦欢 瀛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-04 10:43:32
+ */
+@Service
+public class OperationInstructionServiceImpl extends ServiceImpl<OperationInstructionMapper, OperationInstruction> implements OperationInstructionService {
+
+ @Override
+ public List<OperationInstructionVo> homeworkGuidebookEditor(Integer instructionId) {
+ return baseMapper.homeworkGuidebookEditor(instructionId);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/QrShowServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/QrShowServiceImpl.java
new file mode 100644
index 0000000..be76ca6
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/QrShowServiceImpl.java
@@ -0,0 +1,218 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.yuanchu.mom.mapper.*;
+import com.yuanchu.mom.pojo.DeviceMetricRecord;
+import com.yuanchu.mom.service.CustomService;
+import com.yuanchu.mom.service.InsOrderService;
+import com.yuanchu.mom.service.ProductService;
+import com.yuanchu.mom.service.QrShowService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.Model;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.Duration;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.Objects;
+import java.util.Optional;
+
+@Service
+public class QrShowServiceImpl implements QrShowService {
+
+ @Autowired
+ private InsOrderService insOrderService;
+
+ @Autowired
+ private ProductService productService;
+
+ @Autowired
+ private CustomService customService;
+
+ @Autowired
+ private InsOrderMapper insOrderMapper;
+
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Autowired
+ private DeviceMetricRecordMapper deviceMetricRecordMapper;
+
+ @Autowired
+ private DeviceMaintenanceMapper deviceMaintenanceMapper;
+
+ @Autowired
+ private StructureItemParameterMapper structureItemParameterMapper;
+
+ @Value("${spring.profiles.active}")
+ private String active;
+
+ private String getIp(){
+ if(StringUtils.isNotBlank(active)){
+ return "prod".equals(active)?"https://zttx-lims.ztt.cn:8021/lims/":"http://114.132.189.42:8001/";
+ }
+ return "http://192.168.1.124:8001/lims/";
+ }
+
+ @Override
+ public void transformModelByType(Model model, String code, String type) {
+// if(StringUtils.isNotBlank(type)){
+// switch (type){
+// case "word":
+// InsOrder insOrder = insOrderService.getOne(Wrappers.<InsOrder>lambdaQuery()
+// .eq(InsOrder::getEntrustCode, code));
+// Product product = productService.getOne(Wrappers.<Product>lambdaQuery()
+// .eq(Product::getName, insOrder.getSample()));
+// String insOrderModel = productService.getWordQrModel(insOrder.getId());
+// Custom company = customService.getOne(Wrappers.<Custom>lambdaQuery()
+// .eq(Custom::getCompany, insOrder.getCompany()));
+// String orderType = insOrderMapper.getEnumLabelByValue(insOrder.getOrderType());
+// String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
+// model.addAttribute("entrustCode", code);
+// model.addAttribute("productName",product.getName());
+// model.addAttribute("productNameEn",product.getNameEn());
+// model.addAttribute("insOrderModel", insOrderModel);
+// model.addAttribute("company", company.getCompany());
+// model.addAttribute("companyEn", company.getCompanyEn());
+// model.addAttribute("getTime", insOrder.getExamineTime().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�")));
+// String getTimeEn = monthNames[insOrder.getExamineTime().getMonthValue() - 1] + " " + insOrder.getExamineTime().getDayOfMonth() + ", " + insOrder.getExamineTime().getYear();
+// model.addAttribute("getTimeEn", getTimeEn);
+// model.addAttribute("issuingDate", insOrder.getIssuingDate().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�")));
+// String issuingDateEn = monthNames[insOrder.getIssuingDate().getMonthValue() - 1] + " " + insOrder.getIssuingDate().getDayOfMonth() + ", " + insOrder.getIssuingDate().getYear();
+// model.addAttribute("issuingDateEn", issuingDateEn);
+// model.addAttribute("orderType", orderType);
+// model.addAttribute("orderTypeEn", insOrder.getOrderType());
+// break;
+// case "device":
+// //鏌ヨ璁惧涓昏〃淇℃伅
+// Device device = deviceMapper.selectOne(Wrappers.<Device>lambdaQuery().eq(Device::getManagementNumber, code));
+// if(!Objects.isNull(device)){
+// //鏌ヨ璁惧鏍″噯淇℃伅
+// DeviceMetricRecord calibrate = getDeviceMetricRecord(device.getId(), "calibrate");
+// //鏌ヨ璁惧鏍告煡淇℃伅
+// DeviceMetricRecord examine = getDeviceMetricRecord(device.getId(), "examine");
+// //鏌ヨ璁惧缁存姢璁板綍
+// DeviceMaintenance deviceMaintenance = Optional.ofNullable(deviceMaintenanceMapper.selectOne(Wrappers.<DeviceMaintenance>lambdaQuery()
+// .eq(DeviceMaintenance::getDeviceId, device.getId())
+// .orderByDesc(DeviceMaintenance::getId)
+// .last("limit 1"))).orElse(new DeviceMaintenance());
+// model.addAttribute("progress",calcDeviceNextCheckRatio(calibrate.getCalibrationDate(),calibrate.getNextCalibrationDate()));//璺濈涓嬫鏍″噯鏃ユ湡鐨勫ぉ鏁扮櫨鍒嗘瘮
+// model.addAttribute("deviceName",device.getDeviceName());//璁惧鍚嶇О
+// model.addAttribute("deviceCode",device.getManagementNumber());//璁惧缂栧彿
+// model.addAttribute("usedYears",calcUsedYears(device.getActivationDate()));//鍚敤鏃堕暱(骞�)
+// model.addAttribute("runStatus",device.getDeviceStatus());//璁惧杩愯鐘舵��
+// model.addAttribute("lastCalibrationDate",formatDate(calibrate.getCalibrationDate(),"yyyy-MM-dd"));//鏈�杩戞牎鍑嗘棩鏈�
+// model.addAttribute("nextCalibrationDate",formatDate(calibrate.getNextCalibrationDate(),"yyyy-MM-dd"));//涓嬫鏍″噯鏃ユ湡
+// String calibrateStatus = "0yes".equals(calibrate.getStatus())?"鍚堟牸":"1no".equals(calibrate.getStatus())?"涓嶅悎鏍�":"鍏朵粬";
+// model.addAttribute("calibrateStatus",Objects.isNull(calibrate.getCalibrationDate())?"":calibrateStatus);//鏍″噯鎬荤粨璁�
+// model.addAttribute("lastExamineDate",formatDate(examine.getCalibrationDate(),"yyyy-MM-dd"));//鏈�杩戞牳鏌ユ棩鏈�
+// model.addAttribute("nextExamineDate",formatDate(examine.getNextCalibrationDate(),"yyyy-MM-dd"));//涓嬫鏍告煡鏃ユ湡
+// String examineStatus = "0yes".equals(examine.getStatus())?"鍚堟牸":"1no".equals(examine.getStatus())?"涓嶅悎鏍�":"鍏朵粬";
+// model.addAttribute("examineStatus",Objects.isNull(examine.getCalibrationDate())?"":examineStatus);//鏍告煡鎬荤粨璁�
+// model.addAttribute("maintenanceDate",formatDate(deviceMaintenance.getDate(),"yyyy-MM-dd"));//鏈�杩戠淮鎶ゆ棩鏈�
+// model.addAttribute("nextMaintenanceDate",formatDate(deviceMaintenance.getNextDate(),"yyyy-MM-dd"));//涓嬫缁存姢鏃ユ湡
+// String maintenanceType = "";
+// if(!Objects.isNull(deviceMaintenance.getMaintenanceType())){
+// maintenanceType = 0==deviceMaintenance.getMaintenanceType()?"浣跨敤鍓嶇淮鎶�":"浣跨敤鍚庣淮鎶�";
+// }
+// model.addAttribute("maintenanceType",maintenanceType);//缁存姢鎬荤粨璁�
+// //娴嬮噺椤圭洰
+// String insProduct = "";
+// if(StringUtils.isNotBlank(device.getInsProductIds())){
+// String[] ids = device.getInsProductIds().split(",");
+// List<StructureItemParameter> parameters = structureItemParameterMapper.selectBatchIds(Arrays.asList(ids));
+// List<String> itemList = parameters.stream().map(StructureItemParameter::getInspectionItem).distinct().collect(Collectors.toList());
+// insProduct = String.join(",",itemList);
+// }
+// model.addAttribute("insProduct",insProduct);//娴嬮噺椤圭洰
+// model.addAttribute("fileName",calibrate.getSystemFileName());
+// model.addAttribute("downloadUrl",getIp()+"img/"+calibrate.getSystemFileName());
+// }
+// break;
+// }
+// }
+ }
+
+ /**
+ * 璁$畻鍚敤鏃堕暱
+ * @param activationDate
+ * @return
+ */
+ public double calcUsedYears(LocalDateTime activationDate) {
+ if(Objects.isNull(activationDate)){
+ return 0;
+ }
+ BigDecimal defDays = BigDecimal.valueOf(365);
+ BigDecimal usedDays = BigDecimal.valueOf(Duration.between(activationDate,LocalDateTime.now()).toDays());
+ return usedDays.divide(defDays,2,RoundingMode.HALF_UP).setScale(2,RoundingMode.HALF_UP).doubleValue();
+ }
+
+ /**
+ * 璁$畻璺濈涓嬫鏍″噯鏃ユ湡鐨勫ぉ鏁扮櫨鍒嗘瘮
+ * @param startDate
+ * @param endDate
+ * @return
+ */
+ public double calcDeviceNextCheckRatio(Date startDate, Date endDate){
+ if(Objects.isNull(startDate) || Objects.isNull(endDate)){
+ return 0;
+ }
+ LocalDateTime startLocalDate = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+ LocalDateTime endLocalDate = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+ long totalDays = Duration.between(startLocalDate, endLocalDate).toDays();
+ long usedDays = Duration.between(startLocalDate, LocalDateTime.now()).toDays();
+ BigDecimal calcVal = BigDecimal.valueOf(usedDays).divide(BigDecimal.valueOf(totalDays),2,RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
+ if(calcVal.compareTo(BigDecimal.ZERO)<0){
+ calcVal = BigDecimal.ZERO;
+ }else if(calcVal.compareTo(BigDecimal.valueOf(100))>0){
+ calcVal = BigDecimal.valueOf(100);
+ }
+ return calcVal.doubleValue();
+ }
+
+ /**
+ * 鏌ヨ璁惧鏍″噯/鏍告煡璁板綍
+ * @param deviceId
+ * @param type
+ * @return
+ */
+ public DeviceMetricRecord getDeviceMetricRecord(int deviceId,String type){
+ return Optional.ofNullable(
+ deviceMetricRecordMapper.selectOne(Wrappers.<DeviceMetricRecord>lambdaQuery()
+ .eq(DeviceMetricRecord::getDeviceId, deviceId)
+ .eq(DeviceMetricRecord::getType, type)
+ .orderByDesc(DeviceMetricRecord::getCreateTime)
+ .last("limit 1"))).orElse(new DeviceMetricRecord());
+ }
+
+ /**
+ * 鏍煎紡鍖栨棩鏈�
+ * @return
+ */
+ public String formatDate(Date date,String formatter){
+ if(Objects.isNull(date)){
+ return "";
+ }
+ LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+ return localDateTime.format(DateTimeFormatter.ofPattern(formatter));
+ }
+ /**
+ * 鏍煎紡鍖栨棩鏈�
+ * @return
+ */
+ public String formatDate(LocalDate date,String formatter){
+ if(Objects.isNull(date)){
+ return "";
+ }
+ return date.format(DateTimeFormatter.ofPattern(formatter));
+ }
+
+
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/ReservationServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/ReservationServiceImpl.java
new file mode 100644
index 0000000..b3746a6
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/ReservationServiceImpl.java
@@ -0,0 +1,122 @@
+package com.yuanchu.mom.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+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.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.dto.DeviceDto;
+import com.yuanchu.mom.dto.ReservationDto;
+import com.yuanchu.mom.mapper.DeviceMapper;
+import com.yuanchu.mom.mapper.ReservationMapper;
+import com.yuanchu.mom.pojo.Reservation;
+import com.yuanchu.mom.service.DataConfigService;
+import com.yuanchu.mom.service.ReservationService;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+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.stream.Collectors;
+
+/**
+ * <p>
+ * 璧勬簮棰勫畾鏂板缓棰勫畾琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author baomidou
+ * @since 2024-09-14
+ */
+@Service
+public class ReservationServiceImpl extends ServiceImpl<ReservationMapper, Reservation> implements ReservationService {
+
+ @Autowired
+ private GetLook getLook;
+
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Autowired
+ private ReservationMapper reservationMapper;
+
+ @Autowired
+ private DataConfigService dataConfigService;
+
+ @Override
+ public Map<String, Object> selectDeviceParameter(Page page, DeviceDto itemParameter, Boolean laboratoryNameIsNull, String starttime, String endtime) {
+ ArrayList<String> dateTextList = new ArrayList<>();
+ if (StringUtils.isNoneEmpty(starttime)&&StringUtils.isNoneEmpty(endtime)){
+ LocalDate startDate = LocalDate.parse(starttime, DateTimeFormatter.ISO_LOCAL_DATE);
+ LocalDate endDate = LocalDate.parse(endtime, DateTimeFormatter.ISO_LOCAL_DATE);
+ while (!startDate.isAfter(endDate)) {
+ dateTextList.add(startDate.toString());
+ startDate = startDate.plusDays(1);
+ }
+ }
+ LambdaQueryWrapper<Reservation> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.between(Reservation::getReservationTime,starttime,endtime);
+ List<Reservation> reservations = reservationMapper.selectList(lambdaQueryWrapper);
+ HashMap dates = new HashMap<String, Integer>();
+
+ Map<Integer, List<Reservation>> deviceIdcollect = reservations.stream().collect(Collectors.groupingBy(Reservation::getDeviceId));
+ for (Integer deviceId : deviceIdcollect.keySet()) {
+ List<Reservation> deviceIdList = deviceIdcollect.get(deviceId);
+ Map<String, List<Reservation>> collect = deviceIdList.stream().collect(Collectors.groupingBy(Reservation::getReservationTime));
+ for (String date : collect.keySet()) {
+ List<Reservation> reservations1 = collect.get(date);
+ Map<String, List<Reservation>> collect1 = reservations1.stream().collect(Collectors.groupingBy(Reservation::getSpecificTime));
+ for (String s : collect1.keySet()) {
+ if (!(dates.containsKey(deviceId + date + s))) {
+ dates.put(deviceId + date + s, collect1.get(s).size());
+ }
+ }
+ }
+ }
+
+
+
+ Map<String, Object> map = new HashMap<>();
+ map.put("head", PrintChina.printChina(DeviceDto.class));
+ Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectDeviceParameter");
+ if (map1.get("look") == 1) itemParameter.setCreateUser(map1.get("userId"));
+ IPage<DeviceDto> iPage = deviceMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(itemParameter), laboratoryNameIsNull);
+ List<DeviceDto> records = iPage.getRecords();
+ ArrayList<JSONObject> datas = new ArrayList<>();
+
+ String [] dateArrays={"09:00-12:00","13:00-18:00", "18:00-22:00"};
+ for (DeviceDto record : records) {
+ for (int i = 0; i < dateArrays.length; i++) {
+ String dateArray = dateArrays[i];
+ JSONObject temp = JSON.parseObject(JSON.toJSONString(record));
+ temp.put("time", dateArray);
+ JSONArray dataArray = new JSONArray();
+ for (String date : dateTextList) {
+ JSONObject dateObject = new JSONObject();
+ dateObject.put("date", date);
+ dateObject.put("value", dates.containsKey(record.getId()+date + dateArray) ? dates.get(record.getId()+date + dateArray) : 0);
+ dataArray.add(dateObject);
+ }
+ temp.put("dateList", dataArray);
+ datas.add(temp);
+ }
+ }
+ map.put("body", datas);
+ return map;
+ }
+
+
+ @Override
+ public List<ReservationDto> selectReservationParameterPage(String deviceId, String reservationTime, String specificTime) {
+ return reservationMapper.selectReservationParameterPage(Integer.parseInt(deviceId), reservationTime, specificTime);
+ }
+}
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/vo/OperationInstructionVo.java b/cnas-server/src/main/java/com/yuanchu/mom/vo/OperationInstructionVo.java
new file mode 100644
index 0000000..fa12c42
--- /dev/null
+++ b/cnas-server/src/main/java/com/yuanchu/mom/vo/OperationInstructionVo.java
@@ -0,0 +1,17 @@
+package com.yuanchu.mom.vo;
+
+import com.yuanchu.mom.pojo.OperationInstruction;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class OperationInstructionVo extends OperationInstruction {
+ @ApiModelProperty("绠$悊缂栧彿")
+ private String deviceNumber;
+
+ @ApiModelProperty("鍨嬪彿")
+ private String deviceModel;
+
+ @ApiModelProperty("璁惧鍚嶇О")
+ private String deviceName;
+}
diff --git a/cnas-server/src/main/resources/mapper/DeviceAcceptanceFileMapper.xml b/cnas-server/src/main/resources/mapper/DeviceAcceptanceFileMapper.xml
new file mode 100644
index 0000000..796ec3e
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceAcceptanceFileMapper.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.yuanchu.mom.mapper.DeviceAcceptanceFileMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceAcceptanceFile">
+ <id column="acceptance_file_id" property="acceptanceFileId" />
+ <result column="acceptance_id" property="acceptanceId" />
+ <result column="type" property="type" />
+ <result column="file_url" property="fileUrl" />
+ <result column="file_name" property="fileName" />
+ <result column="create_user" property="createUser" />
+ <result column="create_time" property="createTime" />
+ <result column="update_user" property="updateUser" />
+ <result column="update_time" property="updateTime" />
+ </resultMap>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceAcceptanceMapper.xml b/cnas-server/src/main/resources/mapper/DeviceAcceptanceMapper.xml
new file mode 100644
index 0000000..a2668ab
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceAcceptanceMapper.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.yuanchu.mom.mapper.DeviceAcceptanceMapper">
+
+ <!-- 璁惧楠屾敹鍒楄〃 -->
+ <select id="pageDeviceAcceptance" resultType="com.yuanchu.mom.pojo.DeviceAcceptance">
+ select * from (
+ select *
+ from device_acceptance
+ order by create_time desc
+ ) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceAccidentReportMapper.xml b/cnas-server/src/main/resources/mapper/DeviceAccidentReportMapper.xml
new file mode 100644
index 0000000..80f7fb3
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceAccidentReportMapper.xml
@@ -0,0 +1,29 @@
+<?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.yuanchu.mom.mapper.DeviceAccidentReportMapper">
+
+ <!-- 璁惧浜嬫晠鎶ュ憡鍒楄〃 -->
+ <select id="pageDeviceAccidentReport" resultType="com.yuanchu.mom.pojo.DeviceAccidentReport">
+ select * from (
+ select *
+ from device_accident_report
+ order by create_time desc
+ ) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+ <select id="selectDeviceAccidentReportById" resultType="com.yuanchu.mom.dto.DeviceAccidentReportDto">
+ select
+ d.*,
+ date_format(d.accident_date,'%Y-%m-%d') accidentDateStr, -- 鏃堕棿
+ date_format(d.report_date,'%Y-%m-%d') reportDateStr, -- 鎶ュ憡浜哄~鍐欐椂闂�
+ date_format(d.assessor_date,'%Y-%m-%d') assessorDateStr, -- 璇勪及浜哄~鍐欐椂闂�
+ date_format(d.department_head_date,'%Y-%m-%d') departmentHeadDateStr, -- 閮ㄩ棬璐熻矗浜哄~鍐欐椂闂�
+ date_format(d.technical_director_date,'%Y-%m-%d') technicalDirectorDateStr, -- 鎶�鏈礋璐d汉濉啓鏃堕棿
+ date_format(d.director_head_date,'%Y-%m-%d') directorHeadDateStr -- 涓讳换濉啓鏃堕棿
+ from device_accident_report d
+ where d.accident_report_id = #{accidentReportId}
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceBorrowMapper.xml b/cnas-server/src/main/resources/mapper/DeviceBorrowMapper.xml
new file mode 100644
index 0000000..684da3c
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceBorrowMapper.xml
@@ -0,0 +1,46 @@
+<?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.yuanchu.mom.mapper.DeviceBorrowMapper">
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceBorrow">
+ <id column="id" property="id"/>
+ <result column="process_number" property="processNumber"/>
+ <result column="device_id" property="deviceId"/>
+ <result column="unify_number" property="unifyNumber"/>
+ <result column="recipient_user" property="recipientUser"/>
+ <result column="recipient_state" property="recipientState"/>
+ <result column="recipient_time" property="recipientTime"/>
+ <result column="submit_user" property="submitUser"/>
+ <result column="create_time" property="createTime"/>
+ <result column="now_state" property="nowState"/>
+ <result column="now_user" property="nowUser"/>
+ <result column="url" property="url"/>
+ <result column="file_name" property="fileName"/>
+ <result column="next_user" property="nextUser"/>
+ <result column="submit_operation_user" property="submitOperationUser"/>
+ <result column="submit_operation_time" property="submitOperationTime"/>
+ <result column="reback_user" property="rebackUser"/>
+ <result column="reback_time" property="rebackTime"/>
+ <result column="receive_state" property="receiveState"/>
+ <result column="device_user" property="deviceUser"/>
+ <result column="note" property="note"/>
+ <result column="receive_operation_user" property="receiveOperationUser"/>
+ <result column="receive_operation_time" property="receiveOperationTime"/>
+ </resultMap>
+ <select id="deviceBorrowPage" resultType="com.yuanchu.mom.pojo.DeviceBorrow">
+ select * from (
+ select db.*,device_name
+ from device_borrow db
+ left join `center-lims`.device on db.device_id=device.id
+ )a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+ <select id="getDeviceBorrowBydeviceId" resultType="com.yuanchu.mom.pojo.DeviceBorrow">
+ select db.*,device_name
+ from device_borrow db
+ left join `center-lims`.device on db.device_id=device.id
+ where device_id=#{deviceId}
+ </select>
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceBreakdownMaintenanceMapper.xml b/cnas-server/src/main/resources/mapper/DeviceBreakdownMaintenanceMapper.xml
new file mode 100644
index 0000000..996a7ae
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceBreakdownMaintenanceMapper.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.yuanchu.mom.mapper.DeviceBreakdownMaintenanceMapper">
+
+ <!--璁惧鏁呴殰缁翠慨鍒楄〃-->
+ <select id="pageDeviceBreakdownMaintenance" resultType="com.yuanchu.mom.pojo.DeviceBreakdownMaintenance">
+ select * from (
+ select *
+ from device_breakdown_maintenance
+ order by create_time desc
+ ) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceCalibrationPlanDetailMapper.xml b/cnas-server/src/main/resources/mapper/DeviceCalibrationPlanDetailMapper.xml
new file mode 100644
index 0000000..14d1b99
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceCalibrationPlanDetailMapper.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.yuanchu.mom.mapper.DeviceCalibrationPlanDetailMapper">
+
+ <!-- 璁惧鏍″噯璁″垝璇︽儏鍒楄〃 -->
+ <select id="pageDeviceCalibrationPlanDetail" resultType="com.yuanchu.mom.pojo.DeviceCalibrationPlanDetail">
+ select * from (
+ select *
+ from device_calibration_plan_detail
+ order by create_time desc
+ ) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceCalibrationPlanMapper.xml b/cnas-server/src/main/resources/mapper/DeviceCalibrationPlanMapper.xml
new file mode 100644
index 0000000..af97d5a
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceCalibrationPlanMapper.xml
@@ -0,0 +1,20 @@
+<?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.yuanchu.mom.mapper.DeviceCalibrationPlanMapper">
+
+ <!-- 璁惧鏍″噯璁″垝鍒楄〃 -->
+ <select id="pageDeviceCalibrationPlan" resultType="com.yuanchu.mom.dto.DeviceCalibrationPlanDto">
+ select *
+ from (select cqm.*,
+ u1.name write_name,
+ u3.name ratify_name
+ from device_calibration_plan cqm
+ left join user u1 on u1.id = cqm.write_user_id
+ left join user u3 on u3.id = cqm.ratify_user_id
+ order by cqm.create_time desc) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceExaminePlanDetailsMapper.xml b/cnas-server/src/main/resources/mapper/DeviceExaminePlanDetailsMapper.xml
new file mode 100644
index 0000000..6518609
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceExaminePlanDetailsMapper.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.yuanchu.mom.mapper.DeviceExaminePlanDetailsMapper">
+
+
+ <!--璁惧鏍告煡璁″垝璇︽儏鍒楄〃-->
+ <select id="pageDeviceExaminePlanDetail" resultType="com.yuanchu.mom.pojo.DeviceExaminePlanDetails">
+ select * from (
+ select *
+ from device_examine_plan_details
+ order by check_time asc
+ ) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceExaminePlanMapper.xml b/cnas-server/src/main/resources/mapper/DeviceExaminePlanMapper.xml
new file mode 100644
index 0000000..dd974fd
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceExaminePlanMapper.xml
@@ -0,0 +1,33 @@
+<?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.yuanchu.mom.mapper.DeviceExaminePlanMapper">
+
+ <!-- 璁惧鏍告煡璁″垝鍒楄〃 -->
+ <select id="deviceExaminePlanDetailsMapper" resultType="com.yuanchu.mom.dto.DeviceExaminePlanDto">
+ select *
+ from (select cqm.*,
+ u1.name write_name,
+ u3.name ratify_name
+ from device_examine_plan cqm
+ left join user u1 on u1.id = cqm.write_user_id
+ left join user u3 on u3.id = cqm.ratify_user_id
+ order by cqm.create_time desc) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+ <select id="selectExamineExaminePlanDto" resultType="com.yuanchu.mom.dto.DeviceExaminePlanDto">
+ select
+ cqm.*,
+ date_format(cqm.write_time, '%Y-%m-%d') writeTimeStr,
+ date_format(cqm.ratify_time, '%Y-%m-%d') ratifyTimeStr,
+ date_format(cqm.create_time, '%Y') year,
+ u1.name write_name,
+ u3.name ratify_name
+ from device_examine_plan cqm
+ left join user u1 on u1.id = cqm.write_user_id
+ left join user u3 on u3.id = cqm.ratify_user_id
+ where cqm.plan_id = #{deviceExaminePlanId}
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceExamineRecordContrastDetailsMapper.xml b/cnas-server/src/main/resources/mapper/DeviceExamineRecordContrastDetailsMapper.xml
new file mode 100644
index 0000000..056d18a
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceExamineRecordContrastDetailsMapper.xml
@@ -0,0 +1,22 @@
+<?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.yuanchu.mom.mapper.DeviceExamineRecordContrastDetailsMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceExamineRecordContrastDetails">
+ <id column="record_contrast_details_id" property="recordContrastDetailsId" />
+ <result column="record_contrast_id" property="recordContrastId" />
+ <result column="check_items" property="checkItems" />
+ <result column="indication_a" property="indicationA" />
+ <result column="indication_b" property="indicationB" />
+ <result column="indication_c" property="indicationC" />
+ <result column="d_value" property="dValue" />
+ <result column="deviation" property="deviation" />
+ <result column="determine" property="determine" />
+ <result column="create_user" property="createUser" />
+ <result column="create_time" property="createTime" />
+ <result column="update_user" property="updateUser" />
+ <result column="update_time" property="updateTime" />
+ </resultMap>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceExamineRecordContrastMapper.xml b/cnas-server/src/main/resources/mapper/DeviceExamineRecordContrastMapper.xml
new file mode 100644
index 0000000..4f4d7d6
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceExamineRecordContrastMapper.xml
@@ -0,0 +1,39 @@
+<?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.yuanchu.mom.mapper.DeviceExamineRecordContrastMapper">
+
+ <!-- 鏌ヨ鏍告煡瀵规瘮璁板綍 -->
+ <select id="getExamineRecordContrast" resultType="com.yuanchu.mom.dto.DeviceExamineRecordContrastDto">
+ select derc.*,
+ d1.device_name aDeviceName,
+ d1.management_number aDeviceNumber,
+ d2.device_name bDeviceName,
+ d2.management_number bDeviceNumber,
+ d3.device_name cDeviceName,
+ d3.management_number cDeviceNumber
+ from device_examine_record_contrast derc
+ left join device d1 on d1.id = derc.a_device_id
+ left join device d2 on d2.id = derc.a_device_id
+ left join device d3 on d3.id = derc.a_device_id
+ where derc.plan_details_id = #{planDetailsId}
+ </select>
+ <select id="selectExamineRecordContrastDto"
+ resultType="com.yuanchu.mom.dto.DeviceExamineRecordContrastDto">
+ select derc.*,
+ d1.device_name aDeviceName,
+ d1.management_number aDeviceNumber,
+ d2.device_name bDeviceName,
+ d2.management_number bDeviceNumber,
+ d3.device_name cDeviceName,
+ d3.management_number cDeviceNumber,
+ DATE_FORMAT(derc.create_time, '%Y-%m-%d') checkerTimeStr,
+ DATE_FORMAT(derc.review_time, '%Y-%m-%d') reviewTimeStr,
+ d1.storage_point labName
+ from device_examine_record_contrast derc
+ left join device d1 on d1.id = derc.a_device_id
+ left join device d2 on d2.id = derc.a_device_id
+ left join device d3 on d3.id = derc.a_device_id
+ where derc.plan_details_id = #{planDetailsId}
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceExamineRecordDetailMapper.xml b/cnas-server/src/main/resources/mapper/DeviceExamineRecordDetailMapper.xml
new file mode 100644
index 0000000..8d8167e
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceExamineRecordDetailMapper.xml
@@ -0,0 +1,22 @@
+<?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.yuanchu.mom.mapper.DeviceExamineRecordDetailMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceExamineRecordDetail">
+ <id column="record_detail_id" property="recordDetailId" />
+ <result column="record_id" property="recordId" />
+ <result column="data_value1" property="dataValue1" />
+ <result column="data_value2" property="dataValue2" />
+ <result column="data_value3" property="dataValue3" />
+ <result column="data_value4" property="dataValue4" />
+ <result column="data_value5" property="dataValue5" />
+ <result column="data_value6" property="dataValue6" />
+ <result column="data_value7" property="dataValue7" />
+ <result column="create_user" property="createUser" />
+ <result column="create_time" property="createTime" />
+ <result column="update_user" property="updateUser" />
+ <result column="update_time" property="updateTime" />
+ </resultMap>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceExamineRecordMapper.xml b/cnas-server/src/main/resources/mapper/DeviceExamineRecordMapper.xml
new file mode 100644
index 0000000..25e587c
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceExamineRecordMapper.xml
@@ -0,0 +1,25 @@
+<?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.yuanchu.mom.mapper.DeviceExamineRecordMapper">
+
+ <select id="getExamineRecord" resultType="com.yuanchu.mom.dto.DeviceExamineRecordDto">
+ select der.*,
+ d.device_name,
+ d.management_number deviceNumber
+ from device_examine_record der
+ left join device_examine_plan_details depd on depd.plan_details_id = der.plan_details_id
+ left join device d on d.id = depd.device_id
+ where der.plan_details_id = #{planDetailsId}
+ </select>
+ <select id="selectReviewExamineRecordDto" resultType="com.yuanchu.mom.dto.DeviceExamineRecordDto">
+ select der.*,
+ Date_Format(der.update_time, '%Y-%m-%d') updateTimeStr,
+ d.device_name,
+ d.management_number deviceNumber
+ from device_examine_record der
+ left join device_examine_plan_details depd on depd.plan_details_id = der.plan_details_id
+ left join device d on d.id = depd.device_id
+ where der.plan_details_id = #{planDetailsId}
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceExternalApplyMapper.xml b/cnas-server/src/main/resources/mapper/DeviceExternalApplyMapper.xml
new file mode 100644
index 0000000..c7c04f4
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceExternalApplyMapper.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.yuanchu.mom.mapper.DeviceExternalApplyMapper">
+
+ <!--鍒╃敤澶栭儴璁惧鐢宠鍒楄〃-->
+ <select id="pageDeviceExternalApply" resultType="com.yuanchu.mom.pojo.DeviceExternalApply">
+ select * from (
+ select *
+ from device_external_apply
+ order by create_time desc
+ ) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+ <select id="selectDeviceExternalById" resultType="com.yuanchu.mom.pojo.DeviceExternalApply">
+ select
+ dea.*
+ from device_external_apply dea
+ where dea.external_apply_id = #{externalApplyId}
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceFaultOneMapper.xml b/cnas-server/src/main/resources/mapper/DeviceFaultOneMapper.xml
new file mode 100644
index 0000000..aa8e4ad
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceFaultOneMapper.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.yuanchu.mom.mapper.DeviceFaultOneMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceFaultOne">
+ <id column="id" property="id" />
+ <result column="device_id" property="deviceId" />
+ <result column="process_number" property="processNumber" />
+ <result column="measure_of_accuracy" property="measureOfAccuracy" />
+ <result column="fault_situation" property="faultSituation" />
+ <result column="file_name" property="fileName" />
+ <result column="system_file_name" property="systemFileName" />
+ <result column="submit_next_pesponsible" property="submitNextPesponsible" />
+ <result column="submit_operating_personnel" property="submitOperatingPersonnel" />
+ <result column="submit_date" property="submitDate" />
+ <result column="method_cost" property="methodCost" />
+ <result column="admin_audit_option" property="adminAuditOption" />
+ <result column="admin_next_pesponsible" property="adminNextPesponsible" />
+ <result column="admin_operating_personnel" property="adminOperatingPersonnel" />
+ <result column="technical_audit_option" property="technicalAuditOption" />
+ <result column="technical_next_pesponsible" property="technicalNextPesponsible" />
+ <result column="technical_operating_personnel" property="technicalOperatingPersonnel" />
+ <result column="technical_date" property="technicalDate" />
+ <result column="maintain_situation" property="maintainSituation" />
+ <result column="maintain_next_pesponsible" property="maintainNextPesponsible" />
+ <result column="maintain_operating_personnel" property="maintainOperatingPersonnel" />
+ <result column="maintain_date" property="maintainDate" />
+ <result column="check_cal_situation" property="checkCalSituation" />
+ <result column="after_maintenance_operating_personnel" property="afterMaintenanceOperatingPersonnel" />
+ <result column="after_maintenance_date" property="afterMaintenanceDate" />
+ <result column="current_status" property="currentState" />
+ <result column="submit_person" property="submitPerson" />
+ <result column="current_responsible" property="currentResponsible" />
+ <result column="create_time" property="createTime" />
+ </resultMap>
+
+ <select id="deviceFaultOnePage" resultType="com.yuanchu.mom.dto.DeviceFaultOneDto">
+ select dfo.*,
+ d.device_name,
+ d.management_number,
+ d.specification_model
+ from device_fault_one dfo
+ left join device d on d.id = dfo.device_id
+ where dfo.device_id = #{deviceId}
+ <if test="processNumber != '' and processNumber != null">
+ and dfo.process_number like concat('%', #{processNumber}, '%')
+ </if>
+ </select>
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceInspectionRecordDetailsMapper.xml b/cnas-server/src/main/resources/mapper/DeviceInspectionRecordDetailsMapper.xml
new file mode 100644
index 0000000..989d1f9
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceInspectionRecordDetailsMapper.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.yuanchu.mom.mapper.DeviceInspectionRecordDetailsMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceInspectionRecordDetails">
+ <id column="inspection_record_detail_id" property="inspectionRecordDetailId" />
+ <result column="test_items" property="testItems" />
+ <result column="standard_value" property="standardValue" />
+ <result column="measured_value" property="measuredValue" />
+ <result column="indication_error" property="indicationError" />
+ <result column="allowable_error" property="allowableError" />
+ <result column="single_item_conclusion" property="singleItemConclusion" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="update_user_id" property="updateUserId" />
+ </resultMap>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceInspectionRecordMapper.xml b/cnas-server/src/main/resources/mapper/DeviceInspectionRecordMapper.xml
new file mode 100644
index 0000000..ae3146a
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceInspectionRecordMapper.xml
@@ -0,0 +1,33 @@
+<?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.yuanchu.mom.mapper.DeviceInspectionRecordMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceInspectionRecord">
+ <id column="inspection_record" property="inspectionRecord" />
+ <result column="material_name" property="materialName" />
+ <result column="material_model" property="materialModel" />
+ <result column="material_management_number" property="materialManagementNumber" />
+ <result column="material_accuracy_grade" property="materialAccuracyGrade" />
+ <result column="temperature" property="temperature" />
+ <result column="humidity" property="humidity" />
+ <result column="test_conclusion" property="testConclusion" />
+ <result column="remark" property="remark" />
+ <result column="recorder" property="recorder" />
+ <result column="recorder_id" property="recorderId" />
+ <result column="reviewer" property="reviewer" />
+ <result column="reviewer_id" property="reviewerId" />
+ <result column="test_date" property="testDate" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="update_user_id" property="updateUserId" />
+ </resultMap>
+ <select id="selectDeviceParameterPage" resultType="com.yuanchu.mom.pojo.DeviceInspectionRecord">
+ SELECT
+ *
+ from device_inspection_record
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceMaintenanceMapper.xml b/cnas-server/src/main/resources/mapper/DeviceMaintenanceMapper.xml
new file mode 100644
index 0000000..f41688b
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceMaintenanceMapper.xml
@@ -0,0 +1,22 @@
+<?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.yuanchu.mom.mapper.DeviceMaintenanceMapper">
+
+ <select id="getDeviceMaintenanceParam" resultType="com.yuanchu.mom.pojo.DeviceMaintenance">
+ select id,device_id,device_name, device_number,management_number,content,name
+ ,date from device_maintenance
+ </select>
+
+<!-- <select id="getDeviceMaintenancePage" resultType="com.yuanchu.mom.pojo.DeviceMaintenance">-->
+<!-- select *-->
+<!-- from device_maintenance dm-->
+<!-- where dm.device_id = #{deviceId}-->
+<!-- </select>-->
+
+ <select id="deviceMaintenanceExport" resultType="com.yuanchu.mom.excel.DeviceMaintenanceExport">
+ select id, device_id, device_name, device_number, management_number, content, date, if(maintenance_type = 1, '璁″垝涓淮鎶�', '浣跨敤鍓嶅悗缁存姢'), next_date, name, comments
+ from device_maintenance dm
+ where dm.device_id = #{deviceId}
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/cnas-server/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.xml b/cnas-server/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.xml
new file mode 100644
index 0000000..fbcbd2b
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceMaintenancePlanDetailsMapper.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.yuanchu.mom.mapper.DeviceMaintenancePlanDetailsMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceMaintenancePlanDetails">
+ <id column="maintenance_plan_detail_id" property="maintenancePlanDetailId" />
+ <result column="maintenance_plan_id" property="maintenancePlanId" />
+ <result column="device_id" property="deviceId" />
+ <result column="maintenance_site" property="maintenanceSite" />
+ <result column="maintenance_content" property="maintenanceContent" />
+ <result column="maintenance_intervals" property="maintenanceIntervals" />
+ </resultMap>
+ <select id="deviceInspectionRecordDetailsList"
+ resultType="com.yuanchu.mom.dto.DeviceMaintenancePlanDetailsDto">
+ select
+ dmpd.*,
+ d.device_name,
+ d.management_number device_number,
+ d.specification_model,
+ d.management_number,
+ d.storage_point
+ from device_maintenance_plan_details dmpd
+ left join device d on dmpd.device_id = d.id
+ where dmpd.maintenance_plan_id = #{maintenancePlanId}
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceMaintenancePlanMapper.xml b/cnas-server/src/main/resources/mapper/DeviceMaintenancePlanMapper.xml
new file mode 100644
index 0000000..3c4d75b
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceMaintenancePlanMapper.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.yuanchu.mom.mapper.DeviceMaintenancePlanMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceMaintenancePlan">
+ <id column="maintenance_plan_id" property="maintenancePlanId" />
+ <result column="create_user" property="createUser" />
+ <result column="create_id" property="createId" />
+ <result column="create_date" property="createDate" />
+ <result column="audit_id" property="auditId" />
+ <result column="audit" property="audit" />
+ <result column="audit_date" property="auditDate" />
+ </resultMap>
+
+ <!-- 鏍规嵁璁惧id鏌ヨ璁惧鐨勪繚鍏昏鍒� -->
+ <select id="selectDeviceParameterPage" resultType="com.yuanchu.mom.pojo.DeviceMaintenancePlan">
+ select
+ *
+ from device_maintenance_plan
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+ <select id="selectMaintenancePlanById" resultType="com.yuanchu.mom.dto.DeviceMaintenancePlanDto">
+ select
+ dmp.*,
+ date_format(dmp.date_preparation, '%Y-%m-%d') as datePreparationStr,
+ date_format(dmp.audit_date, '%Y-%m-%d') as auditDateStr
+ from device_maintenance_plan dmp
+ where dmp.maintenance_plan_id = #{maintenancePlanId}
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceMapper.xml b/cnas-server/src/main/resources/mapper/DeviceMapper.xml
index 1bb8478..f4c9e77 100644
--- a/cnas-server/src/main/resources/mapper/DeviceMapper.xml
+++ b/cnas-server/src/main/resources/mapper/DeviceMapper.xml
@@ -107,7 +107,14 @@
device d
LEFT JOIN `user` u ON u.id = d.equipment_manager
LEFT JOIN laboratory l ON l.id = d.subordinate_departments_id
+ LEFT JOIN device_metric_record cmr ON d.id = cmr.device_id
LEFT JOIN structure_item_parameter sip ON FIND_IN_SET(sip.id, d.ins_product_ids)
+ <where>
+ <if test="laboratoryNameIsNull != null and laboratoryNameIsNull == true">
+ l.laboratory_name is null
+ </if>
+ AND cmr.type = 'calibrate' or cmr.type is null or cmr.type = ''
+ </where>
GROUP BY
d.id,
u.name, l.laboratory_name
diff --git a/cnas-server/src/main/resources/mapper/DeviceMetricRecordMapper.xml b/cnas-server/src/main/resources/mapper/DeviceMetricRecordMapper.xml
new file mode 100644
index 0000000..2b59410
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceMetricRecordMapper.xml
@@ -0,0 +1,22 @@
+<?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.yuanchu.mom.mapper.DeviceMetricRecordMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceMetricRecord">
+ <id column="id" property="id" />
+ <result column="unit_of_measure" property="unitOfMeasure" />
+ <result column="calibration_date" property="calibrationDate" />
+ <result column="next_calibration_date" property="nextCalibrationDate" />
+ <result column="calculating_apparatus" property="calculatingApparatus" />
+ <result column="standard_range" property="standardRange" />
+ <result column="calibration_standard_uncertainty" property="calibrationStandardUncertainty" />
+ <result column="by_document" property="byDocument" />
+ <result column="certificate_serial_number" property="certificateSerialNumber" />
+ <result column="status" property="status" />
+ <result column="file_name" property="fileName" />
+ <result column="system_file_name" property="systemFileName" />
+ <result column="remark" property="remark" />
+ </resultMap>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceMetricsCopyMapper.xml b/cnas-server/src/main/resources/mapper/DeviceMetricsCopyMapper.xml
new file mode 100644
index 0000000..87f5db0
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceMetricsCopyMapper.xml
@@ -0,0 +1,20 @@
+<?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.yuanchu.mom.mapper.DeviceMetricsCopyMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceMetricsCopy">
+ <id column="id" property="id" />
+ <result column="device_id" property="deviceId" />
+ <result column="measurement_parameter" property="measurementParameter" />
+ <result column="range_of_measurement" property="rangeOfMeasurement" />
+ <result column="max_permissible_error" property="maxPermissibleError" />
+ <result column="judgment_criteria" property="judgmentCriteria" />
+ <result column="created_by" property="createdBy" />
+ <result column="creation_time" property="creationTime" />
+ <result column="is_calibration" property="isCalibration" />
+ <result column="result" property="result" />
+ <result column="single_result_statement" property="singleResultStatement" />
+ </resultMap>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceScrappedMapper.xml b/cnas-server/src/main/resources/mapper/DeviceScrappedMapper.xml
new file mode 100644
index 0000000..936c810
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceScrappedMapper.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.yuanchu.mom.mapper.DeviceScrappedMapper">
+
+ <!-- 璁惧鎶ュ簾鐢宠鍒楄〃 -->
+ <select id="pageDeviceScrapped" resultType="com.yuanchu.mom.pojo.DeviceScrapped">
+ select * from (
+ select *
+ from device_scrapped
+ order by create_time desc
+ ) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+ <select id="selectDeviceScrappedById" resultType="com.yuanchu.mom.dto.DeviceScrappedDto">
+ select
+ *,
+ date_format(applicant_date,'%Y骞�%m鏈�%d鏃�') as applicantDateStr,
+ date_format(department_head_date,'%Y骞�%m鏈�%d鏃�') as departmentHeadDateStr,
+ date_format(metering_room_date,'%Y骞�%m鏈�%d鏃�') as meteringRoomDateStr,
+ date_format(approver_date,'%Y骞�%m鏈�%d鏃�') as approverDateStr
+ from device_scrapped
+ where scrapped_id = #{scrappedId}
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceStateMapper.xml b/cnas-server/src/main/resources/mapper/DeviceStateMapper.xml
new file mode 100644
index 0000000..99a655a
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceStateMapper.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.yuanchu.mom.mapper.DeviceStateMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceState">
+ <id column="state_id" property="stateId" />
+ <result column="accessory_part" property="accessoryPart" />
+ <result column="device_status" property="deviceStatus" />
+ <result column="reason" property="reason" />
+ <result column="submit_next_pesponsible" property="submitNextPesponsible" />
+ <result column="submit_operating_personnel" property="submitOperatingPersonnel" />
+ <result column="submit_date" property="submitDate" />
+ <result column="department_review_opinion" property="departmentReviewOpinion" />
+ <result column="department_next_pesponsible" property="departmentNextPesponsible" />
+ <result column="department_operating_personnel" property="departmentOperatingPersonnel" />
+ <result column="department_date" property="departmentDate" />
+ <result column="measuring_room_review_opinion" property="measuringRoomReviewOpinion" />
+ <result column="measuring_room_next_pesponsible" property="measuringRoomNextPesponsible" />
+ <result column="measuring_room_operating_personnel" property="measuringRoomOperatingPersonnel" />
+ <result column="measuring_room_date" property="measuringRoomDate" />
+ <result column="approval_opinion" property="approvalOpinion" />
+ <result column="approval_next_pesponsible" property="approvalNextPesponsible" />
+ <result column="approval_operating_personnel" property="approvalOperatingPersonnel" />
+ <result column="approval_date" property="approvalDate" />
+ <result column="current_state" property="currentState" />
+ <result column="device_id" property="deviceId" />
+ <result column="current_responsible" property="currentResponsible" />
+ </resultMap>
+
+ <select id="getDeviceStatePage" resultType="com.yuanchu.mom.dto.DeviceStateDto">
+ select ds.*,
+ d.device_name,
+ d.management_number,
+ d.specification_model,
+ d.large_category
+ from device_state ds
+ left join device d on d.id = ds.device_id
+ where ds.device_id = #{deviceId}
+ <if test="processNumber != '' and processNumber != null">
+ and ds.process_number like concat('%', #{processNumber}, '%')
+ </if>
+ </select>
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml b/cnas-server/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml
new file mode 100644
index 0000000..a6d4fd3
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceTraceabilityManagementDetailsMapper.xml
@@ -0,0 +1,33 @@
+<?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.yuanchu.mom.mapper.DeviceTraceabilityManagementDetailsMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceTraceabilityManagementDetails">
+ <id column="traceability_management_detail_id" property="traceabilityManagementDetailId" />
+ <result column="traceability_management_id" property="traceabilityManagementId" />
+ <result column="device_id" property="deviceId" />
+ <result column="technical_index_parameters" property="technicalIndexParameters" />
+ <result column="technical_requirements" property="technicalRequirements" />
+ <result column="verification_cycle" property="verificationCycle" />
+ <result column="verification_unit" property="verificationUnit" />
+ <result column="remark" property="remark" />
+ <result column="create_user" property="createUser" />
+ <result column="create_time" property="createTime" />
+ <result column="update_user" property="updateUser" />
+ <result column="update_time" property="updateTime" />
+ </resultMap>
+ <select id="deviceTraceabilityManagementDetailsList"
+ resultType="com.yuanchu.mom.dto.DeviceTraceabilityManagementDetailsDto">
+ select
+ dtmd.*,
+ d.device_name,
+ d.device_name,
+ d.specification_model,
+ d.management_number
+ from device_traceability_management_details dtmd
+ left join device d on dtmd.device_id = d.id
+ where dtmd.traceability_management_id = #{traceabilityManagementId}
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/DeviceTraceabilityManagementMapper.xml b/cnas-server/src/main/resources/mapper/DeviceTraceabilityManagementMapper.xml
new file mode 100644
index 0000000..c3e5ae1
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/DeviceTraceabilityManagementMapper.xml
@@ -0,0 +1,39 @@
+<?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.yuanchu.mom.mapper.DeviceTraceabilityManagementMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.DeviceTraceabilityManagement">
+ <id column="traceability_management_id" property="traceabilityManagementId" />
+ <result column="compiler_id" property="compilerId" />
+ <result column="compiler" property="compiler" />
+ <result column="date_preparation" property="datePreparation" />
+ <result column="status" property="status" />
+ <result column="update_user" property="updateUser" />
+ <result column="update_time" property="updateTime" />
+ <result column="audit_id" property="auditId" />
+ <result column="audit" property="audit" />
+ <result column="audit_date" property="auditDate" />
+ <result column="audit_remark" property="auditRemark" />
+ <result column="create_user" property="createUser" />
+ <result column="create_time" property="createTime" />
+ </resultMap>
+ <select id="selectDeviceParameterPage" resultType="com.yuanchu.mom.pojo.DeviceTraceabilityManagement">
+ select
+ *
+ from device_traceability_management
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+ <select id="selectDeviceTraceabilityManagementById"
+ resultType="com.yuanchu.mom.dto.DeviceTraceabilityManagementDto">
+ select
+ dtm.*,
+ date_format(dtm.date_preparation, '%Y-%m-%d') as datePreparationStr,
+ date_format(dtm.audit_date, '%Y-%m-%d') as auditDateStr
+ from device_traceability_management dtm
+ where dtm.traceability_management_id = #{traceabilityManagementId}
+ </select>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/IncidentAcceptanceCheckMapper.xml b/cnas-server/src/main/resources/mapper/IncidentAcceptanceCheckMapper.xml
new file mode 100644
index 0000000..9991e89
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/IncidentAcceptanceCheckMapper.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.yuanchu.mom.mapper.IncidentAcceptanceCheckMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.IncidentAcceptanceCheck">
+ <id column="acceptance_checkId" property="acceptanceCheckId" />
+ <result column="instrument_module" property="instrumentModule" />
+ <result column="verification_parameter" property="verificationParameter" />
+ <result column="acceptable_limit" property="acceptableLimit" />
+ <result column="verification_result" property="verificationResult" />
+ <result column="verification_conclusion" property="verificationConclusion" />
+ <result column="incident_id" property="incidentId" />
+ </resultMap>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/IncidentFileMapper.xml b/cnas-server/src/main/resources/mapper/IncidentFileMapper.xml
new file mode 100644
index 0000000..f521ced
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/IncidentFileMapper.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.yuanchu.mom.mapper.IncidentFileMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.IncidentFile">
+ <id column="file_id" property="fileId" />
+ <result column="expected_copies" property="expectedCopies" />
+ <result column="actual_copies" property="actualCopies" />
+ <result column="incident_id" property="incidentId" />
+ </resultMap>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/IncidentInstallMapper.xml b/cnas-server/src/main/resources/mapper/IncidentInstallMapper.xml
new file mode 100644
index 0000000..0bfa771
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/IncidentInstallMapper.xml
@@ -0,0 +1,14 @@
+<?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.yuanchu.mom.mapper.IncidentInstallMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.IncidentInstall">
+ <id column="install_id" property="installId" />
+ <result column="installation_project" property="installationProject" />
+ <result column="installation_situation" property="installationSituation" />
+ <result column="installation_completed" property="installationCompleted" />
+ <result column="incident_id" property="incidentId" />
+ </resultMap>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/IncidentReportMapper.xml b/cnas-server/src/main/resources/mapper/IncidentReportMapper.xml
new file mode 100644
index 0000000..cb035bf
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/IncidentReportMapper.xml
@@ -0,0 +1,118 @@
+<?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.yuanchu.mom.mapper.IncidentReportMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.IncidentReport">
+ <id column="id" property="id" />
+ <result column="process_number" property="processNumber" />
+ <result column="device_id" property="deviceId" />
+ <result column="serial_number" property="serialNumber" />
+ <result column="device_class" property="deviceClass" />
+ <result column="check_outer_packaging" property="checkOuterPackaging" />
+ <result column="file_name" property="fileName" />
+ <result column="system_file_name" property="systemFileName" />
+ <result column="unpacking_acceptance_conclusion" property="unpackingAcceptanceConclusion" />
+ <result column="submit_next_pesponsible" property="submitNextPesponsible" />
+ <result column="submit_remarks" property="submitRemarks" />
+ <result column="submit_operating_personnel" property="submitOperatingPersonnel" />
+ <result column="submit_date" property="submitDate" />
+ <result column="unpacking_review_opinion" property="unpackingReviewOpinion" />
+ <result column="unpacking_next_pesponsible" property="unpackingNextPesponsible" />
+ <result column="unpacking_operating_personnel" property="unpackingOperatingPersonnel" />
+ <result column="unpacking_date" property="unpackingDate" />
+ <result column="install_location" property="installLocation" />
+ <result column="install_remarks" property="installRemarks" />
+ <result column="install_next_pesponsible" property="installNextPesponsible" />
+ <result column="install_operating_personnel" property="installOperatingPersonnel" />
+ <result column="install_date" property="installDate" />
+ <result column="installation_acceptance_compound_opinion" property="installationAcceptanceCompoundOpinion" />
+ <result column="installation_acceptance_next_pesponsible" property="installationAcceptanceNextPesponsible" />
+ <result column="installation_acceptance_operating_personnel" property="installationAcceptanceOperatingPersonnel" />
+ <result column="installation_acceptance_date" property="installationAcceptanceDate" />
+ <result column="acceptance_check_unpacking_conclusion" property="acceptanceCheckUnpackingConclusion" />
+ <result column="acceptance_check_next_pesponsible" property="acceptanceCheckNextPesponsible" />
+ <result column="acceptance_check_operating_personnel" property="acceptanceCheckOperatingPersonnel" />
+ <result column="acceptance_check_date" property="acceptanceCheckDate" />
+ <result column="acceptance_audit_operating_personnel" property="acceptanceAuditOperatingPersonnel" />
+ <result column="acceptance_audit_date" property="acceptanceAuditDate" />
+ <result column="create_user" property="createUser" />
+ <result column="current_state" property="currentState" />
+ <result column="create_time" property="createTime" />
+ <result column="current_responsible" property="currentResponsible" />
+ <result column="acceptance_audit_audit_opinion" property="acceptanceAuditAuditOpinion" />
+ </resultMap>
+
+ <resultMap id="IncidentReportAddDtoMap" type="com.yuanchu.mom.dto.IncidentReportAddDto" extends="BaseResultMap">
+ <result column="device_name" property="deviceName" />
+ <result column="management_number" property="managementNumber" />
+ <result column="manufacturer" property="manufacturer" />
+ <result column="specification_model" property="specificationModel" />
+ <collection property="sparePartsConfirmationList" ofType="com.yuanchu.mom.pojo.IncidentSpareParts">
+ <id column="spare_parts_id" property="sparePartsId" />
+ <result column="name" property="name" />
+ <result column="number" property="number" />
+ <result column="note" property="note" />
+ <result column="incident_id" property="incidentId" />
+ </collection>
+ <collection property="fileClassConfirmationList" ofType="com.yuanchu.mom.pojo.IncidentFile">
+ <id column="file_id" property="fileId" />
+ <result column="expected_copies" property="expectedCopies" />
+ <result column="actual_copies" property="actualCopies" />
+ <result column="incident_id" property="incidentId" />
+ </collection>
+ <collection property="installationAcceptanceRecordList" ofType="com.yuanchu.mom.pojo.IncidentInstall">
+ <id column="install_id" property="installId" />
+ <result column="installation_project" property="installationProject" />
+ <result column="installation_situation" property="installationSituation" />
+ <result column="installation_completed" property="installationCompleted" />
+ <result column="incident_id" property="incidentId" />
+ </collection>
+ <collection property="acceptanceCheckRecordList" ofType="com.yuanchu.mom.pojo.IncidentAcceptanceCheck">
+ <id column="acceptance_check_id" property="acceptanceCheckId" />
+ <result column="instrument_module" property="instrumentModule" />
+ <result column="verification_parameter" property="verificationParameter" />
+ <result column="acceptable_limit" property="acceptableLimit" />
+ <result column="verification_result" property="verificationResult" />
+ <result column="verification_conclusion" property="verificationConclusion" />
+ <result column="incident_id" property="incidentId" />
+ </collection>
+ </resultMap>
+
+ <select id="getByDeviceId" resultType="com.yuanchu.mom.dto.IncidentReportAddDto">
+ select dir.*, d.device_name, d.management_number, u.name submitUser
+ from device_incident_report dir
+ left join device d on d.id = dir.device_id
+ left join user u on u.id = dir.create_user
+ where dir.device_id = #{deviceId}
+ <if test="processNumber != '' and processNumber != null">
+ and dir.process_number like concat('%', #{processNumber}, '%')
+ </if>
+ </select>
+
+ <select id="getShowIncidentReport" resultMap="IncidentReportAddDtoMap">
+ select dir.*, d.device_name, d.management_number, d.manufacturer, d.specification_model,
+ diac.acceptance_check_id, diac.instrument_module,diac.verification_parameter, diac.acceptable_limit, diac.verification_result, diac.verification_conclusion,
+ disp.spare_parts_id, disp.name, disp.number, disp.note,
+ dif.file_id, dif.expected_copies, dif.actual_copies,
+ dii.install_id, dii.installation_completed, dii.installation_project, dii.installation_situation
+ from device_incident_report dir
+ left join device d on d.id = dir.device_id
+ left join device_incident_acceptance_check diac on diac.incident_id = dir.id
+ left join device_incident_file dif on dif.incident_id = dir.id
+ left join device_incident_install dii on dii.incident_id = dir.id
+ left join device_incident_spare_parts disp on disp.incident_id = dir.id
+ where dir.id = #{id}
+ </select>
+
+ <select id="incidentReportExport" resultType="com.yuanchu.mom.excel.IncidentReportExport">
+ select dir.*, d.device_name, d.management_number, d.manufacturer, d.specification_model
+ from device_incident_report dir
+ left join device d on d.id = dir.device_id
+ where dir.device_id = #{deviceId}
+ </select>
+
+ <select id="acceptanceCertificateExport" resultType="com.yuanchu.mom.dto.IncidentReportExportWordDto">
+ select
+ </select>
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/IncidentSparePartsMapper.xml b/cnas-server/src/main/resources/mapper/IncidentSparePartsMapper.xml
new file mode 100644
index 0000000..3456cc5
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/IncidentSparePartsMapper.xml
@@ -0,0 +1,14 @@
+<?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.yuanchu.mom.mapper.IncidentSparePartsMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.IncidentSpareParts">
+ <id column="spare_parts_id" property="sparePartsId" />
+ <result column="name" property="name" />
+ <result column="number" property="number" />
+ <result column="note" property="note" />
+ <result column="incident_id" property="incidentId" />
+ </resultMap>
+
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml b/cnas-server/src/main/resources/mapper/InsOrderDeviceRecordMapper.xml
new file mode 100644
index 0000000..38dcf28
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/InsOrderDeviceRecordMapper.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.yuanchu.mom.mapper.DeviceRecordMapper">
+
+ <select id="deviceRecordPage" resultType="com.yuanchu.mom.dto.DeviceRecordDto">
+ select dr.*,
+ d.device_name,
+ d.management_number
+ from device_record dr
+ left join device d on d.id = dr.device_id
+ where 1=1
+ <if test="deviceId != null">
+ and dr.device_id = #{deviceId}
+ </if>
+ <if test="sampleCode != '' and sampleCode != null">
+ and dr.sample_code like concat('%', #{sampleCode}, '%')
+ </if>
+ <if test="managementNumber != '' and managementNumber != null">
+ and d.management_number like concat('%', #{managementNumber}, '%')
+ </if>
+ <if test="userId != null">
+ and dr.use_person_id = #{userId}
+ and dr.use_start_date is null
+ </if>
+ ORDER BY (dr.use_start_date IS NULL) desc , dr.use_start_date DESC
+ </select>
+
+
+ <select id="selectNotFilled" resultType="com.yuanchu.mom.dto.DeviceRecordDto">
+ select dr.*,
+ d.device_name,
+ d.management_number
+ from device_record dr
+ left join device d on d.id = dr.device_id
+ where dr.use_start_date is null
+ </select>
+
+ <!-- 鏌ヨ瀵煎嚭璁惧浣跨敤璁板綍 -->
+ <select id="selectExportList" resultType="com.yuanchu.mom.pojo.DeviceRecord">
+ select dr.*
+ from device_record dr
+ where dr.use_start_date is not null
+ <if test="deviceId != null">
+ and dr.device_id = #{deviceId}
+ </if>
+ <if test="exportDate != '' and exportDate != null">
+ and DATE_FORMAT(dr.use_start_date, '%Y-%m') = #{exportDate};
+ </if>
+ </select>
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/InstructionMapper.xml b/cnas-server/src/main/resources/mapper/InstructionMapper.xml
new file mode 100644
index 0000000..36edc87
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/InstructionMapper.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.yuanchu.mom.mapper.InstructionMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.Instruction">
+ <id column="id" property="id" />
+ <result column="application_number" property="applicationNumber" />
+ <result column="person_liable" property="personLiable" />
+ <result column="controlled_application_description" property="controlledApplicationDescription" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="create_user" property="createUser" />
+ <result column="update_user" property="updateUser" />
+ </resultMap>
+
+ <select id="pageByPageQueryOfHomeworkInstructions" resultType="com.yuanchu.mom.dto.OperationInstructionDto">
+ SELECT
+ doi.*,di.*,d.device_name, d.management_number device_number, d.specification_model device_model, u.name uploader_name, u1.name approver_name
+ FROM
+ device_operation_instruction doi
+ LEFT JOIN device_instruction di ON di.id = doi.instruction_id
+ left join device d on d.id = doi.device_id
+ left join user u on u.id = doi.uploader
+ left join user u1 on u1.id = doi.approver_id
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/OperationInstructionMapper.xml b/cnas-server/src/main/resources/mapper/OperationInstructionMapper.xml
new file mode 100644
index 0000000..77dd4d0
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/OperationInstructionMapper.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.yuanchu.mom.mapper.OperationInstructionMapper">
+
+ <select id="homeworkGuidebookEditor" resultType="com.yuanchu.mom.vo.OperationInstructionVo">
+ SELECT
+ doi.*,d.device_name, d.management_number device_number, d.specification_model device_model
+ FROM
+ device_operation_instruction doi
+ left join device d on d.id = doi.device_id
+ where doi.instruction_id = #{instructionId}
+ </select>
+</mapper>
diff --git a/cnas-server/src/main/resources/mapper/ReservationMapper.xml b/cnas-server/src/main/resources/mapper/ReservationMapper.xml
new file mode 100644
index 0000000..5721573
--- /dev/null
+++ b/cnas-server/src/main/resources/mapper/ReservationMapper.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.yuanchu.mom.mapper.ReservationMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.Reservation">
+ <id column="id" property="id" />
+ <result column="device_id" property="deviceId" />
+ <result column="device_name" property="deviceName" />
+ <result column="customer_name" property="customerName" />
+ <result column="reservation_time" property="reservationTime" />
+ <result column="specific_time" property="specificTime" />
+ <result column="link_person" property="linkPerson" />
+ <result column="phone" property="phone" />
+ <result column="device_number" property="deviceNumber" />
+ <result column="reservation_specification" property="reservationSpecification" />
+ <result column="create_user" property="createUser" />
+ <result column="create_date" property="createDate" />
+ </resultMap>
+
+
+ <select id="selectReservationParameterPage" resultType="com.yuanchu.mom.dto.ReservationDto">
+ SELECT
+ a.id,
+ a.create_date,
+ a.create_user,
+ a.customer_name,
+ a.device_id,
+ a.device_name,
+ a.device_number,
+ a.link_person,
+ a.phone ,
+ a.reservation_specification,
+ b.name
+ FROM
+ device_reservation a
+ INNER JOIN USER b ON a.create_user = b.id
+ where a.device_id = #{deviceId} and a.reservation_time = #{reservationTime} and a.specific_time=#{specificTime}
+ </select>
+</mapper>
diff --git a/cnas-server/src/main/resources/static/word/acceptance-certificate.docx b/cnas-server/src/main/resources/static/word/acceptance-certificate.docx
new file mode 100644
index 0000000..c4412dd
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/acceptance-certificate.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/device-accident-report.docx b/cnas-server/src/main/resources/static/word/device-accident-report.docx
new file mode 100644
index 0000000..6263ba9
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/device-accident-report.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/device-breakdown-maintenance.docx b/cnas-server/src/main/resources/static/word/device-breakdown-maintenance.docx
new file mode 100644
index 0000000..595edc5
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/device-breakdown-maintenance.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/device-calibration-plan.docx b/cnas-server/src/main/resources/static/word/device-calibration-plan.docx
new file mode 100644
index 0000000..4f4e6ff
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/device-calibration-plan.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/device-document.docx b/cnas-server/src/main/resources/static/word/device-document.docx
new file mode 100644
index 0000000..d9e1d51
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/device-document.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/device-external-apply.docx b/cnas-server/src/main/resources/static/word/device-external-apply.docx
new file mode 100644
index 0000000..8df765b
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/device-external-apply.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/device-inspection-record.docx b/cnas-server/src/main/resources/static/word/device-inspection-record.docx
new file mode 100644
index 0000000..2c7a4f4
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/device-inspection-record.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/device-scrapped.docx b/cnas-server/src/main/resources/static/word/device-scrapped.docx
new file mode 100644
index 0000000..96dfdd8
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/device-scrapped.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/device-status.docx b/cnas-server/src/main/resources/static/word/device-status.docx
new file mode 100644
index 0000000..5753f22
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/device-status.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/examine-plan-detail.docx b/cnas-server/src/main/resources/static/word/examine-plan-detail.docx
new file mode 100644
index 0000000..118c324
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/examine-plan-detail.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/examine-record.docx b/cnas-server/src/main/resources/static/word/examine-record.docx
new file mode 100644
index 0000000..2462971
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/examine-record.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/incident-report.docx b/cnas-server/src/main/resources/static/word/incident-report.docx
new file mode 100644
index 0000000..c190287
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/incident-report.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/maintenance-plan.docx b/cnas-server/src/main/resources/static/word/maintenance-plan.docx
new file mode 100644
index 0000000..d4e69a0
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/maintenance-plan.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/maintenance-records.docx b/cnas-server/src/main/resources/static/word/maintenance-records.docx
new file mode 100644
index 0000000..ba8c9f8
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/maintenance-records.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/quipment-details.docx b/cnas-server/src/main/resources/static/word/quipment-details.docx
new file mode 100644
index 0000000..d244180
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/quipment-details.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/review-examine-record-contrast.docx b/cnas-server/src/main/resources/static/word/review-examine-record-contrast.docx
new file mode 100644
index 0000000..dd48c97
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/review-examine-record-contrast.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/traceability-management-details.docx b/cnas-server/src/main/resources/static/word/traceability-management-details.docx
new file mode 100644
index 0000000..cb6d3b9
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/traceability-management-details.docx
Binary files differ
diff --git a/cnas-server/src/main/resources/static/word/use-record.docx b/cnas-server/src/main/resources/static/word/use-record.docx
new file mode 100644
index 0000000..236e645
--- /dev/null
+++ b/cnas-server/src/main/resources/static/word/use-record.docx
Binary files differ
diff --git a/framework/src/main/java/com/yuanchu/mom/enums/QrModelType.java b/framework/src/main/java/com/yuanchu/mom/enums/QrModelType.java
new file mode 100644
index 0000000..10884d5
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/enums/QrModelType.java
@@ -0,0 +1,39 @@
+package com.yuanchu.mom.enums;
+
+import org.apache.commons.lang3.StringUtils;
+
+public enum QrModelType {
+
+ WORD_TYPE("word","word_qr_show"),
+ DEVICE_TYPE("device","device_qr_show");
+
+ String type,value;
+
+ QrModelType(String desc, String value) {
+ this.type = desc;
+ this.value = value;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * 鏍规嵁绫诲瀷鑾峰彇鏋氫妇鍊�
+ * @param type
+ * @return
+ */
+ public static String getValueByType(String type){
+ for (QrModelType qrModelType : QrModelType.values()) {
+ if(StringUtils.isNotBlank(type) && type.equals(qrModelType.getType())){
+ return qrModelType.getValue();
+ }
+ }
+ throw new IllegalArgumentException();
+ }
+
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/UserUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/UserUtils.java
new file mode 100644
index 0000000..3f82104
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/UserUtils.java
@@ -0,0 +1,90 @@
+package com.yuanchu.mom.utils;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.deepoove.poi.data.PictureRenderData;
+import com.deepoove.poi.data.Pictures;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.User;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-17 鏄熸湡浜� 10:35:50
+ * Description: User宸ュ叿绫�
+ */
+@Component
+public class UserUtils {
+ private static UserMapper userMapper;
+
+ private static String imgUrl;
+
+ @Autowired
+ public void setUserMapper(UserMapper userMapper) {
+ UserUtils.userMapper = userMapper;
+ }
+
+ @Autowired
+ public void setImgUrl(@Value("${file.path}") String imgUrl) {
+ UserUtils.imgUrl = imgUrl;
+ }
+
+ /**
+ * 閫氳繃浜哄憳id鑾峰彇鐢ㄦ埛绛惧悕鍦板潃
+ * @param userId 浜哄憳id
+ * @return 鐢ㄦ埛绛惧悕鍦板潃
+ */
+ public static String getUserSignatureUrl(Integer userId) {
+ String userSignatureUrl = null;
+ if (userId != null) {
+ userSignatureUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery()
+ .eq(User::getId, userId))
+ .getSignatureUrl();
+ if (StringUtils.isBlank(userSignatureUrl)) {
+ throw new ErrorException("鎵句笉鍒拌浜哄憳绛惧悕");
+ }
+ return imgUrl + "\\" + userSignatureUrl;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * 閫氳繃浜哄憳id鑾峰彇娓叉煋Word鐢ㄦ埛绛惧悕瀵硅薄
+ * @param userId 浜哄憳id
+ * @return 鐢ㄦ埛绛惧悕瀵硅薄 or null
+ */
+ public static PictureRenderData getFinalUserSignatureUrl(Integer userId) {
+ String userSignatureUrl = null;
+ if (userId != null) {
+ userSignatureUrl = userMapper.selectById(userId)
+ .getSignatureUrl();
+ if (StringUtils.isBlank(userSignatureUrl)) {
+ throw new ErrorException("鎵句笉鍒拌浜哄憳绛惧悕");
+ }
+ }
+ return StringUtils.isNotBlank(userSignatureUrl) ? Pictures.ofLocal(imgUrl + "/" + userSignatureUrl).create() : null;
+ }
+
+
+ /**
+ * 閫氳繃鍚嶅瓧鑾峰彇娓叉煋Word鐢ㄦ埛绛惧悕瀵硅薄
+ * @param userName 浜哄憳鍚嶅瓧
+ * @return 鐢ㄦ埛绛惧悕瀵硅薄 or null
+ */
+ public static PictureRenderData getFinalUserSignatureUrl(String userName) {
+ String userSignatureUrl = null;
+ if (userName != null) {
+ userSignatureUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery()
+ .eq(User::getName, userName))
+ .getSignatureUrl();
+ if (StringUtils.isBlank(userSignatureUrl)) {
+ throw new ErrorException("鎵句笉鍒拌浜哄憳绛惧悕");
+ }
+ }
+ return StringUtils.isNotBlank(userSignatureUrl) ? Pictures.ofLocal(imgUrl + "/" + userSignatureUrl).create() : null;
+ }
+}
--
Gitblit v1.9.3