From 69c6770472178e64975806f8344c2e0260427c6e Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 20 十二月 2024 14:18:01 +0800
Subject: [PATCH] cnas7模块+6部分模块(更新至	df6c60)

---
 cnas-process/src/main/java/com/yuanchu/mom/dto/InspectionOrderDetail.java                                                |   46 
 cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessComplainDto.java                                                   |   23 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/InconsistentDistributionServiceImpl.java                         |  236 
 cnas-resource-require/src/main/java/com/yuanchu/mom/dto/ForeignRegisterDto.java                                          |   32 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetails.java                                             |   68 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeIllumination.java                                             |   59 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/ForeignRegisterServiceImpl.java                         |  103 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessOrderService.java                                              |   28 
 cnas-process/src/main/resources/static/quality-monitor.docx                                                              |    0 
 cnas-resource-require/src/main/resources/mapper/FeMeasuredQuantityMapper.xml                                             |   17 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMethodFileMapper.java                               |   17 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeLightningProtection.java                                      |   63 
 cnas-resource-require/src/main/resources/mapper/FeCalibrationScheduleMapper.xml                                          |   38 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsCorrectFile.java                                  |   55 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeTempHumRecordMapper.java                                    |   20 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstance.java                                        |   84 
 cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementServiceImpl.java                                 |    4 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessTotalSampleService.java                                        |   26 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyMethodFile.java                                       |   55 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessComplain.java                                                     |  151 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/InconsistentDistributionDetail.java                                      |   80 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceRecordService.java                        |   30 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/ForeignRegisterMapper.java                                    |   39 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorMapper.java                                              |   28 
 cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyDto.java                                               |   30 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/ForeignRegister.java                                            |   78 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceAcceptanceInspectionService.java          |   16 
 cnas-process/src/main/resources/mapper/QualityMonitorDetailsMapper.xml                                                   |   14 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceRecordMapper.java                          |   22 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/InconsistentDistribution.java                                            |   51 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeLightningProtectionServiceImpl.java                   |   28 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessTotaldealMapper.java                                            |   21 
 cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsCorrectDto.java                                    |   25 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessEvaluateService.java                                           |   28 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessDealServiceImpl.java                                      |  106 
 cnas-process/pom.xml                                                                                                     |   47 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessReport.java                                                       |   97 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyCalibrationsFile.java                                 |   57 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceService.java                              |   19 
 cnas-resource-require/src/main/java/com/yuanchu/mom/dto/AcceptanceDto.java                                               |   15 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessTotalSample.java                                                  |   83 
 cnas-process/src/main/resources/mapper/ProcessSampleMapper.xml                                                           |   29 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsAccording.java                                    |  140 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetails.java                                               |   71 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessComplainService.java                                           |   31 
 cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeTempHumDateController.java                              |   94 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FePowerStableServiceImpl.java                           |  121 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/CnasProcessMethodVerifyWorkFileServiceImpl.java                  |   19 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessOrderServiceImpl.java                                     |  157 
 cnas-process/src/main/java/com/yuanchu/mom/schedule/ProcessTotaldealSchedule.java                                        |   37 
 cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FePowerStableController.java                              |  101 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeTempHumDateService.java                                    |   24 
 cnas-resource-require/src/main/resources/mapper/FeIlluminationMapper.xml                                                 |   54 
 cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessSampleController.java                                       |   75 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeTempHumRecordService.java                                  |   20 
 cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageControlPlanListServiceImpl.java                             |    2 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodSearchNew.java                                              |   75 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/InconsistentDistributionMapper.java                                    |   30 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeTempHumDate.java                                              |   57 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyMachineAttachment.java                                |   61 
 cnas-process/src/main/resources/mapper/ProcessMethodVerifyWorkFileMapper.xml                                             |   13 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessTotaldeal.java                                                    |   84 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsCorrectMapper.java                              |   29 
 cnas-resource-require/src/main/resources/static/illumination.docx                                                        |    0 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeIlluminationDetectionArea.java                                |   58 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualitySuperviseServiceImpl.java                                 |  829 +++
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyWorkFileService.java                               |   15 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeIlluminationServiceImpl.java                          |  133 
 cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceAcceptanceController.java              |  105 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/InternalWastesService.java                                   |   63 
 cnas-resource-require/src/main/resources/mapper/FeLightningProtectionMapper.xml                                          |   20 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessEvaluateMapper.java                                             |   21 
 cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorService.java                                            |  144 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsEvaluate.java                                       |   86 
 framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java                                                               |   67 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMapper.java                                         |   29 
 cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessTotaldealController.java                                    |   68 
 cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsDto.java                                           |   22 
 cnas-process/src/main/resources/mapper/QualityMonitorDetailsEvaluateMapper.xml                                           |   15 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMachineAttachmentMapper.java                        |   23 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsRecordMapper.java                               |   24 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyMachineAttachmentService.java                      |   15 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessSampleMapper.java                                               |   21 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsEvaluateServiceImpl.java                    |   19 
 cnas-process/src/main/resources/static/report-deal.docx                                                                  |    0 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseMapper.java                                            |   28 
 cnas-process/src/main/java/com/yuanchu/mom/utils/UserUtils.java                                                          |  101 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsEvaluateFile.java                                   |   54 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java |   20 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeLightningProtectionMapper.java                              |   21 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeMeasuredQuantityService.java                               |   16 
 cnas-process/src/main/resources/mapper/ProcessTotalSampleMapper.xml                                                      |   35 
 cnas-process/src/main/resources/mapper/ProcessOrderMapper.xml                                                            |  202 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessTotaldealServiceImpl.java                                 |  419 +
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsRatifyServiceImpl.java                      |   19 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeCalibrationSchedule.java                                      |   84 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessEvaluate.java                                                     |   83 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitor.java                                                      |   79 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeTempHumDateServiceImpl.java                           |   96 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceAcceptanceService.java                    |   33 
 cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsService.java                                     |   15 
 cnas-resource-require/src/main/resources/mapper/FeTempHumDateMapper.xml                                                  |   21 
 cnas-resource-require/src/main/resources/mapper/ForeignRegisterMapper.xml                                                |   39 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessDeal.java                                                         |   77 
 cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml                                                  |   36 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsServiceImpl.java                            |   19 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/CnasProcessMethodVerifyCalibrationsFileServiceImpl.java          |   19 
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java                                       |    7 
 cnas-process/src/main/java/com/yuanchu/mom/excel/QualityMonitorDetailsUpload.java                                        |   34 
 cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeTempHumDateDto.java                                            |   12 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/InternalWastesDetailService.java                             |   16 
 cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceRecordMapper.xml                                      |   51 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsMapper.java                                     |   29 
 cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableDto.java                                            |   29 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyService.java                                       |   87 
 cnas-process/src/main/java/com/yuanchu/mom/service/InconsistentDistributionDetailService.java                            |   16 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsCorrect.java                                      |  124 
 cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingServiceImpl.java                                     |    2 
 cnas-process/src/main/resources/mapper/ProcessDealMapper.xml                                                             |   26 
 cnas-resource-require/src/main/resources/static/foreign-register.docx                                                    |    0 
 cnas-process/src/main/resources/static/supervision-detail-record.docx                                                    |    0 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeIlluminationDetectionAreaService.java                      |   16 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyMachineAttachmentServiceImpl.java             |   19 
 cnas-resource-require/src/main/java/com/yuanchu/mom/controller/InternalWastesController.java                             |  104 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeCalibrationScheduleService.java                            |   23 
 cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableAddDto.java                                         |   15 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodSearchNewMapper.java                                      |   40 
 cnas-process/src/main/resources/static/quality-monitor-evaluate.docx                                                     |    0 
 cnas-process/src/main/resources/static/inspection-order.docx                                                             |    0 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyWorkFile.java                                         |   60 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsRecord.java                                       |  120 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsRatifyMapper.java                                 |   17 
 cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessMethodSearchNewController.java                              |  100 
 cnas-process/src/main/java/com/yuanchu/mom/controller/QualityMonitorController.java                                      |  295 +
 cnas-process/src/main/resources/static/quality-supervise.docx                                                            |    0 
 cnas-process/src/main/java/com/yuanchu/mom/dto/ImageDemoData.java                                                        |   43 
 cnas-process/src/main/resources/mapper/QualitySuperviseMapper.xml                                                        |   15 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyMethodFileServiceImpl.java                    |   19 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessEvaluateServiceImpl.java                                  |  110 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessComplainMapper.java                                             |   28 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsEvaluateFileMapper.java                           |   17 
 cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodSearchNewDto.java                                            |   56 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsCorrectFileMapper.java                          |   17 
 cnas-process/src/main/resources/static/sample-deal.docx                                                                  |    0 
 cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessEvaluateController.java                                     |   76 
 cnas-process/src/main/java/com/yuanchu/mom/dto/InconsistentDistributionDto.java                                          |   29 
 cnas-process/src/main/resources/mapper/QualityMonitorMapper.xml                                                          |   20 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceRecordServiceImpl.java               |   79 
 cnas-process/src/main/resources/static/sample-receive.docx                                                               |    0 
 cnas-resource-require/src/main/resources/static/temp_hum_date.docx                                                       |    0 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FePowerStableMapper.java                                      |   34 
 cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessReportController.java                                       |   84 
 cnas-resource-require/src/main/resources/mapper/FeIlluminationDetectionAreaMapper.xml                                    |   16 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsAccordingMapper.java                            |   36 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java           |  112 
 cnas-process/src/main/java/com/yuanchu/mom/dto/InspectionOrderExportDto.java                                             |   65 
 cnas-process/src/main/java/com/yuanchu/mom/dto/SampleItemDto.java                                                        |   23 
 cnas-process/src/main/resources/static/supervise-detail-correct.docx                                                     |    0 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceMapper.java                                |   20 
 cnas-process/src/main/java/com/yuanchu/mom/controller/QualitySuperviseController.java                                    |  335 +
 cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingServiceImpl.java                                   |    2 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessDealMapper.java                                                 |   21 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeLightningProtectionService.java                            |   21 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessComplainServiceImpl.java                                  |  116 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeCalibrationScheduleServiceImpl.java                   |   28 
 cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceMapper.xml                                            |   56 
 cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessMethodVerifyController.java                                 |  168 
 cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessTotalSampleController.java                                  |   66 
 cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsAccordingDto.java                                  |   63 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsMapper.java                                       |   28 
 cnas-process/src/main/resources/static/method-verify.docx                                                                |    0 
 framework/src/main/java/com/yuanchu/mom/annotation/CustomClazzName.java                                                  |   17 
 cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeCalibrationScheduleController.java                      |   94 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeMeasuredQuantityServiceImpl.java                      |   20 
 cnas-process/src/main/java/com/yuanchu/mom/controller/InconsistentDistributionController.java                            |  105 
 cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessOrderController.java                                        |   79 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/InconsistentDistributionDetailMapper.java                              |   18 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/InternalWastesServiceImpl.java                          |  173 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceRecord.java                                  |   81 
 cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableExportDto.java                                      |   32 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/InconsistentDistributionDetailServiceImpl.java                   |   20 
 cnas-process/src/main/java/com/yuanchu/mom/dto/QualityMonitorDto.java                                                    |   22 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/InternalWastesDetail.java                                       |   72 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceServiceImpl.java                     |   26 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java            |   16 
 cnas-process/src/main/resources/mapper/ProcessMethodVerifyMapper.xml                                                     |   22 
 cnas-resource-require/src/main/java/com/yuanchu/mom/vo/SubstanceRecordVo.java                                            |   46 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeCalibrationScheduleMapper.java                              |   20 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyWorkFileMapper.java                                 |   24 
 cnas-resource-require/src/main/resources/static/power-stable.docx                                                        |    0 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessDealService.java                                               |   26 
 cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsRatifyService.java                               |   15 
 cnas-process/src/main/resources/static/supervision-detail-according.docx                                                 |    0 
 cnas-resource-require/src/main/java/com/yuanchu/mom/controller/ForeignRegisterController.java                            |  105 
 cnas-process/src/main/resources/mapper/InconsistentDistributionDetailMapper.xml                                          |    6 
 cnas-resource-require/src/main/resources/mapper/InternalWastesMapper.xml                                                 |   16 
 cnas-resource-require/src/main/resources/mapper/FeTempHumRecordMapper.xml                                                |   28 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessOrder.java                                                        |   63 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessSample.java                                                       |   91 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FePowerStable.java                                              |   62 
 cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanServiceImpl.java                                      |    2 
 cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationAddDto.java                                        |   15 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeIlluminationDetectionAreaMapper.java                        |   16 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeMeasuredQuantityMapper.java                                 |   16 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessReportMapper.java                                               |   25 
 cnas-process/src/main/java/com/yuanchu/mom/service/InconsistentDistributionService.java                                  |   63 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessReportServiceImpl.java                                    |  431 +
 cnas-process/src/main/resources/mapper/ProcessEvaluateMapper.xml                                                         |   26 
 framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java                                                              |   25 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/InternalWastesMapper.java                                     |   36 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessReportService.java                                             |   24 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeTempHumRecordServiceImpl.java                         |   27 
 cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceAcceptanceInspectionController.java    |   43 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySupervise.java                                                    |   73 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessTotaldealService.java                                          |   27 
 cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationExportDto.java                                     |   27 
 cnas-process/src/main/resources/mapper/ProcessReportMapper.xml                                                           |   41 
 cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceInspectionMapper.xml                        |   17 
 cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeTempHumRecordDto.java                                          |   26 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/ForeignRegisterService.java                                  |   34 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyCalibrationsFileService.java                       |   15 
 cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessDealController.java                                         |   74 
 cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessReportDto.java                                                     |   12 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyServiceImpl.java                              |  424 +
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/InternalWastesDetailMapper.java                               |   16 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceAcceptance.java                              |   92 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessSampleServiceImpl.java                                    |  105 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceAcceptanceInspection.java                    |   51 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessOrderMapper.java                                                |   29 
 cnas-resource-require/src/main/java/com/yuanchu/mom/vo/AcceptanceDetailsVo.java                                          |   23 
 cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyExportWordDto.java                                     |   40 
 cnas-resource-require/pom.xml                                                                                            |   30 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/InternalWastes.java                                             |   50 
 cnas-resource-require/src/main/java/com/yuanchu/mom/vo/AcceptanceVo.java                                                 |   47 
 cnas-process/src/main/java/com/yuanchu/mom/excel/QualitySuperviseDetailsUpload.java                                      |   31 
 cnas-process/src/main/resources/mapper/ProcessComplainMapper.xml                                                         |   62 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeTempHumRecord.java                                            |   65 
 cnas-process/src/main/resources/mapper/ProcessMethodVerifyCalibrationsFileMapper.xml                                     |   24 
 cnas-process/src/main/resources/mapper/QualitySuperviseDetailsRecordMapper.xml                                           |   11 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorServiceImpl.java                                   |  541 +
 cnas-resource-require/src/main/java/com/yuanchu/mom/dto/InternalWastesDto.java                                           |   19 
 cnas-process/src/main/resources/static/quality-monitor-details-ratify.docx                                               |    0 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceAcceptanceMapper.java                      |   22 
 cnas-resource-require/src/main/resources/mapper/FePowerStableMapper.xml                                                  |   71 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessTotalSampleMapper.java                                          |   21 
 cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessComplainController.java                                     |   82 
 cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeCalibrationScheduleExport.java                               |   36 
 cnas-process/src/main/resources/mapper/QualitySuperviseDetailsMapper.xml                                                 |   24 
 cnas-resource-require/src/main/resources/mapper/InternalWastesDetailMapper.xml                                           |    6 
 cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckServiceImpl.java                                     |    2 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsRatify.java                                         |   86 
 cnas-process/src/main/resources/mapper/InconsistentDistributionMapper.xml                                                |   20 
 cnas-process/src/main/resources/static/inconsistent-distribution.docx                                                    |    0 
 cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceController.java                        |   91 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/InternalWastesDetailServiceImpl.java                    |   20 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsEvaluateMapper.java                               |   23 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeIlluminationService.java                                   |   29 
 cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerify.java                                                 |  134 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessTotalSampleServiceImpl.java                               |  439 +
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodSearchNewService.java                                    |   51 
 cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeStandardSubstanceExcel.java                                  |   55 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyMethodFileService.java                             |   15 
 cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsEvaluateService.java                             |   15 
 cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalReportServiceImpl.java                                    |    2 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodSearchNewServiceImpl.java                           |  297 +
 cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceMapper.xml                                  |   46 
 cnas-process/src/main/java/com/yuanchu/mom/service/ProcessSampleService.java                                             |   26 
 cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessOrderDto.java                                                      |   85 
 cnas-process/src/main/resources/mapper/QualitySuperviseDetailsAccordingMapper.xml                                        |   57 
 cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyCalibrationsFileDto.java                               |   19 
 cnas-process/src/main/resources/mapper/QualitySuperviseDetailsCorrectMapper.xml                                          |   15 
 cnas-process/src/main/resources/mapper/ProcessTotaldealMapper.xml                                                        |   34 
 cnas-resource-require/src/main/resources/static/internal-wastes.docx                                                     |    0 
 cnas-process/src/main/java/com/yuanchu/mom/service/QualitySuperviseDetailsService.java                                   |   15 
 cnas-process/src/main/java/com/yuanchu/mom/dto/QualityMonitorDetailsEvaluateDto.java                                     |   16 
 cnas-process/src/main/java/com/yuanchu/mom/service/QualitySuperviseService.java                                          |  163 
 cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeLightningProtectionExcel.java                                |   25 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeTempHumDateMapper.java                                      |   20 
 cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyCalibrationsFileMapper.java                         |   35 
 cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualitySuperviseDetailsServiceImpl.java                          |   19 
 cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeIlluminationMapper.java                                     |   28 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeIlluminationDetectionAreaServiceImpl.java             |   20 
 cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationDto.java                                           |   28 
 cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeIlluminationController.java                             |   90 
 cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceRecordController.java                  |   74 
 cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeMeasuredQuantity.java                                         |   57 
 cnas-resource-require/src/main/java/com/yuanchu/mom/service/FePowerStableService.java                                    |   33 
 cnas-process/src/main/java/com/yuanchu/mom/dto/InconsistentDistributionProportionDto.java                                |   48 
 cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeLightningProtectionController.java                      |   94 
 289 files changed, 16,306 insertions(+), 37 deletions(-)

diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckServiceImpl.java
index dad5ee6..1ff4bf5 100644
--- a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckServiceImpl.java
+++ b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalCheckServiceImpl.java
@@ -18,7 +18,7 @@
 import com.yuanchu.mom.pojo.InternalCheck;
 import com.yuanchu.mom.service.InternalCheckService;
 import com.yuanchu.mom.service.InternalCheckDetailService;
-import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
 import com.yuanchu.mom.utils.DateImageUtil;
 import com.yuanchu.mom.utils.QueryWrappers;
 import lombok.AllArgsConstructor;
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementServiceImpl.java
index 332c041..36497de 100644
--- a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementServiceImpl.java
+++ b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalImplementServiceImpl.java
@@ -19,8 +19,8 @@
 import com.yuanchu.mom.pojo.User;
 import com.yuanchu.mom.service.InternalImplementDetailService;
 import com.yuanchu.mom.service.InternalImplementService;
-import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
-import com.yuanchu.mom.util.XWPFDocumentUtils;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.XWPFDocumentUtils;
 import com.yuanchu.mom.utils.DateImageUtil;
 import com.yuanchu.mom.utils.QueryWrappers;
 import lombok.AllArgsConstructor;
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingServiceImpl.java
index 2952c5f..477b17b 100644
--- a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingServiceImpl.java
+++ b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalMeetingServiceImpl.java
@@ -19,7 +19,7 @@
 import com.yuanchu.mom.service.InternalMeetingDetailService;
 import com.yuanchu.mom.service.InternalMeetingService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
 import com.yuanchu.mom.utils.DateImageUtil;
 import com.yuanchu.mom.utils.QueryWrappers;
 import lombok.AllArgsConstructor;
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanServiceImpl.java
index be7fa8d..cd7491d 100644
--- a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanServiceImpl.java
+++ b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalPlanServiceImpl.java
@@ -18,7 +18,7 @@
 import com.yuanchu.mom.service.InternalPlanDetailService;
 import com.yuanchu.mom.service.InternalPlanService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
 import com.yuanchu.mom.utils.DateImageUtil;
 import com.yuanchu.mom.utils.QueryWrappers;
 import lombok.AllArgsConstructor;
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalReportServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalReportServiceImpl.java
index 11ccf7d..d88257d 100644
--- a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalReportServiceImpl.java
+++ b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/InternalReportServiceImpl.java
@@ -18,7 +18,7 @@
 import com.yuanchu.mom.pojo.InternalReport;
 import com.yuanchu.mom.pojo.User;
 import com.yuanchu.mom.service.InternalReportService;
-import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
 import com.yuanchu.mom.utils.DateImageUtil;
 import com.yuanchu.mom.utils.QueryWrappers;
 import lombok.AllArgsConstructor;
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageControlPlanListServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageControlPlanListServiceImpl.java
index 9cc919a..ac809e2 100644
--- a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageControlPlanListServiceImpl.java
+++ b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageControlPlanListServiceImpl.java
@@ -13,7 +13,7 @@
 import com.yuanchu.mom.mapper.ManageControlPlanListMapper;
 import com.yuanchu.mom.service.ManageControlPlanListService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
 import com.yuanchu.mom.utils.DateImageUtil;
 import com.yuanchu.mom.vo.ManageControlPlanListVo;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingServiceImpl.java b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingServiceImpl.java
index 0f337ae..6c213c4 100644
--- a/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingServiceImpl.java
+++ b/cnas-manage/src/main/java/com/yuanchu/mom/service/impl/ManageMeetingServiceImpl.java
@@ -22,7 +22,7 @@
 import com.yuanchu.mom.pojo.User;
 import com.yuanchu.mom.service.ManageMeetingService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yuanchu.mom.util.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
diff --git a/cnas-process/pom.xml b/cnas-process/pom.xml
new file mode 100644
index 0000000..ab77c4f
--- /dev/null
+++ b/cnas-process/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>mom</artifactId>
+        <groupId>com.yuanchu.mom</groupId>
+        <version>1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>cnas-process</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>cnas-process</name>
+    <description>cnas-process</description>
+    <packaging>jar</packaging>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>com.yuanchu.mom</groupId>
+            <artifactId>user-server</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.yuanchu.mom</groupId>
+            <artifactId>framework</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.yuanchu.mom</groupId>
+            <artifactId>inspect-server</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.yuanchu.mom</groupId>
+            <artifactId>cnas-server</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/InconsistentDistributionController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/InconsistentDistributionController.java
new file mode 100644
index 0000000..7079ef7
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/InconsistentDistributionController.java
@@ -0,0 +1,105 @@
+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.dto.InconsistentDistributionDto;
+import com.yuanchu.mom.pojo.InconsistentDistribution;
+import com.yuanchu.mom.service.InconsistentDistributionService;
+import com.yuanchu.mom.service.ProcessComplainService;
+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-11-15 09:53:20
+ */
+@Api(tags = "涓嶇鍚堥」鐨勫垎甯�")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/inconsistentDistribution")
+public class InconsistentDistributionController {
+
+    private InconsistentDistributionService inconsistentDistributionService;
+
+    /**
+     * 涓嶇鍚堥」鐨勫垎甯冨垎椤垫煡璇�
+     * @param data
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "涓嶇鍚堥」鐨勫垎甯冨垎椤垫煡璇�")
+    @PostMapping("/pageInconsistentDistribution")
+    public Result<IPage<InconsistentDistributionDto>> pageInconsistentDistribution(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        InconsistentDistribution inconsistentDistribution = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), InconsistentDistribution.class);
+        return Result.success(inconsistentDistributionService.pageInconsistentDistribution(page, inconsistentDistribution));
+    }
+
+    /**
+     * 涓嶇鍚堥」鐨勫垎甯冩柊澧�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "涓嶇鍚堥」鐨勫垎甯冩柊澧�")
+    @PostMapping("/addInconsistentDistribution")
+    public Result addInconsistentDistribution(@RequestBody InconsistentDistributionDto inconsistentDistribution){
+        return Result.success(inconsistentDistributionService.addInconsistentDistribution(inconsistentDistribution));
+    }
+
+    /**
+     * 涓嶇鍚堥」鐨勫垎甯冧慨鏀�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "涓嶇鍚堥」鐨勫垎甯冧慨鏀�")
+    @PostMapping("/updateInconsistentDistribution")
+    public Result updateInconsistentDistribution(@RequestBody InconsistentDistributionDto inconsistentDistribution){
+        return Result.success(inconsistentDistributionService.updateInconsistentDistribution(inconsistentDistribution));
+    }
+
+    /**
+     * 涓嶇鍚堥」鐨勫垎甯冨垹闄�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "涓嶇鍚堥」鐨勫垎甯冨垹闄�")
+    @GetMapping("/delInconsistentDistribution")
+    public Result delInconsistentDistribution(Integer distributionId){
+        return Result.success(inconsistentDistributionService.delInconsistentDistribution(distributionId));
+    }
+
+    /**
+     * 涓嶇鍚堥」鐨勫垎甯冩煡鐪嬭鎯�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "涓嶇鍚堥」鐨勫垎甯冩煡鐪嬭鎯�")
+    @GetMapping("/getInconsistentDistributionOne")
+    public Result<InconsistentDistributionDto> getInconsistentDistributionOne(Integer distributionId){
+        return Result.success(inconsistentDistributionService.getInconsistentDistributionOne(distributionId));
+    }
+
+    /**
+     * 瀵煎嚭涓嶇鍚堥」鐨勫垎甯�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭涓嶇鍚堥」鐨勫垎甯�")
+    @GetMapping("/exportInconsistentDistribution")
+    public void exportInconsistentDistribution(Integer distributionId, HttpServletResponse response){
+        inconsistentDistributionService.exportInconsistentDistribution(distributionId, response);
+    }
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessComplainController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessComplainController.java
new file mode 100644
index 0000000..c2560c0
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessComplainController.java
@@ -0,0 +1,82 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.dto.ReportPageDto;
+import com.yuanchu.mom.pojo.ProcessComplain;
+import com.yuanchu.mom.service.ProcessComplainService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鎶曡瘔 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 09:29:11
+ */
+@RestController
+@RequestMapping("/processComplain")
+@CustomClazzName(name = "杩囩▼瑕佹眰",index = 9)
+public class ProcessComplainController {
+
+    @Resource
+    private ProcessComplainService  processComplainService;
+
+    @ValueClassify(value = "鎶曡瘔")
+    @ApiOperation(value = "鎶曡瘔鎯呭喌姹囨�昏〃")
+    @PostMapping("/pageProcessComplain")
+    public Result pageProcessComplain(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ProcessComplain processComplain = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessComplain.class);
+        return Result.success(processComplainService.pageProcessComplain(page, processComplain));
+    }
+
+    @ValueClassify(value = "鎶曡瘔")
+    @ApiOperation(value = "鏂板鎶曡瘔")
+    @PostMapping("/addProcessComplain")
+    public Result addProcessComplain(@RequestBody ProcessComplain processComplain ) {
+        return Result.success(processComplainService.addProcessComplain(processComplain));
+    }
+
+    @ValueClassify(value = "鎶曡瘔")
+    @ApiOperation(value = "鍒犻櫎鎶曡瘔")
+    @PostMapping("/delProcessComplain")
+    public Result delProcessComplain(Long id) {
+        return Result.success(processComplainService.removeById(id));
+    }
+
+    @ValueAuth
+    @ApiOperation(value = "鎶曡瘔璇︽儏")
+    @PostMapping("/getProcessComplain")
+    public Result getProcessComplain(Long id) {
+        return Result.success(processComplainService.getProcessComplain(id));
+    }
+
+    @ValueClassify(value = "鎶曡瘔")
+    @ApiOperation(value = "澶勭悊鎶曡瘔")
+    @PostMapping("/doProcessComplain")
+    public Result doProcessComplain(@RequestBody ProcessComplain processComplain) {
+        return Result.success(processComplainService.doProcessComplain(processComplain));
+    }
+
+    @ValueClassify(value = "鎶曡瘔")
+    @ApiOperation(value = "瀵煎嚭鍒楄〃")
+    @PostMapping("/exportProcessComplain")
+    public void exportProcessComplain(@RequestBody Map<String, Object> data,HttpServletResponse response) throws Exception {
+        ProcessComplain processComplain = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessComplain.class);
+        processComplainService.exportProcessComplain(processComplain,response);
+    }
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessDealController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessDealController.java
new file mode 100644
index 0000000..2fdb932
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessDealController.java
@@ -0,0 +1,74 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.pojo.ProcessDeal;
+import com.yuanchu.mom.pojo.ProcessEvaluate;
+import com.yuanchu.mom.service.ProcessDealService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * <p>
+ * 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 02:50:19
+ */
+@RestController
+@RequestMapping("/processDeal")
+@CustomClazzName(name = "杩囩▼瑕佹眰",index = 9)
+public class ProcessDealController {
+
+    @Resource
+    private ProcessDealService processDealService;
+
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃鎯�")
+    @PostMapping("/pageProcessDeal")
+    public Result pageProcessDeal(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ProcessDeal processDeal = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessDeal.class);
+        return Result.success(processDealService.pageProcessDeal(page, processDeal));
+    }
+
+    @ValueClassify(value = "妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @ApiOperation(value = "鏂板妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @PostMapping("/addProcessDeal")
+    public Result addProcessDeal(@RequestBody ProcessDeal processDeal) {
+        return Result.success(processDealService.addProcessDeal(processDeal));
+    }
+
+    @ValueAuth
+    @ApiOperation(value = "鍒犻櫎妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @PostMapping("/delProcessDeal")
+    public Result delProcessDeal(Integer id) {
+        return Result.success(processDealService.delProcessDeal(id));
+    }
+
+    @ValueAuth
+    @ApiOperation(value = "淇敼妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @PostMapping("/doProcessDeal")
+    public Result doProcessDeal(@RequestBody ProcessDeal processDeal) {
+        return Result.success(processDealService.doProcessDeal(processDeal));
+    }
+
+    @ValueAuth
+    @ApiOperation(value = "鏌ョ湅妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @PostMapping("/getProcessDeal")
+    public Result getProcessDeal(Integer id) {
+        return Result.success(processDealService.getById(id));
+    }
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessEvaluateController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessEvaluateController.java
new file mode 100644
index 0000000..2dcf086
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessEvaluateController.java
@@ -0,0 +1,76 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.pojo.ProcessComplain;
+import com.yuanchu.mom.pojo.ProcessEvaluate;
+import com.yuanchu.mom.service.ProcessEvaluateService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 娴嬮噺涓嶇‘瀹氬害鐨勮瘎浠� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 01:10:43
+ */
+@RestController
+@RequestMapping("/processEvaluate")
+@CustomClazzName(name = "杩囩▼瑕佹眰",index = 9)
+public class ProcessEvaluateController {
+
+    @Resource
+    private ProcessEvaluateService processEvaluateService;
+
+    @ValueClassify(value = "娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹�")
+    @ApiOperation(value = "鏌ヨ娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹氬垪琛�")
+    @PostMapping("/pageProcessEvaluate")
+    public Result pageProcessEvaluate(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ProcessEvaluate processEvaluate = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessEvaluate.class);
+        return Result.success(processEvaluateService.pageProcessEvaluate(page, processEvaluate));
+    }
+
+    @ValueClassify(value = "娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹�")
+    @ApiOperation(value = "鏂板娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹�")
+    @PostMapping("/addProcessEvaluate")
+    public Result addProcessEvaluate(MultipartFile file){
+        return Result.success(processEvaluateService.addProcessEvaluate(file));
+    }
+
+    @ValueClassify(value = "娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹�")
+    @ApiOperation(value = "璇勪环")
+    @PostMapping("/doProcessEvaluate")
+    public Result doProcessEvaluate(@RequestBody ProcessEvaluate processEvaluate){
+        return Result.success(processEvaluateService.doProcessEvaluate(processEvaluate));
+    }
+
+    @ValueClassify(value = "娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹�")
+    @ApiOperation(value = "鍒犻櫎娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹�")
+    @PostMapping("/delProcessEvaluate")
+    public Result delProcessEvaluate(Long id){
+        return Result.success(processEvaluateService.removeById(id));
+    }
+
+    @ValueClassify(value = "娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹�")
+    @ApiOperation(value = "瀵煎嚭娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹�")
+    @PostMapping("/exportProcessEvaluate")
+    public void exportProcessEvaluate(@RequestBody Map<String, Object> data, HttpServletResponse response) throws Exception{
+        ProcessEvaluate processEvaluate = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessEvaluate.class);
+        processEvaluateService.exportProcessEvaluate(processEvaluate,response);
+    }
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessMethodSearchNewController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessMethodSearchNewController.java
new file mode 100644
index 0000000..c2c6134
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessMethodSearchNewController.java
@@ -0,0 +1,100 @@
+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.ProcessMethodSearchNewDto;
+import com.yuanchu.mom.pojo.ProcessComplain;
+import com.yuanchu.mom.pojo.ProcessMethodSearchNew;
+import com.yuanchu.mom.service.ProcessMethodSearchNewService;
+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.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 鏍囧噯鏌ユ柊
+ *
+ * @author zhuo
+ * @since 2024-11-04
+ */
+@Api(tags = "鏍囧噯鏌ユ柊")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/processMethodSearchNew")
+public class ProcessMethodSearchNewController {
+
+    private ProcessMethodSearchNewService processMethodSearchNewService;
+
+    /**
+     * 鏂板鏍囧噯鏌ユ柊
+     * @param processMethodSearchNewList
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂板鏍囧噯鏌ユ柊")
+    @PostMapping("/addMethodSearchNew")
+    public Result addMethodSearchNew(@RequestBody List<ProcessMethodSearchNew> processMethodSearchNewList ) {
+        return Result.success(processMethodSearchNewService.addMethodSearchNew(processMethodSearchNewList));
+    }
+
+    /**
+     * 淇敼鏍囧噯鏌ユ柊
+     * @param processMethodSearchNew
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "淇敼鏍囧噯鏌ユ柊")
+    @PostMapping("/updateMethodSearchNew")
+    public Result updateMethodSearchNew(@RequestBody ProcessMethodSearchNew processMethodSearchNew ) {
+        return Result.success(processMethodSearchNewService.updateById(processMethodSearchNew));
+    }
+
+    /**
+     * 鏍囧噯鏌ユ柊鍒楄〃
+     * @param data
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏍囧噯鏌ユ柊鍒楄〃")
+    @PostMapping("/pageMethodSearchNew")
+    public Result<IPage<ProcessMethodSearchNew>> pageMethodSearchNew(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ProcessMethodSearchNewDto processMethodSearchNew = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessMethodSearchNewDto.class);
+        return Result.success(processMethodSearchNewService.pageMethodSearchNew(page, processMethodSearchNew));
+    }
+
+    @ValueAuth
+    @ApiOperation(value = "鏍囧噯鏌ユ柊瀵煎嚭")
+    @PostMapping("/exportMethodSearchNew")
+    public void exportMethodSearchNew(@RequestBody Map<String, Object> data, HttpServletResponse response) throws Exception {
+        ProcessMethodSearchNewDto processMethodSearchNew = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessMethodSearchNewDto.class);
+        processMethodSearchNewService.exportMethodSearchNew(processMethodSearchNew, response);
+    }
+
+
+    /**
+     * 瀵煎叆鏍囧噯鏌ユ柊
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎叆鏍囧噯鏌ユ柊")
+    @PostMapping("/importMethodSearchNew")
+    public Result importMethodSearchNew(MultipartFile file){
+        return Result.success(processMethodSearchNewService.importMethodSearchNew(file));
+    }
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessMethodVerifyController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessMethodVerifyController.java
new file mode 100644
index 0000000..1d453a4
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessMethodVerifyController.java
@@ -0,0 +1,168 @@
+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.dto.ProcessMethodVerifyDto;
+import com.yuanchu.mom.pojo.ProcessMethodVerify;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMethodFile;
+import com.yuanchu.mom.service.ProcessMethodVerifyMethodFileService;
+import com.yuanchu.mom.service.ProcessMethodVerifyService;
+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;
+
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉
+ *
+ * @author zhuo
+ * @since 2024-11-05
+ */
+@RestController
+@RequestMapping("/processMethodVerify")
+@Api(tags = "鏍囧噯鏂规硶楠岃瘉")
+@AllArgsConstructor
+public class ProcessMethodVerifyController {
+
+
+    private ProcessMethodVerifyService ProcessMethodVerifyService;
+
+    private ProcessMethodVerifyMethodFileService processMethodVerifyMethodFileService;
+
+
+
+    /**
+     * 鏍囧噯鏌ユ柊鍒楄〃
+     * @param data
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏍囧噯鏂规硶鏇存柊楠岃瘉鍒楄〃")
+    @PostMapping("/pagesMethodVerify")
+    public Result<IPage<ProcessMethodVerify>> pagesMethodVerify(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ProcessMethodVerifyDto methodVerifyDto = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessMethodVerifyDto.class);
+        return Result.success(ProcessMethodVerifyService.pagesMethodVerify(page, methodVerifyDto));
+    }
+
+    /**
+     * 鏂板鏍囧噯鏂规硶楠岃瘉
+     * @param methodVerifyDto
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂板鏍囧噯鏂规硶楠岃瘉")
+    @PostMapping("/addMethodVerify")
+    public Result addMethodVerify(@RequestBody ProcessMethodVerifyDto methodVerifyDto ) {
+        return Result.success(ProcessMethodVerifyService.addMethodSearchNew(methodVerifyDto));
+    }
+
+    /**
+     * 鏌ヨ鏍囧噯鏂规硶楠岃瘉璇︽儏
+     * @param methodVerifyId
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ鏍囧噯鏂规硶楠岃瘉璇︽儏")
+    @GetMapping("/getMethodVerifyOne")
+    public Result<ProcessMethodVerifyDto> getMethodVerifyOne(Integer methodVerifyId) {
+        return Result.success(ProcessMethodVerifyService.getMethodVerifyOne(methodVerifyId));
+    }
+
+
+    /**
+     * 淇敼鏍囧噯鏂规硶楠岃瘉
+     * @param methodVerifyDto
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "淇敼鏍囧噯鏂规硶楠岃瘉")
+    @PostMapping("/updateMethodVerify")
+    public Result updateMethodVerify(@RequestBody ProcessMethodVerifyDto methodVerifyDto ) {
+        return Result.success(ProcessMethodVerifyService.updateMethodVerify(methodVerifyDto));
+    }
+
+    /**
+     * 鍒犻櫎鏍囧噯鏂规硶鏇存柊楠岃瘉
+     * @param methodVerifyId
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鍒犻櫎鏍囧噯鏂规硶鏇存柊楠岃瘉")
+    @GetMapping("/delMethodVerify")
+    public Result delMethodVerify(Integer methodVerifyId){
+        return Result.success(ProcessMethodVerifyService.delMethodVerify(methodVerifyId));
+    }
+
+    /**
+     * 瀵煎嚭鏍囧噯鏂规硶鏇存柊楠岃瘉
+     * @param methodVerifyId 鏍囧噯鏂规硶楠岃瘉id
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭鏍囧噯鏂规硶鏇存柊楠岃瘉")
+    @GetMapping("/exportMethodVerify")
+    public void exportMethodVerify(Integer methodVerifyId, HttpServletResponse response){
+        ProcessMethodVerifyService.exportMethodVerify(methodVerifyId, response);
+    }
+
+    /**
+     * 楠岃瘉纭
+     * @param methodVerifyId
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "楠岃瘉纭")
+    @GetMapping("/methodVerifyAffirm")
+    public Result methodVerifyAffirm(Integer methodVerifyId) {
+        return Result.success(ProcessMethodVerifyService.methodVerifyAffirm(methodVerifyId));
+    }
+
+    /**
+     * 鏂规硶楠岃瘉鏂板鍘熷璁板綍
+     * @param methodVerifyId
+     * @param file
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂规硶楠岃瘉鏂板鍘熷璁板綍")
+    @PostMapping("/uploadVerifyMethodFile")
+    public Result<?> uploadVerifyMethodFile(Integer methodVerifyId, MultipartFile file) {
+        return Result.success(ProcessMethodVerifyService.uploadVerifyMethodFile(methodVerifyId, file));
+    }
+
+
+    /**
+     * 鏍囧噯鏂规硶鏇存柊楠岃瘉鍘熷璁板綍鍒楄〃
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏍囧噯鏂规硶鏇存柊楠岃瘉鍘熷璁板綍鍒楄〃")
+    @GetMapping("/getVerifyMethodFileList")
+    public Result<List<ProcessMethodVerifyMethodFile>> getVerifyMethodFileList(Integer methodVerifyId){
+        return Result.success(ProcessMethodVerifyService.getVerifyMethodFileList(methodVerifyId));
+    }
+
+    /**
+     * 鏍囧噯鏂规硶鍒犻櫎楠岃瘉鍘熷璁板綍鍒楄〃
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏍囧噯鏂规硶鍒犻櫎楠岃瘉鍘熷璁板綍鍒楄〃")
+    @GetMapping("/delVerifyMethodFileList")
+    public Result delVerifyMethodFileList(Integer methodFileId){
+        return Result.success(processMethodVerifyMethodFileService.removeById(methodFileId));
+    }
+
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessOrderController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessOrderController.java
new file mode 100644
index 0000000..f33d8bb
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessOrderController.java
@@ -0,0 +1,79 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.dto.ProcessOrderDto;
+import com.yuanchu.mom.pojo.ProcessOrder;
+import com.yuanchu.mom.pojo.ProcessReport;
+import com.yuanchu.mom.service.ProcessOrderService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-05 03:06:20
+ */
+@RestController
+@RequestMapping("/processOrder")
+@CustomClazzName(name = "杩囩▼瑕佹眰",index = 9)
+public class ProcessOrderController {
+
+    @Resource
+    private ProcessOrderService processOrderService;
+
+    @ValueClassify(value = "瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫")
+    @ApiOperation(value = "鏌ヨ瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫鍒楄〃")
+    @PostMapping("/pageProcessOrder")
+    public Result pageProcessOrder(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ProcessOrderDto processOrderDto = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessOrderDto.class);
+        return Result.success(processOrderService.pageProcessOrder(page, processOrderDto));
+    }
+
+    @ValueClassify(value = "瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫")
+    @ApiOperation(value = "鍒犻櫎瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫")
+    @PostMapping("/delProcessOrder")
+    public Result delProcessOrder(Long id) {
+        return Result.success(processOrderService.removeById(id));
+    }
+
+    @ApiOperation(value = "淇敼瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫")
+    @PostMapping("/doProcessOrder")
+    @ValueAuth
+    public Result doProcessOrder(@RequestBody ProcessOrder processOrder) {
+        return Result.success(processOrderService.doProcessOrder(processOrder));
+    }
+
+    @ApiOperation(value = "鏌ョ湅璇︽儏瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫")
+    @PostMapping("/getProcessOrder")
+    @ValueAuth
+    public Result getProcessOrder(Integer id) {
+        return Result.success(processOrderService.getProcessOrder(id));
+    }
+
+
+    /**
+     * 瀵煎嚭妫�楠屽鎵樺崟
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭妫�楠屽鎵樺崟")
+    @PostMapping("/exportInspectionOrder")
+    public void exportInspectionOrder(Integer id, HttpServletResponse response){
+        processOrderService.exportInspectionOrder(id, response);
+    }
+
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessReportController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessReportController.java
new file mode 100644
index 0000000..2da8a34
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessReportController.java
@@ -0,0 +1,84 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.dto.ProcessReportDto;
+import com.yuanchu.mom.pojo.ProcessComplain;
+import com.yuanchu.mom.pojo.ProcessReport;
+import com.yuanchu.mom.service.ProcessReportService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-05 08:58:39
+ */
+@RestController
+@RequestMapping("/processReport")
+@CustomClazzName(name = "杩囩▼瑕佹眰",index = 9)
+public class ProcessReportController {
+
+    @Resource
+    private ProcessReportService processReportService;
+
+    @ValueClassify(value = "鎶ュ憡缁撴灉")
+    @ApiOperation(value = "鏌ヨ妫�楠屾姤鍛婂彂鏀剧櫥璁板垪琛�")
+    @PostMapping("/pageProcessReport")
+    public Result pageProcessReport(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ProcessReport processReport = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessReport.class);
+        return Result.success(processReportService.pageProcessReport(page, processReport));
+    }
+
+    @ValueClassify(value = "鎶ュ憡缁撴灉")
+    @ApiOperation(value = "鏂板妫�楠屾姤鍛婂彂鏀剧櫥璁�")
+    @PostMapping("/addProcessReport")
+    public Result  addProcessReport(@RequestBody ProcessReport processReport) {
+        return Result.success(processReportService.save(processReport));
+    }
+
+    @ValueClassify(value = "鎶ュ憡缁撴灉")
+    @ApiOperation(value = "鍒犻櫎妫�楠屾姤鍛婂彂鏀剧櫥璁�")
+    @PostMapping("/delProcessReport")
+    public Result delProcessReport(Long id) {
+        return Result.success(processReportService.removeById(id));
+    }
+
+    @ValueAuth
+    @ApiOperation(value = "鏌ョ湅妫�楠屾姤鍛婂彂鏀剧櫥璁拌鎯�")
+    @PostMapping("/getProcessReport")
+    public Result getProcessReport(Long id)  {
+        return Result.success(processReportService.getById(id));
+    }
+
+    @ValueClassify(value = "鎶ュ憡缁撴灉")
+    @ApiOperation(value = "淇敼妫�楠屾姤鍛婂彂鏀剧櫥璁�")
+    @PostMapping("/doProcessReport")
+    public Result doProcessReport(@RequestBody ProcessReport processReport) {
+        return Result.success(processReportService.updateById(processReport));
+    }
+
+    @ValueClassify(value = "鎶ュ憡缁撴灉")
+    @ApiOperation(value = "瀵煎嚭妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃")
+    @PostMapping("/exportProcessReport")
+    public Result exportProcessReport(@RequestBody ProcessReportDto processReportDto) {
+        return Result.success(processReportService.exportProcessReport(processReportDto.getIds()));
+    }
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessSampleController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessSampleController.java
new file mode 100644
index 0000000..7c59b05
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessSampleController.java
@@ -0,0 +1,75 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.pojo.ProcessDeal;
+import com.yuanchu.mom.pojo.ProcessSample;
+import com.yuanchu.mom.service.ProcessSampleService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏍峰搧鎺ユ敹 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-12 05:02:49
+ */
+@RestController
+@RequestMapping("/processSample")
+@CustomClazzName(name = "杩囩▼瑕佹眰",index = 9)
+public class ProcessSampleController {
+
+    @Resource
+    private ProcessSampleService processSampleService;
+
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ鏍峰搧鎺ユ敹璇︽儏")
+    @PostMapping("/pageProcessSample")
+    public Result pageProcessSample(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ProcessSample processSample = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessSample.class);
+        return Result.success(processSampleService.pageProcessSample(page, processSample));
+    }
+
+    @ValueClassify(value = "鏍峰搧鎺ユ敹璇︽儏")
+    @ApiOperation(value = "鏂板鏍峰搧鎺ユ敹璇︽儏")
+    @PostMapping("/addProcessSample")
+    public Result addProcessSample(@RequestBody ProcessSample processSample) {
+        return Result.success(processSampleService.addProcessSample(processSample));
+    }
+
+    @ValueAuth
+    @ApiOperation(value = "鍒犻櫎鏍峰搧鎺ユ敹")
+    @PostMapping("/delProcessSample")
+    public Result delProcessSample(Integer id) {
+        return Result.success(processSampleService.delProcessSample(id));
+    }
+
+    @ValueAuth
+    @ApiOperation(value = "淇敼鏍峰搧鎺ユ敹")
+    @PostMapping("/doProcessSample")
+    public Result doProcessSample(@RequestBody ProcessSample processSample) {
+        return Result.success(processSampleService.doProcessSample(processSample));
+    }
+
+    @ValueAuth
+    @ApiOperation(value = "鏌ョ湅鏍峰搧鎺ユ敹")
+    @PostMapping("/getProcessSample")
+    public Result getProcessSample(Integer id) {
+        return Result.success(processSampleService.getById(id));
+    }
+
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessTotalSampleController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessTotalSampleController.java
new file mode 100644
index 0000000..e1c2629
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessTotalSampleController.java
@@ -0,0 +1,66 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.pojo.ProcessTotalSample;
+import com.yuanchu.mom.pojo.ProcessTotaldeal;
+import com.yuanchu.mom.service.ProcessTotalSampleService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏍峰搧鎺ユ敹鎬昏〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-12 05:02:58
+ */
+@RestController
+@RequestMapping("/processTotalSample")
+@CustomClazzName(name = "杩囩▼瑕佹眰",index = 9)
+public class ProcessTotalSampleController {
+
+    @Resource
+    private ProcessTotalSampleService processTotalSampleService;
+
+    @ValueClassify(value = "鏍峰搧鎺ユ敹")
+    @ApiOperation(value = "鏌ヨ鏍峰搧鎺ユ敹鍒楄〃")
+    @PostMapping("/pageProcessTotalSample")
+    public Result pageProcessTotalSample(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ProcessTotalSample processTotalSample = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessTotalSample.class);
+        return Result.success(processTotalSampleService.pageProcessTotalSample(page, processTotalSample));
+    }
+
+    @ValueClassify(value = "鏍峰搧鎺ユ敹")
+    @ApiOperation(value = "鎻愪氦鏍峰搧鎺ユ敹")
+    @PostMapping("/submitProcessTotalSample")
+    public Result submitProcessTotalSample(Integer id) {
+        return Result.success(processTotalSampleService.submitProcessTotalSample(id));
+    }
+
+    @ValueClassify(value = "鏍峰搧鎺ユ敹")
+    @ApiOperation(value = "瀹℃牳鏍峰搧鎺ユ敹")
+    @PostMapping("/checkProcessTotalSample")
+    public Result checkProcessTotalSample(Integer id, String state) {
+        return Result.success(processTotalSampleService.checkProcessTotalSample(id, state));
+    }
+
+    @ValueClassify(value = "鏍峰搧鎺ユ敹")
+    @ApiOperation(value = "鎵瑰噯鏍峰搧鎺ユ敹")
+    @PostMapping("/ratifyProcessTotalSample")
+    public Result ratifyProcessTotalSample(Integer id,String state) {
+        return Result.success(processTotalSampleService.ratifyProcessTotalSample(id,state));
+    }
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessTotaldealController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessTotaldealController.java
new file mode 100644
index 0000000..0005c59
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/ProcessTotaldealController.java
@@ -0,0 +1,68 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.pojo.ProcessDeal;
+import com.yuanchu.mom.pojo.ProcessTotaldeal;
+import com.yuanchu.mom.service.ProcessTotaldealService;
+import com.yuanchu.mom.utils.JackSonUtil;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * <p>
+ * 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�昏〃(鍘嗗彶) 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 03:59:09
+ */
+@RestController
+@RequestMapping("/processTotaldeal")
+@CustomClazzName(name = "杩囩▼瑕佹眰",index = 9)
+public class ProcessTotaldealController {
+
+    @Resource
+    private ProcessTotaldealService processTotaldealService;
+
+    @ValueClassify(value = "妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @ApiOperation(value = "鏌ヨ妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃垪琛�")
+    @PostMapping("/pageProcessTotaldeal")
+    public Result pageProcessTotaldeal(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ProcessTotaldeal processTotaldeal = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ProcessTotaldeal.class);
+        return Result.success(processTotaldealService.pageProcessTotaldeal(page, processTotaldeal));
+    }
+
+    @ValueClassify(value = "妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @ApiOperation(value = "鎻愪氦妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @PostMapping("/submitProcessTotaldeal")
+    public Result submitProcessTotaldeal(Integer id) {
+        return Result.success(processTotaldealService.submitProcessTotaldeal(id));
+    }
+
+    @ValueClassify(value = "妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @ApiOperation(value = "瀹℃牳妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @PostMapping("/checkProcessTotaldeal")
+    public Result checkProcessTotaldeal(Integer id, String state) {
+        return Result.success(processTotaldealService.checkProcessTotaldeal(id, state));
+    }
+
+    @ValueClassify(value = "妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @ApiOperation(value = "鎵瑰噯妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+    @PostMapping("/ratifyProcessTotaldeal")
+    public Result ratifyProcessTotaldeal(Integer id,String state) {
+        return Result.success(processTotaldealService.ratifyProcessTotaldeal(id,state));
+    }
+
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/QualityMonitorController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/QualityMonitorController.java
new file mode 100644
index 0000000..0e331e6
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/QualityMonitorController.java
@@ -0,0 +1,295 @@
+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.QualityMonitorDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.QualityMonitorDetailsEvaluateFileMapper;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.service.QualityMonitorDetailsService;
+import com.yuanchu.mom.service.QualityMonitorService;
+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;
+
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝涓昏〃
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Api(tags = "璐ㄩ噺鐩戞帶璁″垝")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/qualityMonitor")
+public class QualityMonitorController {
+
+    private QualityMonitorService qualityMonitorService;
+
+    private QualityMonitorDetailsService qualityMonitorDetailsService;
+
+    private QualityMonitorDetailsEvaluateFileMapper qualityMonitorDetailsEvaluateFileMapper;
+
+    /**
+     * 瀵煎叆鐩戞帶璁″垝
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎叆鐩戞帶璁″垝")
+    @PostMapping("/importQualityMonitor")
+    public Result importQualityMonitor(MultipartFile file){
+        return Result.success(qualityMonitorService.importQualityMonitor(file));
+    }
+
+    /**
+     * 鐩戞帶璁″垝瀹℃牳
+     * @return
+     */
+    @ValueClassify("璐ㄩ噺鐩戞帶璁″垝")
+    @ApiOperation(value = "鐩戞帶璁″垝瀹℃牳")
+    @PostMapping("/examineQualityMonitor")
+    public Result examineQualityMonitor(@RequestBody QualityMonitor qualityMonitor){
+        return Result.success(qualityMonitorService.examineQualityMonitor(qualityMonitor));
+    }
+
+    /**
+     * 鐩戞帶璁″垝鍒犻櫎
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鐩戞帶璁″垝鍒犻櫎")
+    @GetMapping("/delQualitySupervise")
+    public Result delQualitySupervise(Integer qualityMonitorId){
+        return Result.success(qualityMonitorService.removeById(qualityMonitorId));
+    }
+
+    /**
+     * 鐩戞帶璁″垝鎵瑰噯
+     * @return
+     */
+    @ValueClassify("璐ㄩ噺鐩戞帶璁″垝")
+    @ApiOperation(value = "鐩戞帶璁″垝鎵瑰噯")
+    @PostMapping("/ratifyQualityMonitor")
+    public Result ratifyQualityMonitor(@RequestBody QualityMonitor qualityMonitor){
+        return Result.success(qualityMonitorService.ratifyQualityMonitor(qualityMonitor));
+    }
+
+
+    /**
+     * 鐩戞帶璁″垝鍒楄〃
+     * @param data
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鐩戞帶璁″垝鍒楄〃")
+    @PostMapping("/pageQualityMonitor")
+    public Result<IPage<QualityMonitorDto>> pageQualityMonitor(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        QualityMonitor qualityMonitor = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), QualityMonitor.class);
+        return Result.success(qualityMonitorService.pageQualityMonitor(page, qualityMonitor));
+    }
+
+    /**
+     * 鐩戞帶璁″垝璇︽儏鍒楄〃
+     * @param data
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鐩戞帶璁″垝璇︽儏鍒楄〃")
+    @PostMapping("/pageQualityMonitorDetail")
+    public Result<IPage<QualityMonitorDetails>> pageQualityMonitorDetail(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        QualityMonitorDetails qualityMonitorDetails = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), QualityMonitorDetails.class);
+        return Result.success(qualityMonitorService.pageQualityMonitorDetail(page, qualityMonitorDetails));
+    }
+
+    /**
+     * 鏂板鐩戞帶璁″垝璇︽儏
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂板鐩戞帶璁″垝璇︽儏")
+    @PostMapping("/addQualityMonitorDetail")
+    public Result addQualityMonitorDetail(@RequestBody QualityMonitorDetails qualityMonitorDetails){
+        if (qualityMonitorDetails.getQualityMonitorId() == null) {
+            throw new ErrorException("缂哄皯鐩戞帶璁″垝涓昏〃id");
+        }
+        return Result.success(qualityMonitorDetailsService.save(qualityMonitorDetails));
+    }
+
+    /**
+     * 淇敼鐩戞帶璁″垝璇︽儏
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "淇敼鐩戞帶璁″垝璇︽儏")
+    @PostMapping("/updateQualityMonitorDetail")
+    public Result updateQualityMonitorDetail(@RequestBody QualityMonitorDetails qualityMonitorDetails){
+        return Result.success(qualityMonitorDetailsService.updateById(qualityMonitorDetails));
+    }
+
+    /**
+     * 鍒犻櫎鐩戞帶璁″垝璇︽儏
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鍒犻櫎鐩戞帶璁″垝璇︽儏")
+    @GetMapping("/delQualityMonitorDetail")
+    public Result delQualityMonitorDetail(Integer qualityMonitorDetailsId){
+        return Result.success(qualityMonitorDetailsService.removeById(qualityMonitorDetailsId));
+    }
+
+    /**
+     * 瀵煎嚭鐩戞帶璁″垝
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭鐩戞帶璁″垝")
+    @GetMapping("/exportQualityMonitorDetail")
+    public void exportQualityMonitorDetail(Integer qualityMonitorId, HttpServletResponse response){
+        qualityMonitorService.exportQualityMonitorDetail(qualityMonitorId, response);
+    }
+
+
+    /************************************************************  瀹炴柦  *******************************************************************/
+
+    /**
+     * 鏌ヨ鐩戞帶璁″垝璇︽儏瀹炴柦淇℃伅
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ鐩戞帶璁″垝璇︽儏瀹炴柦淇℃伅")
+    @GetMapping("/getQualityMonitorRatify")
+    public Result<QualityMonitorDetailsRatify> getQualityMonitorRatify(Integer qualityMonitorDetailsId){
+        return Result.success(qualityMonitorService.getQualityMonitorRatify(qualityMonitorDetailsId));
+    }
+
+    /**
+     * 鏂板鐩戞帶璁″垝璇︽儏瀹炴柦淇℃伅
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂板鐩戞帶璁″垝璇︽儏瀹炴柦淇℃伅")
+    @PostMapping("/addQualityMonitorRatify")
+    public Result addQualityMonitorRatify(@RequestBody QualityMonitorDetailsRatify qualityMonitorDetailsRatify){
+        return Result.success(qualityMonitorService.addQualityMonitorRatify(qualityMonitorDetailsRatify));
+    }
+
+    /**
+     * 鐩戞帶璁″垝璇︽儏鎻愪氦鎵瑰噯鎰忚
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鐩戞帶璁″垝璇︽儏鎻愪氦鎵瑰噯鎰忚")
+    @PostMapping("/addQualityMonitorRatifyOpinion")
+    public Result addQualityMonitorRatifyOpinion(@RequestBody QualityMonitorDetailsRatify qualityMonitorDetailsRatify){
+        return Result.success(qualityMonitorService.addQualityMonitorRatifyOpinion(qualityMonitorDetailsRatify));
+    }
+
+    /**
+     * 瀵煎嚭鐩戞帶璁″垝璇︽儏瀹炴柦淇℃伅
+     * @param detailsRatifyId 鐩戞帶璁″垝璇︽儏瀹炴柦id
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭鐩戞帶璁″垝璇︽儏瀹炴柦淇℃伅")
+    @GetMapping("/exportQualityMonitorRatify")
+    public void exportQualityMonitorRatify(Integer detailsRatifyId, HttpServletResponse response){
+        qualityMonitorService.exportQualityMonitorRatify(detailsRatifyId, response);
+    }
+
+    /************************************************************  璇勪环  *******************************************************************/
+
+    /**
+     * 鏌ヨ鐩戞帶璇勪环
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ鐩戞帶璇勪环")
+    @GetMapping("/getQualityMonitorEvaluate")
+    public Result<QualityMonitorDetailsEvaluate> getQualityMonitorEvaluate(Integer qualityMonitorDetailsId){
+        return Result.success(qualityMonitorService.getQualityMonitorEvaluate(qualityMonitorDetailsId));
+    }
+
+    /**
+     * 鏂板鐩戞帶璇勪环
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂板鐩戞帶璇勪环")
+    @PostMapping("/addQualityMonitorEvaluate")
+    public Result addQualityMonitorEvaluate(@RequestBody QualityMonitorDetailsEvaluate qualityMonitorDetailsEvaluate){
+        return Result.success(qualityMonitorService.addQualityMonitorEvaluate(qualityMonitorDetailsEvaluate));
+    }
+
+    /**
+     * 瀵煎嚭鐩戞帶璇勪环
+     * @param detailsEvaluateId 鐩戞帶璇勪环id
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭鐩戞帶璇勪环")
+    @GetMapping("/exportQualityMonitorEvaluate")
+    public void exportQualityMonitorEvaluate(Integer detailsEvaluateId, HttpServletResponse response){
+        qualityMonitorService.exportQualityMonitorEvaluate(detailsEvaluateId, response);
+    }
+
+    /**
+     * 鐩戞帶璇勪环鎵瑰噯鎰忚
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鐩戞帶璇勪环鎵瑰噯鎰忚")
+    @PostMapping("/addMonitorEvaluateOpinion")
+    public Result addMonitorEvaluateOpinion(@RequestBody QualityMonitorDetailsEvaluate qualityMonitorDetailsEvaluate){
+        return Result.success(qualityMonitorService.addMonitorEvaluateOpinion(qualityMonitorDetailsEvaluate));
+    }
+
+
+    /**
+     * 鏂板鐩戞帶璇勪环闄勪欢琛�
+     * @param detailsEvaluateId
+     * @param file
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂板鐩戞帶璇勪环闄勪欢琛�")
+    @PostMapping("/uploadEvaluateFile")
+    public Result<?> uploadEvaluateFile(Integer detailsEvaluateId, MultipartFile file) {
+        return Result.success(qualityMonitorService.uploadEvaluateFile(detailsEvaluateId, file));
+    }
+
+
+    /**
+     * 鏌ヨ鐩戞帶璇勪环闄勪欢鍒楄〃
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ鐩戞帶璇勪环闄勪欢鍒楄〃")
+    @GetMapping("/getEvaluateFileList")
+    public Result<List<QualityMonitorDetailsEvaluateFile>> getEvaluateFileList(Integer detailsEvaluateId){
+        return Result.success(qualityMonitorService.getEvaluateFileList(detailsEvaluateId));
+    }
+
+    /**
+     * 鍒犻櫎鐩戞帶璇勪环闄勪欢琛�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鍒犻櫎鐩戞帶璇勪环闄勪欢琛�")
+    @GetMapping("/delVerifyEvaluateFileList")
+    public Result delVerifyMethodFileList(Integer evaluateFileId){
+        return Result.success(qualityMonitorDetailsEvaluateFileMapper.deleteById(evaluateFileId));
+    }
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/controller/QualitySuperviseController.java b/cnas-process/src/main/java/com/yuanchu/mom/controller/QualitySuperviseController.java
new file mode 100644
index 0000000..d93381f
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/controller/QualitySuperviseController.java
@@ -0,0 +1,335 @@
+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.QualitySuperviseDetailsDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.QualitySuperviseDetailsCorrectFileMapper;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.service.QualitySuperviseDetailsService;
+import com.yuanchu.mom.service.QualitySuperviseService;
+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;
+
+
+/**
+ * 璐ㄩ噺鐩戠潱涓昏〃
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Api(tags = "璐ㄩ噺鐩戠潱璁″垝")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/qualitySupervise")
+public class QualitySuperviseController {
+
+    private QualitySuperviseService qualitySuperviseService;
+    private QualitySuperviseDetailsService qualitySuperviseDetailsService;
+    private QualitySuperviseDetailsCorrectFileMapper qualitySuperviseDetailsCorrectFileMapper;
+
+    /**
+     * 瀵煎叆鐩戠潱璁″垝
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎叆鐩戠潱璁″垝")
+    @PostMapping("/importQualitySupervise")
+    public Result importQualitySupervise(MultipartFile file){
+        return Result.success(qualitySuperviseService.importQualitySupervise(file));
+    }
+
+
+
+    /**
+     * 鐩戠潱璁″垝鍒楄〃
+     * @param data
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鐩戠潱璁″垝鍒楄〃")
+    @PostMapping("/pageQualitySupervise")
+    public Result<IPage<QualitySupervise>> pageQualitySupervise(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        QualitySupervise qualitySupervise = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), QualitySupervise.class);
+        return Result.success(qualitySuperviseService.pageQualitySupervise(page, qualitySupervise));
+    }
+
+    /**
+     * 鐩戠潱璁″垝鎵瑰噯
+     * @return
+     */
+    @ValueClassify("璐ㄩ噺鐩戞帶璁″垝")
+    @ApiOperation(value = "鐩戠潱璁″垝鎵瑰噯")
+    @PostMapping("/ratifyQualitySupervise")
+    public Result ratifyQualitySupervise(@RequestBody QualitySupervise qualitySupervise){
+        return Result.success(qualitySuperviseService.ratifyQualitySupervise(qualitySupervise));
+    }
+
+    /**
+     * 鐩戠潱璁″垝鍒犻櫎
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鐩戠潱璁″垝鍒犻櫎")
+    @GetMapping("/delQualitySupervise")
+    public Result delQualitySupervise(Integer superviseId){
+        return Result.success(qualitySuperviseService.removeById(superviseId));
+    }
+
+    /**
+     * 鐩戠潱璁″垝璇︽儏鍒楄〃
+     * @param data
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鐩戠潱璁″垝璇︽儏鍒楄〃")
+    @PostMapping("/pageQualitySuperviseDetail")
+    public Result<IPage<QualitySuperviseDetailsDto>> pageQualitySuperviseDetail(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        QualitySuperviseDetails qualitySuperviseDetails = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), QualitySuperviseDetails.class);
+        return Result.success(qualitySuperviseService.pageQualitySuperviseDetail(page, qualitySuperviseDetails));
+    }
+
+    /**
+     * 鏂板鐩戠潱璁″垝璇︽儏
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂板鐩戠潱璁″垝璇︽儏")
+    @PostMapping("/addQualitySuperviseDetail")
+    public Result addQualitySuperviseDetail(@RequestBody QualitySuperviseDetails qualitySuperviseDetails){
+        if (qualitySuperviseDetails.getSuperviseId() == null) {
+            throw new ErrorException("缂哄皯鐩戠潱璁″垝涓昏〃id");
+        }
+        return Result.success(qualitySuperviseDetailsService.save(qualitySuperviseDetails));
+    }
+
+    /**
+     * 淇敼鐩戠潱璁″垝璇︽儏
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "淇敼鐩戠潱璁″垝璇︽儏")
+    @PostMapping("/updateQualitySuperviseDetail")
+    public Result updateQualitySuperviseDetail(@RequestBody QualitySuperviseDetails qualitySuperviseDetails){
+        return Result.success(qualitySuperviseDetailsService.updateById(qualitySuperviseDetails));
+    }
+
+    /**
+     * 鍒犻櫎鐩戠潱璁″垝璇︽儏
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鍒犻櫎鐩戠潱璁″垝璇︽儏")
+    @GetMapping("/delQualitySuperviseDetail")
+    public Result delQualitySuperviseDetail(Integer superviseDetailsId){
+        return Result.success(qualitySuperviseDetailsService.removeById(superviseDetailsId));
+    }
+
+    /**
+     * 瀵煎嚭鐩戠潱璁″垝
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭鐩戠潱璁″垝")
+    @GetMapping("/exportQualitySupervise")
+    public void exportQualitySupervise(Integer superviseId, HttpServletResponse response){
+        qualitySuperviseService.exportQualitySupervise(superviseId, response);
+    }
+
+    /************************************************* 璁板綍 *********************************************************/
+
+    /**
+     * 鏌ヨ鐩戠潱璁板綍淇℃伅
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ鐩戠潱璁板綍淇℃伅")
+    @GetMapping("/getSuperviseDetailRecord")
+    public Result<QualitySuperviseDetailsRecord> getSuperviseDetailRecord(Integer superviseDetailsId){
+        return Result.success(qualitySuperviseService.getSuperviseDetailRecord(superviseDetailsId));
+    }
+
+    /**
+     * 鏂板鐩戠潱璁板綍淇℃伅
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂板鐩戠潱璁板綍淇℃伅")
+    @PostMapping("/addSuperviseDetailRecord")
+    public Result addSuperviseDetailRecord(@RequestBody QualitySuperviseDetailsRecord qualitySuperviseDetailsRecord){
+        return Result.success(qualitySuperviseService.addSuperviseDetailRecord(qualitySuperviseDetailsRecord));
+    }
+
+    /**
+     * 鐩戠潱璁板綍鎵瑰噯
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鐩戠潱璁板綍鎵瑰噯")
+    @PostMapping("/addSuperviseRecordOpinion")
+    public Result addSuperviseRecordOpinion(@RequestBody QualitySuperviseDetailsRecord qualitySuperviseDetailsRecord){
+        return Result.success(qualitySuperviseService.addSuperviseRecordOpinion(qualitySuperviseDetailsRecord));
+    }
+
+    /**
+     * 瀵煎嚭璐ㄩ噺鐩戠潱璇︽儏璁板綍琛�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭鐩戠潱璁板綍琛�")
+    @GetMapping("/exportSuperviseDetailRecord")
+    public void exportSuperviseDetailRecord(Integer superviseDetailsId, HttpServletResponse response){
+        qualitySuperviseService.exportSuperviseDetailRecord(superviseDetailsId, response);
+    }
+
+    /*************************************************  涓嶅悎鏍煎伐浣滄帶鍒跺崟 ********************************************************/
+
+
+    /**
+     * 鏂板鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂板鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�")
+    @PostMapping("/addSuperviseDetailAccording")
+    public Result addSuperviseDetailAccording(@RequestBody QualitySuperviseDetailsAccording qualitySuperviseDetailsAccording){
+        return Result.success(qualitySuperviseService.addSuperviseDetailAccording(qualitySuperviseDetailsAccording));
+    }
+
+    /**
+     * 鏌ヨ鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�")
+    @GetMapping("/getSuperviseDetailAccording")
+    public Result<QualitySuperviseDetailsAccording> getSuperviseDetailAccording(Integer superviseDetailsId){
+        return Result.success(qualitySuperviseService.getSuperviseDetailAccording(superviseDetailsId));
+    }
+
+    /**
+     * 鏌ヨ鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭垪琛�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭垪琛�")
+    @PostMapping("/pageSuperviseDetailAccording")
+    public Result<IPage<QualitySuperviseDetailsAccording>> pageSuperviseDetailAccording(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        QualitySuperviseDetailsAccording detailsAccording = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), QualitySuperviseDetailsAccording.class);
+        return Result.success(qualitySuperviseService.pageSuperviseDetailAccording(page, detailsAccording));
+    }
+
+    /**
+     * 瀵煎嚭鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�")
+    @GetMapping("/superviseDetailAccordingExport")
+    public void superviseDetailAccordingExport(@RequestParam("superviseDetailsId") Integer id, HttpServletResponse response){
+        qualitySuperviseService.superviseDetailAccordingExport(id, response);
+    }
+
+
+
+    /*************************************************  绾犳鎺柦澶勭悊鍗� ********************************************************/
+
+
+    /**
+     * 鏂板鐩戠潱绾犳澶勭悊淇℃伅
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂板鐩戠潱绾犳澶勭悊")
+    @PostMapping("/addSuperviseDetailCorrect")
+    public Result addSuperviseDetailCorrect(@RequestBody QualitySuperviseDetailsCorrect qualitySuperviseDetailsCorrect){
+        return Result.success(qualitySuperviseService.addSuperviseDetailCorrect(qualitySuperviseDetailsCorrect));
+    }
+
+    /**
+     * 鏌ヨ鐩戠潱绾犳澶勭悊
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ鐩戠潱绾犳澶勭悊")
+    @GetMapping("/getSuperviseDetailCorrect")
+    public Result<QualitySuperviseDetailsCorrect> getSuperviseDetailCorrect(Integer superviseDetailsId){
+        return Result.success(qualitySuperviseService.getSuperviseDetailCorrect(superviseDetailsId));
+    }
+
+    /**
+     * 鏌ヨ鐩戠潱绾犳鎺柦鍒楄〃
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ鐩戠潱绾犳鎺柦鍒楄〃")
+    @PostMapping("/pageSuperviseDetailCorrect")
+    public Result<IPage<QualitySuperviseDetailsCorrect>> pageSuperviseDetailCorrect(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        QualitySuperviseDetailsCorrect detailsCorrect = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), QualitySuperviseDetailsCorrect.class);
+        return Result.success(qualitySuperviseService.pageSuperviseDetailCorrect(page, detailsCorrect));
+    }
+
+    /**
+     * 鏂板鐩戠潱绾犳鎺柦闄勪欢
+     * @param superviseDetailsCorrectId
+     * @param file
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏂板鐩戠潱绾犳鎺柦闄勪欢")
+    @PostMapping("/uploadSuperviseDetailCorrectFile")
+    public Result<?> uploadSuperviseDetailCorrectFile(Integer superviseDetailsCorrectId, MultipartFile file) {
+        return Result.success(qualitySuperviseService.uploadSuperviseDetailCorrectFile(superviseDetailsCorrectId, file));
+    }
+
+
+    /**
+     * 鏌ヨ鐩戠潱绾犳鎺柦闄勪欢
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鏌ヨ鐩戠潱绾犳鎺柦闄勪欢")
+    @GetMapping("/getSuperviseDetailCorrectFileList")
+    public Result<List<QualitySuperviseDetailsCorrectFile>> getSuperviseDetailCorrectFileList(Integer superviseDetailsCorrectId){
+        return Result.success(qualitySuperviseService.getSuperviseDetailCorrectFileList(superviseDetailsCorrectId));
+    }
+
+    /**
+     * 鍒犻櫎鐩戠潱绾犳鎺柦闄勪欢
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "鍒犻櫎鐩戠潱绾犳鎺柦闄勪欢")
+    @GetMapping("/delSuperviseDetailCorrectFile")
+    public Result delSuperviseDetailCorrectFile(Integer superviseDetailsCorrectFileId){
+        return Result.success(qualitySuperviseDetailsCorrectFileMapper.deleteById(superviseDetailsCorrectFileId));
+    }
+
+    /**
+     * 瀵煎嚭鐩戠潱绾犳鎺柦
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭鐩戠潱绾犳鎺柦")
+    @GetMapping("/exportSuperviseDetaillCorrect")
+    public void exportSuperviseDetaillCorrect(Integer superviseDetailsCorrectId, HttpServletResponse response){
+        qualitySuperviseService.exportSuperviseDetaillCorrect(superviseDetailsCorrectId, response);
+    }
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/ImageDemoData.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/ImageDemoData.java
new file mode 100644
index 0000000..a7b1c7e
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/ImageDemoData.java
@@ -0,0 +1,43 @@
+package com.yuanchu.mom.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.converters.string.StringImageConverter;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+
+@Getter
+@Setter
+@EqualsAndHashCode
+@ContentRowHeight(100)  // 琛岄珮
+@ColumnWidth(100 / 8)  // 鍒楀
+public class ImageDemoData {
+    private File file;
+    private InputStream inputStream;
+    /**
+     * 濡傛灉string绫诲瀷 蹇呴』鎸囧畾杞崲鍣紝string榛樿杞崲鎴恠tring
+     */
+    @ExcelProperty(converter = StringImageConverter.class)
+    private String string;
+    private byte[] byteArray;
+    /**
+     * 鏍规嵁url瀵煎嚭
+     *
+     * @since 2.1.1
+     */
+    private URL url;
+
+    /**
+     * 鏍规嵁鏂囦欢瀵煎嚭 骞惰缃鍑虹殑浣嶇疆銆�
+     *
+     * @since 3.0.0-beta1
+     */
+    private WriteCellData<Void> writeCellDataFile;
+}
\ No newline at end of file
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/InconsistentDistributionDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/InconsistentDistributionDto.java
new file mode 100644
index 0000000..a082e8b
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/InconsistentDistributionDto.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.InconsistentDistribution;
+import com.yuanchu.mom.pojo.InconsistentDistributionDetail;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMachineAttachment;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/15
+ */
+@Data
+public class InconsistentDistributionDto extends InconsistentDistribution {
+
+    @ApiModelProperty("鍒嗗竷璇︽儏")
+    private List<InconsistentDistributionDetail> distributionDetailList;
+
+    @ApiModelProperty("鍗犳瘮瀵硅薄")
+    private InconsistentDistributionProportionDto distributionProportion;
+
+    @ApiModelProperty("鍒涘缓浜哄悕绉�")
+    private String createUserName;
+
+    @ApiModelProperty("淇敼浜哄悕绉�")
+    private String updateUserName;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/InconsistentDistributionProportionDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/InconsistentDistributionProportionDto.java
new file mode 100644
index 0000000..4490c1b
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/InconsistentDistributionProportionDto.java
@@ -0,0 +1,48 @@
+package com.yuanchu.mom.dto;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 鍗犳瘮瀵硅薄
+ *
+ * @Author zhuo
+ * @Date 2024/11/15
+ */
+
+@Data
+public class InconsistentDistributionProportionDto {
+
+    @ApiModelProperty("绔犺妭鍙�")
+    private String chapterNumber;
+
+    @ApiModelProperty("瑕佺礌")
+    private String essentials;
+
+    @ApiModelProperty("涓讳换")
+    private BigDecimal director;
+
+    @ApiModelProperty("鎶�鏈礋璐d汉")
+    private BigDecimal technology;
+
+    @ApiModelProperty("璐ㄩ噺璐熻矗浜�")
+    private BigDecimal quality;
+
+    @ApiModelProperty("缁煎悎瀹�")
+    private BigDecimal comprehensive;
+
+    @ApiModelProperty("璇曢獙瀹�")
+    private BigDecimal testing;
+
+    @ApiModelProperty("鍚堣")
+    private Integer total;
+
+    @ApiModelProperty("鍗犳瘮")
+    private BigDecimal proportion;
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/InspectionOrderDetail.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/InspectionOrderDetail.java
new file mode 100644
index 0000000..f77193f
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/InspectionOrderDetail.java
@@ -0,0 +1,46 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 妫�楠屽鎵樺崟璇︽儏琛�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-09
+ */
+@Data
+public class InspectionOrderDetail {
+
+
+    @ApiModelProperty("濮旀墭鍗昳d")
+    private Integer inspectionOrderId;
+
+    @ApiModelProperty("鏍峰搧缂栧彿")
+    private String sampleNumber;
+
+    @ApiModelProperty("璇曢獙椤圭洰")
+    private String testItem;
+
+    @ApiModelProperty("璇曢獙渚濇嵁")
+    private String testStandard;
+
+    @ApiModelProperty("澶囨敞")
+    private String remark;
+
+    // 瀵煎嚭浣跨敤
+    @TableField(select = false, exist = false)
+    private Integer index;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/InspectionOrderExportDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/InspectionOrderExportDto.java
new file mode 100644
index 0000000..181351a
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/InspectionOrderExportDto.java
@@ -0,0 +1,65 @@
+package com.yuanchu.mom.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yuanchu.mom.pojo.InsOrder;
+import com.yuanchu.mom.pojo.ProcessOrder;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.lang.String;
+import java.time.LocalDate;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-10 鏄熸湡浜�
+ * Description:
+ */
+@Data
+public class InspectionOrderExportDto extends ProcessOrderDto {
+
+    @ApiModelProperty("鐣欐牱:1 鏄�")
+    private String isLeave1 = "鈻�";
+
+    @ApiModelProperty("鐣欐牱:0 鍚�")
+    private String isLeave2 = "鈻�";
+
+    @ApiModelProperty("鎶ュ憡鍙戦�佹柟寮� 1锛氳嚜鍙�")
+    private String send1 = "鈻�";
+
+    @ApiModelProperty("鎶ュ憡鍙戦�佹柟寮� 0锛氬叾浠�")
+    private String send0 = "鈻�";
+
+    @ApiModelProperty("鏍峰搧澶勭悊鏂瑰紡 1锛氬疄楠屽澶勭悊")
+    private String processing1 = "鈻�";
+
+    @ApiModelProperty("鏍峰搧澶勭悊鏂瑰紡 0锛氬鎵樺崟浣嶅彇鍥�")
+    private String processing0 = "鈻�";
+
+    @ApiModelProperty("鍒ゆ柇瑙勫垯 1锛氳�冭檻涓嶇‘瀹氬害")
+    private String criterionRule1 = "鈻�";
+
+    //鑰冭檻涓嶇‘瀹氬害%
+    private String criterionRuleRemark;
+
+    @ApiModelProperty("鍒ゆ柇瑙勫垯 0锛氫笉鑰冭檻涓嶇‘瀹氬害")
+    private String criterionRule0 = "鈻�";
+
+    @ApiModelProperty("濮旀墭鏃堕棿 瀛楃涓叉牸寮忥細yyyy骞碝M鏈坉d")
+    private String commissionDateString;
+
+    @ApiModelProperty("鎺ユ敹鏃ユ湡 瀛楃涓叉牸寮忥細yyyy骞碝M鏈坉d")
+    private String receiptDataString;
+
+    @ApiModelProperty("棰嗘牱鏃ユ湡 瀛楃涓叉牸寮忥細yyyy骞碝M鏈坉d")
+    private String sampleDataString;
+
+    @ApiModelProperty("绾﹀畾鏃堕棿 瀛楃涓叉牸寮忥細yyyy骞碝M鏈坉d")
+    private String appointedString;
+
+
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessComplainDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessComplainDto.java
new file mode 100644
index 0000000..1805f57
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessComplainDto.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.ProcessComplain;
+import lombok.Data;
+
+@Data
+//鎶曡瘔璇︽儏
+public class ProcessComplainDto extends ProcessComplain {
+
+    private String phone;
+
+    private String email;
+
+    private String problemRecordsUserName;
+
+    private String dutyOwnershipUserName;
+
+    private String causeAnalysisUserName;
+
+    private String correctiveActionUserName;
+
+    private String correctiveActionConfirmationUserName;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodSearchNewDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodSearchNewDto.java
new file mode 100644
index 0000000..161d0c7
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodSearchNewDto.java
@@ -0,0 +1,56 @@
+package com.yuanchu.mom.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.yuanchu.mom.pojo.ProcessMethodSearchNew;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/4
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class ProcessMethodSearchNewDto extends ProcessMethodSearchNew {
+
+    @ApiModelProperty("寮�濮嬫椂闂�")
+    private String beginDate;
+
+    @ApiModelProperty("缁撴潫鏃堕棿")
+    private String endDate;
+
+    @ApiModelProperty("缂栧埗浜篿d")
+    private Integer writeUserId;
+
+    @ApiModelProperty("鎵瑰噯浜篿d")
+    private Integer ratifyUserId;
+
+    @ExcelProperty(value = {"鏄惁鏈夋洿鏂版爣鍑�", "鏄惁鏈夋洿鏂版爣鍑�"}, index = 4)
+    @ApiModelProperty("鏄惁鏈夋洿鏂版爣鍑�")
+    private String isNewStandardString;
+
+    @ExcelProperty(value = {"鏌ユ柊璁板綍", "鏍囧噯缃�"}, index = 7)
+    @ApiModelProperty("鏍囧噯缃�")
+    private String standardNet;
+
+    @ExcelProperty(value = {"鏌ユ柊璁板綍", "濮旀墭鎯呮姤鎵�"}, index = 8)
+    @ApiModelProperty("濮旀墭鎯呮姤鎵�")
+    private String informationOffices;
+
+    @ExcelProperty(value = {"鏌ユ柊璁板綍", "鏍囧噯涔﹀簵"}, index = 9)
+    @ApiModelProperty("鏍囧噯涔﹀簵")
+    private String standardBookstore;
+
+    @ExcelProperty(value = {"鏌ユ柊璁板綍", "鍏朵粬"}, index = 10)
+    @ApiModelProperty("鍏朵粬")
+    private String other;
+
+    @ExcelProperty(value = {"澶囨敞", "澶囨敞"}, index = 11)
+    @ApiModelProperty("澶囨敞")
+    private String remarkString;
+
+    @ExcelProperty(value = {"搴忓彿", "搴忓彿"}, index = 0)
+    @ApiModelProperty("搴忓彿")
+    private Integer index;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyCalibrationsFileDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyCalibrationsFileDto.java
new file mode 100644
index 0000000..7929180
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyCalibrationsFileDto.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.ProcessMethodVerifyCalibrationsFile;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/12
+ */
+@Data
+public class ProcessMethodVerifyCalibrationsFileDto extends ProcessMethodVerifyCalibrationsFile {
+
+    @ApiModelProperty("璁惧鍚嶇О")
+    private String deviceName;
+
+    @ApiModelProperty("璁惧缂栧彿")
+    private String managementNumber;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyDto.java
new file mode 100644
index 0000000..77d1d93
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyDto.java
@@ -0,0 +1,30 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.ProcessMethodVerify;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMachineAttachment;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMethodFile;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyWorkFile;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/5
+ */
+@Data
+public class ProcessMethodVerifyDto extends ProcessMethodVerify {
+
+    @ApiModelProperty("璁惧闄勪欢")
+    private List<ProcessMethodVerifyMachineAttachment> machineAttachmentList;
+
+    @ApiModelProperty("鍘熷璁板綍闄勪欢")
+    private List<ProcessMethodVerifyMethodFile> methodFileList;
+
+    @ApiModelProperty("涓婂矖璇�")
+    private List<ProcessMethodVerifyWorkFile> workFileList;
+
+    @ApiModelProperty("鏍″噯璇佷功")
+    private List<ProcessMethodVerifyCalibrationsFileDto> calibrationsFileList;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyExportWordDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyExportWordDto.java
new file mode 100644
index 0000000..ccb1443
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessMethodVerifyExportWordDto.java
@@ -0,0 +1,40 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.ProcessMethodVerify;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-19 鏄熸湡鍥� 15:55:46
+ * Description:
+ */
+@Data
+public class ProcessMethodVerifyExportWordDto extends ProcessMethodVerify {
+    @ApiModelProperty("(浜�)鏄惁婊¤冻 1婊¤冻 0涓嶆弧瓒�")
+    private String personIsSatisfiedStr;
+
+    @ApiModelProperty("(鏈�)鏄惁婊¤冻")
+    private String machineIsSatisfiedStr;
+
+    @ApiModelProperty("(鏂�)鏄惁婊¤冻")
+    private String materialIsSatisfiedStr;
+
+    @ApiModelProperty("(娉�)鏄惁婊¤冻")
+    private String methodIsSatisfiedStr;
+
+    @ApiModelProperty("(鐜�)鏄惁婊¤冻")
+    private String environmentIsSatisfiedStr;
+
+    @ApiModelProperty("(娴嬮噺婧簮鎬�)鏄惁婊¤冻")
+    private String traceabilityIsSatisfiedStr;
+
+    @ApiModelProperty("(鏍峰搧绠$悊闇�姹�)鏄惁婊¤冻")
+    private String managementIsSatisfiedStr;
+
+    @ApiModelProperty("(鍏朵粬)鏄惁婊¤冻")
+    private String otherIsSatisfiedStr;
+
+    @ApiModelProperty("纭鏃堕棿")
+    private String confirmDateStr;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessOrderDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessOrderDto.java
new file mode 100644
index 0000000..4dd64c7
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessOrderDto.java
@@ -0,0 +1,85 @@
+package com.yuanchu.mom.dto;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yuanchu.mom.annotation.ValueTableShow;
+import com.yuanchu.mom.pojo.ProcessOrder;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+//瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫鐨勬煡鐪嬭鎯�
+public class ProcessOrderDto extends ProcessOrder {
+
+    @ApiModelProperty(value = "濮旀墭缂栧彿")
+    private String entrustCode;
+
+    @ApiModelProperty("璇曟牱鍚嶇О")
+    @ValueTableShow(1)
+    private String sample;
+
+    @ValueTableShow(2)
+    @ApiModelProperty("濮旀墭鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鍨嬪彿")
+    @ValueTableShow(3)
+    private String sampleType;
+
+    @ValueTableShow(4)
+    @ApiModelProperty("濮旀墭鍗曚綅")
+    private String company;
+
+    @ApiModelProperty("鐢熶骇鍗曚綅")
+    @ValueTableShow(5)
+    private String production;
+
+    @ApiModelProperty("鐢熸垚鍗曚綅en")
+    private String productionEn;
+
+    @ValueTableShow(6)
+    @ApiModelProperty("濮旀墭浜�")
+    private String prepareUser;
+
+    private String prepareUserUrl;
+
+    @ApiModelProperty("鏍峰搧鏁伴噺")
+    @ValueTableShow(7)
+    private String sampleNum;
+
+    @ApiModelProperty("鏍峰搧鐘舵��")
+    @ValueTableShow(8)
+    private Integer insState;
+
+    private String sampleStatus;
+
+    @ApiModelProperty("鏄惁鐣欐牱")
+    @ValueTableShow(9)
+    private Integer isLeave;
+
+    @ApiModelProperty("鏍峰搧澶勭悊鏂瑰紡")
+    @ValueTableShow(10)
+    private Integer processing;
+
+    @ApiModelProperty("鑱旂郴鏂瑰紡")
+    private String phone;
+
+    @ApiModelProperty("绾﹀畾鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate appointed;
+
+    @ApiModelProperty("鎶ュ憡鍙戦�佹柟寮�")
+    private Integer send;
+
+    //鏍峰搧鍜屾楠岄」鐩俊鎭�
+    private List<SampleItemDto> sampleItems;
+
+
+
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessReportDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessReportDto.java
new file mode 100644
index 0000000..f7e7bdd
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/ProcessReportDto.java
@@ -0,0 +1,12 @@
+package com.yuanchu.mom.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+//瀵煎嚭
+public class ProcessReportDto {
+
+    private List<Integer> ids;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/QualityMonitorDetailsEvaluateDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/QualityMonitorDetailsEvaluateDto.java
new file mode 100644
index 0000000..610f6ed
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/QualityMonitorDetailsEvaluateDto.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.QualityMonitorDetailsEvaluate;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-20 鏄熸湡浜� 9:08:38
+ * Description:
+ */
+@Data
+public class QualityMonitorDetailsEvaluateDto extends QualityMonitorDetailsEvaluate {
+    @ApiModelProperty("鎵瑰噯鏃堕棿")
+    private String ratifyTimeStr;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/QualityMonitorDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/QualityMonitorDto.java
new file mode 100644
index 0000000..87057d8
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/QualityMonitorDto.java
@@ -0,0 +1,22 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.QualityMonitor;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/6
+ */
+@Data
+public class QualityMonitorDto extends QualityMonitor {
+
+    @ApiModelProperty("缂栧埗浜�")
+    private String writeName;
+
+    @ApiModelProperty("瀹℃牳浜�")
+    private String examineName;
+
+    @ApiModelProperty("鎵瑰噯浜�")
+    private String ratifyName;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsAccordingDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsAccordingDto.java
new file mode 100644
index 0000000..0a5cde1
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsAccordingDto.java
@@ -0,0 +1,63 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.QualitySuperviseDetailsAccording;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Author: yuan
+ * Date: 2024-12-11 鏄熸湡涓� 16:26:41
+ * Description:
+ */
+@Data
+public class QualitySuperviseDetailsAccordingDto extends QualitySuperviseDetailsAccording {
+
+    @ApiModelProperty("1鍙戠幇閮ㄩ棬-鏃ユ湡")
+    private String discovererDateString;
+
+    @ApiModelProperty("3璐d换閮ㄩ棬 鏃ユ湡")
+    private String responsibleDepartmentDateString;
+
+    @ApiModelProperty("4绾犳鎺柦 鏃ユ湡")
+    private String correctiveMeasureDateString;
+
+    @ApiModelProperty("5璐ㄩ噺璐熻矗浜烘棩鏈�")
+    private String qualitySupervisorDateString;
+
+    @ApiModelProperty("0琚洃鐫f椂闂� 鏃ユ湡")
+    private String supervisedTimeString;
+
+    @ApiModelProperty("4绾犳鎺柦澶勭悊鍗曡窡韪�(鏄�)")
+    private String correctiveMeasureFollowTracksYes = "鈻�";
+    @ApiModelProperty("4绾犳鎺柦澶勭悊鍗曡窡韪�(鍚�)")
+    private String correctiveMeasureFollowTracksNo = "鈻�";
+
+
+    @ApiModelProperty("5鏄惁閫氱煡瀹㈡埛(鏄�)")
+    private String whetherInformCustomerYes = "鈻�";
+    @ApiModelProperty("5鏄惁閫氱煡瀹㈡埛(鍚�)")
+    private String whetherInformCustomerNo = "鈻�";
+
+
+    @ApiModelProperty("5鏄惁鎭㈠宸ヤ綔(1锛氭槸锛�2锛氬惁)")
+    private String whetherResumeWorkYes = "鈻�";
+    @ApiModelProperty("5鏄惁鎭㈠宸ヤ綔(1锛氭槸锛�2锛氬惁)")
+    private String whetherResumeWorkNo = "鈻�";
+
+    @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞0(绠$悊璇勫)")
+    private String discoveryApproach0 = "鈻�";
+    @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞1(鍐呴儴瀹℃牳)")
+    private String discoveryApproach1 = "鈻�";
+    @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞2(妫�娴嬭繃绋嬫帶鍒�)")
+    private String discoveryApproach2 = "鈻�";
+    @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞3(鍐呴儴璐ㄩ噺鎺у埗)")
+    private String discoveryApproach3 = "鈻�";
+    @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞4(鍐呴儴鐩戠潱)")
+    private String discoveryApproach4 = "鈻�";
+    @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞5(澶栭儴璇勫/妫�鏌�)")
+    private String discoveryApproach5 = "鈻�";
+    @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞6(椤惧鎶曡瘔/鎰忚鍙嶉)")
+    private String discoveryApproach6 = "鈻�";
+    @ApiModelProperty("1涓嶇鍚堝伐浣滃彂鐜伴�斿緞7(鍏朵粬)")
+    private String discoveryApproach7 = "鈻�";
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsCorrectDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsCorrectDto.java
new file mode 100644
index 0000000..e835cc7
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsCorrectDto.java
@@ -0,0 +1,25 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.QualitySuperviseDetailsCorrect;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/12/2
+ */
+@Data
+public class QualitySuperviseDetailsCorrectDto extends QualitySuperviseDetailsCorrect {
+
+    @ApiModelProperty("鎻愬嚭鏃堕棿")
+    private String raiseTimeString;
+
+    @ApiModelProperty("鍘熷洜鍒嗘瀽鏃堕棿")
+    private String causeTimeString;
+
+    @ApiModelProperty("绾犳鏃堕棿")
+    private String correctTimeString;
+
+    @ApiModelProperty("楠岃瘉鏃堕棿")
+    private String validationTimeString;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsDto.java
new file mode 100644
index 0000000..cce4f95
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/QualitySuperviseDetailsDto.java
@@ -0,0 +1,22 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.QualitySuperviseDetails;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/7
+ */
+@Data
+public class QualitySuperviseDetailsDto extends QualitySuperviseDetails {
+
+    @ApiModelProperty("鏄惁绗﹀悎,0 涓嶇鍚�, 1绗﹀悎")
+    private Integer isAccording;
+
+    @ApiModelProperty("2鏄惁绾犳澶勭悊, 0鍚�, 1鏄�")
+    private Integer isCorrect;
+
+    @ApiModelProperty("璐ㄩ噺鐩戠潱璇︽儏绾犳澶勭悊id")
+    private Integer superviseDetailsCorrectId;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/dto/SampleItemDto.java b/cnas-process/src/main/java/com/yuanchu/mom/dto/SampleItemDto.java
new file mode 100644
index 0000000..492a831
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/dto/SampleItemDto.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.dto;
+
+import lombok.Data;
+
+@Data
+//瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫鐨勬牱鍝佽鎯�
+public class SampleItemDto {
+
+    //鏍峰搧缂栧彿
+    private String code;
+
+    //鏍峰搧鍨嬪彿
+    private String model;
+
+    //璇曢獙椤圭洰
+    private String product;
+
+    //妫�楠屼緷鎹�
+    private String standardMethodList;
+
+    //澶囨敞
+    private String remark;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/excel/QualityMonitorDetailsUpload.java b/cnas-process/src/main/java/com/yuanchu/mom/excel/QualityMonitorDetailsUpload.java
new file mode 100644
index 0000000..1cb37f7
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/excel/QualityMonitorDetailsUpload.java
@@ -0,0 +1,34 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/8
+ */
+@Data
+public class QualityMonitorDetailsUpload {
+
+    @ExcelProperty("鐩戞帶鐩殑")
+    private String monitorPurpose;
+
+    @ExcelProperty("璁″垝寮�灞曟椂闂�")
+    private String plannedTime;
+
+    @ExcelProperty("鐩戞帶椤圭洰")
+    private String monitorProject;
+
+    @ExcelProperty("鍙傚姞鍗曚綅锛堜汉鍛橈級")
+    private String participant;
+
+    @ExcelProperty("棰勭畻锛堝厓锛�")
+    private String budget;
+
+    @ExcelProperty("缁勭粐浜哄憳")
+    private String organization;
+
+    @ExcelProperty("鐩戞帶鏂瑰紡")
+    private String monitorWay;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/excel/QualitySuperviseDetailsUpload.java b/cnas-process/src/main/java/com/yuanchu/mom/excel/QualitySuperviseDetailsUpload.java
new file mode 100644
index 0000000..f3f50dc
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/excel/QualitySuperviseDetailsUpload.java
@@ -0,0 +1,31 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/8
+ */
+@Data
+public class QualitySuperviseDetailsUpload {
+
+    @ExcelProperty("鐩戠潱鏃ユ湡")
+    private String superviseTime;
+
+    @ExcelProperty("鐩戠潱鐩殑")
+    private String supervisePurpose;
+
+    @ExcelProperty("鐩戞帶椤圭洰")
+    private String superviseProject;
+
+    @ExcelProperty("琚洃鐫d汉鍛�")
+    private String supervisee;
+
+    @ExcelProperty("鐩戠潱鍘熷洜")
+    private String superviseReason;
+
+    @ExcelProperty("澶囨敞")
+    private String remark;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/InconsistentDistributionDetailMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/InconsistentDistributionDetailMapper.java
new file mode 100644
index 0000000..06eb0b5
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/InconsistentDistributionDetailMapper.java
@@ -0,0 +1,18 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.InconsistentDistributionDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 涓嶇鍚堥」鐨勫垎甯冭鎯� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 09:53:33
+ */
+@Mapper
+public interface InconsistentDistributionDetailMapper extends BaseMapper<InconsistentDistributionDetail> {
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/InconsistentDistributionMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/InconsistentDistributionMapper.java
new file mode 100644
index 0000000..7b666df
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/InconsistentDistributionMapper.java
@@ -0,0 +1,30 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.InconsistentDistributionDto;
+import com.yuanchu.mom.pojo.InconsistentDistribution;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 涓嶇鍚堥」鐨勫垎甯� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 09:53:20
+ */
+@Mapper
+public interface InconsistentDistributionMapper extends BaseMapper<InconsistentDistribution> {
+
+    /**
+     * 涓嶇鍚堥」鍒嗗竷鏌ヨ
+     * @param page
+     * @param ew
+     * @return
+     */
+    IPage<InconsistentDistributionDto> pageInconsistentDistribution(Page page, @Param("ew") QueryWrapper<InconsistentDistribution> ew);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessComplainMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessComplainMapper.java
new file mode 100644
index 0000000..a48878b
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessComplainMapper.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.ProcessComplainDto;
+import com.yuanchu.mom.dto.ReportPageDto;
+import com.yuanchu.mom.pojo.ProcessComplain;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鎶曡瘔 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 09:29:11
+ */
+public interface ProcessComplainMapper extends BaseMapper<ProcessComplain> {
+
+    IPage<ProcessComplain> pageProcessComplain(@Param("page") Page page, @Param("ew") QueryWrapper<ProcessComplain> queryWrappers);
+
+    ProcessComplainDto getProcessComplain(Long id);
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessDealMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessDealMapper.java
new file mode 100644
index 0000000..c7fdc95
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessDealMapper.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessDeal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 02:50:19
+ */
+public interface ProcessDealMapper extends BaseMapper<ProcessDeal> {
+
+    IPage<ProcessDeal> pageProcessDeal(Page page, @Param("ew") QueryWrapper<ProcessDeal> queryWrappers);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessEvaluateMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessEvaluateMapper.java
new file mode 100644
index 0000000..f2c9014
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessEvaluateMapper.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessEvaluate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 娴嬮噺涓嶇‘瀹氬害鐨勮瘎浠� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 01:10:43
+ */
+public interface ProcessEvaluateMapper extends BaseMapper<ProcessEvaluate> {
+
+    IPage<ProcessEvaluate> pageProcessEvaluate(Page page, @Param("ew") QueryWrapper<ProcessEvaluate> queryWrappers);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodSearchNewMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodSearchNewMapper.java
new file mode 100644
index 0000000..2966888
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodSearchNewMapper.java
@@ -0,0 +1,40 @@
+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.ProcessMethodSearchNewDto;
+import com.yuanchu.mom.pojo.ProcessMethodSearchNew;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 鏍囧噯鏌ユ柊
+ *
+ * @author zhuo
+ * @since 2024-11-04
+ */
+@Mapper
+public interface ProcessMethodSearchNewMapper extends BaseMapper<ProcessMethodSearchNew> {
+
+    /**
+     * 鏍囧噯鏌ユ柊鍒嗛〉鏌ヨ
+     * @param page
+     * @param processMethodSearchNewDtoQueryWrapper
+     * @param beginDate
+     * @param endDate
+     * @return
+     */
+    IPage<ProcessMethodSearchNew> pageMethodSearchNew(@Param("page") Page page, @Param("ew") QueryWrapper<ProcessMethodSearchNewDto> processMethodSearchNewDtoQueryWrapper, @Param("beginDate") String beginDate, @Param("endDate") String endDate);
+
+    /**
+     * 鏌ヨ鏍囧噯鏌ヨ
+     * @param ew
+     * @return
+     */
+    List<ProcessMethodSearchNewDto> selectMethodSearchNew(@Param("ew") QueryWrapper<ProcessMethodSearchNewDto> ew, @Param("beginDate") String beginDate, @Param("endDate") String endDate);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyCalibrationsFileMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyCalibrationsFileMapper.java
new file mode 100644
index 0000000..52855c6
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyCalibrationsFileMapper.java
@@ -0,0 +1,35 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.dto.ProcessMethodVerifyCalibrationsFileDto;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyCalibrationsFile;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMachineAttachment;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉璁惧鏍″噯闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-12
+ */
+@Mapper
+public interface ProcessMethodVerifyCalibrationsFileMapper extends BaseMapper<ProcessMethodVerifyCalibrationsFile> {
+
+    /**
+     * 鏌ヨ鏍″噯璇佷功闄勪欢琛�
+     * @param methodVerifyId
+     * @return
+     */
+    List<ProcessMethodVerifyCalibrationsFileDto> selectCalibrationsFileList(@Param("methodVerifyId") Integer methodVerifyId);
+
+    /**
+     * 璁惧id鏌ヨ鏍″噯璇佷功
+     * @param deviceId
+     * @return
+     */
+    String selectCalibrationsFile(@Param("deviceId") Integer deviceId);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMachineAttachmentMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMachineAttachmentMapper.java
new file mode 100644
index 0000000..b77b97a
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMachineAttachmentMapper.java
@@ -0,0 +1,23 @@
+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.pojo.ProcessMethodVerifyMachineAttachment;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMethodFile;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉璁惧闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-05
+ */
+@Mapper
+public interface ProcessMethodVerifyMachineAttachmentMapper extends BaseMapper<ProcessMethodVerifyMachineAttachment> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMapper.java
new file mode 100644
index 0000000..27a9427
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMapper.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.ProcessMethodVerifyDto;
+import com.yuanchu.mom.pojo.ProcessMethodVerify;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉
+ *
+ * @author zhuo
+ * @since 2024-11-05
+ */
+@Mapper
+public interface ProcessMethodVerifyMapper extends BaseMapper<ProcessMethodVerify> {
+
+    /**
+     * 鏍囧噯鏂规硶鍙樻洿, 楠岃瘉
+     * @param page
+     * @param processMethodVerifyDtoQueryWrapper
+     * @return
+     */
+    IPage<ProcessMethodVerify> pagesMethodVerify(Page page, @Param("ew") QueryWrapper<ProcessMethodVerifyDto> processMethodVerifyDtoQueryWrapper);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMethodFileMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMethodFileMapper.java
new file mode 100644
index 0000000..37d8487
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyMethodFileMapper.java
@@ -0,0 +1,17 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMethodFile;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉
+ *
+ * @author zhuo
+ * @since 2024-11-05
+ */
+@Mapper
+public interface ProcessMethodVerifyMethodFileMapper extends BaseMapper<ProcessMethodVerifyMethodFile> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyWorkFileMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyWorkFileMapper.java
new file mode 100644
index 0000000..58e7b1c
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessMethodVerifyWorkFileMapper.java
@@ -0,0 +1,24 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyWorkFile;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉涓婂矖璇侀檮浠惰〃
+ *
+ * @author zhuo
+ * @since 2024-11-12
+ */
+@Mapper
+public interface ProcessMethodVerifyWorkFileMapper extends BaseMapper<ProcessMethodVerifyWorkFile> {
+
+    /**
+     * 鏍规嵁鐢ㄦ埛id鏌ヨ涓婂矖璇�
+     * @param userId
+     * @return
+     */
+    String selectWorkFile(@Param("userId") Integer userId);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessOrderMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessOrderMapper.java
new file mode 100644
index 0000000..5c819b8
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessOrderMapper.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.ProcessOrderDto;
+import com.yuanchu.mom.pojo.InspectionOrderDetail;
+import com.yuanchu.mom.pojo.ProcessOrder;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-05 03:06:20
+ */
+public interface ProcessOrderMapper extends BaseMapper<ProcessOrder> {
+
+    IPage<ProcessOrderDto> pageProcessOrder(Page page, @Param("ew") QueryWrapper<ProcessOrderDto> queryWrappers);
+
+    ProcessOrderDto getProcessOrder(Integer id);
+
+    List<InspectionOrderDetail> selectInsOrder(Integer insOrderId);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessReportMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessReportMapper.java
new file mode 100644
index 0000000..43352c6
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessReportMapper.java
@@ -0,0 +1,25 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessReport;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-05 08:58:39
+ */
+public interface ProcessReportMapper extends BaseMapper<ProcessReport> {
+
+    IPage<ProcessReport> pageProcessReport(Page page, @Param("ew") QueryWrapper<ProcessReport> queryWrappers);
+
+    List<ProcessReport> getIds(List<Integer> ids);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessSampleMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessSampleMapper.java
new file mode 100644
index 0000000..250251d
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessSampleMapper.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessSample;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 鏍峰搧鎺ユ敹 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-12 05:02:49
+ */
+public interface ProcessSampleMapper extends BaseMapper<ProcessSample> {
+
+    IPage<ProcessSample> pageProcessSample(@Param("page") Page page, @Param("ew") QueryWrapper<ProcessSample> ew);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessTotalSampleMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessTotalSampleMapper.java
new file mode 100644
index 0000000..0a41b7d
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessTotalSampleMapper.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessTotalSample;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 鏍峰搧鎺ユ敹鎬昏〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-12 05:02:58
+ */
+public interface ProcessTotalSampleMapper extends BaseMapper<ProcessTotalSample> {
+
+    IPage<ProcessTotalSample> pageProcessTotalSample(Page page, @Param("ew") QueryWrapper<ProcessTotalSample> ew);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessTotaldealMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessTotaldealMapper.java
new file mode 100644
index 0000000..c77369d
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/ProcessTotaldealMapper.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessTotaldeal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�昏〃(鍘嗗彶) Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 03:59:09
+ */
+public interface ProcessTotaldealMapper extends BaseMapper<ProcessTotaldeal> {
+
+    IPage<ProcessTotaldeal> pageProcessTotaldeal(Page page, @Param("ew") QueryWrapper<ProcessTotaldeal> queryWrappers);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsEvaluateFileMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsEvaluateFileMapper.java
new file mode 100644
index 0000000..29c3c7d
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsEvaluateFileMapper.java
@@ -0,0 +1,17 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.QualityMonitorDetailsEvaluateFile;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏璇勪环闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Mapper
+public interface QualityMonitorDetailsEvaluateFileMapper extends BaseMapper<QualityMonitorDetailsEvaluateFile> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsEvaluateMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsEvaluateMapper.java
new file mode 100644
index 0000000..6e043e6
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsEvaluateMapper.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.QualityMonitorDetailsEvaluate;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏璇勪环琛�
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Mapper
+public interface QualityMonitorDetailsEvaluateMapper extends BaseMapper<QualityMonitorDetailsEvaluate> {
+
+    /**
+     * 鏌ヨ璐ㄩ噺鐩戞帶璇勪环
+     * @param qualityMonitorDetailsId
+     * @return
+     */
+    QualityMonitorDetailsEvaluate getQualityMonitorEvaluate(Integer qualityMonitorDetailsId);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsMapper.java
new file mode 100644
index 0000000..84c0fa5
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsMapper.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.QualityMonitorDetails;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏琛�
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Mapper
+public interface QualityMonitorDetailsMapper extends BaseMapper<QualityMonitorDetails> {
+
+    /**
+     * 璐ㄩ噺鐩戞帶璁″垝鍒楄〃
+     * @param page
+     * @param qualityMonitorDetailsQueryWrapper
+     * @return
+     */
+    IPage<QualityMonitorDetails> pageQualityMonitorDetail(Page page, @Param("ew") QueryWrapper<QualityMonitorDetails> qualityMonitorDetailsQueryWrapper);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsRatifyMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsRatifyMapper.java
new file mode 100644
index 0000000..d490dc8
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorDetailsRatifyMapper.java
@@ -0,0 +1,17 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.QualityMonitorDetailsRatify;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏鎵瑰噯琛�
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Mapper
+public interface QualityMonitorDetailsRatifyMapper extends BaseMapper<QualityMonitorDetailsRatify> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorMapper.java
new file mode 100644
index 0000000..791a62a
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualityMonitorMapper.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.QualityMonitorDto;
+import com.yuanchu.mom.pojo.QualityMonitor;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝涓昏〃
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Mapper
+public interface QualityMonitorMapper extends BaseMapper<QualityMonitor> {
+
+    /**
+     * 鐩戞帶璁″垝鍒楄〃
+     * @return
+     */
+    IPage<QualityMonitorDto> pageQualityMonitor(Page page, @Param("ew") QueryWrapper<QualityMonitor> qualityMonitorQueryWrapper);
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsAccordingMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsAccordingMapper.java
new file mode 100644
index 0000000..c4d6a5f
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsAccordingMapper.java
@@ -0,0 +1,36 @@
+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.QualitySuperviseDetailsAccordingDto;
+import com.yuanchu.mom.pojo.QualitySuperviseDetailsAccording;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏涓嶇鍚堥」鎺у埗琛�
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Mapper
+public interface QualitySuperviseDetailsAccordingMapper extends BaseMapper<QualitySuperviseDetailsAccording> {
+
+    /**
+     * 鏌ヨ涓嶇鍚堥」鎺у埗鍒楄〃
+     * @param page
+     * @param ew
+     * @return
+     */
+    IPage<QualitySuperviseDetailsAccording> pageSuperviseDetailAccording(Page page, @Param("ew") QueryWrapper<QualitySuperviseDetailsAccording> ew);
+
+    /**
+     * 瀵煎嚭鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�
+     * @param superviseDetailId
+     * @return
+     */
+    QualitySuperviseDetailsAccordingDto selectSuperviseDetailsAccording(@Param("superviseDetailId") Integer superviseDetailId);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsCorrectFileMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsCorrectFileMapper.java
new file mode 100644
index 0000000..2526ed0
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsCorrectFileMapper.java
@@ -0,0 +1,17 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.QualitySuperviseDetailsCorrectFile;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏绾犳鎺柦闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-09
+ */
+@Mapper
+public interface QualitySuperviseDetailsCorrectFileMapper extends BaseMapper<QualitySuperviseDetailsCorrectFile> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsCorrectMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsCorrectMapper.java
new file mode 100644
index 0000000..fe0611a
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsCorrectMapper.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.pojo.QualitySuperviseDetailsAccording;
+import com.yuanchu.mom.pojo.QualitySuperviseDetailsCorrect;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏绾犳澶勭悊琛�
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Mapper
+public interface QualitySuperviseDetailsCorrectMapper extends BaseMapper<QualitySuperviseDetailsCorrect> {
+
+    /**
+     * 鏌ヨ鐩戠潱绾犳鎺柦鍒楄〃
+     * @param page
+     * @param ew
+     * @return
+     */
+    IPage<QualitySuperviseDetailsCorrect> pageSuperviseDetailAccording(Page page, @Param("ew") QueryWrapper<QualitySuperviseDetailsCorrect> ew);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsMapper.java
new file mode 100644
index 0000000..23dc8aa
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsMapper.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.QualitySuperviseDetailsDto;
+import com.yuanchu.mom.pojo.QualitySuperviseDetails;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏琛�
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Mapper
+public interface QualitySuperviseDetailsMapper extends BaseMapper<QualitySuperviseDetails> {
+
+    /**
+     * 鐩戠潱璁″垝璇︽儏鍒楄〃
+     * @param page
+     * @param qualitySuperviseDetailsQueryWrapper
+     * @return
+     */
+    IPage<QualitySuperviseDetailsDto> pageQualitySuperviseDetail(Page page, @Param("ew") QueryWrapper<QualitySuperviseDetails> qualitySuperviseDetailsQueryWrapper);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsRecordMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsRecordMapper.java
new file mode 100644
index 0000000..ed26152
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseDetailsRecordMapper.java
@@ -0,0 +1,24 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.QualitySuperviseDetailsRecord;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏璁板綍琛�
+ *
+ * @author makejava
+ * @since 2024-11-07
+ */
+@Mapper
+public interface QualitySuperviseDetailsRecordMapper extends BaseMapper<QualitySuperviseDetailsRecord> {
+
+    /**
+     * 瀵煎嚭鐩戠潱璁板綍琛�
+     * @param superviseDetailsId
+     * @return
+     */
+    QualitySuperviseDetailsRecord selectSuperviseDetailRecord(@Param("superviseDetailsId") Integer superviseDetailsId);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseMapper.java b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseMapper.java
new file mode 100644
index 0000000..d6cbd5c
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/mapper/QualitySuperviseMapper.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.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.QualitySupervise;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 璐ㄩ噺鐩戠潱涓昏〃
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Mapper
+public interface QualitySuperviseMapper extends BaseMapper<QualitySupervise> {
+
+    /**
+     * 鐩戠潱璁″垝鍒楄〃
+     * @param page
+     * @param qualitySuperviseQueryWrapper
+     * @return
+     */
+    IPage<QualitySupervise> pageQualitySupervise(@Param("page") Page page, @Param("ew") QueryWrapper<QualitySupervise> qualitySuperviseQueryWrapper);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/InconsistentDistribution.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/InconsistentDistribution.java
new file mode 100644
index 0000000..b4ec671
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/InconsistentDistribution.java
@@ -0,0 +1,51 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 涓嶇鍚堥」鐨勫垎甯�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 09:53:20
+ */
+
+@Data
+@TableName("cnas_inconsistent_distribution")
+@ApiModel(value = "InconsistentDistribution瀵硅薄", description = "涓嶇鍚堥」鐨勫垎甯�")
+public class InconsistentDistribution {
+
+    @TableId(value = "distribution_id", type = IdType.AUTO)
+    private Integer distributionId;
+
+    @ApiModelProperty("骞翠唤")
+    private String distributionYear;
+
+    @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-process/src/main/java/com/yuanchu/mom/pojo/InconsistentDistributionDetail.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/InconsistentDistributionDetail.java
new file mode 100644
index 0000000..c008e04
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/InconsistentDistributionDetail.java
@@ -0,0 +1,80 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 涓嶇鍚堥」鐨勫垎甯冭鎯�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 09:53:33
+ */
+@Data
+@TableName("cnas_inconsistent_distribution_detail")
+@ApiModel(value = "InconsistentDistributionDetail瀵硅薄", description = "涓嶇鍚堥」鐨勫垎甯冭鎯�")
+public class InconsistentDistributionDetail {
+
+    @TableId(value = "distribution_detail_id", type = IdType.AUTO)
+    private Integer distributionDetailId;
+
+    @ApiModelProperty("涓昏〃id")
+    private Integer distributionId;
+
+    @ApiModelProperty("绔犺妭鍙�")
+    private String chapterNumber;
+
+    @ApiModelProperty("瑕佺礌")
+    private String essentials;
+
+    @ApiModelProperty("涓讳换")
+    private Integer director;
+
+    @ApiModelProperty("鎶�鏈礋璐d汉")
+    private Integer technology;
+
+    @ApiModelProperty("璐ㄩ噺璐熻矗浜�")
+    private Integer quality;
+
+    @ApiModelProperty("缁煎悎瀹�")
+    private Integer comprehensive;
+
+    @ApiModelProperty("璇曢獙瀹�")
+    private Integer testing;
+
+    @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;
+
+    @ApiModelProperty("鍚堣")
+    @TableField(select = false,exist = false)
+    private Integer total;
+
+    @ApiModelProperty("鍗犳瘮")
+    @TableField(select = false,exist = false)
+    private BigDecimal proportion;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessComplain.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessComplain.java
new file mode 100644
index 0000000..4e1cff8
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessComplain.java
@@ -0,0 +1,151 @@
+package com.yuanchu.mom.pojo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.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;
+
+/**
+ * <p>
+ * 鎶曡瘔
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 09:29:11
+ */
+@Getter
+@Setter
+@TableName("cnas_process_complain")
+@ApiModel(value = "ProcessComplain瀵硅薄", description = "鎶曡瘔")
+public class ProcessComplain extends OrderBy implements Serializable {
+
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ExcelIgnore
+    private Integer id;
+
+    @ApiModelProperty("鎶曡瘔缂栧彿")
+    @ExcelIgnore
+    private String complainNo;
+
+    @ApiModelProperty("鎶曡瘔鍚嶇О")
+    @ExcelProperty(value = "鎶曡瘔鍚嶇О")
+    @ValueTableShow(1)
+    private String complainName;
+
+    @ApiModelProperty("澶栭敭鍏宠仈(妫�娴嬫姤鍛奿d)")
+    @ExcelIgnore
+    private Integer insReportId;
+
+    @ExcelIgnore
+    @TableField(select = false,exist = false)
+    //鐢ㄦ潵鏂板浼犲弬鐨勬姤鍛婄紪鍙�
+    private String code;
+
+    @ApiModelProperty("鏍峰搧缂栧彿")
+    @ExcelIgnore
+    private String sampleCode;
+
+    @ApiModelProperty("鎶曡瘔浜�")
+    @TableField(fill = FieldFill.INSERT)
+    @ExcelIgnore
+    private Integer createUser;
+
+    @ValueTableShow(value = 2, name = "鎶曡瘔浜�")
+    @ExcelProperty(value = "鎶曡瘔浜�")
+    @TableField(select = false,exist = false)
+    private String complainant;
+
+    @ApiModelProperty("鎶曡瘔鏃ユ湡")
+    @ExcelProperty(value = "鎶曡瘔鏃ユ湡")
+    @ValueTableShow(3)
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @ExcelIgnore
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @ExcelIgnore
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鎶曡瘔鏂瑰紡")
+    @ExcelIgnore
+    private String complainMethod;
+
+    @ApiModelProperty("闂璁板綍")
+    @ExcelIgnore
+    private String problemRecords;
+
+    @ApiModelProperty("闂璁板綍-璐ㄩ噺璐熻矗浜�")
+    @ExcelIgnore
+    private Integer problemRecordsUser;
+
+    @ApiModelProperty("闂璁板綍-鏃ユ湡")
+    @ExcelIgnore
+    private LocalDate problemRecordsTime;
+
+    @ApiModelProperty("璐d换褰掑睘鍙婃姇璇夋槸鍚︽垚绔�")
+    @ExcelIgnore
+    private String dutyOwnership;
+
+    @ApiModelProperty("璐d换褰掑睘鍙婃姇璇夋槸鍚︽垚绔媉璐ㄩ噺璐熻矗浜�")
+    @ExcelIgnore
+    private Integer dutyOwnershipUser;
+
+    @ApiModelProperty("璐d换褰掑睘鍙婃姇璇夋槸鍚︽垚绔媉鏃ユ湡")
+    @ExcelIgnore
+    private LocalDate dutyOwnershipTime;
+
+    @ApiModelProperty("鍘熷洜鍒嗘瀽")
+    @ExcelIgnore
+    private String causeAnalysis;
+
+    @ApiModelProperty("鍘熷洜鍒嗘瀽_璐d换閮ㄩ棬璐熻矗浜�")
+    @ExcelIgnore
+    private Integer causeAnalysisUser;
+
+    @ApiModelProperty("鍘熷洜鍒嗘瀽_鏃ユ湡")
+    @ExcelIgnore
+    private LocalDate causeAnalysisTime;
+
+    @ApiModelProperty("绾犳鎺柦")
+    @ExcelIgnore
+    private String correctiveAction;
+
+    @ApiModelProperty("绾犳鎺柦_璐d换閮ㄩ棬璐熻矗浜�")
+    @ExcelIgnore
+    private Integer correctiveActionUser;
+
+    @ApiModelProperty("绾犳鎺柦_鏃ユ湡")
+    @ExcelIgnore
+    private LocalDate correctiveActionTime;
+
+    @ApiModelProperty("绾犳鎺柦纭")
+    @ExcelIgnore
+    private String correctiveActionConfirmation;
+
+    @ApiModelProperty("绾犳鎺柦纭_璐ㄩ噺璐熻矗浜�")
+    @ExcelIgnore
+    private Integer correctiveActionConfirmationUser;
+
+    @ApiModelProperty("绾犳鎺柦纭_鏃ユ湡")
+    @ExcelIgnore
+    private LocalDate correctiveActionConfirmationTime;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessDeal.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessDeal.java
new file mode 100644
index 0000000..0377d28
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessDeal.java
@@ -0,0 +1,77 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.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;
+
+/**
+ * <p>
+ * 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 02:50:19
+ */
+@Getter
+@Setter
+@TableName("cnas_process_deal")
+@ApiModel(value = "ProcessDeal瀵硅薄", description = "妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�")
+public class ProcessDeal extends OrderBy implements Serializable {
+
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鏍峰搧鍚嶇О")
+    @ValueTableShow(1)
+    private String sampleName;
+
+    @ApiModelProperty("鏍峰搧缂栧彿")
+    @ValueTableShow(2)
+    private String sampleCode;
+
+    @ApiModelProperty("渚涙牱鍗曚綅")
+    @ValueTableShow(3)
+    private String sampleSupplier;
+
+    @ApiModelProperty("鏁伴噺")
+    @ValueTableShow(4)
+    private Integer num;
+
+    @ApiModelProperty("澶勭悊鏂瑰紡")
+    @ValueTableShow(5)
+    private String dealMethod;
+
+    @ApiModelProperty("鏃堕棿")
+    @ValueTableShow(5)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate dealTime;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鍏宠仈鐨勫巻鍙叉�昏〃id")
+    private Integer totaldealId;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessEvaluate.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessEvaluate.java
new file mode 100644
index 0000000..9b57eba
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessEvaluate.java
@@ -0,0 +1,83 @@
+package com.yuanchu.mom.pojo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.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;
+
+/**
+ * <p>
+ * 娴嬮噺涓嶇‘瀹氬害鐨勮瘎浠�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 01:10:43
+ */
+@Getter
+@Setter
+@TableName("cnas_process_evaluate")
+@ApiModel(value = "ProcessEvaluate瀵硅薄", description = "娴嬮噺涓嶇‘瀹氬害鐨勮瘎浠�")
+public class ProcessEvaluate extends OrderBy implements Serializable {
+
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ExcelIgnore
+    private Integer id;
+
+    @ApiModelProperty("鎶ュ憡鍚嶇О")
+    @ExcelProperty(value = "鎶ュ憡鍚嶇О")
+    @ValueTableShow(1)
+    private String reportName;
+
+    @ApiModelProperty("鎶ュ憡璺緞")
+    @ExcelIgnore
+    private String reportUrl;
+
+    @ApiModelProperty("璇勪环浜�")
+    @ExcelIgnore
+    private Integer evaluateUser;
+
+    @TableField(select = false,exist = false)
+    @ValueTableShow(value = 2,name = "璇勪环浜�")
+    @ExcelProperty(value = "璇勪环浜�")
+    private String evaluateUserName;
+
+    @ApiModelProperty("璇勪环鏃ユ湡")
+    @ExcelProperty(value = "璇勪环鏃ユ湡")
+    @ValueTableShow(3)
+    private LocalDate evaluateTime;
+
+    @ApiModelProperty("澶囨敞")
+    @ExcelProperty(value = "澶囨敞")
+    @ValueTableShow(4)
+    private String note;
+
+    @TableField(fill = FieldFill.INSERT)
+    @ExcelIgnore
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @ExcelIgnore
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    @ExcelIgnore
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @ExcelIgnore
+    private LocalDateTime updateTime;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodSearchNew.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodSearchNew.java
new file mode 100644
index 0000000..8347023
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodSearchNew.java
@@ -0,0 +1,75 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 鏍囧噯鏌ユ柊
+ *
+ * @author zhuo
+ * @since 2024-11-04
+ */
+@Data
+@ExcelIgnoreUnannotated
+@TableName("cnas_process_method_search_new")
+public class ProcessMethodSearchNew {
+
+    @TableId(type = IdType.AUTO)
+    private Integer methodSearchNewId;
+
+    @ExcelProperty(value = {"鏍囧噯鍚嶇О", "鏍囧噯鍚嶇О"}, index = 1)
+    @ApiModelProperty("鏍囧噯鍚嶇О")
+    private String methodName;
+
+    @ExcelProperty(value = {"鏍囧噯鍙�", "鏍囧噯鍙�"}, index = 2)
+    @ApiModelProperty("鏍囧噯鍙�")
+    private String standardNo;
+
+    @ExcelProperty(value = {"鏂囦欢缂栧彿", "鏂囦欢缂栧彿"}, index = 3)
+    @ApiModelProperty("鏂囦欢缂栧彿")
+    private String fileNo;
+
+    @ApiModelProperty("鏄惁鏄柊鏍囧噯, 0鍚�,1鏄�")
+    private Integer isNewStandard;
+
+    @ExcelProperty(value = {"鏂版爣鍑嗗悕绉�", "鏂版爣鍑嗗悕绉�"}, index = 5)
+    @ApiModelProperty("鏂版爣鍑嗗悕绉�")
+    private String newMethodName;
+
+    @ExcelProperty(value = {"鏂版爣鍑嗗彿", "鏂版爣鍑嗗彿"}, index =6)
+    @ApiModelProperty("鏂版爣鍑嗗彿")
+    private String newStandardNo;
+
+    @ApiModelProperty("鏌ユ柊璁板綍鏉ユ簮, 0,鏍囧噯缃�, 1濮旀墭鎯呮姤, 2鏍囧噯鏁�, 3鍏朵粬")
+    private Integer searchNewSource;
+
+    @ApiModelProperty("澶囨敞,0浣滃簾, 1鏇挎崲")
+    private Integer remark;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @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-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerify.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerify.java
new file mode 100644
index 0000000..153d8ee
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerify.java
@@ -0,0 +1,134 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉
+ *
+ * @author zhuo
+ * @since 2024-11-05
+ */
+@Data
+@TableName("cnas_process_method_verify")
+public class ProcessMethodVerify {
+
+    @TableId(type = IdType.AUTO)
+    private Integer methodVerifyId;
+
+    @ApiModelProperty("0鍙樻洿,1楠岃瘉")
+    private Integer operationType;
+
+    @ApiModelProperty("鏍囧噯鏂规硶")
+    private String methodName;
+
+    @ApiModelProperty("楠岃瘉鍘熷洜")
+    private String verifyReason;
+
+    @ApiModelProperty("涓昏鎶�鏈彉鍖�")
+    private String technologyChange;
+
+    @ApiModelProperty("(浜�)鏍囧噯瑕佹眰")
+    private String personRequirements;
+    @ApiModelProperty("(浜�)鍑嗗鎯呭喌")
+    private String personReadiness;
+    @ApiModelProperty("(浜�)鏄惁婊¤冻")
+    private Integer personIsSatisfied;
+    @ApiModelProperty("(浜�)澶囨敞")
+    private String personRemark;
+
+    @ApiModelProperty("(鏈�)鏍囧噯瑕佹眰")
+    private String machineRequirements;
+    @ApiModelProperty("(鏈�)鍑嗗鎯呭喌")
+    private String machineReadiness;
+    @ApiModelProperty("(鏈�)鏄惁婊¤冻")
+    private Integer machineIsSatisfied;
+    @ApiModelProperty("(鏈�)澶囨敞")
+    private String machineRemark;
+
+    @ApiModelProperty("(鏂�)鏍囧噯瑕佹眰")
+    private String materialRequirements;
+    @ApiModelProperty("(鏂�)鍑嗗鎯呭喌")
+    private String materialReadiness;
+    @ApiModelProperty("(鏂�)鏄惁婊¤冻")
+    private Integer materialIsSatisfied;
+    @ApiModelProperty("(鏂�)澶囨敞")
+    private String materialRemark;
+
+    @ApiModelProperty("(娉�)鏍囧噯瑕佹眰")
+    private String methodRequirements;
+    @ApiModelProperty("(娉�)鍑嗗鎯呭喌")
+    private String methodReadiness;
+    @ApiModelProperty("(娉�)鏄惁婊¤冻")
+    private Integer methodIsSatisfied;
+    @ApiModelProperty("(娉�)澶囨敞")
+    private String methodRemark;
+
+    @ApiModelProperty("(鐜�)鏍囧噯瑕佹眰")
+    private String environmentRequirements;
+    @ApiModelProperty("(鐜�)鍑嗗鎯呭喌")
+    private String environmentReadiness;
+    @ApiModelProperty("(鐜�)鏄惁婊¤冻")
+    private Integer environmentIsSatisfied;
+    @ApiModelProperty("(鐜�)澶囨敞")
+    private String environmentRemark;
+
+    @ApiModelProperty("(娴嬮噺婧簮鎬�)鏍囧噯瑕佹眰")
+    private String traceabilityRequirements;
+    @ApiModelProperty("(娴嬮噺婧簮鎬�)鍑嗗鎯呭喌")
+    private String traceabilityReadiness;
+    @ApiModelProperty("(娴嬮噺婧簮鎬�)鏄惁婊¤冻")
+    private Integer traceabilityIsSatisfied;
+    @ApiModelProperty("(娴嬮噺婧簮鎬�)澶囨敞")
+    private String traceabilityRemark;
+
+    @ApiModelProperty("(鏍峰搧绠$悊闇�姹�)鏍囧噯瑕佹眰")
+    private String managementRequirements;
+    @ApiModelProperty("(鏍峰搧绠$悊闇�姹�)鍑嗗鎯呭喌")
+    private String managementReadiness;
+    @ApiModelProperty("(鏍峰搧绠$悊闇�姹�)鏄惁婊¤冻")
+    private Integer managementIsSatisfied;
+    @ApiModelProperty("(鏍峰搧绠$悊闇�姹�)澶囨敞")
+    private String managementRemark;
+
+    @ApiModelProperty("(鍏朵粬)鏍囧噯瑕佹眰")
+    private String otherRequirements;
+    @ApiModelProperty("(鍏朵粬)鍑嗗鎯呭喌")
+    private String otherReadiness;
+    @ApiModelProperty("(鍏朵粬)鏄惁婊¤冻")
+    private Integer otherIsSatisfied;
+    @ApiModelProperty("(鍏朵粬)澶囨敞")
+    private String otherRemark;
+
+    @ApiModelProperty("纭鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime confirmDate;
+
+    @ApiModelProperty("纭浜哄憳")
+    private String confirmUser;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyCalibrationsFile.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyCalibrationsFile.java
new file mode 100644
index 0000000..bc47ae1
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyCalibrationsFile.java
@@ -0,0 +1,57 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉璁惧鏍″噯闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-12
+ */
+@Data
+@TableName("cnas_process_method_verify_calibrations_file")
+public class ProcessMethodVerifyCalibrationsFile {
+
+    @TableId(type = IdType.AUTO)
+    private Integer calibrationsFileId;
+    @ApiModelProperty("鏂规硶楠岃瘉id")
+    private Integer methodVerifyId;
+
+    @ApiModelProperty("绫诲瀷:1鍥剧墖/2鏂囦欢")
+    private Integer type;
+
+    @ApiModelProperty("闄勪欢璺緞")
+    private String fileUrl;
+
+    @ApiModelProperty("闄勪欢鍚嶇О")
+    private String fileName;
+
+    @ApiModelProperty("璁惧id")
+    private Integer deviceId;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyMachineAttachment.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyMachineAttachment.java
new file mode 100644
index 0000000..cae2ab8
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyMachineAttachment.java
@@ -0,0 +1,61 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉璁惧闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-05
+ */
+@Data
+@TableName("cnas_process_method_verify_machine_attachment")
+public class ProcessMethodVerifyMachineAttachment {
+
+    @TableId(type = IdType.AUTO)
+    private Integer machineAttachmentId;
+
+    @ApiModelProperty("鏂规硶楠岃瘉id")
+    private Integer methodVerifyId;
+
+    @ApiModelProperty("璁惧id")
+    private Integer deviceId;
+
+    @ApiModelProperty("璁惧鍚嶇О")
+    private String machineName;
+
+    @ApiModelProperty("瑙勬牸鍨嬪彿")
+    private String machineSpecification;
+
+    @ApiModelProperty("绛栫暐鑼冨洿")
+    private String machineMeasuringRange;
+
+    @ApiModelProperty("鎵╁睍淇℃伅")
+    private String other;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyMethodFile.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyMethodFile.java
new file mode 100644
index 0000000..09ce439
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyMethodFile.java
@@ -0,0 +1,55 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉(娉�)闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-05
+ */
+@Data
+@TableName("cnas_process_method_verify_method_file")
+public class ProcessMethodVerifyMethodFile {
+
+    @TableId(type = IdType.AUTO)
+    private Integer methodFileId;
+
+    @ApiModelProperty("鏂规硶楠岃瘉id")
+    private Integer methodVerifyId;
+
+    @ApiModelProperty("绫诲瀷:1鍥剧墖/2鏂囦欢")
+    private Integer type;
+
+    @ApiModelProperty("闄勪欢璺緞")
+    private String fileUrl;
+
+    @ApiModelProperty("闄勪欢鍚嶇О")
+    private String fileName;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyWorkFile.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyWorkFile.java
new file mode 100644
index 0000000..4b5c455
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessMethodVerifyWorkFile.java
@@ -0,0 +1,60 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉涓婂矖璇侀檮浠惰〃
+ *
+ * @author zhuo
+ * @since 2024-11-12
+ */
+@Data
+@TableName("cnas_process_method_verify_work_file")
+public class ProcessMethodVerifyWorkFile {
+
+    @TableId(type = IdType.AUTO)
+    private Integer workFileId;
+    @ApiModelProperty("鏂规硶楠岃瘉id")
+    private Integer methodVerifyId;
+
+    @ApiModelProperty("绫诲瀷:1鍥剧墖/2鏂囦欢")
+    private Integer type;
+
+    @ApiModelProperty("闄勪欢璺緞")
+    private String fileUrl;
+
+    @ApiModelProperty("闄勪欢鍚嶇О")
+    private String fileName;
+
+    @ApiModelProperty("鎸佹湁浜篿d")
+    private Integer userId;
+
+    @ApiModelProperty("鎸佹湁浜�")
+    private String userName;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessOrder.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessOrder.java
new file mode 100644
index 0000000..66e54d3
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessOrder.java
@@ -0,0 +1,63 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+
+import com.yuanchu.mom.common.OrderBy;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-05 03:06:20
+ */
+@Getter
+@Setter
+@TableName("cnas_process_order")
+@ApiModel(value = "ProcessOrder瀵硅薄", description = "瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫")
+public class ProcessOrder extends OrderBy implements Serializable {
+
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鍏宠仈澶栭敭(妫�楠屽崟id)")
+    private Integer insOrderId;
+
+    @ApiModelProperty("鍒ゅ畾瑙勫垯:涓嶈�冭檻涓嶇‘瀹氬害/鑰冭檻涓嶇‘瀹氬害(%)")
+    private String rule;
+
+    @ApiModelProperty("缁煎悎瀹ょ鍚嶄汉")
+    private Integer comprehensiveUser;
+
+    @TableField(select = false,exist = false)
+    private String comprehensiveUserName;
+
+    @TableField(select = false,exist = false)
+    private String comprehensiveUserUrl;
+
+    @ApiModelProperty("鎺ユ敹鏃ユ湡")
+    private LocalDate comprehensiveTime;
+
+    @ApiModelProperty("棰嗘牱鍛�")
+    private Integer issueUser;
+
+    @TableField(select = false,exist = false)
+    private String issueUserName;
+
+    @TableField(select = false,exist = false)
+    private String issueUserUrl;
+
+    @ApiModelProperty("棰嗘牱鏃ユ湡")
+    private LocalDate issueTime;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessReport.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessReport.java
new file mode 100644
index 0000000..39c0844
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessReport.java
@@ -0,0 +1,97 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+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;
+
+/**
+ * <p>
+ * 妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-05 08:58:39
+ */
+@Getter
+@Setter
+@TableName("cnas_process_report")
+@ApiModel(value = "ProcessReport瀵硅薄", description = "妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃")
+public class ProcessReport extends OrderBy implements Serializable {
+
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("妫�楠屾姤鍛婄紪鍙�")
+    @ValueTableShow(1)
+    private String insReportCode;
+
+    @ApiModelProperty("椤垫暟")
+    @ValueTableShow(2)
+    private String pages;
+
+    @ApiModelProperty("鍙戦�佷唤鏁�")
+    @ValueTableShow(3)
+    private String number;
+
+    @ApiModelProperty("鍙戝線浣曞")
+    @ValueTableShow(4)
+    private String send;
+
+    @ApiModelProperty("鍙戦�佹柟寮�")
+    @ValueTableShow(5)
+    private String method;
+
+    @ApiModelProperty("鍙戦�佹棩鏈�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ValueTableShow(6)
+    private LocalDate sendTime;
+
+    @ApiModelProperty("鍙戦�佷汉")
+    private Integer sendUser;
+
+    @ValueTableShow(value = 7,name = "鍙戦�佷汉")
+    @TableField(select = false,exist = false)
+    private String sendUserName;
+
+    @ApiModelProperty("绛炬敹浜�")
+    private String signatory;
+
+
+    @TableField(select = false,exist = false)
+    private String signatoryUrl;
+
+    @ValueTableShow(value = 8,name = "绛炬敹浜�")
+    @TableField(select = false,exist = false)
+    private String signatoryName;
+
+    @ApiModelProperty("澶囨敞")
+    @ValueTableShow(9)
+    private String remark;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessSample.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessSample.java
new file mode 100644
index 0000000..e8febd3
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessSample.java
@@ -0,0 +1,91 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.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 org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 鏍峰搧鎺ユ敹
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-12 05:02:49
+ */
+@Getter
+@Setter
+@TableName("cnas_process_sample")
+@ApiModel(value = "ProcessSample瀵硅薄", description = "鏍峰搧鎺ユ敹")
+public class ProcessSample extends OrderBy implements Serializable {
+
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鏍峰搧鍚嶇О")
+    @ValueTableShow(3)
+    private String sampleName;
+
+    @ApiModelProperty("鏍峰搧缂栧彿")
+    @ValueTableShow(2)
+    private String sampleCode;
+
+    @ApiModelProperty("鏉ユ牱鍗曚綅")
+    @ValueTableShow(5)
+    private String sampleSupplier;
+
+    @ApiModelProperty("鏍峰搧鏁伴噺")
+    @ValueTableShow(4)
+    private Integer num;
+
+    @ApiModelProperty("鏍峰搧鐘舵��")
+    @ValueTableShow(7)
+    private String sampleState;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鍏宠仈鎬昏〃鍘嗗彶id")
+    private Integer totalSampleId;
+
+    @ApiModelProperty("鏀舵牱鏃ユ湡")
+    @ValueTableShow(1)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate receiveDate;
+
+    @ApiModelProperty("鐣欐牱鏃ユ湡")
+    @ValueTableShow(6)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate leaveDate;
+
+    @ApiModelProperty("閫�鏍风鏀�/澶勭悊鏃ユ湡")
+    @ValueTableShow(8)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate dealTime;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessTotalSample.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessTotalSample.java
new file mode 100644
index 0000000..0d9219f
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessTotalSample.java
@@ -0,0 +1,83 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+
+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;
+
+/**
+ * <p>
+ * 鏍峰搧鎺ユ敹鎬昏〃
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-12 05:02:58
+ */
+@Getter
+@Setter
+@TableName("cnas_process_total_sample")
+@ApiModel(value = "ProcessTotalSample瀵硅薄", description = "鏍峰搧鎺ユ敹鎬昏〃")
+public class ProcessTotalSample extends OrderBy implements Serializable {
+
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("瀹℃牳浜�")
+    private Integer examineUser;
+
+    @ApiModelProperty("瀹℃牳缁撴灉")
+    private String examineState;
+
+    @ApiModelProperty("瀹℃牳浜虹數瀛愮鍚島rl")
+    private String examineUrl;
+
+
+    @ValueTableShow(value = 4, name = "瀹℃牳浜�")
+    @TableField(select = false, exist = false)
+    private String examineUserName;
+
+    @ApiModelProperty("鎵瑰噯浜�")
+    private Integer ratifyUser;
+
+    @ApiModelProperty("鎵瑰噯缁撴灉")
+    private String ratifyState;
+
+    @ApiModelProperty("鎵瑰噯浜虹數瀛愮鍚島rl")
+    private String ratifyUrl;
+
+    @ValueTableShow(value = 5, name = "鎵瑰噯浜�")
+    @TableField(select = false, exist = false)
+    private String ratifyUserName;
+
+    @ApiModelProperty("鎻愪氦浜�")
+    private Integer submitUser;
+    @ValueTableShow(value = 3, name = "鎻愪氦浜�")
+    @TableField(select = false, exist = false)
+    private String submitUserName;
+
+    @ApiModelProperty("鎻愪氦缁撴灉")
+    private String submitState;
+
+    @ApiModelProperty("鎻愪氦浜虹數瀛愮鍚島rl")
+    private String submitUrl;
+
+    @ApiModelProperty("鎬绘暟閲�")
+    @ValueTableShow(2)
+    private Integer totalNum;
+
+    @ApiModelProperty("鏈堜唤")
+    @ValueTableShow(1)
+    private String month;
+
+    @ApiModelProperty("鐢熸垚鐢宠琛ㄧ殑璺緞")
+    private String url;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessTotaldeal.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessTotaldeal.java
new file mode 100644
index 0000000..ebdeb98
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/ProcessTotaldeal.java
@@ -0,0 +1,84 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+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;
+
+/**
+ * <p>
+ * 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�昏〃(鍘嗗彶)
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 03:59:09
+ */
+@Getter
+@Setter
+@TableName("cnas_process_totaldeal")
+@ApiModel(value = "ProcessTotaldeal瀵硅薄", description = "妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�昏〃(鍘嗗彶)")
+public class ProcessTotaldeal extends OrderBy implements Serializable {
+
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("瀹℃牳浜�")
+    private Integer examineUser;
+
+    @ApiModelProperty("瀹℃牳缁撴灉")
+    private String examineState;
+
+    @ApiModelProperty("瀹℃牳浜虹數瀛愮鍚島rl")
+    private String examineUrl;
+
+
+    @ValueTableShow(value = 4, name = "瀹℃牳浜�")
+    @TableField(select = false, exist = false)
+    private String examineUserName;
+
+    @ApiModelProperty("鎵瑰噯浜�")
+    private Integer ratifyUser;
+
+    @ApiModelProperty("鎵瑰噯缁撴灉")
+    private String ratifyState;
+
+    @ApiModelProperty("鎵瑰噯浜虹數瀛愮鍚島rl")
+    private String ratifyUrl;
+
+    @ValueTableShow(value = 5, name = "鎵瑰噯浜�")
+    @TableField(select = false, exist = false)
+    private String ratifyUserName;
+
+    @ApiModelProperty("鎻愪氦浜�")
+    private Integer submitUser;
+    @ValueTableShow(value = 3, name = "鎻愪氦浜�")
+    @TableField(select = false, exist = false)
+    private String submitUserName;
+
+    @ApiModelProperty("鎻愪氦缁撴灉")
+    private String submitState;
+
+    @ApiModelProperty("鎻愪氦浜虹數瀛愮鍚島rl")
+    private String submitUrl;
+
+    @ApiModelProperty("鎬绘暟閲�")
+    @ValueTableShow(2)
+    private Integer totalNum;
+
+    @ApiModelProperty("鏈堜唤")
+    @ValueTableShow(1)
+    private String month;
+
+    @ApiModelProperty("鐢熸垚鐢宠琛ㄧ殑璺緞")
+    private String url;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitor.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitor.java
new file mode 100644
index 0000000..5c282d8
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitor.java
@@ -0,0 +1,79 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝涓昏〃
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Data
+@TableName("cnas_quality_monitor")
+public class QualityMonitor {
+
+    @TableId(type = IdType.AUTO)
+    private Integer qualityMonitorId;
+
+    @ApiModelProperty("璁″垝鍚嶇О")
+    private String monitorName;
+
+    @ApiModelProperty("澶栭敭锛氱敤鎴穒d锛堢紪鍒朵汉锛�")
+    private Integer writeUserId;
+
+    @ApiModelProperty("缂栧埗鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime writeTime;
+
+    @ApiModelProperty("澶栭敭锛氱敤鎴穒d锛堝鏍镐汉锛�")
+    private Integer examineUserId;
+
+    @ApiModelProperty("瀹℃牳鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime examineTime;
+
+    @ApiModelProperty("瀹℃牳鐘舵�� , 0 涓嶉�氳繃, 1閫氳繃")
+    private Integer examineStatus;
+
+    @ApiModelProperty("瀹℃牳鍐呭")
+    private String examineRemark;
+
+    @ApiModelProperty("澶栭敭锛氱敤鎴穒d锛堟壒鍑嗕汉锛�")
+    private Integer ratifyUserId;
+
+    @ApiModelProperty("鎵瑰噯鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime ratifyTime;
+
+    @ApiModelProperty("鎵瑰噯鐘舵��, 0 涓嶉�氳繃, 1閫氳繃")
+    private Integer ratifyStatus;
+
+    @ApiModelProperty("鎵瑰噯鍐呭")
+    private String ratifyRemark;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetails.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetails.java
new file mode 100644
index 0000000..f7dcaf5
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetails.java
@@ -0,0 +1,71 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏琛�
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Data
+@TableName("cnas_quality_monitor_details")
+public class QualityMonitorDetails {
+
+    @TableId(type = IdType.AUTO)
+    private Integer qualityMonitorDetailsId;
+
+    @ApiModelProperty("鐩戞帶璁″垝id")
+    private Integer qualityMonitorId;
+
+    @ApiModelProperty("鐩戞帶鐩殑")
+    private String monitorPurpose;
+
+    @ApiModelProperty("璁″垝寮�灞曟椂闂�")
+    private String plannedTime;
+
+    @ApiModelProperty("鐩戞帶椤圭洰")
+    private String monitorProject;
+
+    @ApiModelProperty("鍙傚姞浜哄憳")
+    private String participant;
+
+    @ApiModelProperty("棰勭畻")
+    private String budget;
+
+    @ApiModelProperty("缁勭粐浜哄憳")
+    private String organization;
+
+    @ApiModelProperty("鐩戞帶鏂瑰紡")
+    private String monitorWay;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    // 瀵煎嚭浣跨敤
+    @TableField(select = false, exist = false)
+    private Integer index;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsEvaluate.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsEvaluate.java
new file mode 100644
index 0000000..9e01c24
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsEvaluate.java
@@ -0,0 +1,86 @@
+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.time.LocalDateTime;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏璇勪环琛�
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Data
+@TableName("cnas_quality_monitor_details_evaluate")
+public class QualityMonitorDetailsEvaluate {
+
+    @TableId(type = IdType.AUTO)
+    private Integer detailsEvaluateId;
+
+    @ApiModelProperty("鐩戞帶璁″垝璇︽儏id")
+    private Integer qualityMonitorDetailsId;
+
+    @ApiModelProperty("璇勫鐩殑")
+    private String reviewPurpose;
+
+    @ApiModelProperty("璇勫浜哄憳")
+    private String reviewUser;
+
+    @ApiModelProperty("璇勫鏃ユ湡")
+    private String reviewTime;
+
+    @ApiModelProperty("瀹炴柦鎯呭喌")
+    private String implementCondition;
+
+    @ApiModelProperty("瀹炴柦閮ㄩ棬")
+    private String implementDepartment;
+
+    @ApiModelProperty("瀹炴柦缁撴灉")
+    private String implementResult;
+
+    @ApiModelProperty("瀹炴柦鎶�鏈礋璐d汉")
+    private String implementUserId;
+
+    @ApiModelProperty("鎵瑰噯缁撹")
+    private String ratifyOpinion;
+
+    @ApiModelProperty("鎵瑰噯鎶�鏈礋璐d汉")
+    private Integer ratifyUserId;
+
+    @ApiModelProperty("鎵瑰噯鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDateTime ratifyTime;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鏄惁缁撴潫0:鏈粨鏉�, 1:宸茬粨鏉�")
+    private Integer isFinish;
+
+    @ApiModelProperty("瀹炴柦鎶�鏈礋璐d汉鍚嶇О")
+    @TableField(exist = false,select = false)
+    private String implementName;
+
+    @ApiModelProperty("鎵瑰噯鎶�鏈礋璐d汉鍚嶇О")
+    @TableField(exist = false,select = false)
+    private String ratifyUserName;
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsEvaluateFile.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsEvaluateFile.java
new file mode 100644
index 0000000..c945077
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsEvaluateFile.java
@@ -0,0 +1,54 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏璇勪环闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Data
+@TableName("cnas_quality_monitor_details_evaluate_file")
+public class QualityMonitorDetailsEvaluateFile {
+
+    @TableId(type = IdType.AUTO)
+    private Integer evaluateFileId;
+
+    @ApiModelProperty("璇勪环id")
+    private Integer detailsEvaluateId;
+
+    @ApiModelProperty("绫诲瀷:1鍥剧墖/2鏂囦欢")
+    private Integer type;
+
+    @ApiModelProperty("闄勪欢璺緞")
+    private String fileUrl;
+
+    @ApiModelProperty("闄勪欢鍚嶇О")
+    private String fileName;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsRatify.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsRatify.java
new file mode 100644
index 0000000..8f95fbf
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualityMonitorDetailsRatify.java
@@ -0,0 +1,86 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏鎵瑰噯琛�
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Data
+@TableName("cnas_quality_monitor_details_ratify")
+public class QualityMonitorDetailsRatify {
+
+    @TableId(type = IdType.AUTO)
+    private Integer detailsRatifyId;
+
+    @ApiModelProperty("鐩戞帶璁″垝璇︽儏id")
+    private Integer qualityMonitorDetailsId;
+
+    @ApiModelProperty("鐩戞帶椤圭洰")
+    private String monitorProject;
+
+    @ApiModelProperty("鐩戞帶鐩殑")
+    private String monitorPurpose;
+
+    @ApiModelProperty("鐩戞帶鏃堕棿")
+    private String monitorData;
+
+    @ApiModelProperty("鐩戞帶鏂规硶")
+    private String monitorMethod;
+
+    @ApiModelProperty("鍙傚姞浜哄憳")
+    private String participant;
+
+    @ApiModelProperty("杩囩▼鎺у埗")
+    private String processControl;
+
+    @ApiModelProperty("濡備綍璇勪环")
+    private String howEvaluate;
+
+    @ApiModelProperty("棰勭畻")
+    private String budget;
+
+    @ApiModelProperty("妫�娴嬮儴闂�")
+    private String inspectionDepartment;
+
+    @ApiModelProperty("鎵瑰噯鎰忚")
+    private String ratifyOpinion;
+
+    @ApiModelProperty("鎶�鏈礋璐d汉")
+    private Integer ratifyUserId;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鏄惁缁撴潫0:鏈粨鏉�, 1:宸茬粨鏉�")
+    private Integer isFinish;
+
+    @ApiModelProperty("鎶�鏈礋璐d汉")
+    @TableField(exist = false,select = false)
+    private String ratifyName;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySupervise.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySupervise.java
new file mode 100644
index 0000000..3653613
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySupervise.java
@@ -0,0 +1,73 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璐ㄩ噺鐩戠潱涓昏〃
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Data
+@TableName("cnas_quality_supervise")
+public class QualitySupervise {
+
+    @TableId(type = IdType.AUTO)
+    private Integer superviseId;
+
+    @ApiModelProperty("鐩戠潱鍚嶇О")
+    private String superviseName;
+
+    @ApiModelProperty("澶栭敭锛氱敤鎴穒d锛堢紪鍒朵汉锛�")
+    private Integer writeUserId;
+
+    @ApiModelProperty("缂栧埗浜�")
+    private String writeUserName;
+
+    @ApiModelProperty("缂栧埗鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime writeTime;
+
+    @ApiModelProperty("澶栭敭锛氱敤鎴穒d锛堟壒鍑嗕汉锛�")
+    private Integer ratifyUserId;
+
+
+    @ApiModelProperty("鎵瑰噯浜�")
+    private String ratifyUserName;
+
+    @ApiModelProperty("鎵瑰噯鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime ratifyTime;
+
+    @ApiModelProperty("鎵瑰噯鐘舵��, 0 涓嶉�氳繃, 1閫氳繃")
+    private Integer ratifyStatus;
+
+    @ApiModelProperty("鎵瑰噯鍐呭")
+    private String ratifyRemark;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetails.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetails.java
new file mode 100644
index 0000000..a68a820
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetails.java
@@ -0,0 +1,68 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏琛�
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Data
+@TableName("cnas_quality_supervise_details")
+public class QualitySuperviseDetails {
+
+    @TableId(type = IdType.AUTO)
+    private Integer superviseDetailsId;
+
+    @ApiModelProperty("鐩戠潱璁″垝id")
+    private Integer superviseId;
+
+    @ApiModelProperty("鐩戠潱鏃ユ湡")
+    private String superviseTime;
+
+    @ApiModelProperty("鐩戠潱鐩殑")
+    private String supervisePurpose;
+
+    @ApiModelProperty("鐩戞帶椤圭洰")
+    private String superviseProject;
+
+    @ApiModelProperty("琚洃鐫d汉")
+    private String supervisee;
+
+    @ApiModelProperty("鐩戠潱鍘熷洜")
+    private String superviseReason;
+
+    @ApiModelProperty("澶囨敞")
+    private String remark;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    // 瀵煎嚭浣跨敤
+    @TableField(select = false, exist = false)
+    private Integer index;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsAccording.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsAccording.java
new file mode 100644
index 0000000..858e7c0
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsAccording.java
@@ -0,0 +1,140 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏涓嶇鍚堥」鎺у埗琛�
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Data
+@TableName("cnas_quality_supervise_details_according")
+public class QualitySuperviseDetailsAccording {
+
+    @TableId(type = IdType.AUTO)
+    private Integer superviseDetailsAccordingId;
+
+    @ApiModelProperty("鐩戠潱璇︽儏id")
+    private Integer superviseDetailsId;
+
+    @ApiModelProperty("0鍙戠敓閮ㄩ棬")
+    private String occurrenceDepartment;
+
+    @ApiModelProperty("0閮ㄩ棬璐熻矗浜�")
+    private String headDepartment;
+
+    @ApiModelProperty("0鍙戠幇閫斿緞,0:绠$悊璇勫,1:鍐呴儴瀹℃牳,2:妫�娴嬭繃绋嬫帶鍒�,3:鍐呴儴璐ㄩ噺鎺у埗,4:鍐呴儴鐩戠潱,5:澶栭儴璇勫,6:澶栭儴鎶曡瘔,7:鍏朵粬")
+    private Integer findWay;
+
+    @ApiModelProperty("0涓嶇鍚堣褰曡鎯�")
+    private String recordDetail;
+
+    @ApiModelProperty("0涓嶅悎鏍艰褰曚緷鎹�")
+    private String recordAccording;
+
+    @ApiModelProperty("0鍙戠幇閮ㄩ棬")
+    private String foundDepartment;
+
+    @ApiModelProperty("0璁板綍浜篿d")
+    private Integer recordUserId;
+
+    @ApiModelProperty("0璁板綍浜�")
+    private String recordUserName;
+
+    @ApiModelProperty("0璁板綍鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate recordTime;
+
+    @ApiModelProperty("0琚洃鐫d汉id")
+    private Integer supervisedUserId;
+
+    @ApiModelProperty("0琚洃鐫d汉")
+    private String supervisedUserName;
+
+    @ApiModelProperty("0琚洃鐫f椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate supervisedTime;
+
+    @ApiModelProperty("1娓呴櫎涓嶇鍚堟帾鏂�")
+    private String eliminateMeasure;
+
+    @ApiModelProperty("1璐d换閮ㄩ棬")
+    private String responsibleDepartment;
+
+    @ApiModelProperty("1澶勭悊浜篿d")
+    private Integer actionsUserId;
+
+    @ApiModelProperty("1澶勭悊浜�")
+    private String actionsUserName;
+
+    @ApiModelProperty("1澶勭悊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate actionsTime;
+
+    @ApiModelProperty("2绾犳鎺柦鍐呭")
+    private String correctContent;
+
+    @ApiModelProperty("2鏄惁绾犳澶勭悊, 0鍚�, 1鏄�")
+    private Integer isCorrect;
+
+    @ApiModelProperty("2绾犳鎶�鏈礋璐d汉id")
+    private Integer correctUserId;
+
+    @ApiModelProperty("2绾犳鎶�鏈礋璐d汉")
+    private String correctUserName;
+
+    @ApiModelProperty("2绾犳濉啓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate correctTime;
+
+    @ApiModelProperty("3鏄惁閫氱煡瀹㈡埛, 0鍚�, 1鏄�")
+    private Integer notifyCustomer;
+
+    @ApiModelProperty("3鏄惁鎭㈠宸ヤ綔, 0鍚�, 1鏄�")
+    private Integer backToWork;
+
+    @ApiModelProperty("3璐ㄩ噺璐熻矗浜篿d")
+    private Integer qualityManagerUserId;
+
+    @ApiModelProperty("3璐ㄩ噺璐熻矗浜�")
+    private String qualityManagerUserName;
+
+    @ApiModelProperty("3璐ㄩ噺璐熻矗浜哄~鍐欐椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate qualityManagerTime;
+
+    @ApiModelProperty("鏄惁缁撴潫,0: 鏈粨鏉�, 1:缁撴潫")
+    private Integer isFinish;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @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-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsCorrect.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsCorrect.java
new file mode 100644
index 0000000..e08bc54
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsCorrect.java
@@ -0,0 +1,124 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏绾犳澶勭悊琛�
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Data
+@TableName("cnas_quality_supervise_details_correct")
+public class QualitySuperviseDetailsCorrect {
+
+    @TableId(type = IdType.AUTO)
+    private Integer superviseDetailsCorrectId;
+
+    @ApiModelProperty("鐩戠潱璇︽儏id")
+    private Integer superviseDetailsId;
+
+    @ApiModelProperty("0涓嶅悎鏍兼弿杩�")
+    private String raiseResult;
+
+    @ApiModelProperty("0vde涓撳鍙戠幇")
+    private String vdeRaiseResult;
+
+    @ApiModelProperty("0鎻愬嚭閮ㄩ棬")
+    private String raiseDepartment;
+
+    @ApiModelProperty("0鎻愬嚭浜篿d")
+    private Integer raiseUserId;
+
+    @ApiModelProperty("0鎻愬嚭浜�")
+    private String raiseUserName;
+
+    @ApiModelProperty("0鎻愬嚭鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate raiseTime;
+
+    @ApiModelProperty("1鍘熷洜鍒嗘瀽")
+    private String causeResult;
+
+    @ApiModelProperty("1鍘熷洜鍒嗘瀽璐d换閮ㄩ棬")
+    private String causeDepartment;
+
+    @ApiModelProperty("1鍘熷洜鍒嗘瀽浜篿d")
+    private Integer causeUserId;
+
+    @ApiModelProperty("1鍘熷洜鍒嗘瀽浜�")
+    private String causeUserName;
+
+    @ApiModelProperty("1鍘熷洜鍒嗘瀽鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate causeTime;
+
+    @ApiModelProperty("2绾犳鎺柦")
+    private String correctResult;
+
+    @ApiModelProperty("2鎻愬嚭閮ㄩ棬纭")
+    private String raiseDepartmentAffirm;
+
+    @ApiModelProperty("2绾犳璐d换閮ㄩ棬")
+    private String correctDepartment;
+
+    @ApiModelProperty("2绾犳浜篿d")
+    private Integer correctUserId;
+
+    @ApiModelProperty("2绾犳浜�")
+    private String correctUserName;
+
+    @ApiModelProperty("2绾犳鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate correctTime;
+
+    @ApiModelProperty("3楠岃瘉缁撴灉")
+    private String validationResult;
+
+    @ApiModelProperty("3楠岃瘉閮ㄩ棬")
+    private String validationDepartment;
+
+    @ApiModelProperty("3楠岃瘉浜篿d")
+    private Integer validationUserId;
+
+    @ApiModelProperty("3楠岃瘉浜�")
+    private String validationUserName;
+
+    @ApiModelProperty("3楠岃瘉鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate validationTime;
+
+    @ApiModelProperty("鏄惁缁撴潫, 0: 鏈粨鏉�, 1:宸茬粨鏉�")
+    private Integer isFinish;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @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-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsCorrectFile.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsCorrectFile.java
new file mode 100644
index 0000000..6220aff
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsCorrectFile.java
@@ -0,0 +1,55 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏绾犳鎺柦闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-09
+ */
+@Data
+@TableName("cnas_quality_supervise_details_correct_file")
+public class QualitySuperviseDetailsCorrectFile {
+
+    @TableId(type = IdType.AUTO)
+    private Integer superviseDetailsCorrectFileId;
+
+    @ApiModelProperty("鐩戠潱璇︽儏绾犳鎺柦id")
+    private Integer superviseDetailsCorrectId;
+
+    @ApiModelProperty("绫诲瀷:1鍥剧墖/2鏂囦欢")
+    private Integer type;
+
+    @ApiModelProperty("闄勪欢璺緞")
+    private String fileUrl;
+
+    @ApiModelProperty("闄勪欢鍚嶇О")
+    private String fileName;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsRecord.java b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsRecord.java
new file mode 100644
index 0000000..1c7cee0
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/pojo/QualitySuperviseDetailsRecord.java
@@ -0,0 +1,120 @@
+package com.yuanchu.mom.pojo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏璁板綍琛�
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Data
+@TableName("cnas_quality_supervise_details_record")
+public class QualitySuperviseDetailsRecord {
+
+    @TableId
+    private Integer superviseDetailsRecordId;
+
+    @ApiModelProperty("鐩戠潱璇︽儏id")
+    private Integer superviseDetailsId;
+
+    @ApiModelProperty("妫�娴嬩汉鍛�")
+    private String testMember;
+
+    @ApiModelProperty("鐩戠潱鍛�")
+    private String supervisor;
+
+    @ApiModelProperty("妫�娴嬮」鐩�")
+    private String testItem;
+
+    @ApiModelProperty("鏍峰搧缂栧彿")
+    private String sampleNumber;
+
+    @ApiModelProperty("妫�娴嬫棩鏈�")
+    private String testDate;
+
+    @ApiModelProperty("妫�娴嬭繃绋�")
+    private String testingProcess;
+
+    @ApiModelProperty("鎯呭喌璁板綍")
+    private String caseReload;
+
+    @ApiModelProperty("浜哄憳")
+    private String personnel;
+
+    @ApiModelProperty("浠櫒璁惧")
+    private String device;
+
+    @ApiModelProperty("鐜")
+    private String environment;
+
+    @ApiModelProperty("鏍峰搧閲囬泦")
+    private String sampleCollection;
+
+    @ApiModelProperty("鏍峰搧鍑嗗")
+    private String samplePreparation;
+
+    @ApiModelProperty("妫�娴嬫柟娉�")
+    private String detectionMethod;
+
+    @ApiModelProperty("妫�娴嬭褰�")
+    private String inspectionRecord;
+
+    @ApiModelProperty("妫�娴嬫姤鍛�")
+    private String examiningReport;
+
+    @ApiModelProperty("鐩戠潱鎯呭喌璇勪环")
+    private String supervisionEvaluation;
+
+    @ApiModelProperty("涓嶅悎鏍煎鐞嗘剰瑙�")
+    private String handlingAdvice;
+
+    @ApiModelProperty("鎵瑰噯缁撹")
+    private String ratifyOpinion;
+
+    @ApiModelProperty("鎵瑰噯鎶�鏈礋璐d汉")
+    private Integer ratifyUserId;
+
+    @ApiModelProperty("鎵瑰噯鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDateTime ratifyTime;
+
+    @ApiModelProperty("鏄惁绗﹀悎,0 涓嶇鍚�, 1绗﹀悎")
+    private Integer isAccording;
+
+    @ApiModelProperty("鏄惁缁撴潫0:鏈粨鏉�, 1:宸茬粨鏉�")
+    private Integer isFinish;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("淇敼浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鎵瑰噯鎶�鏈礋璐d汉")
+    @TableField(exist = false,select = false)
+    private String ratifyUserName;
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/schedule/ProcessTotaldealSchedule.java b/cnas-process/src/main/java/com/yuanchu/mom/schedule/ProcessTotaldealSchedule.java
new file mode 100644
index 0000000..0cdd2ce
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/schedule/ProcessTotaldealSchedule.java
@@ -0,0 +1,37 @@
+package com.yuanchu.mom.schedule;
+
+import com.yuanchu.mom.pojo.ProcessTotalSample;
+import com.yuanchu.mom.pojo.ProcessTotaldeal;
+import com.yuanchu.mom.service.ProcessTotalSampleService;
+import com.yuanchu.mom.service.ProcessTotaldealService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+@Component
+public class ProcessTotaldealSchedule {
+
+    @Resource
+    private ProcessTotaldealService processTotaldealService;
+
+    @Resource
+    private ProcessTotalSampleService processTotalSampleService;
+
+    @Scheduled(cron = "0 0 2 1 * ?") //姣忔湀1鍙�2鐐�
+    public void processTotaldeal() {
+        ProcessTotaldeal processTotaldeal = new ProcessTotaldeal();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+        Calendar calendar = Calendar.getInstance();
+        String formattedDate = sdf.format(calendar.getTime());
+        processTotaldeal.setMonth(formattedDate);
+        processTotaldeal.setSubmitState("寰呮彁浜�");
+        processTotaldealService.save(processTotaldeal);
+        ProcessTotalSample processTotalSample = new ProcessTotalSample();
+        BeanUtils.copyProperties(processTotaldeal,processTotalSample);
+        processTotalSampleService.save(processTotalSample);
+    }
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/InconsistentDistributionDetailService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/InconsistentDistributionDetailService.java
new file mode 100644
index 0000000..253334a
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/InconsistentDistributionDetailService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.InconsistentDistributionDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 涓嶇鍚堥」鐨勫垎甯冭鎯� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 09:53:33
+ */
+public interface InconsistentDistributionDetailService extends IService<InconsistentDistributionDetail> {
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/InconsistentDistributionService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/InconsistentDistributionService.java
new file mode 100644
index 0000000..d64000d
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/InconsistentDistributionService.java
@@ -0,0 +1,63 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.InconsistentDistributionDto;
+import com.yuanchu.mom.pojo.InconsistentDistribution;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 涓嶇鍚堥」鐨勫垎甯� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 09:53:20
+ */
+public interface InconsistentDistributionService extends IService<InconsistentDistribution> {
+
+    /**
+     * 涓嶇鍚堥」鐨勫垎甯冨垎椤垫煡璇�
+     * @param page
+     * @param inconsistentDistribution
+     * @return
+     */
+    IPage<InconsistentDistributionDto> pageInconsistentDistribution(Page page, InconsistentDistribution inconsistentDistribution);
+
+    /**
+     * 涓嶇鍚堥」鐨勫垎甯冩柊澧�
+     * @param inconsistentDistribution
+     * @return
+     */
+    boolean addInconsistentDistribution(InconsistentDistributionDto inconsistentDistribution);
+
+    /**
+     * 涓嶇鍚堥」鐨勫垎甯冧慨鏀�
+     * @param inconsistentDistribution
+     * @return
+     */
+    boolean updateInconsistentDistribution(InconsistentDistributionDto inconsistentDistribution);
+
+    /**
+     * 涓嶇鍚堥」鐨勫垎甯冨垹闄�
+     * @param distributionId
+     * @return
+     */
+    boolean delInconsistentDistribution(Integer distributionId);
+
+    /**
+     * 涓嶇鍚堥」鐨勫垎甯冩煡鐪嬭鎯�
+     * @param distributionId
+     * @return
+     */
+    InconsistentDistributionDto getInconsistentDistributionOne(Integer distributionId);
+
+    /**
+     * 瀵煎嚭涓嶇鍚堥」鐨勫垎甯�
+     * @param distributionId
+     * @param response
+     */
+    void exportInconsistentDistribution(Integer distributionId, HttpServletResponse response);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessComplainService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessComplainService.java
new file mode 100644
index 0000000..e800e2c
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessComplainService.java
@@ -0,0 +1,31 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.ProcessComplainDto;
+import com.yuanchu.mom.pojo.ProcessComplain;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鎶曡瘔 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 09:29:11
+ */
+public interface ProcessComplainService extends IService<ProcessComplain> {
+
+    Map<String,Object> pageProcessComplain(Page page, ProcessComplain processComplain);
+
+    int addProcessComplain(ProcessComplain processComplain);
+
+    ProcessComplainDto getProcessComplain(Long id);
+
+    int doProcessComplain(ProcessComplain processComplain);
+
+    void exportProcessComplain(ProcessComplain processComplain, HttpServletResponse response) throws Exception;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessDealService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessDealService.java
new file mode 100644
index 0000000..e4ea03b
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessDealService.java
@@ -0,0 +1,26 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessDeal;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 02:50:19
+ */
+public interface ProcessDealService extends IService<ProcessDeal> {
+
+    Map<String,Object> pageProcessDeal(Page page, ProcessDeal processDeal);
+
+    int addProcessDeal(ProcessDeal processDeal);
+
+    int delProcessDeal(Integer id);
+
+    int doProcessDeal(ProcessDeal processDeal);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessEvaluateService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessEvaluateService.java
new file mode 100644
index 0000000..ddec862
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessEvaluateService.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessEvaluate;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 娴嬮噺涓嶇‘瀹氬害鐨勮瘎浠� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 01:10:43
+ */
+public interface ProcessEvaluateService extends IService<ProcessEvaluate> {
+
+    Map<String,Object> pageProcessEvaluate(Page page, ProcessEvaluate processEvaluate);
+
+    int addProcessEvaluate(MultipartFile file);
+
+    int doProcessEvaluate(ProcessEvaluate processEvaluate);
+
+    void exportProcessEvaluate(ProcessEvaluate processEvaluate, HttpServletResponse response) throws Exception;
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodSearchNewService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodSearchNewService.java
new file mode 100644
index 0000000..d305ced
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodSearchNewService.java
@@ -0,0 +1,51 @@
+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.ProcessMethodSearchNewDto;
+import com.yuanchu.mom.pojo.ProcessComplain;
+import com.yuanchu.mom.pojo.ProcessMethodSearchNew;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏍囧噯鏌ユ柊
+ *
+ * @author zhuo
+ * @since 2024-11-04
+ */
+public interface ProcessMethodSearchNewService extends IService<ProcessMethodSearchNew> {
+
+    /**
+     * 鏂板鏍囧噯鏌ユ柊
+     * @param processMethodSearchNewList
+     * @return
+     */
+    boolean addMethodSearchNew(List<ProcessMethodSearchNew> processMethodSearchNewList);
+
+    /**
+     * 鏍囧噯鏌ユ柊鍒楄〃
+     * @param processMethodSearchNew
+     * @return
+     */
+    IPage<ProcessMethodSearchNew> pageMethodSearchNew(Page page, ProcessMethodSearchNewDto processMethodSearchNew);
+
+    /**
+     * 鏍囧噯鏌ユ柊瀵煎嚭
+     * @param processMethodSearchNew
+     * @param response
+     */
+    void exportMethodSearchNew(ProcessMethodSearchNewDto processMethodSearchNew, HttpServletResponse response);
+
+    /**
+     * 瀵煎叆鏍囧噯鏌ユ柊
+     * @param file
+     * @return
+     */
+    boolean importMethodSearchNew(MultipartFile file);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyCalibrationsFileService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyCalibrationsFileService.java
new file mode 100644
index 0000000..aab90ab
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyCalibrationsFileService.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyCalibrationsFile;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉璁惧鏍″噯闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-12
+ */
+public interface ProcessMethodVerifyCalibrationsFileService extends IService<ProcessMethodVerifyCalibrationsFile> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyMachineAttachmentService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyMachineAttachmentService.java
new file mode 100644
index 0000000..1939815
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyMachineAttachmentService.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMachineAttachment;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉璁惧闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-05
+ */
+public interface ProcessMethodVerifyMachineAttachmentService extends IService<ProcessMethodVerifyMachineAttachment> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyMethodFileService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyMethodFileService.java
new file mode 100644
index 0000000..1536172
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyMethodFileService.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMethodFile;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉(娉�)闄勪欢琛�(CnasProcessMethodVerifyMethodFile)$desc
+ *
+ * @author makejava
+ * @since 2024-11-05 10:52:44
+ */
+public interface ProcessMethodVerifyMethodFileService extends IService<ProcessMethodVerifyMethodFile> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyService.java
new file mode 100644
index 0000000..a2d185d
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyService.java
@@ -0,0 +1,87 @@
+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.ProcessMethodVerifyDto;
+import com.yuanchu.mom.pojo.ProcessMethodVerify;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMethodFile;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉
+ *
+ * @author zhuo
+ * @since 2024-11-05
+ */
+public interface ProcessMethodVerifyService extends IService<ProcessMethodVerify> {
+
+    /**
+     * 鏍囧噯鏂规硶璺熸柊楠岃瘉鍒楄〃
+     * @param page
+     * @param methodVerifyDto
+     * @return
+     */
+    IPage<ProcessMethodVerify> pagesMethodVerify(Page page, ProcessMethodVerifyDto methodVerifyDto);
+
+    /**
+     * 鏂板鏍囧噯鏂规硶楠岃瘉
+     * @param methodVerifyDto
+     * @return
+     */
+    boolean addMethodSearchNew(ProcessMethodVerifyDto methodVerifyDto);
+
+    /**
+     * 鏌ヨ鏍囧噯鏂规硶楠岃瘉璇︽儏
+     * @param methodVerifyId
+     * @return
+     */
+    ProcessMethodVerifyDto getMethodVerifyOne(Integer methodVerifyId);
+
+    /**
+     * 淇敼鏍囧噯鏂规硶楠岃瘉
+     * @param methodVerifyDto
+     * @return
+     */
+    boolean updateMethodVerify(ProcessMethodVerifyDto methodVerifyDto);
+
+    /**
+     * 鍒犻櫎鏍囧噯鏂规硶楠岃瘉
+     * @param methodVerifyId
+     * @return
+     */
+    boolean delMethodVerify(Integer methodVerifyId);
+
+    /**
+     * 鏍囧噯鏂规硶楠岃瘉纭
+     * @param methodVerifyId
+     * @return
+     */
+    boolean methodVerifyAffirm(Integer methodVerifyId);
+
+    /**
+     * 鏍囧噯鏂规硶楠岃瘉鏂板鍘熷璁板綍
+     * @param methodVerifyId
+     * @param file
+     * @return
+     */
+    boolean uploadVerifyMethodFile(Integer methodVerifyId, MultipartFile file);
+
+    /**
+     * 鏍囧噯鏂规硶鏇存柊楠岃瘉鍘熷璁板綍鍒楄〃
+     * @return
+     */
+    List<ProcessMethodVerifyMethodFile> getVerifyMethodFileList(Integer methodVerifyId);
+
+    /**
+     * 瀵煎嚭鏍囧噯鏂规硶鏇存柊楠岃瘉
+     *
+     * @param methodVerifyId 鏍囧噯鏂规硶楠岃瘉id
+     * @param response
+     */
+    void exportMethodVerify(Integer methodVerifyId, HttpServletResponse response);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyWorkFileService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyWorkFileService.java
new file mode 100644
index 0000000..3f0d5b8
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessMethodVerifyWorkFileService.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyWorkFile;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉涓婂矖璇侀檮浠惰〃
+ *
+ * @author zhuo
+ * @since 2024-11-12
+ */
+public interface ProcessMethodVerifyWorkFileService extends IService<ProcessMethodVerifyWorkFile> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessOrderService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessOrderService.java
new file mode 100644
index 0000000..6368c68
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessOrderService.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.ProcessOrderDto;
+import com.yuanchu.mom.pojo.ProcessOrder;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * <p>
+ * 瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-05 03:06:20
+ */
+public interface ProcessOrderService extends IService<ProcessOrder> {
+
+    Map<String,Object> pageProcessOrder(Page page, ProcessOrderDto processOrderDto);
+
+    ProcessOrderDto getProcessOrder(Integer id);
+
+    int doProcessOrder(ProcessOrder processOrder);
+
+    void exportInspectionOrder(Integer id, HttpServletResponse response);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessReportService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessReportService.java
new file mode 100644
index 0000000..67751f5
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessReportService.java
@@ -0,0 +1,24 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessReport;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-05 08:58:39
+ */
+public interface ProcessReportService extends IService<ProcessReport> {
+
+    Map<String,Object> pageProcessReport(Page page, ProcessReport processReport);
+
+    String exportProcessReport(List<Integer> ids);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessSampleService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessSampleService.java
new file mode 100644
index 0000000..558bec3
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessSampleService.java
@@ -0,0 +1,26 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessSample;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏍峰搧鎺ユ敹 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-12 05:02:49
+ */
+public interface ProcessSampleService extends IService<ProcessSample> {
+
+    Map<String,Object> pageProcessSample(Page page, ProcessSample processSample);
+
+    int addProcessSample(ProcessSample processSample);
+
+    int delProcessSample(Integer id);
+
+    int doProcessSample(ProcessSample processSample);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessTotalSampleService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessTotalSampleService.java
new file mode 100644
index 0000000..ce0a4ab
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessTotalSampleService.java
@@ -0,0 +1,26 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessTotalSample;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏍峰搧鎺ユ敹鎬昏〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-12 05:02:58
+ */
+public interface ProcessTotalSampleService extends IService<ProcessTotalSample> {
+
+    Map<String,Object> pageProcessTotalSample(Page page, ProcessTotalSample processTotalSample);
+
+    int submitProcessTotalSample(Integer id);
+
+    int checkProcessTotalSample(Integer id, String state);
+
+    int ratifyProcessTotalSample(Integer id, String state);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessTotaldealService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessTotaldealService.java
new file mode 100644
index 0000000..0259aa7
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/ProcessTotaldealService.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.ProcessTotaldeal;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * <p>
+ * 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�昏〃(鍘嗗彶) 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 03:59:09
+ */
+public interface ProcessTotaldealService extends IService<ProcessTotaldeal> {
+
+    Map<String,Object> pageProcessTotaldeal(Page page, ProcessTotaldeal processTotaldeal);
+
+    int checkProcessTotaldeal(Integer id, String state);
+
+    int submitProcessTotaldeal(Integer id);
+
+    int ratifyProcessTotaldeal(Integer id, String state);
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsEvaluateService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsEvaluateService.java
new file mode 100644
index 0000000..2733e7f
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsEvaluateService.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.QualityMonitorDetailsEvaluate;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏璇勪环琛�
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+public interface QualityMonitorDetailsEvaluateService extends IService<QualityMonitorDetailsEvaluate> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsRatifyService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsRatifyService.java
new file mode 100644
index 0000000..e464374
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsRatifyService.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.QualityMonitorDetailsRatify;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏鎵瑰噯琛�
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+public interface QualityMonitorDetailsRatifyService extends IService<QualityMonitorDetailsRatify> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsService.java
new file mode 100644
index 0000000..89c78e5
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorDetailsService.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.QualityMonitorDetails;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏琛�
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+public interface QualityMonitorDetailsService extends IService<QualityMonitorDetails> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorService.java
new file mode 100644
index 0000000..b4bfd07
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/QualityMonitorService.java
@@ -0,0 +1,144 @@
+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.QualityMonitorDto;
+import com.yuanchu.mom.pojo.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝涓昏〃
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+public interface QualityMonitorService extends IService<QualityMonitor> {
+
+    /**
+     * 瀵煎叆鐩戞帶璁″垝
+     * @param file
+     * @return
+     */
+    boolean importQualityMonitor(MultipartFile file);
+
+
+    /**
+     * 鐩戞帶璁″垝瀹℃牳
+     * @param qualityMonitor
+     * @return
+     */
+    boolean examineQualityMonitor(QualityMonitor qualityMonitor);
+
+    /**
+     * 鐩戞帶璁″垝鎵瑰噯
+     * @param qualityMonitor
+     * @return
+     */
+    boolean ratifyQualityMonitor(QualityMonitor qualityMonitor);
+
+    /**
+     * 鐩戞帶璁″垝鍒楄〃
+     * @param page
+     * @param qualityMonitor
+     * @return
+     */
+    IPage<QualityMonitorDto> pageQualityMonitor(Page page, QualityMonitor qualityMonitor);
+
+    /**
+     * 鐩戞帶璁″垝璇︽儏鍒楄〃
+     * @param page
+     * @param qualityMonitorDetails
+     * @return
+     */
+    IPage<QualityMonitorDetails> pageQualityMonitorDetail(Page page, QualityMonitorDetails qualityMonitorDetails);
+
+
+    /**
+     * 瀵煎嚭鐩戞帶璁″垝
+     *
+     * @param qualityMonitorId
+     * @param response
+     */
+    void exportQualityMonitorDetail(Integer qualityMonitorId, HttpServletResponse response);
+
+
+    /************************************************************  瀹炴柦  *******************************************************************/
+
+    /**
+     * 鏌ヨ鐩戞帶璁″垝璇︽儏瀹炴柦淇℃伅
+     * @param qualityMonitorDetailsId
+     * @return
+     */
+    QualityMonitorDetailsRatify getQualityMonitorRatify(Integer qualityMonitorDetailsId);
+
+    /**
+     * 鏂板鐩戞帶璇︽儏瀹炴柦
+     * @param qualityMonitorDetailsRatify
+     * @return
+     */
+    boolean addQualityMonitorRatify(QualityMonitorDetailsRatify qualityMonitorDetailsRatify);
+
+    /**
+     * 鐩戞帶璁″垝璇︽儏瀹炴柦鎰忚
+     * @param qualityMonitorDetailsRatify
+     * @return
+     */
+    boolean addQualityMonitorRatifyOpinion(QualityMonitorDetailsRatify qualityMonitorDetailsRatify);
+
+    /**
+     * 瀵煎嚭鐩戞帶璁″垝璇︽儏瀹炴柦淇℃伅
+     *
+     * @param detailsRatifyId 鐩戞帶璁″垝璇︽儏瀹炴柦id
+     * @param response
+     */
+    void exportQualityMonitorRatify(Integer detailsRatifyId, HttpServletResponse response);
+
+
+    /************************************************************  璇勪环  *******************************************************************/
+
+    /**
+     *
+     * @param qualityMonitorDetailsId
+     * @return
+     */
+    QualityMonitorDetailsEvaluate getQualityMonitorEvaluate(Integer qualityMonitorDetailsId);
+
+    /**
+     * 鏂板鐩戞帶璇勪环
+     * @param qualityMonitorDetailsEvaluate
+     * @return
+     */
+    boolean addQualityMonitorEvaluate(QualityMonitorDetailsEvaluate qualityMonitorDetailsEvaluate);
+
+    /**
+     * 鐩戞帶璇勪环瀹℃壒鎰忚
+     * @param qualityMonitorDetailsEvaluate
+     * @return
+     */
+    boolean addMonitorEvaluateOpinion(QualityMonitorDetailsEvaluate qualityMonitorDetailsEvaluate);
+
+    /**
+     * 鏂板鐩戞帶璇勪环闄勪欢琛�
+     * @param detailsEvaluateId
+     * @param file
+     * @return
+     */
+    boolean uploadEvaluateFile(Integer detailsEvaluateId, MultipartFile file);
+
+    /**
+     * 鏌ヨ鐩戞帶璇勪环闄勪欢鍒楄〃
+     * @return
+     */
+    List<QualityMonitorDetailsEvaluateFile> getEvaluateFileList(Integer detailsEvaluateId);
+
+    /**
+     * 瀵煎嚭鐩戞帶璇勪环
+     * @param detailsEvaluateId 鐩戞帶璇勪环id
+     */
+    void exportQualityMonitorEvaluate(Integer detailsEvaluateId, HttpServletResponse response);
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/QualitySuperviseDetailsService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/QualitySuperviseDetailsService.java
new file mode 100644
index 0000000..a87b07d
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/QualitySuperviseDetailsService.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.QualitySuperviseDetails;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏琛�
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+public interface QualitySuperviseDetailsService extends IService<QualitySuperviseDetails> {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/QualitySuperviseService.java b/cnas-process/src/main/java/com/yuanchu/mom/service/QualitySuperviseService.java
new file mode 100644
index 0000000..f564434
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/QualitySuperviseService.java
@@ -0,0 +1,163 @@
+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.QualitySuperviseDetailsDto;
+import com.yuanchu.mom.pojo.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 璐ㄩ噺鐩戠潱涓昏〃
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+public interface QualitySuperviseService extends IService<QualitySupervise> {
+
+    /**
+     * 瀵煎叆鐩戠潱璁″垝
+     * @param file
+     * @return
+     */
+    boolean importQualitySupervise(MultipartFile file);
+
+    /**
+     * 鐩戠潱璁″垝鎵瑰噯
+     * @param qualitySupervise
+     * @return
+     */
+    boolean ratifyQualitySupervise(QualitySupervise qualitySupervise);
+
+    /**
+     * 鐩戠潱璁″垝鍒楄〃
+     * @return
+     */
+    IPage<QualitySupervise> pageQualitySupervise(Page page, QualitySupervise qualitySupervise);
+
+    /**
+     * 鐩戠潱璁″垝璇︽儏鍒楄〃
+     * @return
+     */
+    IPage<QualitySuperviseDetailsDto> pageQualitySuperviseDetail(Page page, QualitySuperviseDetails qualitySuperviseDetails);
+
+    /**
+     * 瀵煎嚭鐩戠潱璁″垝
+     * @param superviseId
+     * @param response
+     */
+    void exportQualitySupervise(Integer superviseId, HttpServletResponse response);
+
+    /************************************************ 璁板綍 ******************************************************/
+
+    /**
+     * 鏌ヨ鐩戠潱璁板綍淇℃伅
+     * @param superviseDetailsId
+     * @return
+     */
+    QualitySuperviseDetailsRecord getSuperviseDetailRecord(Integer superviseDetailsId);
+
+    /**
+     * 鏂板鐩戠潱璁板綍淇℃伅
+     * @param qualitySuperviseDetailsRecord
+     * @return
+     */
+    boolean addSuperviseDetailRecord(QualitySuperviseDetailsRecord qualitySuperviseDetailsRecord);
+
+    /**
+     * 鐩戠潱璁板綍鎵瑰噯
+     * @param qualitySuperviseDetailsRecord
+     * @return
+     */
+    boolean addSuperviseRecordOpinion(QualitySuperviseDetailsRecord qualitySuperviseDetailsRecord);
+
+    /**
+     * 瀵煎嚭鐩戠潱璁板綍琛�
+     * @param superviseDetailsId
+     * @param response
+     */
+    void exportSuperviseDetailRecord(Integer superviseDetailsId, HttpServletResponse response);
+
+    /*************************************************  涓嶅悎鏍煎伐浣滄帶鍒跺崟 ********************************************************/
+
+    /**
+     * 鏂板鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�
+     * @param qualitySuperviseDetailsAccording
+     * @return
+     */
+    boolean addSuperviseDetailAccording(QualitySuperviseDetailsAccording qualitySuperviseDetailsAccording);
+
+    /**
+     * 鏌ヨ鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�
+     * @param superviseDetailsId
+     * @return
+     */
+    QualitySuperviseDetailsAccording getSuperviseDetailAccording(Integer superviseDetailsId);
+
+    /**
+     * 鏌ヨ鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭垪琛�
+     * @param detailsAccording
+     * @return
+     */
+    IPage<QualitySuperviseDetailsAccording> pageSuperviseDetailAccording(Page page, QualitySuperviseDetailsAccording detailsAccording);
+
+    /**
+     * 瀵煎嚭鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�
+     * @param superviseDetailAccordingId
+     * @param response
+     */
+    void superviseDetailAccordingExport(Integer superviseDetailAccordingId, HttpServletResponse response);
+
+    /*************************************************  绾犳鎺柦澶勭悊鍗� ********************************************************/
+
+    /**
+     * 鏂板鐩戠潱绾犳澶勭悊淇℃伅
+     * @param qualitySuperviseDetailsAccording
+     * @return
+     */
+    boolean addSuperviseDetailCorrect(QualitySuperviseDetailsCorrect qualitySuperviseDetailsAccording);
+
+    /**
+     * 鏌ヨ鐩戠潱绾犳澶勭悊
+     * @param superviseDetailsId
+     * @return
+     */
+    QualitySuperviseDetailsCorrect getSuperviseDetailCorrect(Integer superviseDetailsId);
+
+    /**
+     * 鏌ヨ鐩戠潱绾犳鎺柦鍒楄〃
+     * @param page
+     * @param detailsCorrect
+     * @return
+     */
+    IPage<QualitySuperviseDetailsCorrect> pageSuperviseDetailCorrect(Page page, QualitySuperviseDetailsCorrect detailsCorrect);
+
+    /**
+     * 鏂板鐩戠潱绾犳鎺柦闄勪欢
+     * @param superviseDetailsCorrectId
+     * @param file
+     * @return
+     */
+    boolean uploadSuperviseDetailCorrectFile(Integer superviseDetailsCorrectId, MultipartFile file);
+
+    /**
+     * 鏌ヨ鐩戠潱绾犳鎺柦闄勪欢
+     * @param superviseDetailsCorrectId
+     * @return
+     */
+    List<QualitySuperviseDetailsCorrectFile> getSuperviseDetailCorrectFileList(Integer superviseDetailsCorrectId);
+
+    /**
+     * 瀵煎嚭鐩戠潱绾犳鎺柦
+     * @param superviseDetailsCorrectId
+     * @param response
+     */
+    void exportSuperviseDetaillCorrect(Integer superviseDetailsCorrectId, HttpServletResponse response);
+
+    /*************************************************  璐ㄩ噺鐩戠潱璁板綍 ********************************************************/
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/CnasProcessMethodVerifyCalibrationsFileServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/CnasProcessMethodVerifyCalibrationsFileServiceImpl.java
new file mode 100644
index 0000000..4db5e20
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/CnasProcessMethodVerifyCalibrationsFileServiceImpl.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.ProcessMethodVerifyCalibrationsFileMapper;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyCalibrationsFile;
+import com.yuanchu.mom.service.ProcessMethodVerifyCalibrationsFileService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉涓婂矖璇侀檮浠惰〃(CnasProcessMethodVerifyCalibrationsFile)$desc
+ *
+ * @author makejava
+ * @since 2024-11-12 09:55:06
+ */
+@Service
+public class CnasProcessMethodVerifyCalibrationsFileServiceImpl extends ServiceImpl<ProcessMethodVerifyCalibrationsFileMapper, ProcessMethodVerifyCalibrationsFile> implements ProcessMethodVerifyCalibrationsFileService {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/CnasProcessMethodVerifyWorkFileServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/CnasProcessMethodVerifyWorkFileServiceImpl.java
new file mode 100644
index 0000000..3a098ed
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/CnasProcessMethodVerifyWorkFileServiceImpl.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.ProcessMethodVerifyWorkFileMapper;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyWorkFile;
+import com.yuanchu.mom.service.ProcessMethodVerifyWorkFileService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉涓婂矖璇侀檮浠惰〃(CnasProcessMethodVerifyWorkFile)$desc
+ *
+ * @author makejava
+ * @since 2024-11-12 09:55:06
+ */
+@Service
+public class CnasProcessMethodVerifyWorkFileServiceImpl extends ServiceImpl<ProcessMethodVerifyWorkFileMapper, ProcessMethodVerifyWorkFile> implements ProcessMethodVerifyWorkFileService {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/InconsistentDistributionDetailServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/InconsistentDistributionDetailServiceImpl.java
new file mode 100644
index 0000000..08b1689
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/InconsistentDistributionDetailServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.yuanchu.mom.pojo.InconsistentDistributionDetail;
+import com.yuanchu.mom.mapper.InconsistentDistributionDetailMapper;
+import com.yuanchu.mom.service.InconsistentDistributionDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 涓嶇鍚堥」鐨勫垎甯冭鎯� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 09:53:33
+ */
+@Service
+public class InconsistentDistributionDetailServiceImpl extends ServiceImpl<InconsistentDistributionDetailMapper, InconsistentDistributionDetail> implements InconsistentDistributionDetailService {
+
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/InconsistentDistributionServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/InconsistentDistributionServiceImpl.java
new file mode 100644
index 0000000..edcd011
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/InconsistentDistributionServiceImpl.java
@@ -0,0 +1,236 @@
+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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
+import com.yuanchu.mom.dto.InconsistentDistributionDto;
+import com.yuanchu.mom.dto.InconsistentDistributionProportionDto;
+import com.yuanchu.mom.pojo.InconsistentDistribution;
+import com.yuanchu.mom.mapper.InconsistentDistributionMapper;
+import com.yuanchu.mom.pojo.InconsistentDistributionDetail;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.InconsistentDistributionDetailService;
+import com.yuanchu.mom.service.InconsistentDistributionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.DateImageUtil;
+import com.yuanchu.mom.utils.QueryWrappers;
+import io.swagger.models.auth.In;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.BeanUtils;
+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.math.BigDecimal;
+import java.math.RoundingMode;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 涓嶇鍚堥」鐨勫垎甯� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 09:53:20
+ */
+@Service
+@AllArgsConstructor
+@Transactional(rollbackFor = Exception.class)
+public class InconsistentDistributionServiceImpl extends ServiceImpl<InconsistentDistributionMapper, InconsistentDistribution> implements InconsistentDistributionService {
+
+    private InconsistentDistributionDetailService inconsistentDistributionDetailService;
+
+
+    /**
+     * 涓嶇鍚堥」鍒嗗竷鏌ヨ
+     * @param page
+     * @param inconsistentDistributionDto
+     * @return
+     */
+    @Override
+    public IPage<InconsistentDistributionDto> pageInconsistentDistribution(Page page, InconsistentDistribution inconsistentDistributionDto) {
+        return baseMapper.pageInconsistentDistribution(page, QueryWrappers.queryWrappers(inconsistentDistributionDto));
+    }
+
+    /**
+     * 涓嶇鍚堥」鍒嗗竷鏂板
+     * @param inconsistentDistributionDto
+     * @return
+     */
+    @Override
+    public boolean addInconsistentDistribution(InconsistentDistributionDto inconsistentDistributionDto) {
+        baseMapper.insert(inconsistentDistributionDto);
+        // 鏂板璇︽儏
+        for (InconsistentDistributionDetail distributionDetail : inconsistentDistributionDto.getDistributionDetailList()) {
+            distributionDetail.setDistributionId(inconsistentDistributionDto.getDistributionId());
+        }
+        inconsistentDistributionDetailService.saveBatch(inconsistentDistributionDto.getDistributionDetailList());
+        return true;
+    }
+
+    /**
+     * 涓嶇鍚堥」鍒嗗竷淇敼
+     * @param inconsistentDistributionDto
+     * @return
+     */
+    @Override
+    public boolean updateInconsistentDistribution(InconsistentDistributionDto inconsistentDistributionDto) {
+        inconsistentDistributionDetailService.updateBatchById(inconsistentDistributionDto.getDistributionDetailList());
+        return true;
+    }
+
+    /**
+     * 涓嶇鍚堥」鍒嗗竷鍒犻櫎
+     * @param distributionId
+     * @return
+     */
+    @Override
+    public boolean delInconsistentDistribution(Integer distributionId) {
+        inconsistentDistributionDetailService.remove(Wrappers.<InconsistentDistributionDetail>lambdaQuery()
+                .eq(InconsistentDistributionDetail::getDistributionId, distributionId));
+        baseMapper.deleteById(distributionId);
+        return true;
+    }
+
+    /**
+     * 涓嶇鍚堥」鍒嗗竷鏌ョ湅璇︽儏
+     * @param distributionId
+     * @return
+     */
+    @Override
+    public InconsistentDistributionDto getInconsistentDistributionOne(Integer distributionId) {
+        InconsistentDistributionDto distributionDto = new InconsistentDistributionDto();
+        InconsistentDistribution inconsistentDistribution = baseMapper.selectById(distributionId);
+        BeanUtils.copyProperties(distributionDto, inconsistentDistribution);
+        // 鏌ヨ璇︾粏
+        List<InconsistentDistributionDetail> distributionDetailList = inconsistentDistributionDetailService.list(Wrappers.<InconsistentDistributionDetail>lambdaQuery()
+                .eq(InconsistentDistributionDetail::getDistributionId, distributionId));
+
+        // 涓讳换姹囨��
+        int directorSum = distributionDetailList.stream()
+                .filter(detail -> detail.getDirector() != null)
+                .mapToInt(InconsistentDistributionDetail::getDirector)
+                .sum();
+
+        // 鎶�鏈礋璐d汉姹囨��
+        int technologySum = distributionDetailList.stream()
+                .filter(detail -> detail.getTechnology() != null)
+                .mapToInt(InconsistentDistributionDetail::getTechnology)
+                .sum();
+
+        // 璐ㄩ噺璐熻矗浜烘眹鎬�
+        int qualitySum = distributionDetailList.stream()
+                .filter(detail -> detail.getQuality() != null)
+                .mapToInt(InconsistentDistributionDetail::getQuality)
+                .sum();
+
+        // 缁煎悎瀹ゆ眹鎬�
+        int comprehensiveSum = distributionDetailList.stream()
+                .filter(detail -> detail.getComprehensive() != null)
+                .mapToInt(InconsistentDistributionDetail::getComprehensive)
+                .sum();
+
+        // 璇曢獙瀹ゆ眹鎬�
+        int testingSum = distributionDetailList.stream()
+                .filter(detail -> detail.getTesting() != null)
+                .mapToInt(InconsistentDistributionDetail::getTesting)
+                .sum();
+
+        // 鎬绘暟姹囨��
+        int sum = directorSum + technologySum + qualitySum + comprehensiveSum + testingSum;
+
+        //璁$畻鍚堣
+        for (InconsistentDistributionDetail distributionDetail : distributionDetailList) {
+            // 鎬绘暟
+            Integer total = (distributionDetail.getDirector() != null ? distributionDetail.getDirector() : 0)
+                    + (distributionDetail.getTechnology() != null ? distributionDetail.getTechnology() : 0)
+                    + (distributionDetail.getQuality() != null ? distributionDetail.getQuality() : 0)
+                    + (distributionDetail.getComprehensive() != null ? distributionDetail.getComprehensive() : 0)
+                    + (distributionDetail.getTesting() != null ? distributionDetail.getTesting() : 0);
+            distributionDetail.setTotal(total);
+            // 鍗犳瘮
+            distributionDetail.setProportion(calculatePercentage(total, sum));
+        }
+        // 娣诲姞鏈�鍚庝竴琛屽崰姣斿璞�
+        InconsistentDistributionProportionDto proportionDto = new InconsistentDistributionProportionDto();
+        proportionDto.setEssentials("鍗犳瘮 %");
+        proportionDto.setDirector(calculatePercentage(directorSum, sum));
+        proportionDto.setTechnology(calculatePercentage(technologySum, sum));
+        proportionDto.setQuality(calculatePercentage(qualitySum, sum));
+        proportionDto.setComprehensive(calculatePercentage(comprehensiveSum, sum));
+        proportionDto.setTesting(calculatePercentage(testingSum, sum));
+        proportionDto.setTotal(sum);
+
+        distributionDto.setDistributionDetailList(distributionDetailList);
+        distributionDto.setDistributionProportion(proportionDto);
+
+        return distributionDto;
+    }
+
+    /**
+     * 璁$畻鍗犳瘮
+     * @return
+     */
+    public BigDecimal calculatePercentage(Integer numeratorNum, Integer denominatorNum) {
+        BigDecimal numerator = new BigDecimal(numeratorNum);
+        BigDecimal denominator = new BigDecimal(denominatorNum);
+
+        // 妫�鏌ラ櫎鏁版槸鍚︿负0
+        if (denominator.compareTo(BigDecimal.ZERO) == 0) {
+            return BigDecimal.ZERO;
+        }
+        BigDecimal ratio = numerator.divide(denominator, 4, RoundingMode.HALF_UP); // 淇濈暀4浣嶅皬鏁�
+        BigDecimal percentage = ratio.multiply(new BigDecimal("100"));
+        BigDecimal percentageRounded = percentage.setScale(2, RoundingMode.HALF_UP);
+        return percentageRounded;
+    }
+
+
+    /**
+     * 瀵煎嚭涓嶇鍚堢殑鍒嗗竷
+     * @param distributionId
+     * @param response
+     */
+    @Override
+    public void exportInconsistentDistribution(Integer distributionId, HttpServletResponse response) {
+        InconsistentDistributionDto inconsistentDistributionOne = getInconsistentDistributionOne(distributionId);
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/inconsistent-distribution.docx");
+        Configure configure = Configure.builder()
+                .bind("distributionDetailList", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("distributionDetailList", inconsistentDistributionOne.getDistributionDetailList());
+                    put("proport", inconsistentDistributionOne.getDistributionProportion());
+                }});
+
+        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-process/src/main/java/com/yuanchu/mom/service/impl/ProcessComplainServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessComplainServiceImpl.java
new file mode 100644
index 0000000..b2a3387
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessComplainServiceImpl.java
@@ -0,0 +1,116 @@
+package com.yuanchu.mom.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSON;
+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.common.GetLook;
+import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.dto.ProcessComplainDto;
+import com.yuanchu.mom.dto.ReportPageDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.InsReportMapper;
+import com.yuanchu.mom.mapper.InsSampleMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.mapper.ProcessComplainMapper;
+import com.yuanchu.mom.service.ProcessComplainService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.GiveCode;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鎶曡瘔 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 09:29:11
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ProcessComplainServiceImpl extends ServiceImpl<ProcessComplainMapper, ProcessComplain> implements ProcessComplainService {
+
+    @Resource
+    private ProcessComplainMapper processComplainMapper;
+
+    @Resource
+    private InsReportMapper insReportMapper;
+
+    @Resource
+    private InsSampleMapper insSampleMapper;
+
+    @Resource
+    GetLook getLook;
+
+    @Resource
+    GiveCode giveCode;
+
+    @Override
+    public Map<String, Object> pageProcessComplain(Page page, ProcessComplain processComplain) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("head", PrintChina.printChina(ProcessComplain.class));
+        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageProcessComplain");
+        if (map1.get("look") == 1) processComplain.setCreateUser(map1.get("userId"));
+        map.put("body", processComplainMapper.pageProcessComplain(page, QueryWrappers.queryWrappers(processComplain)));
+        return map;
+    }
+
+    @Override
+    public int addProcessComplain(ProcessComplain processComplain) {
+        //鍒ゆ柇鎶ュ憡缂栧彿鍜屾牱鍝佺紪鍙锋槸鍚﹀瓨鍦�
+        InsReport insReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery().eq(InsReport::getCode, processComplain.getCode()));
+        if (ObjectUtils.isEmpty(insReport)) throw new ErrorException("鎶ュ憡缂栧彿杈撳叆鏈夎");
+        processComplain.setInsReportId(insReport.getId());
+        InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, processComplain.getSampleCode()));
+        if (ObjectUtils.isEmpty(insSample)) throw new ErrorException("鏍峰搧缂栧彿杈撳叆鏈夎");
+        //鎶曡瘔缂栧彿鐢熸垚
+        String giveCode = this.giveCode.giveCode("JCZX-", "cnas_process_complain", "", "yyMMdd");
+        processComplain.setComplainNo(giveCode);
+        return processComplainMapper.insert(processComplain);
+    }
+
+    @Override
+    public ProcessComplainDto getProcessComplain(Long id) {
+        return processComplainMapper.getProcessComplain(id);
+    }
+
+    @Override
+    public int doProcessComplain(ProcessComplain processComplain) {
+        return processComplainMapper.updateById(processComplain);
+    }
+
+    @Override
+    public void exportProcessComplain(ProcessComplain processComplain, HttpServletResponse response) throws Exception {
+        List<ProcessComplain> data = processComplainMapper.pageProcessComplain(new Page(-1, -1), QueryWrappers.queryWrappers(processComplain)).getRecords();
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("UTF-8");
+        String fileName = URLEncoder.encode("鎶曡瘔鍒楄〃瀵煎嚭", "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        try {
+            // 鏂板缓ExcelWriter
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+            WriteSheet mainSheet = EasyExcel.writerSheet(0, "鎶曡瘔鍒楄〃瀵煎嚭").head(ProcessComplain.class).build();
+            excelWriter.write(data, mainSheet);
+            // 鍏抽棴娴�
+            excelWriter.finish();
+        } catch (IOException e) {
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
+    }
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessDealServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessDealServiceImpl.java
new file mode 100644
index 0000000..edc36d0
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessDealServiceImpl.java
@@ -0,0 +1,106 @@
+package com.yuanchu.mom.service.impl;
+
+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.common.GetLook;
+import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.mapper.ProcessTotaldealMapper;
+import com.yuanchu.mom.pojo.ProcessDeal;
+import com.yuanchu.mom.mapper.ProcessDealMapper;
+import com.yuanchu.mom.pojo.ProcessEvaluate;
+import com.yuanchu.mom.pojo.ProcessTotaldeal;
+import com.yuanchu.mom.service.ProcessDealService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p>
+ * 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 02:50:19
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ProcessDealServiceImpl extends ServiceImpl<ProcessDealMapper, ProcessDeal> implements ProcessDealService {
+
+    @Resource
+    private ProcessDealMapper processDealMapper;
+
+    @Resource
+    GetLook getLook;
+
+    @Resource
+    private ProcessTotaldealMapper processTotaldealMapper;
+
+    @Override
+    public Map<String, Object> pageProcessDeal(Page page, ProcessDeal processDeal) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("head", PrintChina.printChina(ProcessDeal.class));
+        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageProcessDeal");
+        if (map1.get("look") == 1) processDeal.setCreateUser(map1.get("userId"));
+        if (ObjectUtils.isEmpty(processDeal.getTotaldealId())) {
+            //鑾峰彇褰撳墠鏈堜唤
+            LocalDate currentDate = LocalDate.now();
+            // 瀹氫箟鏃ユ湡鏍煎紡
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+            // 鏍煎紡鍖栧綋鍓嶆棩鏈�
+            String currentMonth = currentDate.format(formatter);
+            //鏌ヨ鍘嗗彶
+            ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectOne(Wrappers.<ProcessTotaldeal>lambdaQuery().eq(ProcessTotaldeal::getMonth, currentMonth));
+            processDeal.setTotaldealId(processTotaldeal.getId());
+        }
+        map.put("body", processDealMapper.pageProcessDeal(page, QueryWrappers.queryWrappers(processDeal)));
+        return map;
+    }
+
+    @Override
+    public int addProcessDeal(ProcessDeal processDeal) {
+        ProcessTotaldeal processTotaldeal;
+        if (ObjectUtils.isEmpty(processDeal.getTotaldealId())){
+            LocalDate dealTime = LocalDate.now();
+            // 瀹氫箟鏃ユ湡鏍煎紡
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+            // 鏍煎紡鍖栧綋鍓嶆棩鏈�
+            String currentMonth = dealTime.format(formatter);
+            processTotaldeal= processTotaldealMapper.selectOne(Wrappers.<ProcessTotaldeal>lambdaQuery().eq(ProcessTotaldeal::getMonth,currentMonth));
+            processDeal.setTotaldealId(processTotaldeal.getId());
+        }else {
+            processTotaldeal= processTotaldealMapper.selectById(processDeal.getTotaldealId());
+        }
+        processDealMapper.insert(processDeal);
+        processTotaldeal.setTotalNum(processDeal.getNum()+processTotaldeal.getTotalNum());
+        return processTotaldealMapper.updateById(processTotaldeal);
+    }
+
+    @Override
+    public int delProcessDeal(Integer id) {
+        ProcessDeal processDeal = processDealMapper.selectById(id);
+        processDealMapper.deleteById(id);
+        ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(processDeal.getTotaldealId());
+        processTotaldeal.setTotalNum(processTotaldeal.getTotalNum()-processDeal.getNum());
+        return processTotaldealMapper.updateById(processTotaldeal);
+    }
+
+    @Override
+    public int doProcessDeal(ProcessDeal processDeal) {
+        if (ObjectUtils.isNotEmpty(processDeal.getNum())) {
+            ProcessDeal oldProcessDeal = processDealMapper.selectById(processDeal.getId());
+            ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(processDeal.getTotaldealId());
+            processTotaldeal.setTotalNum(processTotaldeal.getTotalNum() - oldProcessDeal.getNum() + processDeal.getNum());
+            processTotaldealMapper.updateById(processTotaldeal);
+        }
+        return processDealMapper.updateById(processDeal);
+    }
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessEvaluateServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessEvaluateServiceImpl.java
new file mode 100644
index 0000000..a9d593b
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessEvaluateServiceImpl.java
@@ -0,0 +1,110 @@
+package com.yuanchu.mom.service.impl;
+
+import cn.hutool.core.lang.UUID;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.pojo.ProcessComplain;
+import com.yuanchu.mom.pojo.ProcessEvaluate;
+import com.yuanchu.mom.mapper.ProcessEvaluateMapper;
+import com.yuanchu.mom.service.ProcessEvaluateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.beans.factory.annotation.Value;
+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.File;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 娴嬮噺涓嶇‘瀹氬害鐨勮瘎浠� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 01:10:43
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ProcessEvaluateServiceImpl extends ServiceImpl<ProcessEvaluateMapper, ProcessEvaluate> implements ProcessEvaluateService {
+
+    @Resource
+    private ProcessEvaluateMapper processEvaluateMapper;
+
+    @Resource
+    GetLook getLook;
+
+    @Value("${wordUrl}")
+    private String wordUrl;
+
+    @Override
+    public Map<String, Object> pageProcessEvaluate(Page page, ProcessEvaluate processEvaluate) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("head", PrintChina.printChina(ProcessEvaluate.class));
+        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageProcessEvaluate");
+        if (map1.get("look") == 1) processEvaluate.setCreateUser(map1.get("userId"));
+        map.put("body", processEvaluateMapper.pageProcessEvaluate(page, QueryWrappers.queryWrappers(processEvaluate)));
+        return map;
+    }
+
+    @Override
+    public int addProcessEvaluate(MultipartFile file) {
+        String urlString;
+        String pathName;
+        String path=wordUrl;
+        ProcessEvaluate processEvaluate = new ProcessEvaluate();
+        processEvaluate.setReportName(file.getOriginalFilename());
+        try {
+            File realpath = new File(path);
+            if (!realpath.exists()) {
+                realpath.mkdirs();
+            }
+            pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
+            urlString = realpath + "/" + pathName;
+            file.transferTo(new File(urlString));
+            processEvaluate.setReportUrl(pathName);
+            return processEvaluateMapper.insert(processEvaluate);
+        } catch (Exception e) {
+            e.printStackTrace();
+            System.err.println("闄勪欢涓婁紶閿欒");
+            return 0;
+        }
+    }
+
+    @Override
+    public int doProcessEvaluate(ProcessEvaluate processEvaluate) {
+        return processEvaluateMapper.updateById(processEvaluate);
+    }
+
+    @Override
+    public void exportProcessEvaluate(ProcessEvaluate processEvaluate, HttpServletResponse response) throws Exception{
+        List<ProcessEvaluate> data = processEvaluateMapper.pageProcessEvaluate(new Page(-1, -1), QueryWrappers.queryWrappers(processEvaluate)).getRecords();
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("UTF-8");
+        String fileName = URLEncoder.encode("娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹氬鍑�", "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        try {
+            // 鏂板缓ExcelWriter
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+            WriteSheet mainSheet = EasyExcel.writerSheet(0, "娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹氬鍑�").head(ProcessEvaluate.class).build();
+            excelWriter.write(data, mainSheet);
+            // 鍏抽棴娴�
+            excelWriter.finish();
+        } catch (IOException e) {
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
+    }
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodSearchNewServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodSearchNewServiceImpl.java
new file mode 100644
index 0000000..1ce642a
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodSearchNewServiceImpl.java
@@ -0,0 +1,297 @@
+package com.yuanchu.mom.service.impl;
+
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.metadata.data.ImageData;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.util.FileUtils;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+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.yuanchu.mom.dto.ProcessMethodSearchNewDto;
+import com.yuanchu.mom.mapper.ProcessMethodSearchNewMapper;
+import com.yuanchu.mom.pojo.ProcessMethodSearchNew;
+import com.yuanchu.mom.service.ProcessMethodSearchNewService;
+import com.yuanchu.mom.utils.QueryWrappers;
+import com.yuanchu.mom.utils.UserUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 鏍囧噯鏌ユ柊
+ *
+ * @author zhuo
+ * @since 2024-11-04
+ */
+@Service
+public class ProcessMethodSearchNewServiceImpl extends ServiceImpl<ProcessMethodSearchNewMapper, ProcessMethodSearchNew> implements ProcessMethodSearchNewService {
+
+    /**
+     * 鏂板鏍囧噯鏌ユ柊
+     * @param processMethodSearchNewList
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean addMethodSearchNew(List<ProcessMethodSearchNew> processMethodSearchNewList) {
+        for (ProcessMethodSearchNew processMethodSearchNew : processMethodSearchNewList) {
+            processMethodSearchNew.setIsNewStandard(1);
+        }
+        // 淇敼涔嬪墠鎵�鏈夋病鏈夊彉鏂扮殑
+        List<ProcessMethodSearchNew> processMethodSearchNews = baseMapper.selectList(Wrappers.<ProcessMethodSearchNew>lambdaQuery()
+                .eq(ProcessMethodSearchNew::getIsNewStandard, 1));
+        for (ProcessMethodSearchNew processMethodSearchNew : processMethodSearchNews) {
+            baseMapper.update(null, Wrappers.<ProcessMethodSearchNew>lambdaUpdate()
+                    .set(ProcessMethodSearchNew::getMethodName, processMethodSearchNew.getNewMethodName())
+                    .set(ProcessMethodSearchNew::getStandardNo, processMethodSearchNew.getNewStandardNo())
+                    .set(ProcessMethodSearchNew::getFileNo, processMethodSearchNew.getNewStandardNo())
+                    .set(ProcessMethodSearchNew::getIsNewStandard, 0)
+                    .set(ProcessMethodSearchNew::getNewMethodName, null)
+                    .set(ProcessMethodSearchNew::getNewStandardNo, null)
+                    .eq(ProcessMethodSearchNew::getMethodSearchNewId, processMethodSearchNew.getMethodSearchNewId()));
+        }
+        // 鏂板
+        this.saveBatch(processMethodSearchNewList);
+        return true;
+    }
+
+    /**
+     * 鏍囧噯鏌ユ柊鍒楄〃
+     * @param processMethodSearchNew
+     * @return
+     */
+    @Override
+    public IPage<ProcessMethodSearchNew> pageMethodSearchNew(Page page, ProcessMethodSearchNewDto processMethodSearchNew) {
+        String beginDate = processMethodSearchNew.getBeginDate();
+        String endDate = processMethodSearchNew.getEndDate();
+        processMethodSearchNew.setBeginDate(null);
+        processMethodSearchNew.setEndDate(null);
+        return baseMapper.pageMethodSearchNew(page, QueryWrappers.queryWrappers(processMethodSearchNew), beginDate, endDate);
+    }
+
+    /**
+     * 鏍囧噯鏌ユ柊瀵煎嚭
+     * @param processMethodSearchNew
+     * @param response
+     */
+    @Override
+    public void exportMethodSearchNew(ProcessMethodSearchNewDto processMethodSearchNew, HttpServletResponse response) {
+        // 鏌ヨ鏍囧噯鏌ユ柊
+        String beginDate = processMethodSearchNew.getBeginDate();
+        String endDate = processMethodSearchNew.getEndDate();
+        String writeUserId = processMethodSearchNew.getWriteUserId().toString();
+        String ratifyUserId = processMethodSearchNew.getRatifyUserId().toString();
+        processMethodSearchNew.setBeginDate(null);
+        processMethodSearchNew.setEndDate(null);
+        processMethodSearchNew.setWriteUserId(null);
+        processMethodSearchNew.setRatifyUserId(null);
+        List<ProcessMethodSearchNewDto> methodSearchNews = baseMapper.selectMethodSearchNew(QueryWrappers.queryWrappers(processMethodSearchNew), beginDate, endDate);
+
+        int index = 1;
+        // 鏍煎紡鍖栧弬鏁�
+        for (ProcessMethodSearchNewDto methodSearchNew : methodSearchNews) {
+            // 鏄惁鏄窡鏂版爣鍑�
+            if (methodSearchNew.getIsNewStandard().equals(1)) {
+                methodSearchNew.setIsNewStandardString("鏄�");
+            } else {
+                methodSearchNew.setIsNewStandardString("鍚�");
+            }
+
+            // 澶囨敞
+            if (methodSearchNew.getRemark() != null) {
+                if (methodSearchNew.getRemark().equals(1)) {
+                    methodSearchNew.setIsNewStandardString("鏇挎崲");
+                } else {
+                    methodSearchNew.setIsNewStandardString("浣滃簾");
+                }
+            }
+
+            if (methodSearchNew.getRemark() != null) {
+                if (methodSearchNew.getRemark().equals(1)) {
+                    methodSearchNew.setRemarkString("鏇挎崲");
+                } else {
+                    methodSearchNew.setRemarkString("浣滃簾");
+                }
+            }
+
+            switch (methodSearchNew.getSearchNewSource()) {
+                case 0:
+                    methodSearchNew.setStandardNet("鈭�");
+                    break;
+                case 1:
+                    methodSearchNew.setInformationOffices("鈭�");
+                    break;
+                case 2:
+                    methodSearchNew.setStandardBookstore("鈭�");
+                    break;
+                case 3:
+                    methodSearchNew.setOther("鈭�");
+                    break;
+            }
+            methodSearchNew.setIndex(index);
+            index++;
+
+        }
+        String writeUserUrl = UserUtils.getUserSignatureUrl(Integer.valueOf(writeUserId));
+        String ratifyUserUrl = UserUtils.getUserSignatureUrl(Integer.valueOf(ratifyUserId));
+
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("UTF-8");
+        try {
+            // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
+            String fileName = URLEncoder.encode("鍘熸潗鏂欐娴嬩俊鎭鍑�", "UTF-8");
+            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+
+            // 鍒涘缓 ExcelWriter
+            ServletOutputStream outputStream = response.getOutputStream();
+            ExcelWriter excelWriter = EasyExcel.write(outputStream).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+
+            // 鑾峰彇 sheet0 瀵硅薄
+            WriteSheet mainSheet = EasyExcel.writerSheet(0, "鏍囧噯鏌ユ柊瀵煎嚭").head(ProcessMethodSearchNewDto.class).build();
+
+            // 鍥剧墖瀵硅薄
+            ImageData imageData = new ImageData();
+            ImageData imageData1 = new ImageData();
+            // 璁剧疆鍥剧墖鏁版嵁
+            imageData.setImage(FileUtils.readFileToByteArray(new File(writeUserUrl))); // 璁剧疆缂栧埗浜哄浘鐗囩殑鏂囦欢璺緞
+            imageData1.setImage(FileUtils.readFileToByteArray(new File(ratifyUserUrl))); // 璁剧疆鎵瑰噯浜哄浘鐗囩殑鏂囦欢璺緞
+
+            // 璁剧疆缂栧埗浜哄浘鐗囦綅缃�
+            imageData.setRelativeFirstRowIndex(1);
+            imageData.setRelativeFirstColumnIndex(2);
+            imageData.setRelativeLastRowIndex(1);
+            imageData.setRelativeLastColumnIndex(2);
+            // 璁剧疆鎵瑰噯浜哄浘鐗囦綅缃�
+            imageData1.setRelativeFirstRowIndex(1);
+            imageData1.setRelativeFirstColumnIndex(4);
+            imageData1.setRelativeLastRowIndex(1);
+            imageData1.setRelativeLastColumnIndex(4);
+
+
+            List<ImageData> list = new ArrayList<>();
+            // 鏀惧叆鍒楄〃涓�
+            list.add(imageData);
+            list.add(imageData1);
+
+//            // 璁剧疆棰濆鐨勬枃瀛楋紙鍙�夛級
+//            WriteCellData<Void> writeCellData = new WriteCellData<>();
+////            imageDemoData.setWriteCellDataFile(writeCellData);
+//            // 杩欓噷鍙互璁剧疆涓� EMPTY 鍒欎唬琛ㄤ笉闇�瑕佸叾浠栨暟鎹簡
+//            writeCellData.setType(CellDataTypeEnum.STRING);
+//            writeCellData.setStringValue("棰濆鐨勬斁涓�浜涙枃瀛�");
+
+
+            // 灏嗗浘鐗囨暟鎹缃埌鍗曞厓鏍间腑
+            WriteCellData<ImageData> writeCellData = new WriteCellData<>();
+            writeCellData.setImageDataList(list);
+
+            // 鍒涘缓鏁版嵁鍒楄〃
+            List<List<WriteCellData>> dataList = new ArrayList<>();
+            List<WriteCellData> rowData = new ArrayList<>();
+            rowData.add(writeCellData); // 鎶婂浘鐗囨斁鍏ヤ竴琛�
+            dataList.add(rowData);
+
+
+            // 鍚� sheet0 鍐欏叆鏁版嵁锛堜紶鍏ョ┖list杩欐牱鍙鍑鸿〃澶达級
+            excelWriter.write(methodSearchNews, mainSheet);
+            // 鍐欏叆 鍥剧墖
+            excelWriter.write(dataList,mainSheet);
+
+            //鍏抽棴娴�
+            excelWriter.finish();
+
+        } catch (IOException e) {
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
+    }
+
+
+
+
+
+
+
+    /**
+     * 瀵煎叆鏍囧噯鏌ユ柊
+     * @param file
+     * @return
+     */
+    @Override
+    public boolean importMethodSearchNew(MultipartFile file) {
+
+        List<ProcessMethodSearchNewDto> searchNewDtoList = new ArrayList<>();
+
+        try {
+            // excel瑙f瀽
+            EasyExcel.read(file.getInputStream(), ProcessMethodSearchNewDto.class, new AnalysisEventListener<ProcessMethodSearchNewDto>() {
+                @Override
+                public void invoke(ProcessMethodSearchNewDto searchNewDto, AnalysisContext analysisContext) {
+                    searchNewDtoList.add(searchNewDto);
+                }
+
+                @Override
+                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+                }
+            }).sheet().doRead();
+            // 鏍煎紡鍖栨煡鏂板璞�
+            List<ProcessMethodSearchNew> collect = searchNewDtoList.stream().map(searchNewDto -> {
+                ProcessMethodSearchNew searchNew = new ProcessMethodSearchNew();
+                BeanUtils.copyProperties(searchNewDto, searchNew);
+                // 鏄惁鏄洿鏂�
+                if (StringUtils.isNotBlank(searchNewDto.getIsNewStandardString())) {
+                    if (searchNewDto.getIsNewStandardString().equals("鏄�")) {
+                        searchNew.setIsNewStandard(1);
+                    } else {
+                        searchNew.setIsNewStandard(0);
+                    }
+                }
+                // 鏌ユ柊璁板綍
+                if (StringUtils.isNotBlank(searchNewDto.getStandardNet())) {
+                    searchNew.setSearchNewSource(0);
+                } else if (StringUtils.isNotBlank(searchNewDto.getInformationOffices())) {
+                    searchNew.setSearchNewSource(1);
+                } else if (StringUtils.isNotBlank(searchNewDto.getIsNewStandardString())) {
+                    searchNew.setSearchNewSource(2);
+                } else if (StringUtils.isNotBlank(searchNewDto.getOther())) {
+                    searchNew.setSearchNewSource(3);
+                }
+
+                // 澶囨敞
+                if (StringUtils.isNotBlank(searchNewDto.getRemarkString())) {
+                    if (searchNewDto.getRemarkString().equals("鏇挎崲")) {
+                        searchNew.setRemark(1);
+                    } else if (searchNewDto.getRemarkString().equals("浣滃簾")) {
+                        searchNew.setRemark(0);
+                    }
+                }
+
+                return searchNew;
+            }).collect(Collectors.toList());
+            this.saveBatch(collect);
+
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return true;
+    }
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyMachineAttachmentServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyMachineAttachmentServiceImpl.java
new file mode 100644
index 0000000..f1f0d9e
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyMachineAttachmentServiceImpl.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.ProcessMethodVerifyMachineAttachmentMapper;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMachineAttachment;
+import com.yuanchu.mom.service.ProcessMethodVerifyMachineAttachmentService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉璁惧闄勪欢琛�
+ *
+ * @author zhuo
+ * @since 2024-11-05
+ */
+@Service
+public class ProcessMethodVerifyMachineAttachmentServiceImpl extends ServiceImpl<ProcessMethodVerifyMachineAttachmentMapper, ProcessMethodVerifyMachineAttachment> implements ProcessMethodVerifyMachineAttachmentService {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyMethodFileServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyMethodFileServiceImpl.java
new file mode 100644
index 0000000..0b3ba32
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyMethodFileServiceImpl.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.ProcessMethodVerifyMethodFileMapper;
+import com.yuanchu.mom.pojo.ProcessMethodVerifyMethodFile;
+import com.yuanchu.mom.service.ProcessMethodVerifyMethodFileService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉(娉�)闄勪欢琛�
+ *
+ * @author makejava
+ * @since 2024-11-05
+ */
+@Service
+public class ProcessMethodVerifyMethodFileServiceImpl extends ServiceImpl<ProcessMethodVerifyMethodFileMapper, ProcessMethodVerifyMethodFile> implements ProcessMethodVerifyMethodFileService {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyServiceImpl.java
new file mode 100644
index 0000000..c3627ea
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessMethodVerifyServiceImpl.java
@@ -0,0 +1,424 @@
+package com.yuanchu.mom.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+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.deepoove.poi.data.PictureRenderData;
+import com.yuanchu.mom.dto.ProcessMethodVerifyDto;
+import com.yuanchu.mom.dto.ProcessMethodVerifyExportWordDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.*;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.service.*;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.XWPFDocumentUtils;
+import com.yuanchu.mom.utils.QueryWrappers;
+import com.yuanchu.mom.utils.UserUtils;
+import org.springframework.beans.factory.annotation.Value;
+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.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.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 鏍囧噯鏂规硶楠岃瘉
+ *
+ * @author zhuo
+ * @since 2024-11-05
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ProcessMethodVerifyServiceImpl extends ServiceImpl<ProcessMethodVerifyMapper, ProcessMethodVerify> implements ProcessMethodVerifyService {
+
+    @Resource
+    private ProcessMethodVerifyCalibrationsFileService processMethodVerifyCalibrationsFileService;
+    @Resource
+    private ProcessMethodVerifyMethodFileService processMethodVerifyMethodFileService;
+    @Resource
+    private ProcessMethodVerifyWorkFileService processMethodVerifyWorkFileService;
+    @Resource
+    private ProcessMethodVerifyMachineAttachmentService processMethodVerifyMachineAttachmentService;
+    @Resource
+    private ProcessMethodVerifyCalibrationsFileMapper processMethodVerifyCalibrationsFileMapper;
+    @Resource
+    private ProcessMethodVerifyWorkFileMapper processMethodVerifyWorkFileMapper;
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private DeviceMapper deviceMapper;
+
+    @Value("${file.path}")
+    private String imgUrl;
+
+    @Value("${wordUrl}")
+    private String wordUrl;
+
+
+    /**
+     * 鏍囧噯鏂规硶璺熸柊楠岃瘉淇敼
+     *
+     * @param page
+     * @param methodVerifyDto
+     * @return
+     */
+    @Override
+    public IPage<ProcessMethodVerify> pagesMethodVerify(Page page, ProcessMethodVerifyDto methodVerifyDto) {
+        if (methodVerifyDto.getOperationType() == null) {
+            throw new ErrorException("璇烽�夋嫨鏄彉鏇磋繕鏄獙璇�");
+        }
+        return baseMapper.pagesMethodVerify(page, QueryWrappers.queryWrappers(methodVerifyDto));
+    }
+
+    /**
+     * 鏂板鏍囧噯鏂规硶楠岃瘉
+     *
+     * @param methodVerifyDto
+     * @return
+     */
+    @Override
+    public boolean addMethodSearchNew(ProcessMethodVerifyDto methodVerifyDto) {
+        if (methodVerifyDto.getOperationType() == null) {
+            throw new ErrorException("璇烽�夋嫨鏄彉鏇磋繕鏄獙璇�");
+        }
+        // 鏂板
+        baseMapper.insert(methodVerifyDto);
+
+        // 鍒ゆ柇纭浜烘槸鍚︿负绌�
+        if (StringUtils.isNotBlank(methodVerifyDto.getConfirmUser())) {
+            // 娣诲姞涓婂矖璇�
+            this.addWorkFile(methodVerifyDto);
+        }
+
+        // 鏂板璁惧淇℃伅
+        if (CollectionUtils.isNotEmpty(methodVerifyDto.getMachineAttachmentList())) {
+            this.addDevice(methodVerifyDto);
+        }
+
+        return true;
+    }
+
+    /**
+     * 鏌ヨ鏍囧噯鏂规硶楠岃瘉璇︽儏
+     *
+     * @param methodVerifyId
+     * @return
+     */
+    @Override
+    public ProcessMethodVerifyDto getMethodVerifyOne(Integer methodVerifyId) {
+        ProcessMethodVerify processMethodVerify = baseMapper.selectById(methodVerifyId);
+        ProcessMethodVerifyDto processMethodVerifyDto = new ProcessMethodVerifyDto();
+        BeanUtil.copyProperties(processMethodVerify, processMethodVerifyDto);
+
+        // 鏌ヨ璁惧璇︽儏
+        processMethodVerifyDto.setMachineAttachmentList(processMethodVerifyMachineAttachmentService.list(Wrappers.<ProcessMethodVerifyMachineAttachment>lambdaQuery()
+                .eq(ProcessMethodVerifyMachineAttachment::getMethodVerifyId, methodVerifyId)));
+        // 鏌ヨ鍘熷璁板綍
+        processMethodVerifyDto.setMethodFileList(processMethodVerifyMethodFileService.list(Wrappers.<ProcessMethodVerifyMethodFile>lambdaQuery()
+                .eq(ProcessMethodVerifyMethodFile::getMethodVerifyId, methodVerifyId)));
+        // 鏌ヨ涓婂矖璇�
+        processMethodVerifyDto.setWorkFileList(processMethodVerifyWorkFileService.list(Wrappers.<ProcessMethodVerifyWorkFile>lambdaQuery()
+                .eq(ProcessMethodVerifyWorkFile::getMethodVerifyId, methodVerifyId)));
+        // 鏌ヨ鏍″噯璇佷功
+        processMethodVerifyDto.setCalibrationsFileList(processMethodVerifyCalibrationsFileMapper.selectCalibrationsFileList(methodVerifyId));
+
+
+        return processMethodVerifyDto;
+    }
+
+    /**
+     * 淇敼鏍囧噯鏂规硶楠岃瘉
+     *
+     * @param methodVerifyDto
+     * @return
+     */
+    @Override
+    public boolean updateMethodVerify(ProcessMethodVerifyDto methodVerifyDto) {
+        baseMapper.updateById(methodVerifyDto);
+
+        // 鍒犻櫎涓婂矖璇�
+        processMethodVerifyWorkFileService.remove(Wrappers.<ProcessMethodVerifyWorkFile>lambdaQuery()
+                .eq(ProcessMethodVerifyWorkFile::getMethodVerifyId, methodVerifyDto.getMethodVerifyId()));
+
+        // 鍒犻櫎鍘熸湰璁惧璇︽儏
+        processMethodVerifyMachineAttachmentService.remove(Wrappers.<ProcessMethodVerifyMachineAttachment>lambdaQuery()
+                .eq(ProcessMethodVerifyMachineAttachment::getMethodVerifyId, methodVerifyDto.getMethodVerifyId()));
+
+        // 鍒犻櫎鍏冩牎鍑嗚瘉涔�
+        processMethodVerifyCalibrationsFileService.remove(Wrappers.<ProcessMethodVerifyCalibrationsFile>lambdaQuery()
+                .eq(ProcessMethodVerifyCalibrationsFile::getMethodVerifyId, methodVerifyDto.getMethodVerifyId()));
+
+        // 鍒ゆ柇纭浜烘槸鍚︿负绌�
+        if (StringUtils.isNotBlank(methodVerifyDto.getConfirmUser())) {
+            // 娣诲姞涓婂矖璇�
+            this.addWorkFile(methodVerifyDto);
+        }
+
+        // 鏂板璁惧淇℃伅
+        if (CollectionUtils.isNotEmpty(methodVerifyDto.getMachineAttachmentList())) {
+            this.addDevice(methodVerifyDto);
+        }
+        return true;
+    }
+
+    /**
+     * 鍒犻櫎鏍囧噯鏂规硶楠岃瘉
+     *
+     * @param methodVerifyId
+     * @return
+     */
+    @Override
+    public boolean delMethodVerify(Integer methodVerifyId) {
+        // 鍒犻櫎鎵�鏈夎澶�
+        processMethodVerifyMachineAttachmentService.remove(Wrappers.<ProcessMethodVerifyMachineAttachment>lambdaQuery()
+                .eq(ProcessMethodVerifyMachineAttachment::getMethodVerifyId, methodVerifyId));
+
+        // 鍒犻櫎鎵�鏈夊師濮嬭褰�
+        processMethodVerifyMethodFileService.remove(Wrappers.<ProcessMethodVerifyMethodFile>lambdaQuery()
+                .eq(ProcessMethodVerifyMethodFile::getMethodVerifyId, methodVerifyId));
+
+
+        baseMapper.deleteById(methodVerifyId);
+
+        return true;
+    }
+
+    /**
+     * 鏂规硶楠岃瘉纭
+     *
+     * @param methodVerifyId
+     * @return
+     */
+    @Override
+    public boolean methodVerifyAffirm(Integer methodVerifyId) {
+        baseMapper.update(null, Wrappers.<ProcessMethodVerify>lambdaUpdate()
+                .set(ProcessMethodVerify::getConfirmDate, LocalDateTime.now())
+                .eq(ProcessMethodVerify::getMethodVerifyId, methodVerifyId));
+        return true;
+    }
+
+    /**
+     * 鏂规硶楠岃瘉鏂板鍘熷璁板綍
+     *
+     * @param methodVerifyId
+     * @param file
+     * @return
+     */
+    @Override
+    public boolean uploadVerifyMethodFile(Integer methodVerifyId, MultipartFile file) {
+        if (methodVerifyId == null) {
+            throw new ErrorException("缂哄皯鍘熷璁板綍id");
+        }
+
+        String urlString;
+        String pathName;
+        String path;
+        String filename = file.getOriginalFilename();
+        String contentType = file.getContentType();
+        ProcessMethodVerifyMethodFile methodFile = new ProcessMethodVerifyMethodFile();
+        methodFile.setMethodVerifyId(methodVerifyId);
+        methodFile.setFileName(filename);
+        if (contentType != null && contentType.startsWith("image/")) {
+            // 鏄浘鐗�
+            path = imgUrl;
+            methodFile.setType(1);
+        } else {
+            // 鏄枃浠�
+            path = wordUrl;
+            methodFile.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));
+            methodFile.setFileUrl(pathName);
+            return processMethodVerifyMethodFileService.save(methodFile);
+        } catch (Exception e) {
+            e.printStackTrace();
+            System.err.println("闄勪欢涓婁紶閿欒");
+            return false;
+        }
+    }
+
+    /**
+     * 鏍囧噯鏂规硶楠岃瘉鍘熷璁板綍鍒楄〃
+     *
+     * @param methodVerifyId
+     * @return
+     */
+    @Override
+    public List<ProcessMethodVerifyMethodFile> getVerifyMethodFileList(Integer methodVerifyId) {
+        return processMethodVerifyMethodFileService.list(Wrappers.<ProcessMethodVerifyMethodFile>lambdaQuery()
+                .eq(ProcessMethodVerifyMethodFile::getMethodVerifyId, methodVerifyId));
+    }
+
+    /**
+     * 瀵煎嚭鏍囧噯鏂规硶鏇存柊楠岃瘉
+     *
+     * @param methodVerifyId 鏍囧噯鏂规硶楠岃瘉id
+     * @param response
+     */
+    @Override
+    public void exportMethodVerify(Integer methodVerifyId, HttpServletResponse response) {
+        // 鑾峰彇鏍囧噯鏂规硶鏇存柊楠岃瘉鏁版嵁
+        ProcessMethodVerify processMethodVerify = baseMapper.selectById(methodVerifyId);
+
+        // 灏嗗唴閮ㄥ瓧娈佃浆鎹㈡垚灞曠ず鍒皐ord涓殑瀵硅薄
+        ProcessMethodVerifyExportWordDto exportWordTemplate = getExportWordTemplate(processMethodVerify);
+
+        // TODO:瀵煎嚭鏍囧噯鏂规硶鏇存柊楠岃瘉鑾峰彇浜哄憳绛惧悕鍒楄〃鏈缃�
+        // 鑾峰彇浜哄憳id瀛楃涓� 濡傦細1,2,3,4,5
+        String confirmUser = processMethodVerify.getConfirmUser();
+        // 瀵逛汉鍛榠d瀛楃涓茶繘琛屽垎鍓叉垚鏁扮粍
+        String[] userIds = confirmUser.split(",");
+        // 瀹氫箟涓�涓泦鍚堝瓨鏀句汉鍛樼鍚�
+        ArrayList<PictureRenderData> pictureRenderDataList = new ArrayList<>();
+        // 寰幆鑾峰彇浜哄憳绛惧悕
+        for (String userIdStr : userIds) {
+            // 杞崲涓篿nt绫诲瀷
+            Integer userId = Integer.valueOf(userIdStr);
+            // 鑾峰彇浜哄憳绛惧悕瀵硅薄
+            PictureRenderData finalUserSignatureUrl = UserUtils.getFinalUserSignatureUrl(userId);
+            // 灏嗕汉鍛樼鍚嶅璞℃坊鍔犲埌闆嗗悎涓�
+            pictureRenderDataList.add(finalUserSignatureUrl);
+        }
+
+        // 鑾峰彇璁惧淇℃伅
+        List<ProcessMethodVerifyMachineAttachment> processMethodVerifyMachineAttachmentList = processMethodVerifyMachineAttachmentService.list(Wrappers.<ProcessMethodVerifyMachineAttachment>lambdaQuery()
+                .eq(ProcessMethodVerifyMachineAttachment::getMethodVerifyId, methodVerifyId));
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/method-verify.docx");
+        Configure configure = Configure.builder()
+                .bind("processMethodVerifyMachineAttachmentList", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("processMethodVerify", exportWordTemplate);
+                    put("processMethodVerifyMachineAttachmentList", processMethodVerifyMachineAttachmentList);
+                }});
+
+        // 澶勭悊鎹㈣闂
+        XWPFDocumentUtils.updateMergeByDocument(template.getXWPFDocument());
+        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("瀵煎嚭澶辫触");
+        }
+    }
+
+    private ProcessMethodVerifyExportWordDto getExportWordTemplate(ProcessMethodVerify processMethodVerify) {
+        ProcessMethodVerifyExportWordDto processMethodVerifyExportWordDto = new ProcessMethodVerifyExportWordDto();
+        BeanUtil.copyProperties(processMethodVerify, processMethodVerifyExportWordDto);
+        // 锛堜汉锛夋槸鍚︽弧瓒�
+        processMethodVerifyExportWordDto.setPersonIsSatisfiedStr(processMethodVerify.getPersonIsSatisfied() == 1 ? "鈭�" : "脳");
+        // 锛堟満锛夋槸鍚︽弧瓒�
+        processMethodVerifyExportWordDto.setMachineIsSatisfiedStr(processMethodVerify.getMachineIsSatisfied() == 1 ? "鈭�" : "脳");
+        // 锛堟枡锛夋槸鍚︽弧瓒�
+        processMethodVerifyExportWordDto.setMaterialIsSatisfiedStr(processMethodVerify.getMaterialIsSatisfied() == 1 ? "鈭�" : "脳");
+        // 锛堟硶锛夋槸鍚︽弧瓒�
+        processMethodVerifyExportWordDto.setMethodIsSatisfiedStr(processMethodVerify.getMethodIsSatisfied() == 1? "鈭�" : "脳");
+        // 锛堢幆锛夋槸鍚︽弧瓒�
+        processMethodVerifyExportWordDto.setEnvironmentIsSatisfiedStr(processMethodVerify.getEnvironmentIsSatisfied() == 1 ? "鈭�" : "脳");
+        // 锛堟祴閲忔函婧愭�э級鏄惁婊¤冻
+        processMethodVerifyExportWordDto.setTraceabilityIsSatisfiedStr(processMethodVerify.getTraceabilityIsSatisfied() == 1 ? "鈭�" : "脳");
+        // 锛堟牱鍝佺鐞嗛渶姹傦級鏄惁婊¤冻
+        processMethodVerifyExportWordDto.setManagementIsSatisfiedStr(processMethodVerify.getManagementIsSatisfied() == 1 ? "鈭�" : "脳");
+        // 锛堝叾浠栵級鏄惁婊¤冻
+        processMethodVerifyExportWordDto.setOtherIsSatisfiedStr(processMethodVerify.getOtherIsSatisfied() == 1 ? "鈭�" : "脳");
+        // 纭鏃ユ湡
+        processMethodVerifyExportWordDto.setConfirmDateStr(processMethodVerify.getConfirmDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        return processMethodVerifyExportWordDto;
+    }
+
+
+    /**
+     * 娣诲姞涓婂矖璇�
+     *
+     * @param methodVerifyDto
+     */
+    private void addWorkFile(ProcessMethodVerifyDto methodVerifyDto) {
+        List<String> confirmUserIds = StrUtil.split(methodVerifyDto.getConfirmUser(), ",");
+        List<ProcessMethodVerifyWorkFile> workFileList = new ArrayList<>();
+        for (String confirmUserId : confirmUserIds) {
+            Integer userId = Integer.valueOf(confirmUserId);
+            String workName = processMethodVerifyWorkFileMapper.selectWorkFile(userId);
+            // 鍒ゆ柇鏄惁鏈夎瘉涔�
+            if (StringUtils.isNotBlank(workName)) {
+                User user = userMapper.selectById(userId);
+                ProcessMethodVerifyWorkFile workFile = new ProcessMethodVerifyWorkFile();
+                workFile.setMethodVerifyId(methodVerifyDto.getMethodVerifyId());
+                workFile.setType(1);
+                workFile.setFileUrl(workName);
+                workFile.setFileName(workName);
+                workFile.setUserId(user.getId());
+                workFile.setUserName(user.getName());
+                workFileList.add(workFile);
+            }
+        }
+        if (CollectionUtils.isNotEmpty(workFileList)) {
+            processMethodVerifyWorkFileService.saveBatch(workFileList);
+        }
+    }
+
+    /**
+     * 娣诲姞璁惧淇℃伅
+     *
+     * @param methodVerifyDto
+     */
+    private void addDevice(ProcessMethodVerifyDto methodVerifyDto) {
+        List<ProcessMethodVerifyCalibrationsFile> calibrationsFiles = new ArrayList<>();
+        for (ProcessMethodVerifyMachineAttachment machineAttachment : methodVerifyDto.getMachineAttachmentList()) {
+            machineAttachment.setMethodVerifyId(methodVerifyDto.getMethodVerifyId());
+            // 鏌ヨ鏍″噯璇佷功
+            String calibrationsName = processMethodVerifyCalibrationsFileMapper.selectCalibrationsFile(machineAttachment.getDeviceId());
+            // 鍒ゆ柇鏄惁鏈夎瘉涔�
+            if (StringUtils.isNotBlank(calibrationsName)) {
+                ProcessMethodVerifyCalibrationsFile calibrationsFile = new ProcessMethodVerifyCalibrationsFile();
+                calibrationsFile.setMethodVerifyId(methodVerifyDto.getMethodVerifyId());
+                calibrationsFile.setType(1);
+                calibrationsFile.setFileUrl(calibrationsName);
+                calibrationsFile.setFileName(calibrationsName);
+                calibrationsFile.setDeviceId((machineAttachment.getDeviceId()));
+                calibrationsFiles.add(calibrationsFile);
+            }
+        }
+        // 娣诲姞鏍″噯璇佷功
+        processMethodVerifyCalibrationsFileService.saveBatch(calibrationsFiles);
+
+        // 娣诲姞璁惧
+        processMethodVerifyMachineAttachmentService.saveBatch(methodVerifyDto.getMachineAttachmentList());
+    }
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessOrderServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessOrderServiceImpl.java
new file mode 100644
index 0000000..67aaa66
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessOrderServiceImpl.java
@@ -0,0 +1,157 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.dto.InspectionOrderExportDto;
+import com.yuanchu.mom.dto.ProcessOrderDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.InsOrderMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.mapper.ProcessOrderMapper;
+import com.yuanchu.mom.pojo.InspectionOrderDetail;
+import com.yuanchu.mom.service.ProcessOrderService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.XWPFDocumentUtils;
+import com.yuanchu.mom.utils.QueryWrappers;
+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.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 瑕佹眰銆佹爣涔﹀拰鍚堝悓璇勫 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-05 03:06:20
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ProcessOrderServiceImpl extends ServiceImpl<ProcessOrderMapper, ProcessOrder> implements ProcessOrderService {
+
+    @Resource
+    private ProcessOrderMapper processOrderMapper;
+
+    @Resource
+    InsOrderMapper insOrderMapper;
+
+    @Resource
+    private UserMapper userMapper;
+
+    @Override
+    public Map<String, Object> pageProcessOrder(Page page, ProcessOrderDto processOrderDto) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("head", PrintChina.printChina(ProcessOrderDto.class));
+        map.put("body", processOrderMapper.pageProcessOrder(page, QueryWrappers.queryWrappers(processOrderDto)));
+        return map;
+    }
+
+    @Override
+    public ProcessOrderDto getProcessOrder(Integer id) {
+        return processOrderMapper.getProcessOrder(id);
+    }
+
+    @Override
+    public int doProcessOrder(ProcessOrder processOrder) {
+        if (ObjectUtils.isNotEmpty(processOrder.getComprehensiveUser())) {
+            User user = userMapper.selectById(processOrder.getComprehensiveUser());
+            if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("鏈壘鍒扮患鍚堝绛惧悕浜虹殑鐢靛瓙绛惧悕,璇蜂笂浼犵數瀛愮鍚�!");
+        }
+        if (ObjectUtils.isNotEmpty(processOrder.getIssueUser())) {
+            User user = userMapper.selectById(processOrder.getIssueUser());
+            if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("鏈壘鍒伴鏍峰憳鐨勭數瀛愮鍚�,璇蜂笂浼犵數瀛愮鍚�!");
+        }
+        return processOrderMapper.updateById(processOrder);
+    }
+
+
+    @Override
+    public void exportInspectionOrder(Integer id, HttpServletResponse response) {
+        ProcessOrder processOrder = baseMapper.selectById(id);
+        InspectionOrderExportDto inspectionOrderExportDto = extracted(processOrder);
+        List<InspectionOrderDetail> list = baseMapper.selectInsOrder(processOrder.getInsOrderId());
+        int index = 1;
+        for (InspectionOrderDetail inspectionOrderDetail : list) {
+            inspectionOrderDetail.setIndex(index);
+            index++;
+        }
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/inspection-order.docx");
+        Configure configure = Configure.builder()
+                .bind("inspectionOrderDetailList", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("inspectionOrder", inspectionOrderExportDto);
+                    put("inspectionOrderDetailList", list);
+                }});
+
+        // 澶勭悊鎹㈣闂
+        XWPFDocumentUtils.updateMergeByDocument(template.getXWPFDocument());
+        try {
+            response.setContentType("application/msword");
+            String fileName = URLEncoder.encode(
+                    inspectionOrderExportDto.getSample(), "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("瀵煎嚭澶辫触");
+        }
+    }
+
+    private InspectionOrderExportDto extracted(ProcessOrder processOrder) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�");
+        InspectionOrderExportDto inspectionOrderExportDto = new InspectionOrderExportDto();
+        ProcessOrderDto processOrderDto = getProcessOrder(processOrder.getId());
+        BeanUtils.copyProperties(processOrderDto, inspectionOrderExportDto);
+        if (processOrderDto.getCreateTime() != null) {
+            inspectionOrderExportDto.setCommissionDateString(processOrderDto.getCreateTime().format(formatter));
+        }
+        if (processOrder.getComprehensiveTime() != null) {
+            inspectionOrderExportDto.setReceiptDataString(processOrder.getComprehensiveTime().format(formatter));
+        }
+        if (processOrder.getIssueTime() != null) {
+            inspectionOrderExportDto.setSampleDataString(processOrder.getIssueTime().format(formatter));
+        }
+        if (processOrderDto.getAppointed() != null) {
+            inspectionOrderExportDto.setAppointedString(processOrderDto.getAppointed().format(formatter));
+        }
+
+        inspectionOrderExportDto.setIsLeave1(processOrderDto.getIsLeave() != null && processOrderDto.getIsLeave() == 1 ? "鈽�" : "鈻�");
+        inspectionOrderExportDto.setIsLeave2(processOrderDto.getIsLeave() != null && processOrderDto.getIsLeave() == 0 ? "鈽�" : "鈻�");
+        inspectionOrderExportDto.setSend0(processOrderDto.getSend() != null && processOrderDto.getSend() == 1 ? "鈽�" : "鈻�");
+        inspectionOrderExportDto.setSend1(processOrderDto.getSend() != null && processOrderDto.getSend() == 0 ? "鈽�" : "鈻�");
+        inspectionOrderExportDto.setProcessing0(processOrderDto.getProcessing() != null && processOrderDto.getProcessing() == 0 ? "鈽�" : "鈻�");
+        inspectionOrderExportDto.setProcessing1(processOrderDto.getProcessing() != null && processOrderDto.getProcessing() == 1 ? "鈽�" : "鈻�");
+        if (ObjectUtils.isNotEmpty(processOrder.getRule())) {
+            inspectionOrderExportDto.setCriterionRule0(processOrder.getRule().equals("涓嶈�冭檻涓嶇‘瀹氬害") ? "鈽�" : "鈻�");
+            inspectionOrderExportDto.setCriterionRule1(processOrder.getRule().contains("-") ? "鈽�" : "鈻�");
+            inspectionOrderExportDto.setCriterionRuleRemark(processOrder.getRule().contains("-") ? processOrder.getRule().split("-")[1] : "");
+        }
+        return inspectionOrderExportDto;
+    }
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessReportServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessReportServiceImpl.java
new file mode 100644
index 0000000..be47fbe
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessReportServiceImpl.java
@@ -0,0 +1,431 @@
+package com.yuanchu.mom.service.impl;
+
+import cn.hutool.core.lang.UUID;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.config.ConfigureBuilder;
+import com.deepoove.poi.data.*;
+import com.deepoove.poi.data.style.*;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.ProcessComplain;
+import com.yuanchu.mom.pojo.ProcessReport;
+import com.yuanchu.mom.mapper.ProcessReportMapper;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.ProcessReportService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.apache.commons.io.IOUtils;
+import org.apache.poi.xwpf.usermodel.*;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-05 08:58:39
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ProcessReportServiceImpl extends ServiceImpl<ProcessReportMapper, ProcessReport> implements ProcessReportService {
+
+    @Resource
+    private ProcessReportMapper processReportMapper;
+
+    @Resource
+    GetLook getLook;
+
+    @Value("${wordUrl}")
+    private String wordUrl;
+
+    @Resource
+    private UserMapper userMapper;
+
+    @Override
+    public Map<String, Object> pageProcessReport(Page page, ProcessReport processReport) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("head", PrintChina.printChina(ProcessReport.class));
+        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageProcessOrder");
+        if (map1.get("look") == 1) processReport.setCreateUser(map1.get("userId"));
+        IPage<ProcessReport> processReportIPage = processReportMapper.pageProcessReport(page, QueryWrappers.queryWrappers(processReport));
+        for (ProcessReport record : processReportIPage.getRecords()) {
+            List<String> name = new ArrayList<>();
+            for (String s : record.getSignatory().split(",")) {
+                User user = userMapper.selectById(Integer.parseInt(s));
+                name.add(user.getName());
+            }
+            String signatoryName = name.stream().collect(Collectors.joining(","));
+            record.setSignatoryName(signatoryName);
+        }
+        map.put("body", processReportIPage);
+        return map;
+    }
+
+    @Override
+    public String exportProcessReport(List<Integer> ids) {
+        List<ProcessReport> processReports = processReportMapper.getIds(ids);
+        for (ProcessReport processReport : processReports) {
+            List<String> name = new ArrayList<>();
+            for (String s : processReport.getSignatory().split(",")) {
+                User user = userMapper.selectById(Integer.parseInt(s));
+                name.add(user.getName());
+            }
+            String signatoryName = name.stream().collect(Collectors.joining(","));
+            processReport.setSignatoryName(signatoryName);
+        }
+        //鐢熸垚妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃
+        String url;
+        try {
+            InputStream inputStream = this.getClass().getResourceAsStream("/static/report-deal.docx");
+            File file = File.createTempFile("temp", ".tmp");
+            OutputStream outputStream = new FileOutputStream(file);
+            IOUtils.copy(inputStream, outputStream);
+            url = file.getAbsolutePath();
+        } catch (FileNotFoundException e) {
+            throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�");
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        ConfigureBuilder builder = Configure.builder();
+        builder.useSpringEL(true);
+
+        List<Map<String, Object>> reportList = new ArrayList<>();
+        Integer index = 1;
+        Integer index1 = 1;
+        for (int c = 0; c < processReports.size(); c++) {
+            //瓒呰繃15琛屾崲椤�
+            if (c % 15 == 0) {
+                List<RowRenderData> rows = new ArrayList<>();
+                //琛ㄦ牸鐨勮鏁�
+                for (int i = 0; i < 16; i++) {
+                    RowRenderData rowRenderData = new RowRenderData();
+                    RowStyle rowStyle = new RowStyle();
+                    rowStyle.setHeight(40);
+                    rowRenderData.setRowStyle(rowStyle);
+                    List<CellRenderData> cells = new ArrayList<>();
+                    //琛ㄦ牸鐨勫垪鏁�
+                    for (int j = 0; j < 10; j++) {
+                        CellRenderData cellRenderData = new CellRenderData();
+                        CellStyle cellStyle = new CellStyle();
+                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
+                        cellRenderData.setCellStyle(cellStyle);
+                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
+                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
+                        ParagraphStyle paragraphStyle = new ParagraphStyle();
+                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
+                        paragraphRenderData.setParagraphStyle(paragraphStyle);
+                        List<RenderData> renderData = new ArrayList<>();
+                        TextRenderData textRenderData = new TextRenderData();
+                        Style style = new Style();
+                        style.setFontFamily("瀹嬩綋");
+                        style.setColor("000000");
+                        textRenderData.setStyle(style);
+                        if (i == 0) {
+                            //绗竴琛�
+                            if (j == 0) {
+                                //绗竴鍒楀簭鍙�
+                                textRenderData.setText("搴忓彿@No.");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 1) {
+                                //绗簩鍒�
+                                textRenderData.setText("妫�楠屾姤鍛婄紪鍙稝Inspection report number");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 2) {
+                                //绗笁鍒�
+                                textRenderData.setText("椤垫暟@Pages");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 3) {
+                                //绗洓鍒�
+                                textRenderData.setText("鍙戦�佷唤鏁癅Number of copies sent");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 4) {
+                                //绗簲鍒�
+                                textRenderData.setText("鍙戝線浣曞@Where to send to");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 5) {
+                                //绗叚鍒�
+                                textRenderData.setText("鍙戦�佹柟寮廆Send method");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 6) {
+                                //绗竷鍒�
+                                textRenderData.setText("鍙戦�佹棩鏈烜Date sent");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }else if (j == 7) {
+                                //绗叓鍒�
+                                textRenderData.setText("鍙戦�佷汉@Sender");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }else if (j == 8) {
+                                //绗節鍒�
+                                textRenderData.setText("绛炬敹浜篅Signatory");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }else{
+                                //绗崄鍒�
+                                textRenderData.setText("澶囨敞@Remark");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                        }
+                        else {
+                            //鍏朵粬琛�
+                            if (j == 0) {
+                                //绗竴鍒�
+                                try{
+                                    String insReportCode = processReports.get((i-1) + (index1 - 1) * 20).getInsReportCode();
+                                    textRenderData.setText(index + "");
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                index++;
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 1) {
+                                try{
+                                    textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getInsReportCode());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 2) {
+                                try{
+                                    textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getPages());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 3) {
+                                try{
+                                    textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getNumber());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 4) {
+                                try{
+                                    textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSend());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 5) {
+                                try{
+                                    textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getMethod());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 6) {
+                                try{
+                                    textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSendTime()+"");
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 7) {
+                                try{
+                                    textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSendUserName());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 8) {
+                                try{
+                                    textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSignatoryName());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else {
+                                try{
+                                    textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getRemark());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                        }
+                    }
+                    rowRenderData.setCells(cells);
+                    if (rowRenderData.getCells().size() != 0) {
+                        rows.add(rowRenderData);
+                    }
+                }
+                TableRenderData tableRenderData = new TableRenderData();
+                tableRenderData.setRows(rows);
+                int countSize = tableRenderData.getRows().get(0).getCells().size();
+                for (RowRenderData row : tableRenderData.getRows()) {
+                    if (row.getCells().size() != countSize) {
+                        throw new ErrorException("姣忚鍗曞厓鏍间笉鐩哥瓑");
+                    }
+                }
+                TableStyle tableStyle = new TableStyle();
+                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
+                tableStyle.setAlign(TableRowAlign.CENTER);
+                BorderStyle borderStyle = new BorderStyle();
+                borderStyle.setColor("000000");
+                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
+                borderStyle.setSize(14);
+                tableStyle.setLeftBorder(borderStyle);
+                tableStyle.setTopBorder(borderStyle);
+                tableStyle.setRightBorder(borderStyle);
+                tableStyle.setBottomBorder(borderStyle);
+                tableRenderData.setTableStyle(tableStyle);
+                Map<String, Object> table = new HashMap<>();
+                table.put("report", tableRenderData);
+                table.put("index1", index1);
+                reportList.add(table);
+                index1++;
+            }
+        }
+        Integer finalIndex = index1;
+        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
+                new HashMap<String, Object>() {{
+                    put("reportList", reportList);
+                }});
+        String name = UUID.randomUUID() + "_妫�楠屾姤鍛婂彂鏀剧櫥璁拌〃" + ".docx";
+        try {
+            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        //澶勭悊涓嫳鏂囨崲琛岀殑闂
+        String path = wordUrl + "/" + name;
+        try {
+            FileInputStream stream1 = new FileInputStream(path);
+            XWPFDocument document1 = new XWPFDocument(stream1);
+            List<XWPFTable> xwpfTables1 = document1.getTables();
+            for (int i = 0; i < xwpfTables1.size(); i++) {
+                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
+                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
+                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
+                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
+                            String[] split = text.split("@");
+                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
+                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
+                            XWPFRun run = xwpfParagraph.createRun();
+                            run.setText(split[0]);
+                            if (ObjectUtils.isNotNull(split[1])) {
+                                run.addBreak();
+                                run.setText(split[1]);
+                            }
+                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
+                        }
+                    }
+                }
+            }
+            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
+            document1.write(fileOutputStream1);
+            fileOutputStream1.close();
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException(e);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return name;
+    }
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessSampleServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessSampleServiceImpl.java
new file mode 100644
index 0000000..81e8acf
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessSampleServiceImpl.java
@@ -0,0 +1,105 @@
+package com.yuanchu.mom.service.impl;
+
+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.common.GetLook;
+import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.mapper.ProcessTotalSampleMapper;
+import com.yuanchu.mom.pojo.ProcessDeal;
+import com.yuanchu.mom.pojo.ProcessSample;
+import com.yuanchu.mom.mapper.ProcessSampleMapper;
+import com.yuanchu.mom.pojo.ProcessTotalSample;
+import com.yuanchu.mom.pojo.ProcessTotaldeal;
+import com.yuanchu.mom.service.ProcessSampleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏍峰搧鎺ユ敹 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-12 05:02:49
+ */
+@Service
+public class ProcessSampleServiceImpl extends ServiceImpl<ProcessSampleMapper, ProcessSample> implements ProcessSampleService {
+
+    @Resource
+    private ProcessSampleMapper processSampleMapper;
+
+    @Resource
+    private ProcessTotalSampleMapper processTotalSampleMapper;
+
+    @Resource
+    GetLook getLook;
+
+
+    @Override
+    public Map<String, Object> pageProcessSample(Page page, ProcessSample processSample) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("head", PrintChina.printChina(ProcessSample.class));
+        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageProcessDeal");
+        if (map1.get("look") == 1) processSample.setCreateUser(map1.get("userId"));
+        if (ObjectUtils.isEmpty(processSample.getTotalSampleId())) {
+            //鑾峰彇褰撳墠鏈堜唤
+            LocalDate currentDate = LocalDate.now();
+            // 瀹氫箟鏃ユ湡鏍煎紡
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+            // 鏍煎紡鍖栧綋鍓嶆棩鏈�
+            String currentMonth = currentDate.format(formatter);
+            //鏌ヨ鍘嗗彶
+            ProcessTotalSample processTotalSample = processTotalSampleMapper.selectOne(Wrappers.<ProcessTotalSample>lambdaQuery().eq(ProcessTotalSample::getMonth, currentMonth));
+            processSample.setTotalSampleId(processTotalSample.getId());
+        }
+        map.put("body", processSampleMapper.pageProcessSample(page, QueryWrappers.queryWrappers(processSample)));
+        return map;
+    }
+
+    @Override
+    public int addProcessSample(ProcessSample processSample) {
+        ProcessTotalSample processTotalSample;
+        if (ObjectUtils.isEmpty(processSample.getTotalSampleId())){
+            LocalDate dealTime = LocalDate.now();
+            // 瀹氫箟鏃ユ湡鏍煎紡
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+            // 鏍煎紡鍖栧綋鍓嶆棩鏈�
+            String currentMonth = dealTime.format(formatter);
+            processTotalSample= processTotalSampleMapper.selectOne(Wrappers.<ProcessTotalSample>lambdaQuery().eq(ProcessTotalSample::getMonth,currentMonth));
+            processSample.setTotalSampleId(processTotalSample.getId());
+        }else {
+            processTotalSample= processTotalSampleMapper.selectById(processSample.getTotalSampleId());
+        }
+        processSampleMapper.insert(processSample);
+        processTotalSample.setTotalNum(processSample.getNum()+processTotalSample.getTotalNum());
+        return processTotalSampleMapper.updateById(processTotalSample);
+    }
+
+    @Override
+    public int delProcessSample(Integer id) {
+        ProcessSample processSample = processSampleMapper.selectById(id);
+        processSampleMapper.deleteById(id);
+        ProcessTotalSample processTotalSample = processTotalSampleMapper.selectById(processSample.getTotalSampleId());
+        processTotalSample.setTotalNum(processTotalSample.getTotalNum()-processSample.getNum());
+        return processTotalSampleMapper.updateById(processTotalSample);
+    }
+
+    @Override
+    public int doProcessSample(ProcessSample processSample) {
+        if (ObjectUtils.isNotEmpty(processSample.getNum())) {
+            ProcessSample oldProcessSample = processSampleMapper.selectById(processSample.getId());
+            ProcessTotalSample processTotalSample = processTotalSampleMapper.selectById(processSample.getTotalSampleId());
+            processTotalSample.setTotalNum(processTotalSample.getTotalNum() - oldProcessSample.getNum() + processSample.getNum());
+            processTotalSampleMapper.updateById(processTotalSample);
+        }
+        return processSampleMapper.updateById(processSample);
+    }
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessTotalSampleServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessTotalSampleServiceImpl.java
new file mode 100644
index 0000000..b8d278f
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessTotalSampleServiceImpl.java
@@ -0,0 +1,439 @@
+package com.yuanchu.mom.service.impl;
+
+import cn.hutool.core.lang.UUID;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.config.ConfigureBuilder;
+import com.deepoove.poi.data.*;
+import com.deepoove.poi.data.style.*;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.ProcessSampleMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.mapper.ProcessTotalSampleMapper;
+import com.yuanchu.mom.service.ProcessTotalSampleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.apache.commons.io.IOUtils;
+import org.apache.poi.xwpf.usermodel.*;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏍峰搧鎺ユ敹鎬昏〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-12 05:02:58
+ */
+@Service
+public class ProcessTotalSampleServiceImpl extends ServiceImpl<ProcessTotalSampleMapper, ProcessTotalSample> implements ProcessTotalSampleService {
+
+    @Value("${wordUrl}")
+    private String wordUrl;
+
+    @Value("${file.path}")
+    private String imgUrl;
+
+    @Resource
+    GetLook getLook;
+
+    @Resource
+    private UserMapper userMapper;
+
+    @Resource
+    private ProcessTotalSampleMapper processTotalSampleMapper;
+
+    @Resource
+    private ProcessSampleMapper processSampleMapper;
+
+    @Override
+    public Map<String, Object> pageProcessTotalSample(Page page, ProcessTotalSample processTotalSample) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("head", PrintChina.printChina(ProcessTotalSample.class));
+        map.put("body", processTotalSampleMapper.pageProcessTotalSample(page, QueryWrappers.queryWrappers(processTotalSample)));
+        return map;
+    }
+
+    @Override
+    public int submitProcessTotalSample(Integer id) {
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        User user = userMapper.selectById(userId);
+        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("鏈壘鍒板~琛ㄤ汉鐨勭數瀛愮鍚�,璇蜂笂浼犺嚜宸辩殑鐢靛瓙绛惧悕!");
+        ProcessTotalSample processTotalSample = processTotalSampleMapper.selectById(id);
+        processTotalSample.setSubmitUser(userId);
+        processTotalSample.setSubmitState("宸叉彁浜�");
+        processTotalSample.setSubmitUrl(user.getSignatureUrl());
+        //鐢熸垚鏍峰搧澶勭悊鐢宠琛ㄥ苟灏嗗~琛ㄤ汉鐨勭數瀛愮鍚嶅嵃涓�
+        processTotalSample.setUrl(processTotalSample(id,user.getSignatureUrl()));
+        return processTotalSampleMapper.updateById(processTotalSample);
+    }
+
+    @Override
+    public int checkProcessTotalSample(Integer id, String state) {
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        User user = userMapper.selectById(userId);
+        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("鏈壘鍒板鏍镐汉鐨勭數瀛愮鍚�,璇蜂笂浼犺嚜宸辩殑鐢靛瓙绛惧悕!");
+        ProcessTotalSample processTotalSample = processTotalSampleMapper.selectById(id);
+        processTotalSample.setExamineUser(userId);
+        processTotalSample.setExamineState(state);
+        processTotalSample.setExamineUrl(user.getSignatureUrl());
+        if (state.equals("涓嶉�氳繃")) {
+            processTotalSample.setSubmitState("寰呮彁浜�");
+        }
+        //灏嗗鏍镐汉鐨勭數瀛愮鍚嶅嵃涓�
+        wordInsertUrl(new HashMap<String, Object>() {{
+            put("examineUrl", new FilePictureRenderData(100,50,imgUrl + "/" + user.getSignatureUrl()));
+        }},  wordUrl+"/"+processTotalSample.getUrl());
+        return processTotalSampleMapper.updateById(processTotalSample);
+    }
+
+    @Override
+    public int ratifyProcessTotalSample(Integer id, String state) {
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        User user = userMapper.selectById(userId);
+        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("鏈壘鍒版壒鍑嗕汉鐨勭數瀛愮鍚�,璇蜂笂浼犺嚜宸辩殑鐢靛瓙绛惧悕!");
+        ProcessTotalSample processTotalSample = processTotalSampleMapper.selectById(id);
+        processTotalSample.setRatifyUser(userId);
+        processTotalSample.setRatifyState(state);
+        processTotalSample.setRatifyUrl(user.getSignatureUrl());
+        if (state.equals("涓嶉�氳繃")) {
+            processTotalSample.setSubmitState("寰呮彁浜�");
+        }
+        //灏嗘壒鍑嗕汉鐨勭鍚嶅嵃涓�
+        wordInsertUrl(new HashMap<String, Object>() {{
+            put("ratifyUrl", new FilePictureRenderData(100,50,imgUrl + "/" + user.getSignatureUrl()));
+        }},  wordUrl+"/"+processTotalSample.getUrl());
+        return processTotalSampleMapper.updateById(processTotalSample);
+    }
+
+    //鐢熸垚鏍峰搧澶勭悊琛╳ord
+    private String processTotalSample(Integer id,String signatureUrl){
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�");
+        List<ProcessSample> processSamples = processSampleMapper.selectList(Wrappers.<ProcessSample>lambdaQuery().eq(ProcessSample::getTotalSampleId,id));
+        String url;
+        try {
+            InputStream inputStream = this.getClass().getResourceAsStream("/static/sample-receive.docx");
+            File file = File.createTempFile("temp", ".tmp");
+            OutputStream outputStream = new FileOutputStream(file);
+            IOUtils.copy(inputStream, outputStream);
+            url = file.getAbsolutePath();
+        } catch (FileNotFoundException e) {
+            throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�");
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        ConfigureBuilder builder = Configure.builder();
+        builder.useSpringEL(true);
+
+        List<Map<String, Object>> sampleList = new ArrayList<>();
+        Integer index = 1;
+        Integer index1 = 1;
+        for (int c = 0; c < processSamples.size(); c++) {
+            //瓒呰繃20琛屾崲椤�
+            if (c % 20 == 0) {
+                List<RowRenderData> rows = new ArrayList<>();
+                //琛ㄦ牸鐨勮鏁�
+                for (int i = 0; i < 21; i++) {
+                    RowRenderData rowRenderData = new RowRenderData();
+                    RowStyle rowStyle = new RowStyle();
+                    rowStyle.setHeight(40);
+                    rowRenderData.setRowStyle(rowStyle);
+                    List<CellRenderData> cells = new ArrayList<>();
+                    //琛ㄦ牸鐨勫垪鏁�
+                    for (int j = 0; j < 8; j++) {
+                        CellRenderData cellRenderData = new CellRenderData();
+                        CellStyle cellStyle = new CellStyle();
+                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
+                        cellRenderData.setCellStyle(cellStyle);
+                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
+                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
+                        ParagraphStyle paragraphStyle = new ParagraphStyle();
+                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
+                        paragraphRenderData.setParagraphStyle(paragraphStyle);
+                        List<RenderData> renderData = new ArrayList<>();
+                        TextRenderData textRenderData = new TextRenderData();
+                        Style style = new Style();
+                        style.setFontFamily("瀹嬩綋");
+                        style.setColor("000000");
+                        textRenderData.setStyle(style);
+                        if (i == 0) {
+                            //绗竴琛�
+                            if (j == 0) {
+                                //绗竴鍒楀簭鍙�
+                                textRenderData.setText("鏀舵牱鏃ユ湡@Date of receipt");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 1) {
+                                //绗簩鍒楁牱鍝佸悕绉�
+                                textRenderData.setText("鏍峰搧缂栧彿@Sample number");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 2) {
+                                //绗笁鍒楁牱鍝佺紪鍙�
+                                textRenderData.setText("鏍峰搧鍚嶇О@Sample name");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 3) {
+                                //绗洓鍒椾緵鏍峰崟浣�
+                                textRenderData.setText("鏍峰搧鏁伴噺@Number of samples");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 4) {
+                                //绗簲鍒楁暟閲�
+                                textRenderData.setText("鏉ユ牱鍗曚綅@Sample unit");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 5) {
+                                //绗叚鍒楀鐞嗘柟寮�
+                                textRenderData.setText("鐣欐牱鏃ユ湡@Sample retention date");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 6) {
+                                //绗叚鍒楀鐞嗘柟寮�
+                                textRenderData.setText("鏍峰搧鐘舵�丂Sample status");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else {
+                                //绗竷鍒楁椂闂�
+                                textRenderData.setText("閫�鏍风鏀跺拰/鎴栧鐞嗘棩鏈烜Return signature and/or processing date");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                        }
+                        else {
+                            //鍏朵粬琛�
+                            if (j == 0) {
+                                //绗竴鍒�
+                                try{
+                                    String receiveDate = processSamples.get((i-1) + (index1 - 1) * 20).getReceiveDate().format(formatter);
+                                    textRenderData.setText(receiveDate);
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                index++;
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 1) {
+                                try{
+                                    textRenderData.setText(processSamples.get((i-1) + (index1 - 1) * 20).getSampleCode());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 2) {
+                                try{
+                                    textRenderData.setText(processSamples.get((i-1) + (index1 - 1) * 20).getSampleName());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 3) {
+                                try{
+                                    textRenderData.setText(processSamples.get((i-1) + (index1 - 1) * 20).getNum()+"");
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 4) {
+                                try{
+                                    textRenderData.setText(processSamples.get((i-1) + (index1 - 1) * 20).getSampleSupplier());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 5) {
+                                try{
+                                    textRenderData.setText(processSamples.get((i-1) + (index1 - 1) * 20).getLeaveDate().format(formatter));
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 5) {
+                                try{
+                                    textRenderData.setText(processSamples.get((i-1) + (index1 - 1) * 20).getSampleState());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else {
+                                try{
+                                    textRenderData.setText(processSamples.get((i-1) + (index1 - 1) * 20).getDealTime().format(formatter));
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                        }
+                    }
+                    rowRenderData.setCells(cells);
+                    if (rowRenderData.getCells().size() != 0) {
+                        rows.add(rowRenderData);
+                    }
+                }
+                TableRenderData tableRenderData = new TableRenderData();
+                tableRenderData.setRows(rows);
+                int countSize = tableRenderData.getRows().get(0).getCells().size();
+                for (RowRenderData row : tableRenderData.getRows()) {
+                    if (row.getCells().size() != countSize) {
+                        throw new ErrorException("姣忚鍗曞厓鏍间笉鐩哥瓑");
+                    }
+                }
+                TableStyle tableStyle = new TableStyle();
+                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
+                tableStyle.setAlign(TableRowAlign.CENTER);
+                BorderStyle borderStyle = new BorderStyle();
+                borderStyle.setColor("000000");
+                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
+                borderStyle.setSize(14);
+                tableStyle.setLeftBorder(borderStyle);
+                tableStyle.setTopBorder(borderStyle);
+                tableStyle.setRightBorder(borderStyle);
+                tableStyle.setBottomBorder(borderStyle);
+                tableRenderData.setTableStyle(tableStyle);
+                Map<String, Object> table = new HashMap<>();
+                table.put("sample", tableRenderData);
+                table.put("index1", index1);
+                sampleList.add(table);
+                index1++;
+            }
+        }
+        Integer finalIndex = index1;
+        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
+                new HashMap<String, Object>() {{
+                    put("sampleList", sampleList);
+                    put("size", finalIndex);
+                    put("examineUrl", null);
+                    put("ratifyUrl", null);
+                    put("writeUrl", new FilePictureRenderData(100,50,imgUrl + "/" + signatureUrl));
+                }});
+        String name = UUID.randomUUID() + "_妫�楠屾牱鍝佺櫥璁拌〃" + ".docx";
+        try {
+            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        //澶勭悊涓嫳鏂囨崲琛岀殑闂
+        String path = wordUrl + "/" + name;
+        try {
+            FileInputStream stream1 = new FileInputStream(path);
+            XWPFDocument document1 = new XWPFDocument(stream1);
+            List<XWPFTable> xwpfTables1 = document1.getTables();
+            for (int i = 0; i < xwpfTables1.size(); i++) {
+                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
+                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
+                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
+                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
+                            String[] split = text.split("@");
+                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
+                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
+                            XWPFRun run = xwpfParagraph.createRun();
+                            run.setText(split[0]);
+                            if (ObjectUtils.isNotNull(split[1])) {
+                                run.addBreak();
+                                run.setText(split[1]);
+                            }
+                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
+                        }
+                    }
+                }
+            }
+            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
+            document1.write(fileOutputStream1);
+            fileOutputStream1.close();
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException(e);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return name;
+    }
+
+    public int wordInsertUrl(Map<String, Object> map, String url) {
+        XWPFTemplate template = XWPFTemplate.compile(url).render(map);
+        try {
+            template.writeAndClose(Files.newOutputStream(Paths.get(url)));
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return 1;
+    }
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessTotaldealServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessTotaldealServiceImpl.java
new file mode 100644
index 0000000..e346c64
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/ProcessTotaldealServiceImpl.java
@@ -0,0 +1,419 @@
+package com.yuanchu.mom.service.impl;
+
+import cn.hutool.core.lang.UUID;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.config.ConfigureBuilder;
+import com.deepoove.poi.data.*;
+import com.deepoove.poi.data.style.*;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.common.PrintChina;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.ProcessDealMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.ProcessDeal;
+import com.yuanchu.mom.pojo.ProcessTotaldeal;
+import com.yuanchu.mom.mapper.ProcessTotaldealMapper;
+import com.yuanchu.mom.pojo.User;
+import com.yuanchu.mom.service.ProcessTotaldealService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.apache.commons.io.IOUtils;
+import org.apache.poi.openxml4j.util.ZipSecureFile;
+import org.apache.poi.xwpf.usermodel.*;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+/**
+ * <p>
+ * 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�昏〃(鍘嗗彶) 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-02 03:59:09
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ProcessTotaldealServiceImpl extends ServiceImpl<ProcessTotaldealMapper, ProcessTotaldeal> implements ProcessTotaldealService {
+
+    @Resource
+    private ProcessTotaldealMapper processTotaldealMapper;
+
+    @Resource
+    private ProcessDealMapper processDealMapper;
+
+    @Value("${wordUrl}")
+    private String wordUrl;
+
+    @Value("${file.path}")
+    private String imgUrl;
+
+    @Resource
+    GetLook getLook;
+
+    @Resource
+    private UserMapper userMapper;
+
+    @Override
+    public Map<String, Object> pageProcessTotaldeal(Page page, ProcessTotaldeal processTotaldeal) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("head", PrintChina.printChina(ProcessTotaldeal.class));
+        map.put("body", processTotaldealMapper.pageProcessTotaldeal(page, QueryWrappers.queryWrappers(processTotaldeal)));
+        return map;
+    }
+
+    @Override
+    public int submitProcessTotaldeal(Integer id) {
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        User user = userMapper.selectById(userId);
+        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("鏈壘鍒板~琛ㄤ汉鐨勭數瀛愮鍚�,璇蜂笂浼犺嚜宸辩殑鐢靛瓙绛惧悕!");
+        ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(id);
+        processTotaldeal.setSubmitUser(userId);
+        processTotaldeal.setSubmitState("宸叉彁浜�");
+        processTotaldeal.setSubmitUrl(user.getSignatureUrl());
+        //鐢熸垚鏍峰搧澶勭悊鐢宠琛ㄥ苟灏嗗~琛ㄤ汉鐨勭數瀛愮鍚嶅嵃涓�
+        processTotaldeal.setUrl(processTotaldeal(id,user.getSignatureUrl()));
+        return processTotaldealMapper.updateById(processTotaldeal);
+    }
+
+    @Override
+    public int checkProcessTotaldeal(Integer id, String state) {
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        User user = userMapper.selectById(userId);
+        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("鏈壘鍒板鏍镐汉鐨勭數瀛愮鍚�,璇蜂笂浼犺嚜宸辩殑鐢靛瓙绛惧悕!");
+        ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(id);
+        processTotaldeal.setExamineUser(userId);
+        processTotaldeal.setExamineState(state);
+        processTotaldeal.setExamineUrl(user.getSignatureUrl());
+        if (state.equals("涓嶉�氳繃")) {
+            processTotaldeal.setSubmitState("寰呮彁浜�");
+        }
+        //灏嗗鏍镐汉鐨勭數瀛愮鍚嶅嵃涓�
+          wordInsertUrl(new HashMap<String, Object>() {{
+            put("examineUrl", new FilePictureRenderData(100,50,imgUrl + "/" + user.getSignatureUrl()));
+        }},  wordUrl+"/"+processTotaldeal.getUrl());
+        return processTotaldealMapper.updateById(processTotaldeal);
+    }
+
+    @Override
+    public int ratifyProcessTotaldeal(Integer id, String state) {
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        User user = userMapper.selectById(userId);
+        if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("鏈壘鍒版壒鍑嗕汉鐨勭數瀛愮鍚�,璇蜂笂浼犺嚜宸辩殑鐢靛瓙绛惧悕!");
+        ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(id);
+        processTotaldeal.setRatifyUser(userId);
+        processTotaldeal.setRatifyState(state);
+        processTotaldeal.setRatifyUrl(user.getSignatureUrl());
+        if (state.equals("涓嶉�氳繃")) {
+            processTotaldeal.setSubmitState("寰呮彁浜�");
+        }
+        //灏嗘壒鍑嗕汉鐨勭鍚嶅嵃涓�
+        wordInsertUrl(new HashMap<String, Object>() {{
+            put("ratifyUrl", new FilePictureRenderData(100,50,imgUrl + "/" + user.getSignatureUrl()));
+        }},  wordUrl+"/"+processTotaldeal.getUrl());
+        return processTotaldealMapper.updateById(processTotaldeal);
+    }
+
+    //鐢熸垚鏍峰搧澶勭悊琛╳ord
+    private String processTotaldeal(Integer id,String signatureUrl){
+        List<ProcessDeal> processDeals = processDealMapper.selectList(Wrappers.<ProcessDeal>lambdaQuery().eq(ProcessDeal::getTotaldealId,id));
+        String url;
+        try {
+            InputStream inputStream = this.getClass().getResourceAsStream("/static/sample-deal.docx");
+            File file = File.createTempFile("temp", ".tmp");
+            OutputStream outputStream = new FileOutputStream(file);
+            IOUtils.copy(inputStream, outputStream);
+            url = file.getAbsolutePath();
+        } catch (FileNotFoundException e) {
+            throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�");
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        ConfigureBuilder builder = Configure.builder();
+        builder.useSpringEL(true);
+
+        List<Map<String, Object>> sampleList = new ArrayList<>();
+        Integer index = 1;
+        Integer index1 = 1;
+        for (int c = 0; c < processDeals.size(); c++) {
+            //瓒呰繃20琛屾崲椤�
+            if (c % 20 == 0) {
+                List<RowRenderData> rows = new ArrayList<>();
+                //琛ㄦ牸鐨勮鏁�
+                for (int i = 0; i < 21; i++) {
+                    RowRenderData rowRenderData = new RowRenderData();
+                    RowStyle rowStyle = new RowStyle();
+                    rowStyle.setHeight(40);
+                    rowRenderData.setRowStyle(rowStyle);
+                    List<CellRenderData> cells = new ArrayList<>();
+                    //琛ㄦ牸鐨勫垪鏁�
+                    for (int j = 0; j < 7; j++) {
+                        CellRenderData cellRenderData = new CellRenderData();
+                        CellStyle cellStyle = new CellStyle();
+                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
+                        cellRenderData.setCellStyle(cellStyle);
+                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
+                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
+                        ParagraphStyle paragraphStyle = new ParagraphStyle();
+                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
+                        paragraphRenderData.setParagraphStyle(paragraphStyle);
+                        List<RenderData> renderData = new ArrayList<>();
+                        TextRenderData textRenderData = new TextRenderData();
+                        Style style = new Style();
+                        style.setFontFamily("瀹嬩綋");
+                        style.setColor("000000");
+                        textRenderData.setStyle(style);
+                        if (i == 0) {
+                            //绗竴琛�
+                            if (j == 0) {
+                                //绗竴鍒楀簭鍙�
+                                textRenderData.setText("搴忓彿@No.");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 1) {
+                                //绗簩鍒楁牱鍝佸悕绉�
+                                textRenderData.setText("鏍峰搧鍚嶇О@Sample name");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 2) {
+                                //绗笁鍒楁牱鍝佺紪鍙�
+                                textRenderData.setText("鏍峰搧缂栧彿@Sample number");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 3) {
+                                //绗洓鍒椾緵鏍峰崟浣�
+                                textRenderData.setText("渚涙牱鍗曚綅@Sample unit");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 4) {
+                                //绗簲鍒楁暟閲�
+                                textRenderData.setText("鏁伴噺@Quantity");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 5) {
+                                //绗叚鍒楀鐞嗘柟寮�
+                                textRenderData.setText("澶勭悊鏂瑰紡@Processing");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else {
+                                //绗竷鍒楁椂闂�
+                                textRenderData.setText("鏃堕棿@Date");
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                        }
+                        else {
+                            //鍏朵粬琛�
+                            if (j == 0) {
+                                //绗竴鍒�
+                                try{
+                                    String sampleName = processDeals.get((i-1) + (index1 - 1) * 20).getSampleName();
+                                    textRenderData.setText(index + "");
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                index++;
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            } else if (j == 1) {
+                                try{
+                                    textRenderData.setText(processDeals.get((i-1) + (index1 - 1) * 20).getSampleName());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 2) {
+                                try{
+                                    textRenderData.setText(processDeals.get((i-1) + (index1 - 1) * 20).getSampleCode());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 3) {
+                                try{
+                                    textRenderData.setText(processDeals.get((i-1) + (index1 - 1) * 20).getSampleSupplier());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 4) {
+                                try{
+                                    textRenderData.setText(processDeals.get((i-1) + (index1 - 1) * 20).getNum()+"");
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else if (j == 5) {
+                                try{
+                                    textRenderData.setText(processDeals.get((i-1) + (index1 - 1) * 20).getDealMethod());
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                            else {
+                                try{
+                                    textRenderData.setText(processDeals.get((i-1) + (index1 - 1) * 20).getDealTime()+"");
+                                } catch (Exception e) {
+                                    textRenderData.setText("");
+                                }
+                                renderData.add(textRenderData);
+                                paragraphRenderData.setContents(renderData);
+                                paragraphRenderDataList.add(paragraphRenderData);
+                                cellRenderData.setParagraphs(paragraphRenderDataList);
+                                cells.add(cellRenderData);
+                            }
+                        }
+                    }
+                    rowRenderData.setCells(cells);
+                    if (rowRenderData.getCells().size() != 0) {
+                        rows.add(rowRenderData);
+                    }
+                }
+                TableRenderData tableRenderData = new TableRenderData();
+                tableRenderData.setRows(rows);
+                int countSize = tableRenderData.getRows().get(0).getCells().size();
+                for (RowRenderData row : tableRenderData.getRows()) {
+                    if (row.getCells().size() != countSize) {
+                        throw new ErrorException("姣忚鍗曞厓鏍间笉鐩哥瓑");
+                    }
+                }
+                TableStyle tableStyle = new TableStyle();
+                tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH);
+                tableStyle.setAlign(TableRowAlign.CENTER);
+                BorderStyle borderStyle = new BorderStyle();
+                borderStyle.setColor("000000");
+                borderStyle.setType(XWPFTable.XWPFBorderType.THICK);
+                borderStyle.setSize(14);
+                tableStyle.setLeftBorder(borderStyle);
+                tableStyle.setTopBorder(borderStyle);
+                tableStyle.setRightBorder(borderStyle);
+                tableStyle.setBottomBorder(borderStyle);
+                tableRenderData.setTableStyle(tableStyle);
+                Map<String, Object> table = new HashMap<>();
+                table.put("sample", tableRenderData);
+                table.put("index1", index1);
+                sampleList.add(table);
+                index1++;
+            }
+        }
+        Integer finalIndex = index1;
+        XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render(
+                new HashMap<String, Object>() {{
+                    put("sampleList", sampleList);
+                    put("size", finalIndex);
+                    put("examineUrl", null);
+                    put("ratifyUrl", null);
+                    put("writeUrl", new FilePictureRenderData(100,50,imgUrl + "/" + signatureUrl));
+                }});
+        String name = UUID.randomUUID() + "_鏍峰搧澶勭悊鐢宠琛�" + ".docx";
+        try {
+            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        //澶勭悊涓嫳鏂囨崲琛岀殑闂
+        String path = wordUrl + "/" + name;
+        try {
+            FileInputStream stream1 = new FileInputStream(path);
+            XWPFDocument document1 = new XWPFDocument(stream1);
+            List<XWPFTable> xwpfTables1 = document1.getTables();
+            for (int i = 0; i < xwpfTables1.size(); i++) {
+                for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) {
+                    for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) {
+                        if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) {
+                            String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText();
+                            String[] split = text.split("@");
+                            xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0);
+                            XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph();
+                            XWPFRun run = xwpfParagraph.createRun();
+                            run.setText(split[0]);
+                            if (ObjectUtils.isNotNull(split[1])) {
+                                run.addBreak();
+                                run.setText(split[1]);
+                            }
+                            xwpfParagraph.setAlignment(ParagraphAlignment.CENTER);
+                        }
+                    }
+                }
+            }
+            FileOutputStream fileOutputStream1 = new FileOutputStream(path);
+            document1.write(fileOutputStream1);
+            fileOutputStream1.close();
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException(e);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return name;
+    }
+
+    public int wordInsertUrl(Map<String, Object> map, String url) {
+        XWPFTemplate template = XWPFTemplate.compile(url).render(map);
+        try {
+            template.writeAndClose(Files.newOutputStream(Paths.get(url)));
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return 1;
+    }
+}
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsEvaluateServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsEvaluateServiceImpl.java
new file mode 100644
index 0000000..c19c4b5
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsEvaluateServiceImpl.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.QualityMonitorDetailsEvaluateMapper;
+import com.yuanchu.mom.pojo.QualityMonitorDetailsEvaluate;
+import com.yuanchu.mom.service.QualityMonitorDetailsEvaluateService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏璇勪环琛�
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Service
+public class QualityMonitorDetailsEvaluateServiceImpl extends ServiceImpl<QualityMonitorDetailsEvaluateMapper, QualityMonitorDetailsEvaluate> implements QualityMonitorDetailsEvaluateService {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsRatifyServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsRatifyServiceImpl.java
new file mode 100644
index 0000000..0512a9e
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsRatifyServiceImpl.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.QualityMonitorDetailsRatifyMapper;
+import com.yuanchu.mom.pojo.QualityMonitorDetailsRatify;
+import com.yuanchu.mom.service.QualityMonitorDetailsRatifyService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏鎵瑰噯琛�
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Service
+public class QualityMonitorDetailsRatifyServiceImpl extends ServiceImpl<QualityMonitorDetailsRatifyMapper, QualityMonitorDetailsRatify> implements QualityMonitorDetailsRatifyService {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsServiceImpl.java
new file mode 100644
index 0000000..50508ac
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorDetailsServiceImpl.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.QualityMonitorDetailsMapper;
+import com.yuanchu.mom.pojo.QualityMonitorDetails;
+import com.yuanchu.mom.service.QualityMonitorDetailsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝璇︽儏琛�
+ *
+ * @author makejava
+ * @since 2024-11-06
+ */
+@Service
+public class QualityMonitorDetailsServiceImpl extends ServiceImpl<QualityMonitorDetailsMapper, QualityMonitorDetails> implements QualityMonitorDetailsService {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorServiceImpl.java
new file mode 100644
index 0000000..f4c89f5
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualityMonitorServiceImpl.java
@@ -0,0 +1,541 @@
+package com.yuanchu.mom.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+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.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.common.GetLook;
+import com.yuanchu.mom.dto.QualityMonitorDetailsEvaluateDto;
+import com.yuanchu.mom.dto.QualityMonitorDto;
+import com.yuanchu.mom.excel.QualityMonitorDetailsUpload;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.*;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.service.QualityMonitorDetailsEvaluateService;
+import com.yuanchu.mom.service.QualityMonitorDetailsRatifyService;
+import com.yuanchu.mom.service.QualityMonitorDetailsService;
+import com.yuanchu.mom.service.QualityMonitorService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.XWPFDocumentUtils;
+import com.yuanchu.mom.utils.DateImageUtil;
+import com.yuanchu.mom.utils.QueryWrappers;
+import com.yuanchu.mom.utils.UserUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
+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.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+/**
+ * 璐ㄩ噺鐩戞帶璁″垝涓昏〃
+ *
+ * @author zhuo
+ * @since 2024-11-06
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class QualityMonitorServiceImpl extends ServiceImpl<QualityMonitorMapper, QualityMonitor> implements QualityMonitorService {
+
+    @Resource
+    private QualityMonitorDetailsService qualityMonitorDetailsService;
+    @Resource
+    private QualityMonitorDetailsMapper qualityMonitorDetailsMapper;
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private QualityMonitorDetailsRatifyMapper qualityMonitorDetailsRatifyMapper;
+    @Resource
+    private QualityMonitorDetailsRatifyService qualityMonitorDetailsRatifyService;
+    @Resource
+    private QualityMonitorDetailsEvaluateMapper qualityMonitorDetailsEvaluateMapper;
+    @Resource
+    private QualityMonitorDetailsEvaluateService qualityMonitorDetailsEvaluateService;
+    @Resource
+    private QualityMonitorDetailsEvaluateFileMapper qualityMonitorDetailsEvaluateFileMapper;
+    @Resource
+    private GetLook getLook;
+    @Value("${file.path}")
+    private String imgUrl;
+
+    @Value("${wordUrl}")
+    private String wordUrl;
+
+
+    /**
+     * 瀵煎叆鐩戞帶璁″垝
+     * @param file
+     * @return
+     */
+    @Override
+    public boolean importQualityMonitor(MultipartFile file) {
+        // 褰撳墠鐧诲綍鐢ㄦ埛
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        // 鏂囦欢鍚嶇О
+        String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf("."));
+        QualityMonitor qualityMonitor = new QualityMonitor();
+        qualityMonitor.setMonitorName(fileName);
+        qualityMonitor.setWriteUserId(userId);
+        qualityMonitor.setWriteTime(LocalDateTime.now());
+        baseMapper.insert(qualityMonitor);
+
+        List<QualityMonitorDetails> detailsUploadList = new ArrayList<>();
+
+        // 瀵煎叆闄勪欢鍐呭
+        try {
+            // excel瑙f瀽
+            EasyExcel.read(file.getInputStream(), QualityMonitorDetailsUpload.class, new AnalysisEventListener<QualityMonitorDetailsUpload>() {
+                @Override
+                public void invoke(QualityMonitorDetailsUpload detailsUpload, AnalysisContext analysisContext) {
+                    // 鍒ゆ柇鏄惁涓虹┖
+                    if (StringUtils.isNotBlank(detailsUpload.getPlannedTime()) &&
+                            StringUtils.isNotBlank(detailsUpload.getMonitorProject()) &&
+                            StringUtils.isNotBlank(detailsUpload.getParticipant()) &&
+                            StringUtils.isNotBlank(detailsUpload.getBudget()) &&
+                            StringUtils.isNotBlank(detailsUpload.getOrganization()) &&
+                            StringUtils.isNotBlank(detailsUpload.getMonitorWay())) {
+                        // 瀵硅薄澶嶅埗
+                        QualityMonitorDetails monitorDetails = new QualityMonitorDetails();
+                        BeanUtils.copyProperties(detailsUpload, monitorDetails);
+                        monitorDetails.setQualityMonitorId(qualityMonitor.getQualityMonitorId());
+
+                        detailsUploadList.add(monitorDetails);
+                    }
+                }
+                @Override
+                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+                }
+            }).sheet().doRead();
+            qualityMonitorDetailsService.saveBatch(detailsUploadList);
+
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return true;
+    }
+
+    /**
+     * 鐩戞帶璁″垝瀹℃牳
+     * @param qualityMonitor
+     * @return
+     */
+    @Override
+    public boolean examineQualityMonitor(QualityMonitor qualityMonitor) {
+        // 褰撳墠鐧诲綍鐢ㄦ埛
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        baseMapper.update(null, Wrappers.<QualityMonitor>lambdaUpdate()
+                .eq(QualityMonitor::getQualityMonitorId, qualityMonitor.getQualityMonitorId())
+                .set(QualityMonitor::getExamineUserId, userId)
+                .set(QualityMonitor::getExamineRemark, qualityMonitor.getExamineRemark())
+                .set(QualityMonitor::getExamineStatus, qualityMonitor.getExamineStatus())
+                .set(QualityMonitor::getExamineTime, LocalDateTime.now())
+        );
+        return true;
+    }
+
+    /**
+     * 鐩戞帶璁″垝鎵瑰噯
+     * @param qualityMonitor
+     * @return
+     */
+    @Override
+    public boolean ratifyQualityMonitor(QualityMonitor qualityMonitor) {
+        // 褰撳墠鐧诲綍鐢ㄦ埛
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        baseMapper.update(null, Wrappers.<QualityMonitor>lambdaUpdate()
+                .eq(QualityMonitor::getQualityMonitorId, qualityMonitor.getQualityMonitorId())
+                .set(QualityMonitor::getRatifyUserId, userId)
+                .set(QualityMonitor::getRatifyRemark, qualityMonitor.getRatifyRemark())
+                .set(QualityMonitor::getRatifyStatus, qualityMonitor.getRatifyStatus())
+                .set(QualityMonitor::getRatifyTime, LocalDateTime.now())
+        );
+        return true;
+    }
+
+    /**
+     * 鐩戞帶璁″垝鍒楄〃
+     * @param page
+     * @param qualityMonitor
+     * @return
+     */
+    @Override
+    public IPage<QualityMonitorDto> pageQualityMonitor(Page page, QualityMonitor qualityMonitor) {
+        return baseMapper.pageQualityMonitor(page, QueryWrappers.queryWrappers(qualityMonitor));
+    }
+
+    /**
+     * 鐩戞帶璁″垝璇︽儏鍒楄〃
+     * @param page
+     * @param qualityMonitorDetails
+     * @return
+     */
+    @Override
+    public IPage<QualityMonitorDetails> pageQualityMonitorDetail(Page page, QualityMonitorDetails qualityMonitorDetails) {
+        if (qualityMonitorDetails.getQualityMonitorId() == null) {
+            return new Page();
+        }
+        return qualityMonitorDetailsMapper.pageQualityMonitorDetail(page, QueryWrappers.queryWrappers(qualityMonitorDetails));
+    }
+
+    /**
+     * 瀵煎嚭鐩戞帶璁″垝
+     * @param qualityMonitorId
+     * @param response
+     */
+    @Override
+    public void exportQualityMonitorDetail(Integer qualityMonitorId, HttpServletResponse response) {
+        // 鏌ヨ璇︽儏
+        QualityMonitor qualityMonitor = baseMapper.selectById(qualityMonitorId);
+
+        //鑾峰彇鎻愪氦浜虹殑绛惧悕鍦板潃
+        String writeUrl = userMapper.selectById(qualityMonitor.getWriteUserId()).getSignatureUrl();
+        if (ObjectUtils.isEmpty(writeUrl) || writeUrl.equals("")) {
+            throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�");
+        }
+
+        //鑾峰彇澶嶆牳浜虹殑绛惧悕鍦板潃
+        String examineUrl = null;
+        if (qualityMonitor.getExamineUserId() != null) {
+            examineUrl = userMapper.selectById(qualityMonitor.getExamineUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(examineUrl)) {
+                throw new ErrorException("鎵句笉鍒板鏍镐汉鐨勭鍚�");
+            }
+        }
+
+        //鑾峰彇鎵瑰噯浜虹殑绛惧悕鍦板潃
+        String ratifyUrl = null;
+        if (qualityMonitor.getRatifyUserId() != null) {
+            ratifyUrl = userMapper.selectById(qualityMonitor.getRatifyUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(ratifyUrl)) {
+                throw new ErrorException("鎵句笉鍒板鏍镐汉鐨勭鍚�");
+            }
+        }
+
+        // 鏌ヨ璇︽儏
+        List<QualityMonitorDetails> qualityMonitorDetails = qualityMonitorDetailsMapper.selectList(Wrappers.<QualityMonitorDetails>lambdaQuery()
+                .eq(QualityMonitorDetails::getQualityMonitorId, qualityMonitorId));
+
+        // 鍒ゆ柇鐩戞帶鐩殑涓�鏍风殑鍊�
+        AtomicInteger count = new AtomicInteger(1);
+        Map<String, List<QualityMonitorDetails>> listMap = qualityMonitorDetails.stream().collect(Collectors.groupingBy(QualityMonitorDetails::getMonitorPurpose));
+        listMap.forEach((s, details) -> {
+            // 鏌ヨ鏁伴噺瓒呰繃1鐨�
+            if (details.size() > 1) {
+                for (QualityMonitorDetails detail : details) {
+                    detail.setMonitorPurpose(detail.getMonitorPurpose() + "鈭�" + count);
+                }
+                count.getAndIncrement();
+            }
+        });
+
+        int index = 1;
+        for (QualityMonitorDetails qualityMonitorDetail : qualityMonitorDetails) {
+            qualityMonitorDetail.setIndex(index);
+            index++;
+        }
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/quality-monitor.docx");
+        String finalExamineUrl = examineUrl;
+        String finalRatifyUrl = ratifyUrl;
+        Configure configure = Configure.builder()
+                .bind("monitorDetailList", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("monitorDetailList", qualityMonitorDetails);
+                    put("writeUrl", StringUtils.isNotBlank(writeUrl) ? Pictures.ofLocal(imgUrl + "/" + writeUrl).create() : null);
+                    put("examineUrl", StringUtils.isNotBlank(finalExamineUrl) ? Pictures.ofLocal(imgUrl + "/" + finalExamineUrl).create() : null);
+                    put("ratifyUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
+                    put("writeDateUrl", qualityMonitor.getWriteTime() != null ?
+                            Pictures.ofStream(DateImageUtil.createDateImage(qualityMonitor.getWriteTime())).create() : null);
+                    put("examineDateUrl", qualityMonitor.getExamineTime() != null ?
+                            Pictures.ofStream(DateImageUtil.createDateImage(qualityMonitor.getExamineTime())).create() : null);
+                    put("ratifyDateUrl", qualityMonitor.getRatifyTime() != null ?
+                            Pictures.ofStream(DateImageUtil.createDateImage(qualityMonitor.getRatifyTime())).create() : null);
+                }});
+
+        // 澶勭悊鎹㈣闂
+        XWPFDocumentUtils.updateMergeByDocument(template.getXWPFDocument());
+        try {
+            response.setContentType("application/msword");
+            String fileName = URLEncoder.encode(
+                    qualityMonitor.getMonitorName(), "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("瀵煎嚭澶辫触");
+        }
+    }
+
+
+
+    /************************************************************  鎵瑰噯  *******************************************************************/
+
+    /**
+     * 鏌ヨ鐩戞帶璁″垝璇︽儏瀹炴柦淇℃伅
+     * @param qualityMonitorDetailsId
+     * @return
+     */
+    @Override
+    public QualityMonitorDetailsRatify getQualityMonitorRatify(Integer qualityMonitorDetailsId) {
+        QualityMonitorDetailsRatify qualityMonitorDetailsRatify;
+        // 鏌ヨ鐩戞帶閮ㄩ棬id
+        qualityMonitorDetailsRatify = qualityMonitorDetailsRatifyMapper.selectOne(Wrappers.<QualityMonitorDetailsRatify>lambdaQuery()
+                .eq(QualityMonitorDetailsRatify::getQualityMonitorDetailsId, qualityMonitorDetailsId));
+
+        if (qualityMonitorDetailsRatify == null) {
+            // 鏌ヨ璇︽儏璁″垝
+            QualityMonitorDetails qualityMonitorDetails = qualityMonitorDetailsMapper.selectById(qualityMonitorDetailsId);
+            qualityMonitorDetailsRatify = new QualityMonitorDetailsRatify();
+            qualityMonitorDetailsRatify.setQualityMonitorDetailsId(qualityMonitorDetailsId); // 璇︽儏id
+            qualityMonitorDetailsRatify.setMonitorProject(qualityMonitorDetails.getMonitorProject()); // 鐩戞帶椤圭洰
+            qualityMonitorDetailsRatify.setMonitorData(DateUtil.format(new Date(), "yyyy-MM")); // 鐩戞帶鏃堕棿
+            qualityMonitorDetailsRatify.setMonitorPurpose(qualityMonitorDetails.getMonitorPurpose()); // 鐩戞帶鐩殑
+            qualityMonitorDetailsRatify.setParticipant(qualityMonitorDetails.getParticipant()); // 鍙傚姞浜哄憳
+            qualityMonitorDetailsRatify.setBudget(qualityMonitorDetails.getBudget()); // 棰勭畻
+            qualityMonitorDetailsRatify.setInspectionDepartment(userMapper.selectUserDepartmentLimsName(getLook.selectPowerByMethodAndUserId(null).get("userId")));
+        }
+
+        if (qualityMonitorDetailsRatify.getRatifyUserId() != null) {
+            qualityMonitorDetailsRatify.setRatifyName(userMapper.selectById(qualityMonitorDetailsRatify.getRatifyUserId()).getName());
+        }
+
+        return qualityMonitorDetailsRatify;
+    }
+
+    /**
+     * 鏂板鐩戞帶鎵瑰噯瀹炴柦
+     * @param qualityMonitorDetailsRatify
+     * @return
+     */
+    @Override
+    public boolean addQualityMonitorRatify(QualityMonitorDetailsRatify qualityMonitorDetailsRatify) {
+        if (qualityMonitorDetailsRatify.getQualityMonitorDetailsId() == null) {
+            throw new ErrorException("缂哄皯鐩戞帶璇︾粏淇℃伅id");
+        }
+        qualityMonitorDetailsRatifyService.saveOrUpdate(qualityMonitorDetailsRatify);
+        return true;
+    }
+
+    /**
+     * 鐩戞帶璁″垝璇︽儏鎵瑰噯鎰忚
+     * @param qualityMonitorDetailsRatify
+     * @return
+     */
+    @Override
+    public boolean addQualityMonitorRatifyOpinion(QualityMonitorDetailsRatify qualityMonitorDetailsRatify) {
+        qualityMonitorDetailsRatifyService.update(Wrappers.<QualityMonitorDetailsRatify>lambdaUpdate()
+                .eq(QualityMonitorDetailsRatify::getDetailsRatifyId, qualityMonitorDetailsRatify.getDetailsRatifyId())
+                .set(QualityMonitorDetailsRatify::getRatifyOpinion, qualityMonitorDetailsRatify.getRatifyOpinion())
+                .set(QualityMonitorDetailsRatify::getIsFinish, 1));
+        return true;
+    }
+
+    /**
+     * 瀵煎嚭鐩戞帶璁″垝璇︽儏瀹炴柦淇℃伅
+     *
+     * @param detailsRatifyId 鐩戞帶璁″垝璇︽儏瀹炴柦id
+     * @param response  鍝嶅簲
+     */
+    @Override
+    public void exportQualityMonitorRatify(Integer detailsRatifyId, HttpServletResponse response) {
+        QualityMonitorDetailsRatify qualityMonitorDetailsRatify = qualityMonitorDetailsRatifyMapper.selectById(detailsRatifyId);
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/quality-monitor-details-ratify.docx");
+        Configure configure = Configure.builder()
+                .bind("processMethodVerifyMachineAttachmentList", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("qualityMonitorDetailsRatify", qualityMonitorDetailsRatify);
+                    put("ratifyUserUrl", UserUtils.getFinalUserSignatureUrl(qualityMonitorDetailsRatify.getRatifyUserId()));
+                }});
+
+        // 澶勭悊鎹㈣闂
+        XWPFDocumentUtils.updateMergeByDocument(template.getXWPFDocument());
+        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("瀵煎嚭澶辫触");
+        }
+    }
+
+    /************************************************************  璇勪环  *******************************************************************/
+
+    /**
+     * 鏌ヨ璐ㄩ噺鐩戞帶璇勪环
+     * @param qualityMonitorDetailsId
+     * @return
+     */
+    @Override
+    public QualityMonitorDetailsEvaluate getQualityMonitorEvaluate(Integer qualityMonitorDetailsId) {
+        return qualityMonitorDetailsEvaluateMapper.getQualityMonitorEvaluate(qualityMonitorDetailsId);
+    }
+
+    /**
+     * 鏂板鐩戞帶璇勪环
+     * @param qualityMonitorDetailsEvaluate
+     * @return
+     */
+    @Override
+    public boolean addQualityMonitorEvaluate(QualityMonitorDetailsEvaluate qualityMonitorDetailsEvaluate) {
+        if (qualityMonitorDetailsEvaluate.getQualityMonitorDetailsId() == null) {
+            throw new ErrorException("缂哄皯鐩戞帶璇︾粏淇℃伅id");
+        }
+        return qualityMonitorDetailsEvaluateService.saveOrUpdate(qualityMonitorDetailsEvaluate);
+    }
+
+    /**
+     * 鐩戞帶璇勪环瀹℃壒鎰忚
+     * @param qualityMonitorDetailsEvaluate
+     * @return
+     */
+    @Override
+    public boolean addMonitorEvaluateOpinion(QualityMonitorDetailsEvaluate qualityMonitorDetailsEvaluate) {
+        qualityMonitorDetailsEvaluateService.update(Wrappers.<QualityMonitorDetailsEvaluate>lambdaUpdate()
+                .eq(QualityMonitorDetailsEvaluate::getDetailsEvaluateId, qualityMonitorDetailsEvaluate.getDetailsEvaluateId())
+                .set(QualityMonitorDetailsEvaluate::getRatifyOpinion, qualityMonitorDetailsEvaluate.getRatifyOpinion())
+                .set(QualityMonitorDetailsEvaluate::getRatifyTime, LocalDateTime.now())
+                .set(QualityMonitorDetailsEvaluate::getIsFinish, 1));
+        return true;
+    }
+
+    /**
+     * 鏂板鐩戞帶璇勪环闄勪欢琛�
+     * @param detailsEvaluateId
+     * @param file
+     * @return
+     */
+    @Override
+    public boolean uploadEvaluateFile(Integer detailsEvaluateId, MultipartFile file) {
+        if (detailsEvaluateId == null) {
+            throw new ErrorException("缂哄皯鐩戞帶璇︽儏id");
+        }
+
+        String urlString;
+        String pathName;
+        String path;
+        String filename = file.getOriginalFilename();
+        String contentType = file.getContentType();
+        QualityMonitorDetailsEvaluateFile evaluateFile = new QualityMonitorDetailsEvaluateFile();
+        evaluateFile.setDetailsEvaluateId(detailsEvaluateId);
+        evaluateFile.setFileName(filename);
+        if (contentType != null && contentType.startsWith("image/")) {
+            // 鏄浘鐗�
+            path = imgUrl;
+            evaluateFile.setType(1);
+        } else {
+            // 鏄枃浠�
+            path = wordUrl;
+            evaluateFile.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));
+            evaluateFile.setFileUrl(pathName);
+            qualityMonitorDetailsEvaluateFileMapper.insert(evaluateFile);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            System.err.println("闄勪欢涓婁紶閿欒");
+            return false;
+        }
+    }
+
+    /**
+     * 鏌ヨ鐩戞帶璇勪环闄勪欢鍒楄〃
+     * @return
+     */
+    @Override
+    public List<QualityMonitorDetailsEvaluateFile> getEvaluateFileList(Integer detailsEvaluateId) {
+        return qualityMonitorDetailsEvaluateFileMapper.selectList(Wrappers.<QualityMonitorDetailsEvaluateFile>lambdaQuery()
+                .eq(QualityMonitorDetailsEvaluateFile::getDetailsEvaluateId, detailsEvaluateId));
+    }
+
+    /**
+     * 瀵煎嚭鐩戞帶璇勪环
+     * @param detailsEvaluateId 鐩戞帶璇勪环id
+     */
+    @Override
+    public void exportQualityMonitorEvaluate(Integer detailsEvaluateId, HttpServletResponse response) {
+        // 鏌ヨ鐩戞帶璇勪环淇℃伅
+        QualityMonitorDetailsEvaluate qualityMonitorDetailsEvaluate = qualityMonitorDetailsEvaluateMapper.selectById(detailsEvaluateId);
+        // 娓叉煋word妯℃澘瀵硅薄
+        QualityMonitorDetailsEvaluateDto qualityMonitorDetailsEvaluateDto = new QualityMonitorDetailsEvaluateDto();
+        BeanUtils.copyProperties(qualityMonitorDetailsEvaluate, qualityMonitorDetailsEvaluateDto);
+        // 鏍煎紡鍖栨椂闂�
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        qualityMonitorDetailsEvaluateDto.setRatifyTimeStr(qualityMonitorDetailsEvaluate.getRatifyTime().format(dateTimeFormatter));
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/quality-monitor-evaluate.docx");
+        Configure configure = Configure.builder()
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("qualityMonitorDetailsEvaluate", qualityMonitorDetailsEvaluateDto);
+                    put("implementUserUrl", UserUtils.getFinalUserSignatureUrl(Integer.valueOf(qualityMonitorDetailsEvaluate.getImplementUserId())));
+                    put("ratifyUserUrl", UserUtils.getFinalUserSignatureUrl(qualityMonitorDetailsEvaluate.getRatifyUserId()));
+                }});
+
+        // 澶勭悊鎹㈣闂
+        XWPFDocumentUtils.updateMergeByDocument(template.getXWPFDocument());
+        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-process/src/main/java/com/yuanchu/mom/service/impl/QualitySuperviseDetailsServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualitySuperviseDetailsServiceImpl.java
new file mode 100644
index 0000000..84c9ba5
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualitySuperviseDetailsServiceImpl.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.mapper.QualitySuperviseDetailsMapper;
+import com.yuanchu.mom.pojo.QualitySuperviseDetails;
+import com.yuanchu.mom.service.QualitySuperviseDetailsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 璐ㄩ噺鐩戠潱璇︽儏琛�
+ *
+ * @author makejava
+ * @since 2024-11-07
+ */
+@Service
+public class QualitySuperviseDetailsServiceImpl extends ServiceImpl<QualitySuperviseDetailsMapper, QualitySuperviseDetails> implements QualitySuperviseDetailsService {
+
+}
+
diff --git a/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualitySuperviseServiceImpl.java b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualitySuperviseServiceImpl.java
new file mode 100644
index 0000000..9463f93
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/service/impl/QualitySuperviseServiceImpl.java
@@ -0,0 +1,829 @@
+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.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.config.ConfigureBuilder;
+import com.deepoove.poi.data.Pictures;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.QualitySuperviseDetailsAccordingDto;
+import com.yuanchu.mom.dto.QualitySuperviseDetailsCorrectDto;
+import com.yuanchu.mom.dto.QualitySuperviseDetailsDto;
+import com.yuanchu.mom.excel.QualitySuperviseDetailsUpload;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.*;
+import com.yuanchu.mom.pojo.*;
+import com.yuanchu.mom.service.QualitySuperviseDetailsService;
+import com.yuanchu.mom.service.QualitySuperviseService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.XWPFDocumentUtils;
+import com.yuanchu.mom.utils.DateImageUtil;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
+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.File;
+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;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+/**
+ * 璐ㄩ噺鐩戠潱涓昏〃
+ *
+ * @author zhuo
+ * @since 2024-11-07
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class QualitySuperviseServiceImpl extends ServiceImpl<QualitySuperviseMapper, QualitySupervise> implements QualitySuperviseService {
+
+    @Resource
+    private QualitySuperviseDetailsService qualitySuperviseDetailsService;
+    @Resource
+    private QualitySuperviseDetailsMapper qualitySuperviseDetailsMapper;
+    @Resource
+    private QualitySuperviseDetailsRecordMapper qualitySuperviseDetailsRecordMapper;
+    @Resource
+    private QualitySuperviseDetailsAccordingMapper qualitySuperviseDetailsAccordingMapper;
+    @Resource
+    private QualitySuperviseDetailsCorrectMapper qualitySuperviseDetailsCorrectMapper;
+    @Resource
+    private QualitySuperviseDetailsCorrectFileMapper qualitySuperviseDetailsCorrectFileMapper;
+    @Resource
+    private GetLook getLook;
+    @Resource
+    private UserMapper userMapper;
+    @Value("${file.path}")
+    private String imgUrl;
+
+    @Value("${wordUrl}")
+    private String wordUrl;
+
+    /**
+     * 瀵煎叆鐩戠潱璁″垝
+     * @param file
+     * @return
+     */
+    @Override
+    public boolean importQualitySupervise(MultipartFile file) {
+        // 褰撳墠鐧诲綍鐢ㄦ埛
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        User user = userMapper.selectById(userId);
+        // 鏂囦欢鍚嶇О
+        String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf("."));
+        QualitySupervise qualitySupervise = new QualitySupervise();
+        qualitySupervise.setSuperviseName(fileName);
+        qualitySupervise.setWriteUserId(userId);
+        qualitySupervise.setWriteUserName(user.getName());
+        qualitySupervise.setWriteTime(LocalDateTime.now());
+        baseMapper.insert(qualitySupervise);
+
+        List<QualitySuperviseDetails> detailsUploadList = new ArrayList<>();
+
+        // 瀵煎叆闄勪欢鍐呭
+        try {
+            // excel瑙f瀽
+            EasyExcel.read(file.getInputStream(), QualitySuperviseDetailsUpload.class, new AnalysisEventListener<QualitySuperviseDetailsUpload>() {
+                @Override
+                public void invoke(QualitySuperviseDetailsUpload detailsUpload, AnalysisContext analysisContext) {
+                    // 鍒ゆ柇鏄惁涓虹┖
+                    if (StringUtils.isNotBlank(detailsUpload.getSuperviseTime()) &&
+                            StringUtils.isNotBlank(detailsUpload.getSupervisePurpose()) &&
+                            StringUtils.isNotBlank(detailsUpload.getSuperviseProject()) &&
+                            StringUtils.isNotBlank(detailsUpload.getSupervisee()) &&
+                            StringUtils.isNotBlank(detailsUpload.getSuperviseReason()) &&
+                            StringUtils.isNotBlank(detailsUpload.getRemark())) {
+                        // 瀵硅薄澶嶅埗
+                        QualitySuperviseDetails superviseDetails = new QualitySuperviseDetails();
+                        BeanUtils.copyProperties(detailsUpload, superviseDetails);
+                        superviseDetails.setSuperviseId(qualitySupervise.getSuperviseId());
+
+                        detailsUploadList.add(superviseDetails);
+                    }
+                }
+                @Override
+                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+                }
+            }).sheet().doRead();
+            qualitySuperviseDetailsService.saveBatch(detailsUploadList);
+
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return true;
+    }
+
+    /**
+     * 鐩戠潱璁″垝鎵瑰噯
+     * @param qualitySupervise
+     * @return
+     */
+    @Override
+    public boolean ratifyQualitySupervise(QualitySupervise qualitySupervise) {
+        // 褰撳墠鐧诲綍鐢ㄦ埛
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        baseMapper.update(null, Wrappers.<QualitySupervise>lambdaUpdate()
+                .eq(QualitySupervise::getSuperviseId, qualitySupervise.getSuperviseId())
+                .set(QualitySupervise::getRatifyUserId, userId)
+                .set(QualitySupervise::getRatifyRemark, qualitySupervise.getRatifyRemark())
+                .set(QualitySupervise::getRatifyStatus, qualitySupervise.getRatifyStatus())
+                .set(QualitySupervise::getRatifyTime, LocalDateTime.now())
+        );
+        return true;
+    }
+
+    /**
+     * 鐩戠潱璁″垝鍒楄〃
+     * @param page
+     * @param qualitySupervise
+     * @return
+     */
+    @Override
+    public IPage<QualitySupervise> pageQualitySupervise(Page page, QualitySupervise qualitySupervise) {
+        return baseMapper.pageQualitySupervise(page, QueryWrappers.queryWrappers(qualitySupervise));
+    }
+
+    /**
+     * 鐩戠潱璁″垝璇︽儏鍒楄〃
+     * @return
+     */
+    @Override
+    public IPage<QualitySuperviseDetailsDto> pageQualitySuperviseDetail(Page page, QualitySuperviseDetails qualitySuperviseDetails) {
+        if (qualitySuperviseDetails.getSuperviseId() == null) {
+            return new Page();
+        }
+        return qualitySuperviseDetailsMapper.pageQualitySuperviseDetail(page, QueryWrappers.queryWrappers(qualitySuperviseDetails));
+    }
+
+    /**
+     * 瀵煎嚭鐩戠潱璁″垝
+     * @param superviseId
+     * @param response
+     */
+    @Override
+    public void exportQualitySupervise(Integer superviseId, HttpServletResponse response) {
+        QualitySupervise qualitySupervise = baseMapper.selectById(superviseId);
+        //鑾峰彇鎻愪氦浜虹殑绛惧悕鍦板潃
+        String writeUrl = userMapper.selectById(qualitySupervise.getWriteUserId()).getSignatureUrl();
+        if (ObjectUtils.isEmpty(writeUrl) || writeUrl.equals("")) {
+            throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�");
+        }
+
+        //鑾峰彇鎵瑰噯浜虹殑绛惧悕鍦板潃
+        String ratifyUrl = null;
+        if (qualitySupervise.getRatifyUserId() != null) {
+            ratifyUrl = userMapper.selectById(qualitySupervise.getRatifyUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(ratifyUrl)) {
+                throw new ErrorException("鎵句笉鍒板鏍镐汉鐨勭鍚�");
+            }
+        }
+
+        // 鏌ヨ璇︽儏
+        List<QualitySuperviseDetails> qualitySuperviseDetails = qualitySuperviseDetailsMapper.selectList(Wrappers.<QualitySuperviseDetails>lambdaQuery()
+                .eq(QualitySuperviseDetails::getSuperviseId, superviseId));
+
+        // 鍒ゆ柇鐩戠潱鐩殑涓�鏍风殑鍊�
+        AtomicInteger count = new AtomicInteger(1);
+        Map<String, List<QualitySuperviseDetails>> listMap = qualitySuperviseDetails.stream().collect(Collectors.groupingBy(QualitySuperviseDetails::getSupervisePurpose));
+        listMap.forEach((s, details) -> {
+            // 鏌ヨ鏁伴噺瓒呰繃1鐨�
+            if (details.size() > 1) {
+                for (QualitySuperviseDetails detail : details) {
+                    detail.setSupervisePurpose(detail.getSupervisePurpose() + "鈭�" + count);
+                }
+                count.getAndIncrement();
+            }
+        });
+
+        int index = 1;
+        for (QualitySuperviseDetails qualitySuperviseDetail : qualitySuperviseDetails) {
+            qualitySuperviseDetail.setIndex(index);
+            index++;
+        }
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/quality-supervise.docx");
+        String finalRatifyUrl = ratifyUrl;
+        Configure configure = Configure.builder()
+                .bind("superviseDetailList", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("superviseDetailList", qualitySuperviseDetails);
+                    put("writeUrl", StringUtils.isNotBlank(writeUrl) ? Pictures.ofLocal(imgUrl + "/" + writeUrl).create() : null);
+                    put("ratifyUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
+                    put("writeDateUrl", qualitySupervise.getWriteTime() != null ?
+                            Pictures.ofStream(DateImageUtil.createDateImage(qualitySupervise.getWriteTime())).create() : null);
+                    put("ratifyDateUrl", qualitySupervise.getRatifyTime() != null ?
+                            Pictures.ofStream(DateImageUtil.createDateImage(qualitySupervise.getRatifyTime())).create() : null);
+                }});
+
+        // 澶勭悊鎹㈣闂
+        XWPFDocumentUtils.updateMergeByDocument(template.getXWPFDocument());
+        try {
+            response.setContentType("application/msword");
+            String fileName = URLEncoder.encode(
+                    qualitySupervise.getSuperviseName(), "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("瀵煎嚭澶辫触");
+        }
+
+
+    }
+
+    /************************************************ 璁板綍 ******************************************************/
+
+    /**
+     * 鏌ヨ鐩戠潱璁板綍淇℃伅
+     * @param superviseDetailsId
+     * @return
+     */
+    @Override
+    public QualitySuperviseDetailsRecord getSuperviseDetailRecord(Integer superviseDetailsId) {
+        QualitySuperviseDetailsRecord detailsRecord;
+        detailsRecord = qualitySuperviseDetailsRecordMapper.selectOne(Wrappers.<QualitySuperviseDetailsRecord>lambdaQuery()
+                .eq(QualitySuperviseDetailsRecord::getSuperviseDetailsId, superviseDetailsId));
+        if (detailsRecord == null) {
+            detailsRecord = new QualitySuperviseDetailsRecord();
+        }
+        // 娣诲姞鎵瑰噯浜哄悕绉�
+        if (detailsRecord.getRatifyUserId() != null) {
+            User user = userMapper.selectById(getLook.selectPowerByMethodAndUserId(null).get("userId"));
+            detailsRecord.setRatifyUserName(user.getName());
+        }
+        return detailsRecord;
+    }
+
+    /**
+     * 鏂板鐩戠潱璁板綍淇℃伅
+     * @param qualitySuperviseDetailsRecord
+     * @return
+     */
+    @Override
+    public boolean addSuperviseDetailRecord(QualitySuperviseDetailsRecord qualitySuperviseDetailsRecord) {
+        if (qualitySuperviseDetailsRecord.getSuperviseDetailsId() == null) {
+            throw new ErrorException("缂哄皯鐩戠潱璇︾粏淇℃伅id");
+        }
+        qualitySuperviseDetailsRecordMapper.insert(qualitySuperviseDetailsRecord);
+        return true;
+    }
+
+    /**
+     * 鐩戠潱璁板綍鎵瑰噯
+     * @param qualitySuperviseDetailsRecord
+     * @return
+     */
+    @Override
+    public boolean addSuperviseRecordOpinion(QualitySuperviseDetailsRecord qualitySuperviseDetailsRecord) {
+        if (qualitySuperviseDetailsRecord.getIsAccording() == null) {
+            throw new ErrorException("缂哄皯鏈�缁堢粨鏋�");
+        }
+
+        qualitySuperviseDetailsRecordMapper.update(null, Wrappers.<QualitySuperviseDetailsRecord>lambdaUpdate()
+                .eq(QualitySuperviseDetailsRecord::getSuperviseDetailsId, qualitySuperviseDetailsRecord.getSuperviseDetailsId())
+                .set(QualitySuperviseDetailsRecord::getRatifyOpinion, qualitySuperviseDetailsRecord.getRatifyOpinion())
+                .set(QualitySuperviseDetailsRecord::getRatifyTime, LocalDateTime.now())
+                .set(QualitySuperviseDetailsRecord::getIsAccording, qualitySuperviseDetailsRecord.getIsAccording())
+                .set(QualitySuperviseDetailsRecord::getIsFinish, 1));
+        return true;
+    }
+
+    /**
+     * 瀵煎嚭鐩戠潱璁板綍琛�
+     * @param superviseDetailsId
+     * @param response
+     */
+    @Override
+    public void exportSuperviseDetailRecord(Integer superviseDetailsId, HttpServletResponse response) {
+        QualitySuperviseDetailsRecord recordDto =  qualitySuperviseDetailsRecordMapper.selectSuperviseDetailRecord(superviseDetailsId);
+
+        //鑾峰彇鎶�鏈礋璐d汉鐨勭鍚嶅湴鍧�
+        String ratifyUrl = null;
+        if (recordDto.getRatifyUserId() != null) {
+            ratifyUrl = userMapper.selectById(recordDto.getRatifyUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(ratifyUrl)) {
+                throw new ErrorException("鎵句笉鍒版妧鏈礋璐d汉鐨勭鍚�");
+            }
+        }
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/supervision-detail-record.docx");
+        ConfigureBuilder builder = Configure.builder();
+        builder.useSpringEL(true);
+        String finalRatifyUrl = ratifyUrl;
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
+                new HashMap<String, Object>() {{
+                    put("supervision", recordDto);
+                    put("technicalDirectorUrl", StringUtils.isNotBlank(finalRatifyUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create() : null);
+                    put("technicalDirectorDateUrl", recordDto.getRatifyTime() != null ?
+                            Pictures.ofStream(DateImageUtil.createDateImage(recordDto.getRatifyTime())).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("瀵煎嚭澶辫触");
+        }
+    }
+
+    /*************************************************  涓嶅悎鏍煎伐浣滄帶鍒跺崟 ********************************************************/
+
+    /**
+     * 鏂板鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�
+     * @param detailsAccording
+     * @return
+     */
+    @Override
+    public boolean addSuperviseDetailAccording(QualitySuperviseDetailsAccording detailsAccording) {
+        QualitySuperviseDetailsAccording according = new QualitySuperviseDetailsAccording();
+        // 褰撳墠鐧诲綍鐢ㄦ埛淇℃伅鍜岄儴闂�
+        User user = userMapper.selectById(getLook.selectPowerByMethodAndUserId(null).get("userId"));
+        String departmentLimsName = userMapper.selectUserDepartmentLimsName(user.getId());
+        switch (detailsAccording.getFlowType()) {
+                // 涓嶇鍚堝伐浣滄儏鍐佃褰�
+            case 0:
+                if (detailsAccording.getSuperviseDetailsId() == null) {
+                    throw new ErrorException("缂哄皯璐ㄩ噺鐩戠潱璇︽儏Id");
+                }
+                according.setSuperviseDetailsId(detailsAccording.getSuperviseDetailsId());
+                according.setOccurrenceDepartment(detailsAccording.getOccurrenceDepartment());//鍙戠敓閮ㄩ棬
+                according.setHeadDepartment(detailsAccording.getHeadDepartment());//閮ㄩ棬璐熻矗浜�
+                according.setFindWay(detailsAccording.getFindWay());//鍙戠幇閫斿緞
+                according.setRecordDetail(detailsAccording.getRecordDetail());//涓嶇鍚堣褰曡缁�
+                according.setRecordAccording(detailsAccording.getRecordAccording());//涓嶅悎鏍艰褰曚緷鎹�
+
+                according.setFoundDepartment(departmentLimsName);//鍙戠幇閮ㄩ棬
+                according.setRecordUserId(user.getId());//璁板綍浜篿d
+                according.setRecordUserName(user.getName());//璁板綍浜�
+                according.setRecordTime(LocalDate.now());//璁板綍鏃堕棿
+
+                // 澶勭悊浜轰俊鎭�
+                User actionsUser = userMapper.selectById(detailsAccording.getActionsUserId());
+                String actionsDepartmentLims = userMapper.selectUserDepartmentLimsName(actionsUser.getId());
+
+                according.setResponsibleDepartment(actionsDepartmentLims);//璐d换閮ㄩ棬
+                according.setActionsUserId(actionsUser.getId());//澶勭悊浜篿d
+                according.setActionsUserName(actionsUser.getName());//澶勭悊浜�
+
+                according.setSupervisedUserId(detailsAccording.getSupervisedUserId());//琚洃鐫d汉id
+                // 琚洃鐫d汉
+                User supervisedUser = userMapper.selectById(detailsAccording.getSupervisedUserId());
+                according.setSupervisedUserName(supervisedUser.getName());//琚洃鐫d汉
+                according.setActionsTime(detailsAccording.getSupervisedTime());//琚洃鐫f椂闂�
+                qualitySuperviseDetailsAccordingMapper.insert(according);
+                break;
+
+                // 1澶勭悊鎺柦
+            case 1:
+                according.setSuperviseDetailsAccordingId(detailsAccording.getSuperviseDetailsAccordingId());
+                according.setEliminateMeasure(detailsAccording.getEliminateMeasure());//娓呴櫎涓嶇鍚堟帾鏂�
+                according.setActionsTime(LocalDate.now());//澶勭悊鏃堕棿
+
+                // 绾犳璐熻矗浜轰俊鎭�
+                User correctsUser = userMapper.selectById(detailsAccording.getCorrectUserId());
+
+                according.setCorrectUserId(correctsUser.getId());//绾犳璐熻矗浜篿d
+                according.setCorrectUserName(correctsUser.getName());//绾犳璐熻矗浜�
+
+                qualitySuperviseDetailsAccordingMapper.updateById(according);
+                break;
+
+                // 绾犳鎺柦
+            case 2:
+                according.setSuperviseDetailsAccordingId(detailsAccording.getSuperviseDetailsAccordingId());
+                according.setCorrectContent(detailsAccording.getCorrectContent());//绾犳鎺柦鍐呭
+                according.setIsCorrect(detailsAccording.getIsCorrect());//鏄惁绾犳澶勭悊
+                according.setCorrectTime(LocalDate.now());//绾犳濉啓鏃堕棿
+
+                // 璐ㄩ噺璐熻矗浜�
+                User qualityUser = userMapper.selectById(detailsAccording.getQualityManagerUserId());
+                according.setQualityManagerUserId(qualityUser.getId());//璐ㄩ噺璐熻矗浜篿d
+                according.setQualityManagerUserName(qualityUser.getName());//璐ㄩ噺璐熻矗浜�
+
+                qualitySuperviseDetailsAccordingMapper.updateById(according);
+                break;
+
+                //鏄惁閫氱煡瀹㈡埛鍙仮澶嶅伐浣�
+            case 3:
+                according.setSuperviseDetailsAccordingId(detailsAccording.getSuperviseDetailsAccordingId());
+                according.setNotifyCustomer(detailsAccording.getNotifyCustomer());//閫氱煡瀹㈡埛
+                according.setBackToWork(detailsAccording.getBackToWork());//鍥炲宸ヤ綔
+
+                according.setQualityManagerTime(LocalDate.now());//鏃ユ湡
+                according.setIsFinish(1);
+                qualitySuperviseDetailsAccordingMapper.updateById(according);
+                break;
+        }
+        return true;
+    }
+
+    /**
+     * 鏌ヨ鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�
+     * @param superviseDetailsId
+     * @return
+     */
+    @Override
+    public QualitySuperviseDetailsAccording getSuperviseDetailAccording(Integer superviseDetailsId) {
+        QualitySuperviseDetailsAccording detailsAccording;
+
+        detailsAccording = qualitySuperviseDetailsAccordingMapper.selectOne(Wrappers.<QualitySuperviseDetailsAccording>lambdaQuery()
+                .eq(QualitySuperviseDetailsAccording::getSuperviseDetailsId, superviseDetailsId));
+
+        if (detailsAccording == null) {
+            detailsAccording = new QualitySuperviseDetailsAccording();
+        }
+        return detailsAccording;
+    }
+
+    /**
+     * 鏌ヨ涓嶇鍚堥」
+     * @param page
+     * @param detailsAccording
+     * @return
+     */
+    @Override
+    public IPage<QualitySuperviseDetailsAccording> pageSuperviseDetailAccording(Page page, QualitySuperviseDetailsAccording detailsAccording) {
+        return qualitySuperviseDetailsAccordingMapper.pageSuperviseDetailAccording(page, QueryWrappers.queryWrappers(detailsAccording));
+    }
+
+    /**
+     * 瀵煎嚭鐩戠潱璁板綍涓嶇鍚堟帶鍒朵俊鎭�
+     * @param superviseDetailAccordingId
+     * @param response
+     */
+    @Override
+    public void superviseDetailAccordingExport(Integer superviseDetailAccordingId, HttpServletResponse response) {
+        QualitySuperviseDetailsAccordingDto exportDto = qualitySuperviseDetailsAccordingMapper.selectSuperviseDetailsAccording(superviseDetailAccordingId);
+        // 鍙戠幇閮ㄩ棬
+        String discovererUrl = null;
+        if (exportDto.getRecordUserId() != null) {
+            discovererUrl = userMapper.selectById(exportDto.getRecordUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(discovererUrl)) {
+                throw new ErrorException("鎵句笉鍒板彂鐜伴儴闂ㄤ汉鐨勭鍚�");
+            }
+        }
+
+        // 澶勭悊鎺柦璐熻矗浜�
+        String responsibleUrl = null;
+        if (exportDto.getCorrectUserId() != null) {
+            responsibleUrl = userMapper.selectById(exportDto.getCorrectUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(responsibleUrl)) {
+                throw new ErrorException("鎵句笉鍒板鐞嗘帾鏂借礋璐d汉鐨勭鍚�");
+            }
+        }
+
+        // 鎶�鏈礋璐d汉
+        String correctiveUrl = null;
+        if (exportDto.getQualityManagerUserId() != null) {
+            correctiveUrl = userMapper.selectById(exportDto.getQualityManagerUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(correctiveUrl)) {
+                throw new ErrorException("鎵句笉鍒版妧鏈礋璐d汉鐨勭鍚�");
+            }
+        }
+
+        // 璐ㄩ噺璐熻矗浜�
+        String qualityUrl = null;
+        if (exportDto.getQualityManagerUserId() != null) {
+            qualityUrl = userMapper.selectById(exportDto.getQualityManagerUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(qualityUrl)) {
+                throw new ErrorException("鎵句笉鍒拌川閲忚礋璐d汉鐨勭鍚�");
+            }
+        }
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/supervision-detail-according.docx");
+        ConfigureBuilder builder = Configure.builder();
+        String finalDiscovererUrl = discovererUrl;
+        String finalResponsibleUrl = responsibleUrl;
+        String finalCorrectiveUrl = correctiveUrl;
+        String finalQualityUrl = qualityUrl;
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
+                new HashMap<String, Object>() {{
+                    put("control", exportDto);
+                    put("discovererUrl", StringUtils.isNotBlank(finalDiscovererUrl) ? Pictures.ofLocal(imgUrl + "/" + finalDiscovererUrl).create() : null);
+                    put("responsibleUrl", StringUtils.isNotBlank(finalResponsibleUrl) ? Pictures.ofLocal(imgUrl + "/" + finalResponsibleUrl).create() : null);
+                    put("correctiveUrl", StringUtils.isNotBlank(finalCorrectiveUrl) ? Pictures.ofLocal(imgUrl + "/" + finalCorrectiveUrl).create() : null);
+                    put("qualityUrl", StringUtils.isNotBlank(finalQualityUrl) ? Pictures.ofLocal(imgUrl + "/" + finalQualityUrl).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("瀵煎嚭澶辫触");
+        }
+    }
+
+    /*************************************************  绾犳鎺柦澶勭悊鍗� ********************************************************/
+
+
+    @Override
+    public boolean addSuperviseDetailCorrect(QualitySuperviseDetailsCorrect detailsCorrect) {
+        QualitySuperviseDetailsCorrect correct = new QualitySuperviseDetailsCorrect();
+        // 褰撳墠鐧诲綍鐢ㄦ埛淇℃伅鍜岄儴闂�
+        User user = userMapper.selectById(getLook.selectPowerByMethodAndUserId(null).get("userId"));
+        String departmentLimsName = userMapper.selectUserDepartmentLimsName(user.getId());
+
+        switch (detailsCorrect.getFlowType()) {
+                // 涓嶅悎鏍兼彁鍑�
+            case 0:
+                if (detailsCorrect.getSuperviseDetailsId() == null) {
+                    throw new ErrorException("缂哄皯璐ㄩ噺鐩戠潱璇︽儏Id");
+                }
+                correct.setSuperviseDetailsId(detailsCorrect.getSuperviseDetailsId());
+                correct.setRaiseResult(detailsCorrect.getRaiseResult());//涓嶅悎鏍艰〃杩�
+                correct.setVdeRaiseResult(detailsCorrect.getVdeRaiseResult());//vde涓撳鍙戠幇
+                correct.setRaiseDepartment(departmentLimsName);//鎻愬嚭閮ㄩ棬
+                correct.setRaiseUserId(user.getId());//鎻愬嚭浜篿d
+                correct.setRaiseUserName(user.getName());// 鎻愬嚭浜�
+                correct.setRaiseTime(LocalDate.now());// 鎻愬嚭鏃堕棿
+
+                // 鍘熷洜鍒嗘瀽浜轰俊鎭�
+                User causeUser = userMapper.selectById(detailsCorrect.getCauseUserId());
+                String causeDepartmentLims = userMapper.selectUserDepartmentLimsName(causeUser.getId());
+
+                correct.setCauseDepartment(causeDepartmentLims);//鍘熷洜鍒嗘瀽璐d换閮ㄩ棬
+                correct.setCauseUserId(causeUser.getId());//1鍘熷洜鍒嗘瀽浜篿d
+                correct.setCauseUserName(causeUser.getName());// 1鍘熷洜鍒嗘瀽浜�
+                qualitySuperviseDetailsCorrectMapper.insert(correct);
+
+                break;
+
+                // 鍘熷洜鍒嗘瀽
+            case 1:
+                correct.setSuperviseDetailsCorrectId(detailsCorrect.getSuperviseDetailsCorrectId());
+                correct.setCauseResult(detailsCorrect.getCauseResult());//鍘熷洜鍒嗘瀽
+                correct.setCauseTime(LocalDate.now());// 1鍘熷洜鍒嗘瀽鏃堕棿
+
+                // 绾犳浜轰俊鎭�
+                User correctUser = userMapper.selectById(detailsCorrect.getCorrectUserId());
+                String correctUserDepartmentLims = userMapper.selectUserDepartmentLimsName(correctUser.getId());
+
+                correct.setCorrectDepartment(correctUserDepartmentLims);//2绾犳璐d换閮ㄩ棬
+                correct.setCorrectUserId(correctUser.getId());//2绾犳浜篿d
+                correct.setCorrectUserName(correctUser.getName());// 2绾犳浜�
+                qualitySuperviseDetailsCorrectMapper.updateById(correct);
+                break;
+
+                // 绾犳鎺柦
+            case 2:
+                correct.setSuperviseDetailsCorrectId(detailsCorrect.getSuperviseDetailsCorrectId());
+                correct.setCorrectResult(detailsCorrect.getCorrectResult());//2绾犳鎺柦
+                correct.setRaiseDepartmentAffirm(detailsCorrect.getRaiseDepartmentAffirm());//2鎻愬嚭閮ㄩ棬纭
+                correct.setCorrectTime(LocalDate.now());// 2绾犳鏃堕棿
+
+                // 楠岃瘉浜轰俊鎭�
+                User validationUser = userMapper.selectById(detailsCorrect.getValidationUserId());
+                String validationUserDepartmentLims = userMapper.selectUserDepartmentLimsName(validationUser.getId());
+
+                correct.setValidationDepartment(validationUserDepartmentLims);//3楠岃瘉閮ㄩ棬
+                correct.setValidationUserId(validationUser.getId());//3楠岃瘉浜篿d
+                correct.setValidationUserName(validationUser.getName());// 3楠岃瘉浜�
+                qualitySuperviseDetailsCorrectMapper.updateById(correct);
+                break;
+
+                // 楠岃瘉缁撴灉
+            case 3:
+                correct.setSuperviseDetailsCorrectId(detailsCorrect.getSuperviseDetailsCorrectId());
+                correct.setValidationResult(detailsCorrect.getValidationResult());//3楠岃瘉缁撴灉
+                correct.setValidationTime(LocalDate.now());// 3楠岃瘉鏃堕棿
+                correct.setIsFinish(1);
+                qualitySuperviseDetailsCorrectMapper.updateById(correct);
+                break;
+        }
+
+        return true;
+    }
+
+    /**
+     * 鏌ヨ鐩戠潱绾犳澶勭悊
+     * @param superviseDetailsId
+     * @return
+     */
+    @Override
+    public QualitySuperviseDetailsCorrect getSuperviseDetailCorrect(Integer superviseDetailsId) {
+        QualitySuperviseDetailsCorrect detailsCorrect;
+
+        detailsCorrect = qualitySuperviseDetailsCorrectMapper.selectOne(Wrappers.<QualitySuperviseDetailsCorrect>lambdaQuery()
+                .eq(QualitySuperviseDetailsCorrect::getSuperviseDetailsId, superviseDetailsId));
+
+        if (detailsCorrect == null) {
+            detailsCorrect = new QualitySuperviseDetailsCorrect();
+        }
+        return detailsCorrect;
+    }
+
+    /**
+     * 鏌ヨ鐩戠潱绾犳鎺柦鍒楄〃
+     * @param page
+     * @param detailsCorrect
+     * @return
+     */
+    @Override
+    public IPage<QualitySuperviseDetailsCorrect> pageSuperviseDetailCorrect(Page page, QualitySuperviseDetailsCorrect detailsCorrect) {
+        return qualitySuperviseDetailsCorrectMapper.pageSuperviseDetailAccording(page, QueryWrappers.queryWrappers(detailsCorrect));
+    }
+
+    /**
+     * 鏂板鐩戠潱绾犳鎺柦闄勪欢
+     * @param superviseDetailsCorrectId
+     * @param file
+     * @return
+     */
+    @Override
+    public boolean uploadSuperviseDetailCorrectFile(Integer superviseDetailsCorrectId, MultipartFile file) {
+        if (superviseDetailsCorrectId == null) {
+            throw new ErrorException("缂哄皯绾犳鎺柦id");
+        }
+
+        String urlString;
+        String pathName;
+        String path;
+        String filename = file.getOriginalFilename();
+        String contentType = file.getContentType();
+        QualitySuperviseDetailsCorrectFile superviseDetailsCorrectFile = new QualitySuperviseDetailsCorrectFile();
+        superviseDetailsCorrectFile.setSuperviseDetailsCorrectId(superviseDetailsCorrectId);
+        superviseDetailsCorrectFile.setFileName(filename);
+        if (contentType != null && contentType.startsWith("image/")) {
+            // 鏄浘鐗�
+            path = imgUrl;
+            superviseDetailsCorrectFile.setType(1);
+        } else {
+            // 鏄枃浠�
+            path = wordUrl;
+            superviseDetailsCorrectFile.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));
+            superviseDetailsCorrectFile.setFileUrl(pathName);
+            qualitySuperviseDetailsCorrectFileMapper.insert(superviseDetailsCorrectFile);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new ErrorException(e.getMessage());
+        }
+    }
+
+    /**
+     * 鏌ヨ鐩戠潱绾犳鎺柦闄勪欢
+     * @param superviseDetailsCorrectId
+     * @return
+     */
+    @Override
+    public List<QualitySuperviseDetailsCorrectFile> getSuperviseDetailCorrectFileList(Integer superviseDetailsCorrectId) {
+        return qualitySuperviseDetailsCorrectFileMapper.selectList(Wrappers.<QualitySuperviseDetailsCorrectFile>lambdaQuery()
+                .eq(QualitySuperviseDetailsCorrectFile::getSuperviseDetailsCorrectId, superviseDetailsCorrectId));
+    }
+
+    /**
+     * 瀵煎嚭鐩戠潱绾犳鎺柦
+     * @param superviseDetailsCorrectId
+     * @param response
+     */
+    @Override
+    public void exportSuperviseDetaillCorrect(Integer superviseDetailsCorrectId, HttpServletResponse response) {
+        QualitySuperviseDetailsCorrect detailsCorrect = qualitySuperviseDetailsCorrectMapper.selectById(superviseDetailsCorrectId);
+        QualitySuperviseDetailsCorrectDto detailsCorrectDto = new QualitySuperviseDetailsCorrectDto();
+        BeanUtils.copyProperties(detailsCorrect, detailsCorrectDto);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        // 鎻愬嚭鏃堕棿
+        detailsCorrectDto.setRaiseTimeString(detailsCorrectDto.getRaiseTime() != null
+                ? detailsCorrectDto.getRaiseTime().format(formatter) : null);
+        // 鍘熷洜鍒嗘瀽鏃堕棿
+        detailsCorrectDto.setCauseTimeString(detailsCorrectDto.getCauseTime() != null
+                ? detailsCorrectDto.getCauseTime().format(formatter) : null);
+
+        // 绾犳鏃堕棿
+        detailsCorrectDto.setCorrectTimeString(detailsCorrectDto.getCorrectTime() != null
+                ? detailsCorrectDto.getCorrectTime().format(formatter) : null);
+
+        // 楠岃瘉鏃堕棿
+        detailsCorrectDto.setValidationTimeString(detailsCorrectDto.getValidationTime() != null
+                ? detailsCorrectDto.getValidationTime().format(formatter) : null);
+
+
+        // 鎻愬嚭浜虹鍚�
+        String raiseUrl = null;
+        if (detailsCorrectDto.getRaiseUserId() != null) {
+            raiseUrl = userMapper.selectById(detailsCorrectDto.getRaiseUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(raiseUrl)) {
+                throw new ErrorException("鎵句笉鍒版彁鍑轰汉鐨勭鍚�");
+            }
+        }
+
+        // 鍘熷洜鍒嗘瀽浜�
+        String causeUrl = null;
+        if (detailsCorrectDto.getCauseUserId() != null) {
+            causeUrl = userMapper.selectById(detailsCorrectDto.getCauseUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(causeUrl)) {
+                throw new ErrorException("鎵句笉鍒板師鍥犲垎鏋愪汉鐨勭鍚�");
+            }
+        }
+
+        // 绾犳浜�
+        String correctUrl = null;
+        if (detailsCorrectDto.getCorrectUserId() != null) {
+            correctUrl = userMapper.selectById(detailsCorrectDto.getCorrectUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(correctUrl)) {
+                throw new ErrorException("鎵句笉鍒扮籂姝d汉鐨勭鍚�");
+            }
+        }
+
+        // 楠岃瘉浜�
+        String validationUrl = null;
+        if (detailsCorrectDto.getValidationUserId() != null) {
+            validationUrl = userMapper.selectById(detailsCorrectDto.getValidationUserId()).getSignatureUrl();
+            if (StringUtils.isBlank(validationUrl)) {
+                throw new ErrorException("鎵句笉鍒伴獙璇佷汉鐨勭鍚�");
+            }
+        }
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/supervise-detail-correct.docx");
+        ConfigureBuilder builder = Configure.builder();
+        builder.useSpringEL(true);
+        String finalRaiseUrl = raiseUrl;
+        String finalCauseUrl = causeUrl;
+        String finalCorrectUrl = correctUrl;
+        String finalValidationUrl = validationUrl;
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
+                new HashMap<String, Object>() {{
+                    put("correct", detailsCorrectDto);
+                    put("raiseUrl", StringUtils.isNotBlank(finalRaiseUrl) ? Pictures.ofLocal(imgUrl + "/" + finalRaiseUrl).create() : null);
+                    put("causeUrl", StringUtils.isNotBlank(finalCauseUrl) ? Pictures.ofLocal(imgUrl + "/" + finalCauseUrl).create() : null);
+                    put("correctUrl", StringUtils.isNotBlank(finalCorrectUrl) ? Pictures.ofLocal(imgUrl + "/" + finalCorrectUrl).create() : null);
+                    put("validationUrl", StringUtils.isNotBlank(finalValidationUrl) ? Pictures.ofLocal(imgUrl + "/" + finalValidationUrl).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-process/src/main/java/com/yuanchu/mom/utils/UserUtils.java b/cnas-process/src/main/java/com/yuanchu/mom/utils/UserUtils.java
new file mode 100644
index 0000000..7f38185
--- /dev/null
+++ b/cnas-process/src/main/java/com/yuanchu/mom/utils/UserUtils.java
@@ -0,0 +1,101 @@
+package com.yuanchu.mom.utils;
+
+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.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@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;
+    }
+
+    /**
+     * 閫氳繃浜哄憳id鑾峰彇娓叉煋Word鐢ㄦ埛绛惧悕瀵硅薄
+     * @param userId 浜哄憳id
+     * @return 鐢ㄦ埛绛惧悕瀵硅薄 or null
+     */
+    public static PictureRenderData getFinalUserSignatureUrl(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 StringUtils.isNotBlank(userSignatureUrl) ? Pictures.ofLocal(imgUrl + "/" + userSignatureUrl).create() : null;
+    }
+
+    /**
+     * 閫氳繃鍚嶅瓧鑾峰彇鐢ㄦ埛绛惧悕鍦板潃
+     * @param userName 浜哄憳鍚嶅瓧
+     * @return 鐢ㄦ埛绛惧悕鍦板潃
+     */
+    public static String getUserSignatureUrl(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 imgUrl + "/" + userSignatureUrl;
+    }
+
+    /**
+     * 閫氳繃鍚嶅瓧鑾峰彇娓叉煋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;
+    }
+}
diff --git a/cnas-process/src/main/resources/mapper/InconsistentDistributionDetailMapper.xml b/cnas-process/src/main/resources/mapper/InconsistentDistributionDetailMapper.xml
new file mode 100644
index 0000000..d8bf25b
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/InconsistentDistributionDetailMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yuanchu.mom.mapper.InconsistentDistributionDetailMapper">
+
+
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/InconsistentDistributionMapper.xml b/cnas-process/src/main/resources/mapper/InconsistentDistributionMapper.xml
new file mode 100644
index 0000000..6ce6320
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/InconsistentDistributionMapper.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.InconsistentDistributionMapper">
+
+    <!-- 涓嶇鍚堥」鍒嗛〉鏌ヨ -->
+    <select id="pageInconsistentDistribution" resultType="com.yuanchu.mom.dto.InconsistentDistributionDto">
+        select *
+        from (select cid.*,
+                     u1.name create_user_name,
+                     u2.name update_user_name
+              from cnas_inconsistent_distribution cid
+                       left join user u1 on u1.id = cid.create_user
+                       left join user u2 on u2.id = cid.update_user
+              order by cid.create_time desc) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessComplainMapper.xml b/cnas-process/src/main/resources/mapper/ProcessComplainMapper.xml
new file mode 100644
index 0000000..2906809
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessComplainMapper.xml
@@ -0,0 +1,62 @@
+<?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.ProcessComplainMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ProcessComplain">
+        <id column="id" property="id"/>
+        <result column="complain_no" property="complainNo"/>
+        <result column="complain_name" property="complainName"/>
+        <result column="ins_report_id" property="insReportId"/>
+        <result column="sample_code" property="sampleCode"/>
+        <result column="create_user" property="createUser"/>
+        <result column="complainant" property="complainant"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="complain_method" property="complainMethod"/>
+        <result column="problem_records" property="problemRecords"/>
+        <result column="problem_records_user" property="problemRecordsUser"/>
+        <result column="problem_records_time" property="problemRecordsTime"/>
+        <result column="duty_ownership" property="dutyOwnership"/>
+        <result column="duty_ownership_user" property="dutyOwnershipUser"/>
+        <result column="duty_ownership_time" property="dutyOwnershipTime"/>
+        <result column="cause_analysis" property="causeAnalysis"/>
+        <result column="cause_analysis_user" property="causeAnalysisUser"/>
+        <result column="cause_analysis_time" property="causeAnalysisTime"/>
+        <result column="corrective_action" property="correctiveAction"/>
+        <result column="corrective_action_user" property="correctiveActionUser"/>
+        <result column="corrective_action_time" property="correctiveActionTime"/>
+        <result column="corrective_action_confirmation" property="correctiveActionConfirmation"/>
+        <result column="corrective_action_confirmation_user" property="correctiveActionConfirmationUser"/>
+        <result column="corrective_action_confirmation_time" property="correctiveActionConfirmationTime"/>
+    </resultMap>
+    <select id="pageProcessComplain" resultType="com.yuanchu.mom.pojo.ProcessComplain">
+        select *
+        from (select cpc.*,name complainant
+        from cnas_process_complain cpc left join user u on cpc.create_user = u.id)A
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+    <select id="getProcessComplain" resultType="com.yuanchu.mom.dto.ProcessComplainDto">
+        select cpc.*,
+            ir.code,
+               u1.name complainant,
+               u1.phone,
+               u1.email,
+               u2.name problemRecordsUserName,
+               u3.name dutyOwnershipUserName,
+               u4.name causeAnalysisUserName,
+               u5.name correctiveActionUserName,
+               u6.name correctiveActionConfirmationUserName
+        from cnas_process_complain cpc
+                 left join user u1 on cpc.create_user = u1.id
+                 left join user u2 on cpc.problem_records_user = u2.id
+                 left join user u3 on cpc.duty_ownership_user = u3.id
+                 left join user u4 on cpc.cause_analysis_user = u4.id
+                 left join user u5 on cpc.corrective_action_user = u5.id
+                 left join user u6 on cpc.corrective_action_confirmation_user = u6.id
+            left join ins_report ir on cpc.ins_report_id = ir.id
+        where cpc.id=#{id}
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessDealMapper.xml b/cnas-process/src/main/resources/mapper/ProcessDealMapper.xml
new file mode 100644
index 0000000..55aee1f
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessDealMapper.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yuanchu.mom.mapper.ProcessDealMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ProcessDeal">
+        <id column="id" property="id"/>
+        <result column="sample_name" property="sampleName"/>
+        <result column="sample_code" property="sampleCode"/>
+        <result column="sample_supplier" property="sampleSupplier"/>
+        <result column="num" property="num"/>
+        <result column="deal_method" property="dealMethod"/>
+        <result column="deal_time" property="dealTime"/>
+        <result column="create_user" property="createUser"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="totaldeal_id" property="totaldealId"/>
+    </resultMap>
+    <select id="pageProcessDeal" resultType="com.yuanchu.mom.pojo.ProcessDeal">
+        select *
+        from (select * from cnas_process_deal) A
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessEvaluateMapper.xml b/cnas-process/src/main/resources/mapper/ProcessEvaluateMapper.xml
new file mode 100644
index 0000000..5f0719a
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessEvaluateMapper.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yuanchu.mom.mapper.ProcessEvaluateMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ProcessEvaluate">
+        <id column="id" property="id"/>
+        <result column="report_name" property="reportName"/>
+        <result column="report_url" property="reportUrl"/>
+        <result column="evaluate_user" property="evaluateUser"/>
+        <result column="evaluateUserName" property="evaluateUserName"/>
+        <result column="evaluate_time" property="evaluateTime"/>
+        <result column="note" property="note"/>
+        <result column="create_user" property="createUser"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+    <select id="pageProcessEvaluate" resultType="com.yuanchu.mom.pojo.ProcessEvaluate">
+        select * from (select cpe.*,u.name evaluateUserName
+        from cnas_process_evaluate cpe
+        left join user u on cpe.evaluate_user = u.id)A
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml b/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml
new file mode 100644
index 0000000..295161c
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessMethodSearchNewMapper.xml
@@ -0,0 +1,36 @@
+<?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.ProcessMethodSearchNewMapper">
+
+    <!-- 鏍囧噯鏌ユ柊鍒嗛〉鏌ヨ -->
+    <select id="pageMethodSearchNew" resultType="com.yuanchu.mom.pojo.ProcessMethodSearchNew">
+        select *
+        from (select *
+        from cnas_process_method_search_new
+        <where>
+            <if test="beginDate != null and beginDate != '' and endDate != null and endDate != ''">
+                and create_time between #{beginDate} and #{endDate}
+            </if>
+        </where>
+        order by create_time desc
+        ) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+    <select id="selectMethodSearchNew" resultType="com.yuanchu.mom.dto.ProcessMethodSearchNewDto">
+        select *
+        from (select *
+        from cnas_process_method_search_new
+        <where>
+            <if test="beginDate != null and beginDate != '' and endDate != null and endDate != ''">
+                and create_time between #{beginDate} and #{endDate}
+            </if>
+        </where>
+        order by create_time desc
+        ) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessMethodVerifyCalibrationsFileMapper.xml b/cnas-process/src/main/resources/mapper/ProcessMethodVerifyCalibrationsFileMapper.xml
new file mode 100644
index 0000000..0abc07c
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessMethodVerifyCalibrationsFileMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.yuanchu.mom.mapper.ProcessMethodVerifyCalibrationsFileMapper">
+    <select id="selectCalibrationsFileList"
+            resultType="com.yuanchu.mom.dto.ProcessMethodVerifyCalibrationsFileDto">
+        select cf.*,
+               d.device_name,
+               d.management_number
+        from cnas_process_method_verify_calibrations_file cf
+                 left join device d on d.id = cf.device_id
+        where cf.method_verify_id = #{methodVerifyId}
+    </select>
+
+    <!-- 璁惧璇佷功鏌ヨ鏍″噯璇佷功 -->
+    <select id="selectCalibrationsFile" resultType="java.lang.String">
+        select system_file_name
+        from device_metric_record
+        where device_id = #{deviceId}
+          and type = 'calibrate'
+          and status = '0yes'
+        order by create_time desc
+        limit 1
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessMethodVerifyMapper.xml b/cnas-process/src/main/resources/mapper/ProcessMethodVerifyMapper.xml
new file mode 100644
index 0000000..1ca960c
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessMethodVerifyMapper.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.ProcessMethodVerifyMapper">
+
+    <!-- 鏍囧噯鏂规硶璺熸柊楠岃瘉鍒楄〃 -->
+    <select id="pagesMethodVerify" resultType="com.yuanchu.mom.pojo.ProcessMethodVerify">
+        select * from (
+        select method_verify_id,
+        method_name,
+        verify_reason,
+        technology_change,
+        confirm_date,
+        create_time,
+        operation_type
+        from cnas_process_method_verify
+        order by create_time desc
+        ) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessMethodVerifyWorkFileMapper.xml b/cnas-process/src/main/resources/mapper/ProcessMethodVerifyWorkFileMapper.xml
new file mode 100644
index 0000000..07c5a96
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessMethodVerifyWorkFileMapper.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.ProcessMethodVerifyWorkFileMapper">
+
+    <!-- 鏍规嵁鐢ㄦ埛id鏌ヨ涓婂矖璇佸湴鍧� -->
+    <select id="selectWorkFile" resultType="java.lang.String">
+        select system_file_name
+        from cnas_person_post_authorization_record
+        where user_id = #{userId}
+        order by create_time desc
+        limit 1
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessOrderMapper.xml b/cnas-process/src/main/resources/mapper/ProcessOrderMapper.xml
new file mode 100644
index 0000000..b966cdf
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessOrderMapper.xml
@@ -0,0 +1,202 @@
+<?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.ProcessOrderMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ProcessOrder">
+        <id column="id" property="id"/>
+        <result column="ins_order_id" property="insOrderId"/>
+        <result column="rule" property="rule"/>
+        <result column="comprehensive_user" property="comprehensiveUser"/>
+        <result column="comprehensive_time" property="comprehensiveTime"/>
+        <result column="issue_user" property="issueUser"/>
+        <result column="issue_time" property="issueTime"/>
+    </resultMap>
+
+    <resultMap id="ProcessOrderDto" type="com.yuanchu.mom.dto.ProcessOrderDto">
+        <id column="id" property="id"/>
+        <result column="entrust_code" property="entrustCode"/>
+        <result column="sample" property="sample"/>
+        <result column="create_time" property="createTime"/>
+        <result column="sampleType" property="sampleType"/>
+        <result column="company" property="company"/>
+        <result column="production" property="production"/>
+        <result column="productionEn" property="productionEn"/>
+        <result column="prepare_user" property="prepareUser"/>
+        <result column="sample_num" property="sampleNum"/>
+        <result column="ins_state" property="insState"/>
+        <result column="is_leave" property="isLeave"/>
+        <result column="processing" property="processing"/>
+        <result column="phones" property="phone"/>
+        <result column="appointed" property="appointed"/>
+        <result column="send" property="send"/>
+        <result column="rule" property="rule"/>
+        <result column="comprehensive_user" property="comprehensiveUser"/>
+        <result column="comprehensiveUserName" property="comprehensiveUserName"/>
+        <result column="comprehensiveUserUrl" property="comprehensiveUserUrl"/>
+        <result column="comprehensive_time" property="comprehensiveTime"/>
+        <result column="issue_user" property="issueUser"/>
+        <result column="issueUserName" property="issueUserName"/>
+        <result column="issueUserUrl" property="issueUserUrl"/>
+        <result column="issue_time" property="issueTime"/>
+        <collection property="sampleItems" resultMap="SampleItemDto"/>
+    </resultMap>
+    <resultMap id="SampleItemDto" type="com.yuanchu.mom.dto.SampleItemDto">
+        <result column="code" property="code"/>
+        <result column="model" property="model"/>
+        <result column="product" property="product"/>
+        <result column="standardMethodList" property="standardMethodList"/>
+        <result column="remark" property="remark"/>
+    </resultMap>
+
+    <select id="pageProcessOrder" resultMap="ProcessOrderDto">
+        select * from
+        (
+        select cpo.*,
+        u1.signature_url comprehensiveUserUrl,
+        u2.signature_url issueUserUrl,
+        u3.phone phones,
+        ioo.*
+        from cnas_process_order cpo
+        left join user u1 on comprehensive_user = u1.id
+        left join user u2 on issue_user = u2.id
+        left join
+        (SELECT distinct
+        io.id AS iod,
+        io.entrust_code,
+        io.sample,
+        io.create_time,
+        fst.model AS sampleType,
+        io.company,
+        io.production,
+        io.prepare_user,
+        sc.sample_num,
+        io.ins_state,
+        io.is_leave,
+        io.processing,
+        appointed,
+        send
+        FROM cnas_process_order cpo
+        LEFT JOIN ins_order io ON cpo.ins_order_id = io.id
+        LEFT JOIN (
+        SELECT ins_order_id, COUNT(*) AS sample_num
+        FROM ins_sample is2
+        WHERE id in ( SELECT is3.id
+        FROM ins_sample is3 JOIN ins_product ip ON is3.id = ip.ins_sample_id where ip.id is not null)
+        GROUP BY ins_order_id
+        ) sc ON io.id = sc.ins_order_id
+        LEFT JOIN (
+        SELECT isa.ins_order_id, isa.model
+        FROM ins_sample isa
+        JOIN ins_product ip ON isa.id = ip.ins_sample_id
+        WHERE ip.id IS NOT NULL
+        AND ip.state = 1
+        AND isa.id = (
+        SELECT MIN(is2.id)
+        FROM ins_sample is2
+        JOIN ins_product ip2 ON is2.id = ip2.ins_sample_id
+        WHERE ip2.id IS NOT NULL
+        AND ip2.state = 1
+        AND isa.ins_order_id = is2.ins_order_id
+        )
+        ) fst ON io.id = fst.ins_order_id) ioo
+        on cpo.ins_order_id = ioo.iod
+        left join user u3 on prepare_user = u3.name
+        left join (select io2.id,
+        is2.sample_code,
+        GROUP_CONCAT(DISTINCT ip.inspection_item SEPARATOR ' ') AS product,
+        sm.code standardMethodList,
+        is2.remark
+        from ins_order io2
+        left join ins_sample is2 on io2.id = is2.ins_order_id
+        left join standard_method sm on standard_method_list_id = sm.id
+        left join ins_product ip on is2.id = ip.ins_sample_id
+        where ip.id is not null) A on A.id = cpo.ins_order_id
+        ) B
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+    <select id="getProcessOrder" resultMap="ProcessOrderDto">
+        select cpo.*,
+               u1.name          comprehensiveUserName,
+               u1.signature_url comprehensiveUserUrl,
+               u2.name          issueUserName,
+               u2.signature_url issueUserUrl,
+               u3.phone         phones,
+               u3.signature_url prepareUserUrl,
+               ioo.*,
+               A.*
+        from cnas_process_order cpo
+                 left join user u1 on comprehensive_user = u1.id
+                 left join user u2 on issue_user = u2.id
+                 left join
+             (SELECT distinct cpo.id,
+                              io.id     AS iod,
+                              io.entrust_code,
+                              io.sample,
+                              io.create_time,
+                              fst.model AS sampleType,
+                              io.company,
+                              io.production,
+                              io.prepare_user,
+                              sc.sample_num,
+                              io.ins_state,
+                              io.is_leave,
+                              io.processing,
+                              appointed,
+                              send
+              FROM cnas_process_order cpo
+                       LEFT JOIN ins_order io ON cpo.ins_order_id = io.id
+                       LEFT JOIN (
+                  SELECT ins_order_id, COUNT(*) AS sample_num
+                  FROM ins_sample is2
+                  WHERE id in (SELECT is3.id
+                               FROM ins_sample is3
+                                        JOIN ins_product ip ON is3.id = ip.ins_sample_id
+                               where ip.id is not null)
+                  GROUP BY ins_order_id
+              ) sc ON io.id = sc.ins_order_id
+                       LEFT JOIN (
+                  SELECT isa.ins_order_id, isa.model
+                  FROM ins_sample isa
+                           JOIN ins_product ip ON isa.id = ip.ins_sample_id
+                  WHERE ip.id IS NOT NULL
+                    AND ip.state = 1
+                    AND isa.id = (
+                      SELECT MIN(is2.id)
+                      FROM ins_sample is2
+                               JOIN ins_product ip2 ON is2.id = ip2.ins_sample_id
+                      WHERE ip2.id IS NOT NULL
+                        AND ip2.state = 1
+                        AND isa.ins_order_id = is2.ins_order_id)
+              ) fst ON io.id = fst.ins_order_id) ioo on cpo.ins_order_id = ioo.iod
+                 left join user u3 on prepare_user = u3.name
+                 left join
+             (select io2.id,
+                     is2.sample_code                                            code,
+                     is2.model,
+                     GROUP_CONCAT(DISTINCT ip.inspection_item SEPARATOR ' ') AS product,
+                     sm.code                                                    standardMethodList,
+                     is2.remark
+              from ins_order io2
+                       left join ins_sample is2 on io2.id = is2.ins_order_id
+                       left join standard_method sm on standard_method_list_id = sm.id
+                       left join ins_product ip on is2.id = ip.ins_sample_id
+                       left join cnas_process_order cpo2 on io2.id = cpo2.ins_order_id
+              where ip.id is not null
+                and cpo2.id = #{id}) A on A.id = cpo.ins_order_id
+        where cpo.id = #{id}
+    </select>
+    <select id="selectInsOrder" resultType="com.yuanchu.mom.pojo.InspectionOrderDetail">
+        select is2.sample_code                                            sampleNumber,
+               is2.model,
+               GROUP_CONCAT(DISTINCT ip.inspection_item SEPARATOR ',') AS testItem,
+               sm.code                                                    testStandard,
+               is2.remark
+        from ins_sample is2
+                 left join standard_method sm on standard_method_list_id = sm.id
+                 left join ins_product ip on is2.id = ip.ins_sample_id
+        where ip.id is not null
+          and ins_order_id = #{id}
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessReportMapper.xml b/cnas-process/src/main/resources/mapper/ProcessReportMapper.xml
new file mode 100644
index 0000000..3209130
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessReportMapper.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yuanchu.mom.mapper.ProcessReportMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ProcessReport">
+        <id column="id" property="id"/>
+        <result column="ins_report_code" property="insReportCode"/>
+        <result column="pages" property="pages"/>
+        <result column="number" property="number"/>
+        <result column="send" property="send"/>
+        <result column="method" property="method"/>
+        <result column="send_time" property="sendTime"/>
+        <result column="send_user" property="sendUser"/>
+        <result column="signatory" property="signatory"/>
+        <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="pageProcessReport" resultType="com.yuanchu.mom.pojo.ProcessReport">
+        select * from (select cpr.* ,
+        u1.name sendUserName
+        from cnas_process_report cpr
+        left join user u1 on send_user=u1.id )A
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+    <select id="getIds" resultType="com.yuanchu.mom.pojo.ProcessReport">
+        select cpr.* ,
+        u1.name sendUserName
+        from cnas_process_report cpr
+        left join user u1 on send_user=u1.id
+        where 1=1
+        and cpr.id in
+        <foreach collection="ids" separator="," item="id" open="(" close=")">
+            #{id}
+        </foreach>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessSampleMapper.xml b/cnas-process/src/main/resources/mapper/ProcessSampleMapper.xml
new file mode 100644
index 0000000..af87247
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessSampleMapper.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.ProcessSampleMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ProcessSample">
+        <id column="id" property="id" />
+        <result column="sample_name" property="sampleName" />
+        <result column="sample_code" property="sampleCode" />
+        <result column="sample_supplier" property="sampleSupplier" />
+        <result column="num" property="num" />
+        <result column="sample_state" property="sampleState" />
+        <result column="create_user" property="createUser" />
+        <result column="update_user" property="updateUser" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="total_sample_id" property="totalSampleId" />
+        <result column="receive_date" property="receiveDate" />
+        <result column="leave_date" property="leaveDate" />
+        <result column="deal_time" property="dealTime" />
+    </resultMap>
+    <select id="pageProcessSample" resultType="com.yuanchu.mom.pojo.ProcessSample">
+        select *
+        from (select * from cnas_process_sample) A
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessTotalSampleMapper.xml b/cnas-process/src/main/resources/mapper/ProcessTotalSampleMapper.xml
new file mode 100644
index 0000000..ac8d933
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessTotalSampleMapper.xml
@@ -0,0 +1,35 @@
+<?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.ProcessTotalSampleMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ProcessTotalSample">
+        <id column="id" property="id" />
+        <result column="examine_user" property="examineUser"/>
+        <result column="examine_state" property="examineState"/>
+        <result column="examine_url" property="examineUrl"/>
+        <result column="examineUserName" property="examineUserName"/>
+        <result column="ratify_user" property="ratifyUser"/>
+        <result column="ratify_state" property="ratifyState"/>
+        <result column="ratify_url" property="ratifyUrl"/>
+        <result column="ratifyUserName" property="ratifyUserName"/>
+        <result column="submit_user" property="submitUser"/>
+        <result column="submit_state" property="submitState"/>
+        <result column="submit_url" property="submitUrl"/>
+        <result column="submitUserName" property="submitUserName"/>
+        <result column="total_num" property="totalNum"/>
+        <result column="month" property="month"/>
+        <result column="url" property="url"/>
+    </resultMap>
+    <select id="pageProcessTotalSample" resultType="com.yuanchu.mom.pojo.ProcessTotalSample">
+        select *
+        from (select cpt.*, u1.name examineUserName , u2.name ratifyUserName,u3.name submitUserName
+        from cnas_process_total_sample cpt
+        left join user u1 on u1.id = examine_user
+        left join user u2 on u2.id = ratify_user
+        left join user u3 on u3.id = submit_user) A
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/ProcessTotaldealMapper.xml b/cnas-process/src/main/resources/mapper/ProcessTotaldealMapper.xml
new file mode 100644
index 0000000..5886b98
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/ProcessTotaldealMapper.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.ProcessTotaldealMapper">
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ProcessTotaldeal">
+        <id column="id" property="id"/>
+        <result column="examine_user" property="examineUser"/>
+        <result column="examine_state" property="examineState"/>
+        <result column="examine_url" property="examineUrl"/>
+        <result column="examineUserName" property="examineUserName"/>
+        <result column="ratify_user" property="ratifyUser"/>
+        <result column="ratify_state" property="ratifyState"/>
+        <result column="ratify_url" property="ratifyUrl"/>
+        <result column="ratifyUserName" property="ratifyUserName"/>
+        <result column="submit_user" property="submitUser"/>
+        <result column="submit_state" property="submitState"/>
+        <result column="submit_url" property="submitUrl"/>
+        <result column="submitUserName" property="submitUserName"/>
+        <result column="total_num" property="totalNum"/>
+        <result column="month" property="month"/>
+        <result column="url" property="url"/>
+    </resultMap>
+    <select id="pageProcessTotaldeal" resultType="com.yuanchu.mom.pojo.ProcessTotaldeal">
+        select *
+        from (select cpt.*, u1.name examineUserName , u2.name ratifyUserName,u3.name submitUserName
+        from cnas_process_totaldeal cpt
+        left join user u1 on u1.id = examine_user
+        left join user u2 on u2.id = ratify_user
+        left join user u3 on u3.id = submit_user) A
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/QualityMonitorDetailsEvaluateMapper.xml b/cnas-process/src/main/resources/mapper/QualityMonitorDetailsEvaluateMapper.xml
new file mode 100644
index 0000000..6f5ae37
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/QualityMonitorDetailsEvaluateMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.yuanchu.mom.mapper.QualityMonitorDetailsEvaluateMapper">
+
+    <!-- 鏌ヨ璐ㄩ噺鐩戞帶璇勪环 -->
+    <select id="getQualityMonitorEvaluate" resultType="com.yuanchu.mom.pojo.QualityMonitorDetailsEvaluate">
+        select cqmde.*,
+               u1.name implement_name,
+               u2.name ratify_user_name
+        from cnas_quality_monitor_details_evaluate cqmde
+                 left join user u1 on u1.id = cqmde.implement_user_id
+                 left join user u2 on u2.id = cqmde.ratify_user_id
+        where cqmde.quality_monitor_details_id = #{qualityMonitorDetailsId}
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/QualityMonitorDetailsMapper.xml b/cnas-process/src/main/resources/mapper/QualityMonitorDetailsMapper.xml
new file mode 100644
index 0000000..e50b9f2
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/QualityMonitorDetailsMapper.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.QualityMonitorDetailsMapper">
+    <select id="pageQualityMonitorDetail" resultType="com.yuanchu.mom.pojo.QualityMonitorDetails">
+        select * from (
+        select *
+        from cnas_quality_monitor_details
+        order by create_time desc
+        ) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/QualityMonitorMapper.xml b/cnas-process/src/main/resources/mapper/QualityMonitorMapper.xml
new file mode 100644
index 0000000..c50eaa9
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/QualityMonitorMapper.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.QualityMonitorMapper">
+    <!-- 鐩戞帶璁″垝鍒嗛〉鏌ヨ -->
+    <select id="pageQualityMonitor" resultType="com.yuanchu.mom.dto.QualityMonitorDto">
+        select *
+        from (select cqm.*,
+                     u1.name write_name,
+                     u2.name examine_name,
+                     u3.name ratify_name
+              from cnas_quality_monitor cqm
+                       left join user u1 on u1.id = cqm.write_user_id
+                       left join user u2 on u2.id = cqm.write_user_id
+                       left join user u3 on u3.id = cqm.write_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-process/src/main/resources/mapper/QualitySuperviseDetailsAccordingMapper.xml b/cnas-process/src/main/resources/mapper/QualitySuperviseDetailsAccordingMapper.xml
new file mode 100644
index 0000000..8234740
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/QualitySuperviseDetailsAccordingMapper.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.yuanchu.mom.mapper.QualitySuperviseDetailsAccordingMapper">
+
+    <!-- 鏌ヨ涓嶇鍚堟帶鍒跺崟鍒楄〃 -->
+    <select id="pageSuperviseDetailAccording"
+            resultType="com.yuanchu.mom.pojo.QualitySuperviseDetailsAccording">
+        select *
+        from (select *
+              from cnas_quality_supervise_details_according
+              order by create_time desc
+             ) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+
+    <select id="selectSuperviseDetailsAccording"
+            resultType="com.yuanchu.mom.dto.QualitySuperviseDetailsAccordingDto">
+        select sda.*,
+        DATE_FORMAT(sda.record_time, '%Y-%m-%d') discovererDateString,               <!-- 鍙戠幇鏃堕棿 -->
+        DATE_FORMAT(sda.actions_time, '%Y-%m-%d') responsibleDepartmentDateString,   <!-- 澶勭悊鏃堕棿 -->
+        DATE_FORMAT(sda.correct_time, '%Y-%m-%d') correctiveMeasureDateString,       <!-- 绾犳鏃堕棿 -->
+        DATE_FORMAT(sda.quality_manager_time, '%Y-%m-%d') qualitySupervisorDateString,<!-- 璐ㄩ噺鏃堕棿 -->
+        DATE_FORMAT(sda.supervised_time, '%Y-%m-%d') supervisedTimeString,             <!-- 琚洃鐫f椂闂� -->
+        case when sda.is_correct = 1 then '鈽�'
+        else '鈻�' end correctiveMeasureFollowTracksYes, <!-- 绾犳鎺柦澶勭悊鍗曡窡韪�(鏄�) -->
+        case when sda.is_correct = 2 then '鈽�'
+        else '鈻�' end correctiveMeasureFollowTracksNo,   <!-- 绾犳鎺柦澶勭悊鍗曡窡韪�(鍚�) -->
+        case when sda.notify_customer = 1 then '鈽�'
+        else '鈻�' end whetherInformCustomerYes,        <!-- 鍛婄煡瀹㈡埛(鏄�) -->
+        case when sda.notify_customer = 2 then '鈽�'
+        else '鈻�' end whetherInformCustomerNo,          <!-- 鍛婄煡瀹㈡埛(鍚�) -->
+        case when sda.back_to_work = 1 then '鈽�'
+        else '鈻�' end whetherResumeWorkYes,              <!-- 鎭㈠宸ヤ綔(鏄�) -->
+        case when sda.back_to_work = 2 then '鈽�'
+        else '鈻�' end whetherResumeWorkNo,                <!-- 鎭㈠宸ヤ綔(鍚�) -->
+        case when sda.find_way = 0 then '鈽�'
+        else '鈻�' end discoveryApproach0,
+        case when sda.find_way = 1 then '鈽�'
+        else '鈻�' end discoveryApproach1,
+        case when sda.find_way = 2 then '鈽�'
+        else '鈻�' end discoveryApproach2,
+        case when sda.find_way = 3 then '鈽�'
+        else '鈻�' end discoveryApproach3,
+        case when sda.find_way = 4 then '鈽�'
+        else '鈻�' end discoveryApproach4,
+        case when sda.find_way = 5 then '鈽�'
+        else '鈻�' end discoveryApproach5,
+        case when sda.find_way = 6 then '鈽�'
+        else '鈻�' end discoveryApproach6,
+        case when sda.find_way = 7 then '鈽�'
+        else '鈻�' end discoveryApproach7
+        from cnas_quality_supervise_details_according sda
+        where sda.supervise_details_id = #{superviseDetailId}
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/QualitySuperviseDetailsCorrectMapper.xml b/cnas-process/src/main/resources/mapper/QualitySuperviseDetailsCorrectMapper.xml
new file mode 100644
index 0000000..52ae7a3
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/QualitySuperviseDetailsCorrectMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.yuanchu.mom.mapper.QualitySuperviseDetailsCorrectMapper">
+
+    <!-- 鏌ヨ鐩戠潱绾犳鎺柦鍒楄〃 -->
+    <select id="pageSuperviseDetailAccording" resultType="com.yuanchu.mom.pojo.QualitySuperviseDetailsCorrect">
+        select *
+        from (select *
+              from cnas_quality_supervise_details_correct
+              order by create_time desc) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/QualitySuperviseDetailsMapper.xml b/cnas-process/src/main/resources/mapper/QualitySuperviseDetailsMapper.xml
new file mode 100644
index 0000000..9ffd140
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/QualitySuperviseDetailsMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.yuanchu.mom.mapper.QualitySuperviseDetailsMapper">
+
+    <!-- 璐ㄩ噺鐩戠潱璁″垝璇︽儏鍒楄〃 -->
+    <select id="pageQualitySuperviseDetail" resultType="com.yuanchu.mom.dto.QualitySuperviseDetailsDto">
+        select *
+        from (select cd.*,
+                     cr.is_according,
+                     ca.is_correct,
+                     cc.supervise_details_correct_id
+              from cnas_quality_supervise_details cd
+                       left join cnas_quality_supervise_details_record cr
+                                 on cr.supervise_details_id = cd.supervise_details_id
+                       left join cnas_quality_supervise_details_according ca
+                                 on ca.supervise_details_id = cd.supervise_details_id
+                       left join cnas_quality_supervise_details_correct cc
+                                 on cc.supervise_details_id = cd.supervise_details_id
+              order by cd.create_time desc) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/mapper/QualitySuperviseDetailsRecordMapper.xml b/cnas-process/src/main/resources/mapper/QualitySuperviseDetailsRecordMapper.xml
new file mode 100644
index 0000000..5c6cc80
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/QualitySuperviseDetailsRecordMapper.xml
@@ -0,0 +1,11 @@
+<?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.QualitySuperviseDetailsRecordMapper">
+
+    <!--瀵煎嚭鐩戠潱璁板綍琛�-->
+    <select id="selectSuperviseDetailRecord" resultType="com.yuanchu.mom.pojo.QualitySuperviseDetailsRecord">
+        select cqsdr.*
+        from cnas_quality_supervise_details_record cqsdr
+        where cqsdr.supervise_details_id = #{superviseDetailsId}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/cnas-process/src/main/resources/mapper/QualitySuperviseMapper.xml b/cnas-process/src/main/resources/mapper/QualitySuperviseMapper.xml
new file mode 100644
index 0000000..106c046
--- /dev/null
+++ b/cnas-process/src/main/resources/mapper/QualitySuperviseMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.yuanchu.mom.mapper.QualitySuperviseMapper">
+
+    <!-- 鐩戠潱璁″垝鍒楄〃 -->
+    <select id="pageQualitySupervise" resultType="com.yuanchu.mom.pojo.QualitySupervise">
+        select *
+        from (select *
+              from cnas_quality_supervise
+              order by create_time desc ) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+</mapper>
diff --git a/cnas-process/src/main/resources/static/inconsistent-distribution.docx b/cnas-process/src/main/resources/static/inconsistent-distribution.docx
new file mode 100644
index 0000000..d41623f
--- /dev/null
+++ b/cnas-process/src/main/resources/static/inconsistent-distribution.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/inspection-order.docx b/cnas-process/src/main/resources/static/inspection-order.docx
new file mode 100644
index 0000000..dae6093
--- /dev/null
+++ b/cnas-process/src/main/resources/static/inspection-order.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/method-verify.docx b/cnas-process/src/main/resources/static/method-verify.docx
new file mode 100644
index 0000000..0368726
--- /dev/null
+++ b/cnas-process/src/main/resources/static/method-verify.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/quality-monitor-details-ratify.docx b/cnas-process/src/main/resources/static/quality-monitor-details-ratify.docx
new file mode 100644
index 0000000..bf4f413
--- /dev/null
+++ b/cnas-process/src/main/resources/static/quality-monitor-details-ratify.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/quality-monitor-evaluate.docx b/cnas-process/src/main/resources/static/quality-monitor-evaluate.docx
new file mode 100644
index 0000000..92c2208
--- /dev/null
+++ b/cnas-process/src/main/resources/static/quality-monitor-evaluate.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/quality-monitor.docx b/cnas-process/src/main/resources/static/quality-monitor.docx
new file mode 100644
index 0000000..5ddb77a
--- /dev/null
+++ b/cnas-process/src/main/resources/static/quality-monitor.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/quality-supervise.docx b/cnas-process/src/main/resources/static/quality-supervise.docx
new file mode 100644
index 0000000..cf658d4
--- /dev/null
+++ b/cnas-process/src/main/resources/static/quality-supervise.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/report-deal.docx b/cnas-process/src/main/resources/static/report-deal.docx
new file mode 100644
index 0000000..fdd74f4
--- /dev/null
+++ b/cnas-process/src/main/resources/static/report-deal.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/sample-deal.docx b/cnas-process/src/main/resources/static/sample-deal.docx
new file mode 100644
index 0000000..9021b0a
--- /dev/null
+++ b/cnas-process/src/main/resources/static/sample-deal.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/sample-receive.docx b/cnas-process/src/main/resources/static/sample-receive.docx
new file mode 100644
index 0000000..1035f1c
--- /dev/null
+++ b/cnas-process/src/main/resources/static/sample-receive.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/supervise-detail-correct.docx b/cnas-process/src/main/resources/static/supervise-detail-correct.docx
new file mode 100644
index 0000000..f5e3a23
--- /dev/null
+++ b/cnas-process/src/main/resources/static/supervise-detail-correct.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/supervision-detail-according.docx b/cnas-process/src/main/resources/static/supervision-detail-according.docx
new file mode 100644
index 0000000..0b2ac36
--- /dev/null
+++ b/cnas-process/src/main/resources/static/supervision-detail-according.docx
Binary files differ
diff --git a/cnas-process/src/main/resources/static/supervision-detail-record.docx b/cnas-process/src/main/resources/static/supervision-detail-record.docx
new file mode 100644
index 0000000..015e882
--- /dev/null
+++ b/cnas-process/src/main/resources/static/supervision-detail-record.docx
Binary files differ
diff --git a/cnas-resource-require/pom.xml b/cnas-resource-require/pom.xml
new file mode 100644
index 0000000..3437e33
--- /dev/null
+++ b/cnas-resource-require/pom.xml
@@ -0,0 +1,30 @@
+锘�<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.yuanchu.mom</groupId>
+        <artifactId>mom</artifactId>
+        <version>1.0.0</version>
+    </parent>
+
+    <artifactId>cnas-resource-require</artifactId>
+
+    <version>0.0.1-SNAPSHOT</version>
+    <name>cnas-resource-require</name>
+    <description>cnas-resource-require</description>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.yuanchu.mom</groupId>
+            <artifactId>framework</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.yuanchu.mom</groupId>
+            <artifactId>inspect-server</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeCalibrationScheduleController.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeCalibrationScheduleController.java
new file mode 100644
index 0000000..f69873e
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeCalibrationScheduleController.java
@@ -0,0 +1,94 @@
+package com.yuanchu.mom.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.listener.PageReadListener;
+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.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.excel.FeCalibrationScheduleExport;
+import com.yuanchu.mom.pojo.FeCalibrationSchedule;
+import com.yuanchu.mom.service.FeCalibrationScheduleService;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * <p>
+ * 浠櫒璁惧妫�瀹�/鏍″噯璁″垝琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 02:53:05
+ */
+@Api(tags = "閲忓�兼函婧愯鍒�")
+@RestController
+@RequestMapping("/feCalibrationSchedule")
+public class FeCalibrationScheduleController {
+
+    @Resource
+    private FeCalibrationScheduleService feCalibrationScheduleService;
+
+    @ValueClassify(value = "閲忓�兼函婧愯鍒�")
+    @ApiOperation(value = "閲忓�兼函婧愯鍒掓煡璇�")
+    @GetMapping("/getPageCalibrationSchedule")
+    public Result<IPage<FeCalibrationSchedule>> getPageCalibrationSchedule(Page page, String instrumentName, String managementNumber) {
+        IPage<FeCalibrationSchedule> ipage = feCalibrationScheduleService.page(page,instrumentName, managementNumber);
+        return Result.success(ipage);
+    }
+
+    @ValueClassify(value = "閲忓�兼函婧愯鍒�")
+    @ApiOperation(value = "閲忓�兼函婧愯鍒掓柊澧炵紪杈�")
+    @PostMapping("/addCalibrationSchedule")
+    public Result addCalibrationSchedule(@RequestBody FeCalibrationSchedule feCalibrationSchedule) {
+        return Result.success(feCalibrationScheduleService.saveOrUpdate(feCalibrationSchedule));
+    }
+
+    @ValueClassify(value = "閲忓�兼函婧愯鍒�")
+    @ApiOperation(value = "閲忓�兼函婧愯鍒掑垹闄�")
+    @GetMapping("/removeCalibrationSchedule")
+    public Result removeCalibrationSchedule(Integer id) {
+        return Result.success(feCalibrationScheduleService.removeById(id));
+    }
+
+    @ValueClassify(value = "閲忓�兼函婧愯鍒�")
+    @ApiOperation(value = "閲忓�兼函婧愯鍒掑鍑�")
+    @PostMapping("exportOfValueTraceabilityPlan")
+    public void exportOfValueTraceabilityPlan(String instrumentName, String managementNumber,
+                                       HttpServletResponse response) throws Exception {
+        IPage<FeCalibrationSchedule> data = feCalibrationScheduleService.page(new Page<>(1, -1),instrumentName, managementNumber);
+        List<FeCalibrationScheduleExport> studentList  = JSONObject.parseArray(JSON.toJSONString(data.getRecords()), FeCalibrationScheduleExport.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(FeCalibrationScheduleExport.class)
+                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 鑷�傚簲鍒楀
+                .sheet("sheet")
+                .doWrite(studentList);
+    }
+
+    @ValueClassify(value = "閲忓�兼函婧愯鍒掑鍏�")
+    @ApiOperation(value = "importOfValueTraceabilityPlan")
+    @PostMapping("/importOfValueTraceabilityPlan")
+    public void importOfValueTraceabilityPlan(MultipartFile file) throws IOException {
+        if (file.isEmpty()) {
+            return;
+        }
+        EasyExcel.read(file.getInputStream(), FeCalibrationScheduleExport.class, new PageReadListener<FeCalibrationScheduleExport>(dataList -> {
+            List<FeCalibrationSchedule> studentList  = JSONObject.parseArray(JSON.toJSONString(dataList), FeCalibrationSchedule.class);
+            feCalibrationScheduleService.saveOrUpdateBatch(studentList);
+        })).sheet().doRead();
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeIlluminationController.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeIlluminationController.java
new file mode 100644
index 0000000..08556d1
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeIlluminationController.java
@@ -0,0 +1,90 @@
+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.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.dto.FeIlluminationAddDto;
+import com.yuanchu.mom.dto.FeIlluminationDto;
+import com.yuanchu.mom.pojo.FeIllumination;
+import com.yuanchu.mom.pojo.FeIlluminationDetectionArea;
+import com.yuanchu.mom.pojo.FeMeasuredQuantity;
+import com.yuanchu.mom.service.FeIlluminationDetectionAreaService;
+import com.yuanchu.mom.service.FeIlluminationService;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:15:57
+ */
+@RestController
+@RequestMapping("/feIllumination")
+@CustomClazzName(name = "璧勬簮瑕佹眰",index = 6)
+public class FeIlluminationController {
+
+    @Autowired
+    private FeIlluminationService feIlluminationService;
+
+    @Autowired
+    private FeIlluminationDetectionAreaService feIlluminationDetectionAreaService;
+
+    @PostMapping("addFeLightningProtection")
+    @ApiOperation("璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鏂板/淇敼")
+    public Result<?> addFeLightningProtection(@RequestBody FeIlluminationAddDto feIlluminationAddDto) {
+        FeIllumination feIllumination = new FeIllumination();
+        BeanUtils.copyProperties(feIlluminationAddDto, feIllumination);
+        feIlluminationService.saveOrUpdate(feIllumination);
+        feIlluminationAddDto.getIlluminationDetectionAreaList().forEach(i -> i.setIntensityIlluminationId(feIllumination.getIntensityIlluminationId()));
+        feIlluminationDetectionAreaService.saveOrUpdateBatch(feIlluminationAddDto.getIlluminationDetectionAreaList());
+        return Result.success();
+    }
+
+    @DeleteMapping("deleteFeLightningProtection")
+    @ApiOperation("璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鍒犻櫎")
+    public Result<?> deleteFeLightningProtection(@RequestParam("intensityIlluminationId") Integer intensityIlluminationId) {
+        feIlluminationService.removeById(intensityIlluminationId);
+        return Result.success();
+    }
+
+    @GetMapping("getFeLightningProtection")
+    @ApiOperation("鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鏌ヨ")
+    public Result<IPage<FeIlluminationDto>> getFeLightningProtection(Page page) {
+        IPage<FeIlluminationDto> page1 = feIlluminationService.getFeLightningProtection(page);
+        return Result.success(page1);
+    }
+
+    @DeleteMapping("deleteFeIlluminationDetectionArea")
+    @ApiOperation("鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鍒犻櫎")
+    public Result<?> deleteFeIlluminationDetectionArea(@RequestParam("detectionAreaId") Integer detectionAreaId) {
+        return Result.success(feIlluminationDetectionAreaService.removeById(detectionAreaId));
+    }
+
+    @GetMapping("getFeIlluminationDetectionArea")
+    @ApiOperation("鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鏍规嵁鐓у害璁板綍鏌ヨ")
+    public Result<?> getFeIlluminationDetectionArea(@RequestParam("intensityIlluminationId") Integer intensityIlluminationId) {
+        return Result.success(feIlluminationDetectionAreaService.list(Wrappers.<FeIlluminationDetectionArea>lambdaQuery()
+                .eq(FeIlluminationDetectionArea::getIntensityIlluminationId, intensityIlluminationId)));
+    }
+
+    /**
+     * 瀵煎嚭鐓у害璁板綍
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭鐓у害璁板綍")
+    @GetMapping("/exportFeIllumination")
+    public void exportFeIllumination(Integer intensityIlluminationId, HttpServletResponse response){
+        feIlluminationService.exportFeIllumination(intensityIlluminationId, response);
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeLightningProtectionController.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeLightningProtectionController.java
new file mode 100644
index 0000000..c8c4075
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeLightningProtectionController.java
@@ -0,0 +1,94 @@
+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.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.excel.FeLightningProtectionExcel;
+import com.yuanchu.mom.excel.FeStandardSubstanceExcel;
+import com.yuanchu.mom.pojo.FeLightningProtection;
+import com.yuanchu.mom.pojo.FeMeasuredQuantity;
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import com.yuanchu.mom.service.FeLightningProtectionService;
+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 org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:36
+ */
+@Api(tags = "璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴�")
+@RestController
+@RequestMapping("/feLightningProtection")
+@CustomClazzName(name = "璧勬簮瑕佹眰",index = 6)
+public class FeLightningProtectionController {
+
+    @Autowired
+    private FeLightningProtectionService feLightningProtectionService;
+
+    @ValueClassify(value = "璁炬柦鍜岀幆澧冩潯浠惰姹�")
+    @PostMapping("addLightningProtectionDetection")
+    @ApiOperation("璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴嬫柊澧�/淇敼")
+    public Result<?> addLightningProtectionDetection(FeLightningProtection feLightningProtection,
+                                                     @RequestPart(value = "file", required = false) MultipartFile file) {
+        if (ObjectUtils.isNotEmpty(file)) {
+            String s = FileSaveUtil.StoreFile(file);
+            feLightningProtection.setSystemFileName(s);
+            feLightningProtection.setFileName(file.getOriginalFilename());
+        }
+        feLightningProtectionService.saveOrUpdate(feLightningProtection);
+        return Result.success();
+    }
+
+    @ValueClassify(value = "璁炬柦鍜岀幆澧冩潯浠惰姹�")
+    @DeleteMapping("deleteLightningProtectionDetection")
+    @ApiOperation("璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴嬪垹闄�")
+    public Result<?> deleteFeLightningProtection(@RequestParam("lightningProtectionId") Integer lightningProtectionId) {
+        feLightningProtectionService.removeById(lightningProtectionId);
+        return Result.success();
+    }
+
+    @ValueClassify(value = "璁炬柦鍜岀幆澧冩潯浠惰姹�")
+    @GetMapping("getLightningProtectionDetection")
+    @ApiOperation("璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴嬫煡璇�")
+    public Result<IPage<FeLightningProtection>> getFeLightningProtection(Page page) {
+        IPage<FeLightningProtection> page1 = feLightningProtectionService.page(page);
+        return Result.success(page1);
+    }
+
+    @ValueClassify(value = "璁炬柦鍜岀幆澧冩潯浠惰姹�")
+    @ApiOperation(value = "璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴嬪鍑�")
+    @GetMapping("exportOfLightningProtectionDetection")
+    public void exportOfLightningProtectionDetection(HttpServletResponse response) throws Exception {
+        List<FeLightningProtectionExcel> ipage = feLightningProtectionService.exportOfLightningProtectionDetection();
+        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(FeLightningProtectionExcel.class)
+                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 鑷�傚簲鍒楀
+                .sheet("sheet")
+                .doWrite(ipage);
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FePowerStableController.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FePowerStableController.java
new file mode 100644
index 0000000..72e4900
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FePowerStableController.java
@@ -0,0 +1,101 @@
+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.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.dto.FePowerStableAddDto;
+import com.yuanchu.mom.dto.FePowerStableDto;
+import com.yuanchu.mom.pojo.FeMeasuredQuantity;
+import com.yuanchu.mom.pojo.FePowerStable;
+import com.yuanchu.mom.service.FeMeasuredQuantityService;
+import com.yuanchu.mom.service.FePowerStableService;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:52
+ */
+@Api(tags = "璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�")
+@RestController
+@RequestMapping("/fePowerStable")
+@CustomClazzName(name = "璧勬簮瑕佹眰-璁炬柦鍜岀幆澧冩潯浠惰姹�",index = 6)
+public class FePowerStableController {
+
+    @Autowired
+    private FeMeasuredQuantityService feMeasuredQuantityService;
+
+    @Autowired
+    private FePowerStableService fePowerStableService;
+
+    @PostMapping("addLaboratoryFacilityPowerStable")
+    @ApiOperation("鐢垫簮绋冲畾鎬ф柊澧�/淇敼")
+    public Result<?> addLaboratoryFacilityPowerStable(@RequestBody FePowerStableAddDto fePowerStableAddDto) {
+        FePowerStable fePowerStable = new FePowerStable();
+        BeanUtils.copyProperties(fePowerStableAddDto, fePowerStable);
+        fePowerStableService.saveOrUpdate(fePowerStable);
+        fePowerStableAddDto.getFeMeasuredQuantityList().forEach(i -> i.setPowerStableId(fePowerStable.getPowerStableId()));
+        feMeasuredQuantityService.saveOrUpdateBatch(fePowerStableAddDto.getFeMeasuredQuantityList());
+        return Result.success();
+    }
+
+    @DeleteMapping("deleteLaboratoryFacilityPowerStable")
+    @ApiOperation("鐢垫簮绋冲畾鎬у垹闄�")
+    public Result<FePowerStable> deleteLaboratoryFacilityPowerStable(@RequestParam("powerStableId") Integer powerStableId) {
+        fePowerStableService.removeById(powerStableId);
+        feMeasuredQuantityService.remove(Wrappers.<FeMeasuredQuantity>lambdaQuery()
+                .eq(FeMeasuredQuantity::getPowerStableId, powerStableId));
+        return Result.success();
+    }
+
+    @GetMapping("getLaboratoryFacilityPowerStablePage")
+    @ApiOperation("鐢垫簮绋冲畾鎬ф煡璇�")
+    public Result<IPage<FePowerStableDto>> getLaboratoryFacilityPowerStablePage(
+            Page page) {
+        IPage<FePowerStableDto> page1 = fePowerStableService.getLaboratoryFacilityPowerStablePage(page);
+        return Result.success(page1);
+    }
+
+    @ValueAuth
+    @ApiOperation("閫夋嫨璁惧鍚庢煡璇㈡渶鏂拌澶囩紪鍙凤紝鏍″噯鏃ユ湡")
+    @GetMapping("getCalibrationDate")
+    public Result<?> getCalibrationDate(@RequestParam("deviceId") Integer deviceId) {
+        return Result.success(fePowerStableService.getCalibrationDate(deviceId));
+    }
+
+    @DeleteMapping("deleteFeMeasuredQuantity")
+    @ApiOperation("鐢垫簮绋冲畾鎬�-娴嬪畾閲� 鍒犻櫎")
+    public Result<?> deleteFeMeasuredQuantity(@RequestParam("measuredQuantityId") Integer measuredQuantityId) {
+        return Result.success(feMeasuredQuantityService.removeById(measuredQuantityId));
+    }
+
+    @GetMapping("getFeMeasuredQuantityService")
+    @ApiOperation("鐢垫簮绋冲畾鎬�-娴嬪畾閲� 鏍规嵁鐢垫簮绋冲畾鎬ф煡璇�")
+    public Result<?> getFeMeasuredQuantityService(@RequestParam("powerStableId") Integer powerStableId) {
+        return Result.success(feMeasuredQuantityService.list(Wrappers.<FeMeasuredQuantity>lambdaQuery()
+                .eq(FeMeasuredQuantity::getPowerStableId, powerStableId)));
+    }
+
+    /**
+     * 瀵煎嚭鐢垫簮绋冲畾鎬�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭鐢垫簮绋冲畾鎬�")
+    @GetMapping("/exportFePowerStable")
+    public void exportFePowerStable(Integer powerStableId, HttpServletResponse response){
+        fePowerStableService.exportFePowerStable(powerStableId, response);
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceAcceptanceController.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceAcceptanceController.java
new file mode 100644
index 0000000..8bb3f3c
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceAcceptanceController.java
@@ -0,0 +1,105 @@
+package com.yuanchu.mom.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.dto.AcceptanceDto;
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptance;
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.yuanchu.mom.service.FeStandardSubstanceAcceptanceInspectionService;
+import com.yuanchu.mom.service.FeStandardSubstanceAcceptanceService;
+import com.yuanchu.mom.vo.AcceptanceVo;
+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.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川楠屾敹 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:29:41
+ */
+@Api(tags = "鏍囧噯鐗╄川楠屾敹")
+@RestController
+@RequestMapping("/feStandardSubstanceAcceptance")
+public class FeStandardSubstanceAcceptanceController {
+
+    @Autowired
+    private FeStandardSubstanceAcceptanceInspectionService inspectionService;
+    @Resource
+    private FeStandardSubstanceAcceptanceService feStandardSubstanceAcceptanceService;
+
+    @ValueClassify(value = "鏍囧噯鐗╄川楠屾敹")
+    @ApiOperation(value = "鏂板")
+    @PostMapping("/addAcceptance")
+    @Transactional
+    public Result addAcceptance(@RequestBody AcceptanceDto dto) {
+        feStandardSubstanceAcceptanceService.addAcceptance(dto);
+        return Result.success();
+    }
+
+    @ValueClassify(value = "鏍囧噯鐗╄川楠屾敹")
+    @ApiOperation(value = "鏍囧噯鐗╄川楠屾敹鏌ヨ")
+    @GetMapping("/getPageAcceptance")
+    public Result<IPage<AcceptanceVo>> getPageAcceptance(Page page, String name) {
+        IPage<AcceptanceVo> ipage = feStandardSubstanceAcceptanceService.getPageAcceptance(page, name);
+        return Result.success(ipage);
+    }
+
+    @ValueClassify(value = "鏍囧噯鐗╄川楠屾敹")
+    @ApiOperation(value = "鏍囧噯鐗╄川楠屾敹鍒犻櫎")
+    @GetMapping("/deleteAcceptance/{id}")
+    public Result deleteAcceptance(@PathVariable("id") Integer id) {
+        return Result.success(feStandardSubstanceAcceptanceService.deleteAcceptance(id));
+    }
+
+    @ValueClassify(value = "鏍囧噯鐗╄川楠屾敹")
+    @ApiOperation(value = "缂栬緫")
+    @PostMapping("/updateAcceptance")
+    public Result updateAcceptance(@RequestBody AcceptanceDto acceptanceDto) {
+        feStandardSubstanceAcceptanceService.updateById(acceptanceDto.getAcceptance());
+        for (FeStandardSubstanceAcceptanceInspection v : acceptanceDto.getList()) {
+            if (v.getId()== null) {
+                inspectionService.save(v);
+            }else {
+                inspectionService.updateById(v);
+            }
+        }
+        return Result.success();
+    }
+
+
+    @ValueClassify(value = "鏍囧噯鐗╄川楠屾敹")
+    @ApiOperation(value = "鏍囧噯鐗╄川楠屾敹鏌ヨ")
+    @GetMapping("/getAcceptanceDetails")
+    public Result getAcceptanceDetails(Integer id) {
+        return Result.success(feStandardSubstanceAcceptanceService.getAcceptanceDetails(id));
+    }
+
+    @ApiOperation("瀵煎嚭鏍囧噯鐗╄川楠屾敹")
+    @GetMapping("/exportFeStandardSubstanceAcceptance")
+    public Result exportFeStandardSubstanceAcceptance(HttpServletResponse response) {
+        feStandardSubstanceAcceptanceService.exportFeStandardSubstanceAcceptance(response);
+
+        return Result.success();
+    }
+
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceAcceptanceInspectionController.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceAcceptanceInspectionController.java
new file mode 100644
index 0000000..2ccefbc
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceAcceptanceInspectionController.java
@@ -0,0 +1,43 @@
+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.ValueClassify;
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptance;
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.yuanchu.mom.service.FeStandardSubstanceAcceptanceInspectionService;
+import com.yuanchu.mom.vo.AcceptanceVo;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+@Api(tags = "楠屾敹寮�绠辫褰�")
+@RestController
+@RequestMapping("/feStandardSubstanceAcceptanceInspection")
+public class FeStandardSubstanceAcceptanceInspectionController {
+
+
+    @Resource
+    private FeStandardSubstanceAcceptanceInspectionService feStandardSubstanceAcceptanceInspectionService;
+
+
+    @ValueClassify(value = "楠屾敹寮�绠辫褰�")
+    @ApiOperation(value = "鏂板鎴栫紪杈�")
+    @PostMapping("/addInspection")
+    public Result addInspection(@RequestBody FeStandardSubstanceAcceptanceInspection inspection) {
+        feStandardSubstanceAcceptanceInspectionService.saveOrUpdate(inspection);
+        return Result.success();
+    }
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceController.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceController.java
new file mode 100644
index 0000000..8e114a6
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceController.java
@@ -0,0 +1,91 @@
+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.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.excel.FeCalibrationScheduleExport;
+import com.yuanchu.mom.excel.FeStandardSubstanceExcel;
+import com.yuanchu.mom.pojo.FeCalibrationSchedule;
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import com.yuanchu.mom.service.FeStandardSubstanceService;
+import com.yuanchu.mom.vo.Result;
+import com.yuanchu.mom.vo.SubstanceRecordVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 03:58:59
+ */
+@Api(tags = "鏍囧噯鐗╄川娓呭崟")
+@RestController
+@RequestMapping("/feStandardSubstance")
+public class FeStandardSubstanceController {
+
+
+    @Resource
+    private FeStandardSubstanceService feStandardSubstanceService;
+
+    @ValueClassify(value = "鏍囧噯鐗╄川娓呭崟")
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鏌ヨ")
+    @GetMapping("/getPageStandardSubstance")
+    public Result<IPage<FeStandardSubstance>> getPageStandardSubstance(Page page, FeStandardSubstance feStandardSubstance) {
+        IPage<FeStandardSubstance> ipage = feStandardSubstanceService.page(page, feStandardSubstance);
+        return Result.success(ipage);
+    }
+
+    @ValueClassify(value = "鏍囧噯鐗╄川娓呭崟")
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鏂板缂栬緫")
+    @PostMapping("/addStandardSubstance")
+    public Result addStandardSubstance(@RequestBody FeStandardSubstance feStandardSubstance) {
+        return Result.success(feStandardSubstanceService.saveOrUpdate(feStandardSubstance));
+    }
+
+    @ValueClassify(value = "鏍囧噯鐗╄川娓呭崟")
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鍒犻櫎")
+    @GetMapping("/removeStandardSubstance")
+    public Result removeStandardSubstance(Integer id) {
+        return Result.success(feStandardSubstanceService.removeById(id));
+    }
+
+
+    @ValueClassify(value = "鏍囧噯鐗╄川娓呭崟")
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鏌ヨ鎵�鏈�")
+    @GetMapping("/getStandardSubstanceAll")
+    public Result<List<FeStandardSubstance>> getStandardSubstanceAll( ) {
+        return Result.success(feStandardSubstanceService.list());
+    }
+
+
+    @ValueClassify(value = "鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍")
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟瀵煎嚭")
+    @GetMapping("exportOfStandardSubstanceList")
+    public void exportOfStandardSubstanceList(FeStandardSubstance feStandardSubstance,
+                                              HttpServletResponse response) throws Exception {
+        IPage<FeStandardSubstance> ipage = feStandardSubstanceService.page(new Page<>(1, -1), feStandardSubstance);
+        List<FeStandardSubstanceExcel> studentList  = JSONObject.parseArray(JSON.toJSONString(ipage.getRecords()), FeStandardSubstanceExcel.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(FeStandardSubstanceExcel.class)
+                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 鑷�傚簲鍒楀
+                .sheet("sheet")
+                .doWrite(studentList);
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceRecordController.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceRecordController.java
new file mode 100644
index 0000000..f1cb5f6
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeStandardSubstanceRecordController.java
@@ -0,0 +1,74 @@
+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.extension.plugins.pagination.Page;
+import com.yuanchu.mom.annotation.ValueClassify;
+import com.yuanchu.mom.excel.FeCalibrationScheduleExport;
+import com.yuanchu.mom.pojo.FeCalibrationSchedule;
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import com.yuanchu.mom.pojo.FeStandardSubstanceRecord;
+import com.yuanchu.mom.service.FeStandardSubstanceRecordService;
+import com.yuanchu.mom.vo.Result;
+import com.yuanchu.mom.vo.SubstanceRecordVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 01:49:11
+ */
+@Api(tags = "鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍")
+@RestController
+@RequestMapping("/feStandardSubstanceRecord")
+public class FeStandardSubstanceRecordController {
+
+    @Resource
+    private FeStandardSubstanceRecordService feStandardSubstanceRecordService;
+
+    @ValueClassify(value = "鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍")
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鍊熺敤")
+    @PostMapping("/borrowSubstance")
+    @Transactional
+    public Result borrowSubstance(@RequestBody FeStandardSubstanceRecord record) {
+        feStandardSubstanceRecordService.borrowSubstance(record);
+        return Result.success();
+    }
+
+    @ValueClassify(value = "鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍")
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟褰掕繕")
+    @PostMapping("/returnSubstance")
+    @Transactional
+    public Result returnSubstance(@RequestBody FeStandardSubstanceRecord record) {
+        feStandardSubstanceRecordService.returnSubstance(record);
+        return Result.success();
+    }
+
+    @ValueClassify(value = "鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍")
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟棰嗙敤鏌ヨ")
+    @PostMapping("/getSubstanceRecord")
+    public Result getSubstanceRecord(Integer id) {
+        return Result.success(feStandardSubstanceRecordService.getSubstanceRecord(id));
+    }
+
+    @ValueClassify(value = "鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍")
+    @ApiOperation(value = "鍒嗛〉鏌ヨ")
+    @PostMapping("/getPageSubstanceRecord")
+    public Result<IPage<SubstanceRecordVo>> getPageSubstanceRecord(Page page, @RequestBody SubstanceRecordVo vo) {
+        IPage<SubstanceRecordVo> ipage = feStandardSubstanceRecordService.getPage(page,vo);
+        return Result.success(ipage);
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeTempHumDateController.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeTempHumDateController.java
new file mode 100644
index 0000000..7b5bbe8
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeTempHumDateController.java
@@ -0,0 +1,94 @@
+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.CustomClazzName;
+import com.yuanchu.mom.annotation.ValueAuth;
+import com.yuanchu.mom.dto.FeTempHumDateDto;
+import com.yuanchu.mom.dto.FeTempHumRecordDto;
+import com.yuanchu.mom.pojo.FeTempHumDate;
+import com.yuanchu.mom.pojo.FeTempHumRecord;
+import com.yuanchu.mom.service.FeTempHumDateService;
+import com.yuanchu.mom.service.FeTempHumRecordService;
+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;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-09 11:02:18
+ */
+@RestController
+@RequestMapping("/feTempHumDate")
+@CustomClazzName(name = "璧勬簮瑕佹眰",index = 6)
+public class FeTempHumDateController {
+
+    @Autowired
+    private FeTempHumDateService feTempHumDateService;
+
+    @Autowired
+    private FeTempHumRecordService feTempHumRecordService;
+
+    @PostMapping("addFeTempHumDate")
+    @ApiOperation("璇曢獙鍖哄煙-鏂板/淇敼")
+    public Result<?> addFeTempHumDate(@RequestBody FeTempHumDate feTempHumDate) {
+        feTempHumDateService.saveOrUpdate(feTempHumDate);
+        return Result.success();
+    }
+
+    @DeleteMapping("deleteFeTempHumDate")
+    @ApiOperation("璇曢獙鍖哄煙-鍒犻櫎")
+    public Result<?> deleteFeTempHumDate(
+            @RequestParam("dateId") Integer dateId) {
+        feTempHumDateService.removeById(dateId);
+        return Result.success();
+    }
+
+    @GetMapping("getFeTempHumDate")
+    @ApiOperation("璇曢獙鍖哄煙-鏌ヨ")
+    public Result<IPage<FeTempHumDateDto>> getFeTempHumDate(Page page) {
+        IPage<FeTempHumDateDto> page1 = feTempHumDateService.getFeTempHumDate(page);
+        return Result.success(page1);
+    }
+
+    @PostMapping("addFeTempHumRecord")
+    @ApiOperation("璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰曟柊澧�/淇敼")
+    public Result<FeTempHumRecord> addFeTempHumRecord(@RequestBody FeTempHumRecord feTempHumRecord) {
+        feTempHumRecordService.saveOrUpdate(feTempHumRecord);
+        return Result.success();
+    }
+
+    @DeleteMapping("deleteFeTempHumRecord")
+    @ApiOperation("璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰曞垹闄�")
+    public Result<?> deleteFeTempHumRecord(
+            @RequestParam("tempHumId") Integer tempHumId) {
+        feTempHumRecordService.removeById(tempHumId);
+        return Result.success();
+    }
+
+    @GetMapping("getFeTempHumRecordPage")
+    @ApiOperation("璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰曟煡璇�")
+    public Result<IPage<FeTempHumRecordDto>> getFeTempHumRecordPage(Page page, Integer dateId) {
+        IPage<FeTempHumRecordDto> page1 = feTempHumRecordService.getFeTempHumRecordPage(page, dateId);
+        return Result.success(page1);
+    }
+
+    /**
+     * 娓╂箍搴﹁褰曞鍑�
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "娓╂箍搴﹁褰曞鍑�")
+    @GetMapping("/exportTemperatureAndHumidityRecords")
+    public void exportTemperatureAndHumidityRecords(Integer dateId, HttpServletResponse response){
+        feTempHumDateService.exportTemperatureAndHumidityRecords(dateId, response);
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/ForeignRegisterController.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/ForeignRegisterController.java
new file mode 100644
index 0000000..f5f3ef3
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/ForeignRegisterController.java
@@ -0,0 +1,105 @@
+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.dto.ForeignRegisterDto;
+import com.yuanchu.mom.pojo.ForeignRegister;
+import com.yuanchu.mom.service.ForeignRegisterService;
+import com.yuanchu.mom.service.ForeignRegisterService;
+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-11-19 07:17:35
+ */
+@Api(tags = "澶栨潵浜哄憳鐧昏")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/foreignRegister")
+public class ForeignRegisterController {
+
+    private ForeignRegisterService foreignRegisterService;
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ
+     * @param data
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ")
+    @PostMapping("/pageForeignRegister")
+    public Result<IPage<ForeignRegisterDto>> pageForeignRegister(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ForeignRegisterDto foreignRegister = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ForeignRegisterDto.class);
+        return Result.success(foreignRegisterService.pageForeignRegister(page, foreignRegister));
+    }
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鏂板
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "澶栨潵浜哄憳鐧昏鏂板")
+    @PostMapping("/addForeignRegister")
+    public Result addForeignRegister(@RequestBody ForeignRegister foreignRegister){
+        return Result.success(foreignRegisterService.save(foreignRegister));
+    }
+
+    /**
+     * 澶栨潵浜哄憳鐧昏淇敼
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "澶栨潵浜哄憳鐧昏淇敼")
+    @PostMapping("/updateForeignRegister")
+    public Result updateForeignRegister(@RequestBody ForeignRegister foreignRegister){
+        return Result.success(foreignRegisterService.updateById(foreignRegister));
+    }
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鍒犻櫎
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "澶栨潵浜哄憳鐧昏鍒犻櫎")
+    @GetMapping("/delForeignRegister")
+    public Result delForeignRegister(Integer registerId){
+        return Result.success(foreignRegisterService.removeById(registerId));
+    }
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鏌ョ湅璇︽儏
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "澶栨潵浜哄憳鐧昏鏌ョ湅璇︽儏")
+    @GetMapping("/getForeignRegisterOne")
+    public Result<ForeignRegister> getForeignRegisterOne(Integer registerId){
+        return Result.success(foreignRegisterService.getById(registerId));
+    }
+
+    /**
+     * 瀵煎嚭澶栨潵浜哄憳鐧昏
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭澶栨潵浜哄憳鐧昏")
+    @PostMapping("/exportForeignRegister")
+    public void exportForeignRegister(@RequestBody ForeignRegisterDto foreignRegister, HttpServletResponse response){
+        foreignRegisterService.exportForeignRegister(foreignRegister, response);
+    }
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/InternalWastesController.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/InternalWastesController.java
new file mode 100644
index 0000000..0159e64
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/controller/InternalWastesController.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.annotation.ValueAuth;
+import com.yuanchu.mom.dto.InternalWastesDto;
+import com.yuanchu.mom.pojo.InternalWastes;
+import com.yuanchu.mom.service.InternalWastesService;
+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-11-19 06:39:27
+ */
+@Api(tags = "瀹夊叏鍐呭姟涓夊簾鐧昏")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/internalWastes")
+public class InternalWastesController {
+
+    private InternalWastesService internalWastesService;
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鍒嗛〉鏌ヨ
+     * @param data
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊鍒嗛〉鏌ヨ")
+    @PostMapping("/pageInternalWastes")
+    public Result<IPage<InternalWastesDto>> pageInternalWastes(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        InternalWastes internalWastes = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), InternalWastes.class);
+        return Result.success(internalWastesService.pageInternalWastes(page, internalWastes));
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鏂板
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊鏂板")
+    @PostMapping("/addInternalWastes")
+    public Result addInternalWastes(@RequestBody InternalWastesDto internalWastes){
+        return Result.success(internalWastesService.addInternalWastes(internalWastes));
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊淇敼
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊淇敼")
+    @PostMapping("/updateInternalWastes")
+    public Result updateInternalWastes(@RequestBody InternalWastesDto internalWastes){
+        return Result.success(internalWastesService.updateInternalWastes(internalWastes));
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鍒犻櫎
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊鍒犻櫎")
+    @GetMapping("/delInternalWastes")
+    public Result delInternalWastes(Integer wastesId){
+        return Result.success(internalWastesService.delInternalWastes(wastesId));
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鏌ョ湅璇︽儏
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊鏌ョ湅璇︽儏")
+    @GetMapping("/getInternalWastesOne")
+    public Result<InternalWastesDto> getInternalWastesOne(Integer wastesId){
+        return Result.success(internalWastesService.getInternalWastesOne(wastesId));
+    }
+
+    /**
+     * 瀵煎嚭涓夊簾澶勭悊
+     * @return
+     */
+    @ValueAuth
+    @ApiOperation(value = "瀵煎嚭涓夊簾澶勭悊")
+    @GetMapping("/exportInternalWastes")
+    public void exportInternalWastes(Integer wastesId, HttpServletResponse response){
+        internalWastesService.exportInternalWastes(wastesId, response);
+    }
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/AcceptanceDto.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/AcceptanceDto.java
new file mode 100644
index 0000000..55e1475
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/AcceptanceDto.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptance;
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptanceInspection;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AcceptanceDto {
+
+    private FeStandardSubstanceAcceptance acceptance;
+
+    private List<FeStandardSubstanceAcceptanceInspection> list;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationAddDto.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationAddDto.java
new file mode 100644
index 0000000..9e09a28
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationAddDto.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.FeIllumination;
+import com.yuanchu.mom.pojo.FeIlluminationDetectionArea;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FeIlluminationAddDto extends FeIllumination {
+
+    @ApiModelProperty("璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩�")
+    private List<FeIlluminationDetectionArea> illuminationDetectionAreaList;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationDto.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationDto.java
new file mode 100644
index 0000000..0bc7f03
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationDto.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.FeIllumination;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FeIlluminationDto extends FeIllumination {
+    @ApiModelProperty("妫�娴嬭��")
+    private String checkerUser;
+
+    @ApiModelProperty("鏍告煡浜�")
+    private String testerUser;
+
+    @ApiModelProperty("璁惧鍚嶇О")
+    private String deviceName;
+
+    @ApiModelProperty("璁惧缂栧彿")
+    private String managementNumber;
+
+    @ApiModelProperty("鏍″噯鏃ユ湡")
+    private Date calibrationDate;
+
+    @ApiModelProperty("涓嬫鏍″噯鏃ユ湡")
+    private Date nextCalibrationDate;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationExportDto.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationExportDto.java
new file mode 100644
index 0000000..5a7c5df
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeIlluminationExportDto.java
@@ -0,0 +1,27 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.FeIllumination;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/28
+ */
+@Data
+public class FeIlluminationExportDto extends FeIllumination {
+
+    @ApiModelProperty("璁惧鍚嶇О")
+    private String deviceName;
+
+    @ApiModelProperty("璁惧缂栧彿")
+    private String managementNumber;
+
+    @ApiModelProperty("鏍″噯鏃ユ湡")
+    private String calibrationDateString;
+
+    @ApiModelProperty("涓嬫鏍″噯鏃ユ湡")
+    private String nextCalibrationDateString;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableAddDto.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableAddDto.java
new file mode 100644
index 0000000..7bb6251
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableAddDto.java
@@ -0,0 +1,15 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.FeMeasuredQuantity;
+import com.yuanchu.mom.pojo.FePowerStable;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FePowerStableAddDto extends FePowerStable {
+
+    @ApiModelProperty("璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�-娴嬪畾閲�")
+    private List<FeMeasuredQuantity> feMeasuredQuantityList;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableDto.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableDto.java
new file mode 100644
index 0000000..648dcb8
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableDto.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.FePowerStable;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FePowerStableDto extends FePowerStable {
+
+    @ApiModelProperty("妫�娴嬭��")
+    private String checkerUser;
+
+    @ApiModelProperty("鏍告煡浜�")
+    private String testerUser;
+
+    @ApiModelProperty("璁惧鍚嶇О")
+    private String deviceName;
+
+    @ApiModelProperty("璁惧缂栧彿")
+    private String managementNumber;
+
+    @ApiModelProperty("鏍″噯鏃ユ湡")
+    private Date calibrationDate;
+
+    @ApiModelProperty("涓嬫鏍″噯鏃ユ湡")
+    private Date nextCalibrationDate;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableExportDto.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableExportDto.java
new file mode 100644
index 0000000..eeb0ae2
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FePowerStableExportDto.java
@@ -0,0 +1,32 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.FePowerStable;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/28
+ */
+@Data
+public class FePowerStableExportDto extends FePowerStable {
+
+    @ApiModelProperty("娴嬭瘯鏃ユ湡")
+    private String testDateString;
+
+    @ApiModelProperty("璁惧鍚嶇О")
+    private String deviceName;
+
+    @ApiModelProperty("璁惧缂栧彿")
+    private String managementNumber;
+
+    @ApiModelProperty("鏍″噯鏃ユ湡")
+    private String calibrationDateString;
+
+    @ApiModelProperty("涓嬫鏍″噯鏃ユ湡")
+    private String nextCalibrationDateString;
+
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeTempHumDateDto.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeTempHumDateDto.java
new file mode 100644
index 0000000..4de58ea
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeTempHumDateDto.java
@@ -0,0 +1,12 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.FeTempHumDate;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class FeTempHumDateDto extends FeTempHumDate {
+
+    @ApiModelProperty("鍒涘缓浜�")
+    private String createName;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeTempHumRecordDto.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeTempHumRecordDto.java
new file mode 100644
index 0000000..e2f9fab
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/FeTempHumRecordDto.java
@@ -0,0 +1,26 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.FeTempHumRecord;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class FeTempHumRecordDto extends FeTempHumRecord {
+
+    @ApiModelProperty("涓嬪崍璁板綍鍛樺悕绉�")
+    private String afternoonRecorderUser;
+
+    @ApiModelProperty("涓婂崍璁板綍鍛樺悕绉�")
+    private String morningRecorderUser;
+
+    @ApiModelProperty("妫�娴嬪ぉ")
+    private Integer month;
+
+    @ApiModelProperty("涓嬪崍鏃堕棿")
+    private String afternoonTimeStr;
+
+    @ApiModelProperty("涓婂崍-鏃堕棿")
+    private String morningTestTimeStr;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/ForeignRegisterDto.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/ForeignRegisterDto.java
new file mode 100644
index 0000000..84ec4e3
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/ForeignRegisterDto.java
@@ -0,0 +1,32 @@
+package com.yuanchu.mom.dto;
+
+import com.deepoove.poi.data.PictureRenderData;
+import com.yuanchu.mom.pojo.ForeignRegister;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/19
+ */
+@Data
+public class ForeignRegisterDto extends ForeignRegister {
+
+    @ApiModelProperty("寮�濮嬫椂闂�")
+    private String beginDate;
+
+    @ApiModelProperty("缁撴潫鏃堕棿")
+    private String endDate;
+
+    @ApiModelProperty("闄悓浜哄憳绛惧悕")
+    private PictureRenderData accompanyingRender;
+
+    @ApiModelProperty("鎵瑰噯浜哄憳绛惧悕")
+    private PictureRenderData approveRender;
+
+    @ApiModelProperty("闄悓浜哄憳绛惧悕鍦板潃")
+    private String accompanyingUrl;
+
+    @ApiModelProperty("闄悓浜哄憳绛惧悕鍦板潃")
+    private String approveUrl;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/InternalWastesDto.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/InternalWastesDto.java
new file mode 100644
index 0000000..2b23107
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/dto/InternalWastesDto.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.dto;
+
+import com.yuanchu.mom.pojo.InternalWastes;
+import com.yuanchu.mom.pojo.InternalWastesDetail;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author zhuo
+ * @Date 2024/11/19
+ */
+@Data
+public class InternalWastesDto extends InternalWastes {
+
+    @ApiModelProperty("涓夊簾鐧昏璇︽儏")
+    private List<InternalWastesDetail> wastesDetailList;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeCalibrationScheduleExport.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeCalibrationScheduleExport.java
new file mode 100644
index 0000000..28e8e55
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeCalibrationScheduleExport.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 FeCalibrationScheduleExport {
+    @ExcelProperty("浠櫒鍚嶇О")
+    private String instrumentName;
+
+    @ExcelProperty("瑙勬牸鍨嬪彿")
+    private String model;
+
+    @ExcelProperty("绠$悊缂栧彿")
+    private Integer managementNumber;
+
+    @ExcelProperty("鎶�鏈寚鏍�")
+    private String technicalIndicators;
+
+    @ExcelProperty("妫�瀹氬懆鏈�")
+    private String verificationCyde;
+
+    @ExcelProperty("妫�瀹氬崟浣�")
+    private String verificationUnit;
+
+    @ExcelProperty("鏈�杩戞瀹氭椂闂�")
+    private LocalDateTime recentlyTime;
+
+    @ExcelProperty("璁″垝涓嬫妫�瀹氭椂闂�")
+    private LocalDateTime nextTime;
+
+    @ExcelProperty("澶囨敞")
+    private String remark;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeLightningProtectionExcel.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeLightningProtectionExcel.java
new file mode 100644
index 0000000..c01c462
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeLightningProtectionExcel.java
@@ -0,0 +1,25 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+public class FeLightningProtectionExcel {
+    @ExcelProperty("鍘熸枃浠跺悕")
+    private String fileName;
+
+    @ExcelProperty("妫�娴嬫棩鏈�")
+    private String detectionDate;
+
+    @ExcelProperty("鏈夋晥鏈�")
+    private String termValidity;
+
+    @ExcelProperty("妫�娴嬪崟浣�")
+    private String detectionUnit;
+
+    @ExcelProperty("鍒涘缓鏃堕棿")
+    private String createTime;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeStandardSubstanceExcel.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeStandardSubstanceExcel.java
new file mode 100644
index 0000000..686596c
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/excel/FeStandardSubstanceExcel.java
@@ -0,0 +1,55 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class FeStandardSubstanceExcel {
+    @ExcelProperty("鏍囧噯鐗╄川鍚嶇О")
+    private String name;
+
+    @ExcelProperty("瑙勬牸鍨嬪彿")
+    private String model;
+
+    @ExcelProperty("鐢熶骇鍘傚")
+    private String factoryManufacturer;
+
+    @ExcelProperty("鍑哄満缂栧彿")
+    private String factoryNum;
+
+    @ExcelProperty("绠$悊缂栧彿")
+    private String manageNum;
+
+    @ExcelProperty("涓嶇‘瀹氬害")
+    private String uncertainty;
+
+    @ExcelProperty("鏁伴噺")
+    private Long quantity;
+
+    @ExcelProperty("璐疆鏃ユ湡")
+    private LocalDateTime acquisitionDate;
+
+    @ExcelProperty("鏈夋晥鏈�")
+    private LocalDateTime effectiveDate;
+
+    @ExcelProperty("鏂囨。缂栧彿")
+    private String fileNum;
+
+    @ExcelProperty("瀛樻斁浣嶇疆")
+    private String position;
+
+    @ExcelProperty("鍊熻皟鐘舵��")
+    private Integer state;
+
+    @ExcelProperty("澶囨敞")
+    private String remark;
+
+    @ExcelProperty("鍒涘缓浜�")
+    private String createUser;
+
+    @ExcelProperty("鍒涘缓鏃ユ湡")
+    private LocalDateTime createTime;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeCalibrationScheduleMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeCalibrationScheduleMapper.java
new file mode 100644
index 0000000..3352e98
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeCalibrationScheduleMapper.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.FeCalibrationSchedule;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 浠櫒璁惧妫�瀹�/鏍″噯璁″垝琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 02:53:05
+ */
+public interface FeCalibrationScheduleMapper extends BaseMapper<FeCalibrationSchedule> {
+
+    IPage<FeCalibrationSchedule> ipage(Page page, @Param("instrumentName") String instrumentName, @Param("managementNumber") String managementNumber);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeIlluminationDetectionAreaMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeIlluminationDetectionAreaMapper.java
new file mode 100644
index 0000000..78c1383
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeIlluminationDetectionAreaMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.FeIlluminationDetectionArea;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:28
+ */
+public interface FeIlluminationDetectionAreaMapper extends BaseMapper<FeIlluminationDetectionArea> {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeIlluminationMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeIlluminationMapper.java
new file mode 100644
index 0000000..a42b193
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeIlluminationMapper.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.FeIlluminationDto;
+import com.yuanchu.mom.dto.FeIlluminationExportDto;
+import com.yuanchu.mom.pojo.FeIllumination;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:15:57
+ */
+public interface FeIlluminationMapper extends BaseMapper<FeIllumination> {
+
+    IPage<FeIlluminationDto> getFeLightningProtection(Page page);
+
+    /**
+     * 鏌ヨ鐓ф槑璁板綍
+     * @param intensityIlluminationId
+     * @return
+     */
+    FeIlluminationExportDto selectFeIllumination(Integer intensityIlluminationId);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeLightningProtectionMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeLightningProtectionMapper.java
new file mode 100644
index 0000000..7bfae90
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeLightningProtectionMapper.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.excel.FeLightningProtectionExcel;
+import com.yuanchu.mom.pojo.FeLightningProtection;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:36
+ */
+public interface FeLightningProtectionMapper extends BaseMapper<FeLightningProtection> {
+
+    List<FeLightningProtectionExcel> exportOfLightningProtectionDetection();
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeMeasuredQuantityMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeMeasuredQuantityMapper.java
new file mode 100644
index 0000000..82b0725
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeMeasuredQuantityMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.FeMeasuredQuantity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�-娴嬪畾閲� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:44
+ */
+public interface FeMeasuredQuantityMapper extends BaseMapper<FeMeasuredQuantity> {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FePowerStableMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FePowerStableMapper.java
new file mode 100644
index 0000000..3d087ff
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FePowerStableMapper.java
@@ -0,0 +1,34 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.FePowerStableDto;
+import com.yuanchu.mom.dto.FePowerStableExportDto;
+import com.yuanchu.mom.pojo.FePowerStable;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:52
+ */
+public interface FePowerStableMapper extends BaseMapper<FePowerStable> {
+
+    IPage<FePowerStableDto> getLaboratoryFacilityPowerStablePage(Page page);
+
+    Map<String, Objects> getCalibrationDate(Integer deviceId);
+
+    /**
+     * 鏌ヨ鐢垫簮绋冲畾鎬�
+     * @param powerStableId
+     * @return
+     */
+    FePowerStableExportDto selectPowerStable(@Param("powerStableId") Integer powerStableId);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java
new file mode 100644
index 0000000..c9ebcf7
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+public interface FeStandardSubstanceAcceptanceInspectionMapper extends BaseMapper<FeStandardSubstanceAcceptanceInspection> {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceAcceptanceMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceAcceptanceMapper.java
new file mode 100644
index 0000000..723521b
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceAcceptanceMapper.java
@@ -0,0 +1,22 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptance;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.vo.AcceptanceVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川楠屾敹 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:29:41
+ */
+public interface FeStandardSubstanceAcceptanceMapper extends BaseMapper<FeStandardSubstanceAcceptance> {
+
+
+    IPage<AcceptanceVo> getPageAcceptance(Page page, @Param("name")String name);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceMapper.java
new file mode 100644
index 0000000..7aebf05
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceMapper.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 03:58:59
+ */
+public interface FeStandardSubstanceMapper extends BaseMapper<FeStandardSubstance> {
+
+    IPage<FeStandardSubstance> getPage(Page page,@Param("ew")FeStandardSubstance feStandardSubstance);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceRecordMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceRecordMapper.java
new file mode 100644
index 0000000..4dfb9f6
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeStandardSubstanceRecordMapper.java
@@ -0,0 +1,22 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.FeStandardSubstanceRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.vo.SubstanceRecordVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 01:49:11
+ */
+public interface FeStandardSubstanceRecordMapper extends BaseMapper<FeStandardSubstanceRecord> {
+
+
+    IPage<SubstanceRecordVo> getPage(Page page,@Param("ew") SubstanceRecordVo vo);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeTempHumDateMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeTempHumDateMapper.java
new file mode 100644
index 0000000..c1c37d3
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeTempHumDateMapper.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.FeTempHumDateDto;
+import com.yuanchu.mom.pojo.FeTempHumDate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-09 11:02:18
+ */
+public interface FeTempHumDateMapper extends BaseMapper<FeTempHumDate> {
+
+    IPage<FeTempHumDateDto> getFeTempHumDate(Page page);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeTempHumRecordMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeTempHumRecordMapper.java
new file mode 100644
index 0000000..3fe666d
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/FeTempHumRecordMapper.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.FeTempHumRecordDto;
+import com.yuanchu.mom.pojo.FeTempHumRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:28:52
+ */
+public interface FeTempHumRecordMapper extends BaseMapper<FeTempHumRecord> {
+
+    IPage<FeTempHumRecordDto> getFeTempHumRecordPage(Page page, Integer dateId);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/ForeignRegisterMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/ForeignRegisterMapper.java
new file mode 100644
index 0000000..e818a0c
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/ForeignRegisterMapper.java
@@ -0,0 +1,39 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.ForeignRegisterDto;
+import com.yuanchu.mom.pojo.ForeignRegister;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 澶栨潵浜哄憳鐧昏 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 07:17:35
+ */
+public interface ForeignRegisterMapper extends BaseMapper<ForeignRegister> {
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ
+     * @return
+     */
+    IPage<ForeignRegisterDto> pageForeignRegister(Page page, @Param("ew") QueryWrapper<ForeignRegisterDto> ew,
+                                                  @Param("beginDate") String beginDate,
+                                                  @Param("endDate") String endDate);
+
+    /**
+     * 鏌ヨ澶栨潵浜哄憳鐧昏鍒楄〃
+     * @param foreignRegister
+     * @return
+     */
+    List<ForeignRegisterDto> getForeignRegisterList(@Param("ew") QueryWrapper<ForeignRegisterDto> ew,
+                                                    @Param("beginDate") String beginDate,
+                                                    @Param("endDate") String endDate);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/InternalWastesDetailMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/InternalWastesDetailMapper.java
new file mode 100644
index 0000000..bd2570c
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/InternalWastesDetailMapper.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.mapper;
+
+import com.yuanchu.mom.pojo.InternalWastesDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏璇︽儏 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:54
+ */
+public interface InternalWastesDetailMapper extends BaseMapper<InternalWastesDetail> {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/InternalWastesMapper.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/InternalWastesMapper.java
new file mode 100644
index 0000000..2a2bfef
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/mapper/InternalWastesMapper.java
@@ -0,0 +1,36 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.dto.InternalWastesDto;
+import com.yuanchu.mom.pojo.InternalWastes;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.utils.QueryWrappers;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.BeanUtils;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:27
+ */
+@Mapper
+public interface InternalWastesMapper extends BaseMapper<InternalWastes> {
+
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾鐧昏鍒嗛〉鏌ヨ
+     * @param page
+     * @param ew
+     * @return
+     */
+    IPage<InternalWastesDto> pageInternalWastes(Page page, @Param("ew") QueryWrapper<InternalWastes> ew);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeCalibrationSchedule.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeCalibrationSchedule.java
new file mode 100644
index 0000000..dc73fca
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeCalibrationSchedule.java
@@ -0,0 +1,84 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 浠櫒璁惧妫�瀹�/鏍″噯璁″垝琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 02:53:05
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_calibration_schedule")
+@ApiModel(value = "FeCalibrationSchedule瀵硅薄", description = "浠櫒璁惧妫�瀹�/鏍″噯璁″垝琛�")
+public class FeCalibrationSchedule implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("浠櫒鍚嶇О")
+    private String instrumentName;
+
+    @ApiModelProperty("瑙勬牸鍨嬪彿")
+    private String model;
+
+    @ApiModelProperty("绠$悊缂栧彿")
+    private Integer managementNumber;
+
+    @ApiModelProperty("鎶�鏈寚鏍�")
+    private String technicalIndicators;
+
+    @ApiModelProperty("妫�瀹氬懆鏈�")
+    private String verificationCyde;
+
+    @ApiModelProperty("妫�瀹氬崟浣�")
+    private String verificationUnit;
+
+    @ApiModelProperty("鏈�杩戞瀹氭椂闂�")
+    private LocalDateTime recentlyTime;
+
+    @ApiModelProperty("璁″垝涓嬫妫�瀹氭椂闂�")
+    private LocalDateTime nextTime;
+
+    @ApiModelProperty("澶囨敞")
+    private String remark;
+
+    @ApiModelProperty("缂栧埗")
+    private String organization;
+
+    @ApiModelProperty("缂栧埗鏃ユ湡")
+    private LocalDateTime organizationDate;
+
+    @ApiModelProperty("鎵瑰噯")
+    private String approve;
+
+    @ApiModelProperty("鎵瑰噯鏃ユ湡")
+    private LocalDateTime approveDate;
+
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeIllumination.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeIllumination.java
new file mode 100644
index 0000000..e735e25
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeIllumination.java
@@ -0,0 +1,59 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:15:57
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_illumination")
+@ApiModel(value = "FeIllumination瀵硅薄", description = "璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�")
+public class FeIllumination implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("鐓у害璁板綍琛╥d")
+    @TableId(value = "intensity_illumination_id", type = IdType.AUTO)
+    private Integer intensityIlluminationId;
+
+    @ApiModelProperty("璁惧id")
+    private Integer deviceId;
+
+    @ApiModelProperty("缁撹")
+    private String conclusion;
+
+    @ApiModelProperty("妫�娴嬩汉")
+    private Integer testerId;
+
+    @ApiModelProperty("鏍告煡浜�")
+    private Integer checkerId;
+
+    @ApiModelProperty("妫�娴嬫棩鏈�")
+    private Date testDate;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeIlluminationDetectionArea.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeIlluminationDetectionArea.java
new file mode 100644
index 0000000..efe4189
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeIlluminationDetectionArea.java
@@ -0,0 +1,58 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:28
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_illumination_detection_area")
+@ApiModel(value = "FeIlluminationDetectionArea瀵硅薄", description = "璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩�")
+public class FeIlluminationDetectionArea implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("妫�娴嬪尯鍩焛d")
+    @TableId(value = "detection_area_id", type = IdType.AUTO)
+    private Integer detectionAreaId;
+
+    @ApiModelProperty("妫�娴嬪尯鍩熷悕绉�")
+    private String detectionAreaLabel;
+
+    @ApiModelProperty("妫�娴嬪��-绗竴娆�")
+    private Integer valueOne;
+
+    @ApiModelProperty("妫�娴嬪��-绗簩娆�")
+    private Integer valueTwo;
+
+    @ApiModelProperty("妫�娴嬪��-绗笁娆�")
+    private Integer valueThree;
+
+    @ApiModelProperty("骞冲潎鍊�")
+    private Integer average;
+
+    @ApiModelProperty("澶囨敞")
+    private String remark;
+
+    @ApiModelProperty("鐓у害璁板綍琛╥d")
+    private Integer intensityIlluminationId;
+
+    // 瀵煎嚭浣跨敤
+    @TableField(select = false, exist = false)
+    @ApiModelProperty("搴忓彿(瀵煎嚭浣跨敤)")
+    private Integer index;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeLightningProtection.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeLightningProtection.java
new file mode 100644
index 0000000..d1e9838
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeLightningProtection.java
@@ -0,0 +1,63 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:36
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_lightning_protection")
+@ApiModel(value = "FeLightningProtection瀵硅薄", description = "璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴�")
+public class FeLightningProtection implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("涓婚敭id")
+    @TableId(value = "lightning_protection_id", type = IdType.AUTO)
+    private Integer lightningProtectionId;
+
+    @ApiModelProperty("鍘熸枃浠跺悕")
+    private String fileName;
+
+    @ApiModelProperty("绯荤粺鐢熸垚鏂囦欢鍚�")
+    private String systemFileName;
+
+    @ApiModelProperty("妫�娴嬫棩鏈�")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate detectionDate;
+
+    @ApiModelProperty("鏈夋晥鏈�")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate termValidity;
+
+    @ApiModelProperty("妫�娴嬪崟浣�")
+    private String detectionUnit;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeMeasuredQuantity.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeMeasuredQuantity.java
new file mode 100644
index 0000000..9df04f4
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeMeasuredQuantity.java
@@ -0,0 +1,57 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�-娴嬪畾閲�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:44
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_measured_quantity")
+@ApiModel(value = "FeMeasuredQuantity瀵硅薄", description = "璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�-娴嬪畾閲�")
+public class FeMeasuredQuantity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("涓婚敭id")
+    @TableId(value = "measured_quantity_id", type = IdType.AUTO)
+    private Integer measuredQuantityId;
+
+    @ApiModelProperty("娴嬪畾閲忓悕绉�")
+    private String measuredQuantityLabel;
+
+    @ApiModelProperty("鍊糀")
+    private String valueA;
+
+    @ApiModelProperty("鍊糂")
+    private String valueB;
+
+    @ApiModelProperty("鍊糃")
+    private String valueC;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鐢垫簮绋冲畾鎬d")
+    private Integer powerStableId;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FePowerStable.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FePowerStable.java
new file mode 100644
index 0000000..f48a695
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FePowerStable.java
@@ -0,0 +1,62 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:52
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_power_stable")
+@ApiModel(value = "FePowerStable瀵硅薄", description = "璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�")
+public class FePowerStable implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("鐢垫簮绋冲畾鎬d")
+    @TableId(value = "power_stable_id", type = IdType.AUTO)
+    private Integer powerStableId;
+
+    @ApiModelProperty("娴嬭瘯鍦扮偣")
+    private String testLocation;
+
+    @ApiModelProperty("娴嬭瘯鏃ユ湡")
+    private Date testDate;
+
+    @ApiModelProperty("璁惧id")
+    private Integer deviceId;
+
+    @ApiModelProperty("缁撹")
+    private String conclusion;
+
+    @ApiModelProperty("妫�娴嬭�卛d")
+    private Integer testerId;
+
+    @ApiModelProperty("鏍告煡浜篿d")
+    private Integer checkerId;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstance.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstance.java
new file mode 100644
index 0000000..a34776a
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstance.java
@@ -0,0 +1,84 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 03:58:59
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_standard_substance")
+@ApiModel(value = "FeStandardSubstance瀵硅薄", description = "鏍囧噯鐗╄川娓呭崟")
+public class FeStandardSubstance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鏍囧噯鐗╄川鍚嶇О")
+    private String name;
+
+    @ApiModelProperty("瑙勬牸鍨嬪彿")
+    private String model;
+
+    @ApiModelProperty("鐢熶骇鍘傚")
+    private String factoryManufacturer;
+
+    @ApiModelProperty("鍑哄満缂栧彿")
+    private String factoryNum;
+
+    @ApiModelProperty("绠$悊缂栧彿")
+    private String manageNum;
+
+    @ApiModelProperty("涓嶇‘瀹氬害")
+    private String uncertainty;
+
+    @ApiModelProperty("鏁伴噺")
+    private Long quantity;
+
+    @ApiModelProperty("璐疆鏃ユ湡")
+    private LocalDateTime acquisitionDate;
+
+    @ApiModelProperty("鏈夋晥鏈�")
+    private LocalDateTime effectiveDate;
+
+    @ApiModelProperty("鏂囨。缂栧彿")
+    private String fileNum;
+
+    @ApiModelProperty("瀛樻斁浣嶇疆")
+    private String position;
+
+    @ApiModelProperty("鍊熻皟鐘舵�侊紙0:鏈�熻皟 1:宸插�熻皟锛�")
+    private Integer state;
+
+    @ApiModelProperty("澶囨敞")
+    private String remark;
+
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceAcceptance.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceAcceptance.java
new file mode 100644
index 0000000..f7fe9c3
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceAcceptance.java
@@ -0,0 +1,92 @@
+package com.yuanchu.mom.pojo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川楠屾敹
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:29:41
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_standard_substance_acceptance")
+@ApiModel(value = "FeStandardSubstanceAcceptance瀵硅薄", description = "鏍囧噯鐗╄川楠屾敹")
+public class FeStandardSubstanceAcceptance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("娓呭崟id")
+    @ExcelProperty("娓呭崟id")
+    private Integer substanceId;
+
+    @ApiModelProperty("鍒拌揣鏃ユ湡")
+    @ExcelProperty("鍒拌揣鏃ユ湡")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate arriveDate;
+
+    @ApiModelProperty("缁翠慨鍗曚綅")
+    @ExcelProperty("缁翠慨鍗曚綅")
+    private String maintenanceUnit;
+
+    @ApiModelProperty("鍙傛暟")
+    @ExcelProperty("鍙傛暟")
+    private String perameters;
+
+    @ApiModelProperty("瀹夎璋冭瘯鎯呭喌")
+    @ExcelProperty("瀹夎璋冭瘯鎯呭喌")
+    private String installation;
+
+    @ApiModelProperty("楠屾敹鎯呭喌")
+    @ExcelProperty("楠屾敹鎯呭喌")
+    private String situation;
+
+    @ApiModelProperty("鎺ュ彈绛惧瓧")
+    @ExcelProperty("鎺ュ彈绛惧瓧")
+    private String signature;
+
+    @ApiModelProperty("鍘傚浠h〃")
+    @ExcelProperty("鍘傚浠h〃")
+    private String producer;
+
+    @ApiModelProperty("鎺ユ敹浜�")
+    @ExcelProperty("鎺ユ敹浜�")
+    private String recipient;
+
+    @ApiModelProperty("闄勪欢")
+    @ExcelProperty("闄勪欢")
+    private String file;
+
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceAcceptanceInspection.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceAcceptanceInspection.java
new file mode 100644
index 0000000..1113974
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceAcceptanceInspection.java
@@ -0,0 +1,51 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_standard_substance_acceptance_inspection")
+@ApiModel(value = "FeStandardSubstanceAcceptanceInspection瀵硅薄", description = "楠屾敹寮�绠辫褰�")
+public class FeStandardSubstanceAcceptanceInspection implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private Integer acceptanceId;
+
+    private String name;
+
+    private Integer number;
+
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceRecord.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceRecord.java
new file mode 100644
index 0000000..725b4ed
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeStandardSubstanceRecord.java
@@ -0,0 +1,81 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 01:49:11
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_standard_substance_record")
+@ApiModel(value = "FeStandardSubstanceRecord瀵硅薄", description = "鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛�")
+public class FeStandardSubstanceRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鐗╄川id")
+    private Integer substanceId;
+
+    @ApiModelProperty("鍊熺敤-瀹屽ソ鎬�")
+    private String integrity;
+
+    @ApiModelProperty("鍊熺敤-鍊熺敤浜�")
+    private String borrowUser;
+
+    @ApiModelProperty("鍊熺敤-鑱旂郴鏂瑰紡")
+    private String phone;
+
+    @ApiModelProperty("鍊熺敤-鍊熷嚭鏃ユ湡")
+    private LocalDateTime borrowDate;
+
+    @ApiModelProperty("褰掕繕鏃ユ湡")
+    private LocalDateTime borrowReturnDate;
+
+    @ApiModelProperty("鍊熷嚭浜�")
+    private String lender;
+
+    @ApiModelProperty("褰掕繕-妫�鏌ヤ汉")
+    private String rummager;
+
+    @ApiModelProperty("0锛氬�熺敤 1:褰掕繕")
+    private String status;
+
+    @ApiModelProperty("褰掕繕浜�")
+    private String returnedPerson;
+
+    @ApiModelProperty("褰掕繕-鏃ユ湡")
+    private LocalDateTime returnDate;
+
+    @ApiModelProperty("褰掕繕-瀹屽ソ鎬�")
+    private String returnIntegrity;
+
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeTempHumDate.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeTempHumDate.java
new file mode 100644
index 0000000..8476f4d
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeTempHumDate.java
@@ -0,0 +1,57 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-09 11:02:18
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_temp_hum_date")
+@ApiModel(value = "FeTempHumDate瀵硅薄", description = "璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖�")
+public class FeTempHumDate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("涓婚敭ID")
+    @TableId(value = "date_id", type = IdType.AUTO)
+    private Integer dateId;
+
+    @ApiModelProperty("鏈堝害鏃堕棿")
+    private LocalDate monthDate;
+
+    @ApiModelProperty("璇曢獙鍖哄煙鍚嶇О")
+    private String testAreaName;
+
+    @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-resource-require/src/main/java/com/yuanchu/mom/pojo/FeTempHumRecord.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeTempHumRecord.java
new file mode 100644
index 0000000..7787f46
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/FeTempHumRecord.java
@@ -0,0 +1,65 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:28:52
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_temp_hum_record")
+@ApiModel(value = "FeTempHumRecord瀵硅薄", description = "璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰�")
+public class FeTempHumRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("娓╂箍搴﹁褰�")
+    @TableId(value = "temp_hum_id", type = IdType.AUTO)
+    private Integer tempHumId;
+
+    @ApiModelProperty("涓婂崍-鏃堕棿")
+    private LocalDateTime morningTestTime;
+
+    @ApiModelProperty("涓婂崍娓╁害")
+    private String morningTemp;
+
+    @ApiModelProperty("涓婂崍婀垮害")
+    private String morningHum;
+
+    @ApiModelProperty("涓婂崍璁板綍鍛�")
+    private Integer morningRecorderId;
+
+    @ApiModelProperty("涓嬪崍鏃堕棿")
+    private LocalDateTime afternoonTime;
+
+    @ApiModelProperty("涓嬪崍娓╁害")
+    private String afternoonTemp;
+
+    @ApiModelProperty("涓嬪崍婀垮害")
+    private String afternoonHum;
+
+    @ApiModelProperty("涓嬪崍璁板綍鍛�")
+    private Integer afternoonRecorderId;
+
+    @ApiModelProperty("澶囨敞")
+    private String note;
+
+    @ApiModelProperty("娓╁害寰幆涓昏〃id")
+    private Integer dateId;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/ForeignRegister.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/ForeignRegister.java
new file mode 100644
index 0000000..05a1580
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/ForeignRegister.java
@@ -0,0 +1,78 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 澶栨潵浜哄憳鐧昏
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 07:17:35
+ */
+@Data
+@TableName("cnas_foreign_register")
+@ApiModel(value = "ForeignRegister瀵硅薄", description = "澶栨潵浜哄憳鐧昏")
+public class ForeignRegister {
+
+    @TableId(value = "register_id", type = IdType.AUTO)
+    private Integer registerId;
+
+    @ApiModelProperty("鐧昏濡傛湡")
+    private LocalDate registerDate;
+
+    @ApiModelProperty("杩涘叆鍖哄煙")
+    private String area;
+
+    @ApiModelProperty("杩涘叆浜哄憳")
+    private String personnel;
+
+    @ApiModelProperty("杩涘叆鍘熷洜")
+    private String reason;
+
+    @ApiModelProperty("闄悓浜哄憳id")
+    private Integer accompanyingId;
+
+    @ApiModelProperty("闄悓浜哄憳")
+    private String accompanyingName;
+
+    @ApiModelProperty("鎵瑰噯浜篿d")
+    private Integer approveId;
+
+    @ApiModelProperty("鎵瑰噯浜�")
+    private String approveName;
+
+    @ApiModelProperty("淇濆瘑鍙婂叾浠栨儏鍐�")
+    private String confidentiality;
+
+    @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-resource-require/src/main/java/com/yuanchu/mom/pojo/InternalWastes.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/InternalWastes.java
new file mode 100644
index 0000000..524bf8e
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/InternalWastes.java
@@ -0,0 +1,50 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:27
+ */
+@Data
+@TableName("cnas_internal_wastes")
+@ApiModel(value = "InternalWastes瀵硅薄", description = "瀹夊叏鍐呭姟涓夊簾鐧昏")
+public class InternalWastes {
+
+    @TableId(value = "wastes_id", type = IdType.AUTO)
+    private Integer wastesId;
+
+    @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-resource-require/src/main/java/com/yuanchu/mom/pojo/InternalWastesDetail.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/InternalWastesDetail.java
new file mode 100644
index 0000000..ceb2385
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/pojo/InternalWastesDetail.java
@@ -0,0 +1,72 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏璇︽儏
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:54
+ */
+@Data
+@TableName("cnas_internal_wastes_detail")
+@ApiModel(value = "InternalWastesDetail瀵硅薄", description = "瀹夊叏鍐呭姟涓夊簾鐧昏璇︽儏")
+public class InternalWastesDetail {
+
+    @TableId(value = "wastes_detail_id", type = IdType.AUTO)
+    private Integer wastesDetailId;
+
+    @ApiModelProperty("涓昏〃id")
+    private Integer wastesId;
+
+    @ApiModelProperty("鍚嶇О")
+    private String designation;
+
+    @ApiModelProperty("浣撶Н")
+    private String volume;
+
+    @ApiModelProperty("閫佸鐞嗘棩鏈�")
+    private String deliveryDate;
+
+    @ApiModelProperty("绉讳氦浜�")
+    private String transferPeople;
+
+    @ApiModelProperty("鎺ユ敹浜�")
+    private String acceptor;
+
+    @ApiModelProperty("鎺ユ敹鍗曚綅")
+    private String receivingUnit;
+
+    @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(select = false, exist = false)
+    private Integer index;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeCalibrationScheduleService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeCalibrationScheduleService.java
new file mode 100644
index 0000000..6e3c450
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeCalibrationScheduleService.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.yuanchu.mom.excel.FeCalibrationScheduleExport;
+import com.yuanchu.mom.pojo.FeCalibrationSchedule;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 浠櫒璁惧妫�瀹�/鏍″噯璁″垝琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 02:53:05
+ */
+public interface FeCalibrationScheduleService extends IService<FeCalibrationSchedule> {
+
+
+    IPage<FeCalibrationSchedule> page(Page page,String instrumentName, String managementNumber);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeIlluminationDetectionAreaService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeIlluminationDetectionAreaService.java
new file mode 100644
index 0000000..240baaf
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeIlluminationDetectionAreaService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.FeIlluminationDetectionArea;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:28
+ */
+public interface FeIlluminationDetectionAreaService extends IService<FeIlluminationDetectionArea> {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeIlluminationService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeIlluminationService.java
new file mode 100644
index 0000000..56bf6d3
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeIlluminationService.java
@@ -0,0 +1,29 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.FeIlluminationDto;
+import com.yuanchu.mom.pojo.FeIllumination;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:15:57
+ */
+public interface FeIlluminationService extends IService<FeIllumination> {
+
+    IPage<FeIlluminationDto> getFeLightningProtection(Page page);
+
+    /**
+     * 瀵煎嚭鐓у害璁板綍
+     * @param intensityIlluminationId
+     * @param response
+     */
+    void exportFeIllumination(Integer intensityIlluminationId, HttpServletResponse response);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeLightningProtectionService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeLightningProtectionService.java
new file mode 100644
index 0000000..758410e
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeLightningProtectionService.java
@@ -0,0 +1,21 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.excel.FeLightningProtectionExcel;
+import com.yuanchu.mom.pojo.FeLightningProtection;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:36
+ */
+public interface FeLightningProtectionService extends IService<FeLightningProtection> {
+
+    List<FeLightningProtectionExcel> exportOfLightningProtectionDetection();
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeMeasuredQuantityService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeMeasuredQuantityService.java
new file mode 100644
index 0000000..4506bf0
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeMeasuredQuantityService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.FeMeasuredQuantity;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�-娴嬪畾閲� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:44
+ */
+public interface FeMeasuredQuantityService extends IService<FeMeasuredQuantity> {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FePowerStableService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FePowerStableService.java
new file mode 100644
index 0000000..339d6f4
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FePowerStableService.java
@@ -0,0 +1,33 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.FePowerStableDto;
+import com.yuanchu.mom.pojo.FePowerStable;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:52
+ */
+public interface FePowerStableService extends IService<FePowerStable> {
+
+    IPage<FePowerStableDto> getLaboratoryFacilityPowerStablePage(Page page);
+
+    Map<String, Objects> getCalibrationDate(Integer deviceId);
+
+    /**
+     * 瀵煎嚭鐢垫簮绋冲畾鎬�
+     * @param powerStableId
+     * @param response
+     */
+    void exportFePowerStable(Integer powerStableId, HttpServletResponse response);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceAcceptanceInspectionService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceAcceptanceInspectionService.java
new file mode 100644
index 0000000..db14bde
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceAcceptanceInspectionService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+public interface FeStandardSubstanceAcceptanceInspectionService extends IService<FeStandardSubstanceAcceptanceInspection> {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceAcceptanceService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceAcceptanceService.java
new file mode 100644
index 0000000..5d1e448
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceAcceptanceService.java
@@ -0,0 +1,33 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.AcceptanceDto;
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptance;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.vo.AcceptanceDetailsVo;
+import com.yuanchu.mom.vo.AcceptanceVo;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川楠屾敹 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:29:41
+ */
+public interface FeStandardSubstanceAcceptanceService extends IService<FeStandardSubstanceAcceptance> {
+
+
+    void addAcceptance(AcceptanceDto dto);
+
+    IPage<AcceptanceVo> getPageAcceptance(Page page, String name);
+
+    AcceptanceDetailsVo getAcceptanceDetails(Integer id);
+
+    Integer deleteAcceptance(Integer id);
+
+    void exportFeStandardSubstanceAcceptance(HttpServletResponse response);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceRecordService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceRecordService.java
new file mode 100644
index 0000000..ba2c45a
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceRecordService.java
@@ -0,0 +1,30 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.FeStandardSubstanceRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.vo.SubstanceRecordVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 01:49:11
+ */
+public interface FeStandardSubstanceRecordService extends IService<FeStandardSubstanceRecord> {
+
+
+    void borrowSubstance(FeStandardSubstanceRecord feStandardSubstanceRecord);
+
+    void returnSubstance(FeStandardSubstanceRecord feStandardSubstanceRecord);
+
+    List<FeStandardSubstanceRecord> getSubstanceRecord(Integer id);
+
+    IPage<SubstanceRecordVo> getPage(Page page, SubstanceRecordVo vo);
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceService.java
new file mode 100644
index 0000000..5ab6c83
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeStandardSubstanceService.java
@@ -0,0 +1,19 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 03:58:59
+ */
+public interface FeStandardSubstanceService extends IService<FeStandardSubstance> {
+
+    IPage<FeStandardSubstance> page(Page page,FeStandardSubstance feStandardSubstance);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeTempHumDateService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeTempHumDateService.java
new file mode 100644
index 0000000..9c036bf
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeTempHumDateService.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.yuanchu.mom.dto.FeTempHumDateDto;
+import com.yuanchu.mom.pojo.FeTempHumDate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-09 11:02:18
+ */
+public interface FeTempHumDateService extends IService<FeTempHumDate> {
+
+    IPage<FeTempHumDateDto> getFeTempHumDate(Page page);
+
+    void exportTemperatureAndHumidityRecords(Integer dateId, HttpServletResponse response);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeTempHumRecordService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeTempHumRecordService.java
new file mode 100644
index 0000000..04cdac5
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/FeTempHumRecordService.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.yuanchu.mom.dto.FeTempHumRecordDto;
+import com.yuanchu.mom.pojo.FeTempHumRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:28:52
+ */
+public interface FeTempHumRecordService extends IService<FeTempHumRecord> {
+
+    IPage<FeTempHumRecordDto> getFeTempHumRecordPage(Page page, Integer dateId);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/ForeignRegisterService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/ForeignRegisterService.java
new file mode 100644
index 0000000..d20487f
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/ForeignRegisterService.java
@@ -0,0 +1,34 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.ForeignRegisterDto;
+import com.yuanchu.mom.pojo.ForeignRegister;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 澶栨潵浜哄憳鐧昏 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 07:17:35
+ */
+public interface ForeignRegisterService extends IService<ForeignRegister> {
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ
+     * @param page
+     * @param foreignRegister
+     * @return
+     */
+    IPage<ForeignRegisterDto> pageForeignRegister(Page page, ForeignRegisterDto foreignRegister);
+
+    /**
+     * 瀵煎嚭澶栨潵浜哄憳鐧昏
+     * @param foreignRegister
+     */
+    void exportForeignRegister(ForeignRegisterDto foreignRegister, HttpServletResponse response);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/InternalWastesDetailService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/InternalWastesDetailService.java
new file mode 100644
index 0000000..c16f633
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/InternalWastesDetailService.java
@@ -0,0 +1,16 @@
+package com.yuanchu.mom.service;
+
+import com.yuanchu.mom.pojo.InternalWastesDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏璇︽儏 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:54
+ */
+public interface InternalWastesDetailService extends IService<InternalWastesDetail> {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/InternalWastesService.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/InternalWastesService.java
new file mode 100644
index 0000000..095b827
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/InternalWastesService.java
@@ -0,0 +1,63 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.InternalWastesDto;
+import com.yuanchu.mom.pojo.InternalWastes;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:27
+ */
+public interface InternalWastesService extends IService<InternalWastes> {
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鍒嗛〉鏌ヨ
+     * @param page
+     * @param internalWastes
+     * @return
+     */
+    IPage<InternalWastesDto> pageInternalWastes(Page page, InternalWastes internalWastes);
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鏂板
+     * @param internalWastes
+     * @return
+     */
+    boolean addInternalWastes(InternalWastesDto internalWastes);
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊淇敼
+     * @param internalWastes
+     * @return
+     */
+    boolean updateInternalWastes(InternalWastesDto internalWastes);
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鍒犻櫎
+     * @param wastesId
+     * @return
+     */
+    boolean delInternalWastes(Integer wastesId);
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鏌ョ湅璇︽儏
+     * @param wastesId
+     * @return
+     */
+    InternalWastesDto getInternalWastesOne(Integer wastesId);
+
+    /**
+     * 瀵煎嚭涓夊簾澶勭悊
+     * @param wastesId
+     * @param response
+     */
+    void exportInternalWastes(Integer wastesId, HttpServletResponse response);
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeCalibrationScheduleServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeCalibrationScheduleServiceImpl.java
new file mode 100644
index 0000000..cf5cff9
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeCalibrationScheduleServiceImpl.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.FeCalibrationSchedule;
+import com.yuanchu.mom.mapper.FeCalibrationScheduleMapper;
+import com.yuanchu.mom.service.FeCalibrationScheduleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 浠櫒璁惧妫�瀹�/鏍″噯璁″垝琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 02:53:05
+ */
+@Service
+public class FeCalibrationScheduleServiceImpl extends ServiceImpl<FeCalibrationScheduleMapper, FeCalibrationSchedule> implements FeCalibrationScheduleService {
+
+    @Override
+    public IPage<FeCalibrationSchedule> page(Page page, String instrumentName, String managementNumber) {
+        IPage<FeCalibrationSchedule> ipage = this.baseMapper.ipage(page,instrumentName, managementNumber);
+        return ipage;
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeIlluminationDetectionAreaServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeIlluminationDetectionAreaServiceImpl.java
new file mode 100644
index 0000000..2bc70bc
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeIlluminationDetectionAreaServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.yuanchu.mom.pojo.FeIlluminationDetectionArea;
+import com.yuanchu.mom.mapper.FeIlluminationDetectionAreaMapper;
+import com.yuanchu.mom.service.FeIlluminationDetectionAreaService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:28
+ */
+@Service
+public class FeIlluminationDetectionAreaServiceImpl extends ServiceImpl<FeIlluminationDetectionAreaMapper, FeIlluminationDetectionArea> implements FeIlluminationDetectionAreaService {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeIlluminationServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeIlluminationServiceImpl.java
new file mode 100644
index 0000000..6d42282
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeIlluminationServiceImpl.java
@@ -0,0 +1,133 @@
+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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
+import com.yuanchu.mom.dto.FeIlluminationDto;
+import com.yuanchu.mom.dto.FeIlluminationExportDto;
+import com.yuanchu.mom.dto.FePowerStableExportDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.FeIlluminationDetectionAreaMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.FeIllumination;
+import com.yuanchu.mom.mapper.FeIlluminationMapper;
+import com.yuanchu.mom.pojo.FeIlluminationDetectionArea;
+import com.yuanchu.mom.pojo.FeMeasuredQuantity;
+import com.yuanchu.mom.service.FeIlluminationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.DateImageUtil;
+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.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:15:57
+ */
+@Service
+public class FeIlluminationServiceImpl extends ServiceImpl<FeIlluminationMapper, FeIllumination> implements FeIlluminationService {
+
+    @Resource
+    private FeIlluminationDetectionAreaMapper feIlluminationDetectionAreaMapper;
+    @Resource
+    private UserMapper userMapper;
+
+    @Value("${file.path}")
+    private String imgUrl;
+
+
+    @Override
+    public IPage<FeIlluminationDto> getFeLightningProtection(Page page) {
+        return baseMapper.getFeLightningProtection(page);
+    }
+
+    /**
+     * 瀵煎嚭鐓у害璁板綍
+     * @param intensityIlluminationId
+     * @param response
+     */
+    @Override
+    public void exportFeIllumination(Integer intensityIlluminationId, HttpServletResponse response) {
+        FeIlluminationExportDto illuminationExportDto = baseMapper.selectFeIllumination(intensityIlluminationId);
+        // 妫�娴嬩汉
+        String testerUrl = null;
+        if (illuminationExportDto.getTesterId() != null) {
+            testerUrl = userMapper.selectById(illuminationExportDto.getTesterId()).getSignatureUrl();
+            if (StringUtils.isBlank(testerUrl)) {
+                throw new ErrorException("鎵句笉鍒版娴嬩汉鐨勭鍚�");
+            }
+        }
+
+        // 鏍告煡浜�
+        String checkerUrl = null;
+        if (illuminationExportDto.getCheckerId() != null) {
+            checkerUrl = userMapper.selectById(illuminationExportDto.getCheckerId()).getSignatureUrl();
+            if (StringUtils.isBlank(checkerUrl)) {
+                throw new ErrorException("鎵句笉鍒版牳鏌ヤ汉鐨勭鍚�");
+            }
+        }
+
+        // 鏌ヨ璇︽儏
+        List<FeIlluminationDetectionArea> feIlluminationDetectionAreas = feIlluminationDetectionAreaMapper.selectList(Wrappers.<FeIlluminationDetectionArea>lambdaQuery()
+                .eq(FeIlluminationDetectionArea::getIntensityIlluminationId, intensityIlluminationId));
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/illumination.docx");
+        Configure configure = Configure.builder()
+                .bind("detectionAreaList", new HackLoopTableRenderPolicy())
+                .build();
+        String finalTesterUrl = testerUrl;
+        String finalCheckerUrl = checkerUrl;
+
+        // 鍒ゆ柇妫�娴嬫棩鏈熸槸鍚︿负绌�
+        LocalDateTime localDateTime = null;
+        if (illuminationExportDto.getTestDate() != null) {
+            Instant instant = illuminationExportDto.getTestDate().toInstant();
+            ZoneId zoneId = ZoneId.systemDefault();
+            localDateTime = instant.atZone(zoneId).toLocalDateTime();
+        }
+        LocalDateTime finalLocalDateTime = localDateTime;
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("illumination", illuminationExportDto);
+                    put("detectionAreaList", feIlluminationDetectionAreas);
+                    put("testerUrl", StringUtils.isNotBlank(finalTesterUrl) ? Pictures.ofLocal(imgUrl + "/" + finalTesterUrl).create() : null);
+                    put("checkerUrl", StringUtils.isNotBlank(finalCheckerUrl) ? Pictures.ofLocal(imgUrl + "/" + finalCheckerUrl).create() : null);
+                    put("testDateUrl", finalLocalDateTime != null ?
+                            Pictures.ofStream(DateImageUtil.createDateImage(finalLocalDateTime)).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-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeLightningProtectionServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeLightningProtectionServiceImpl.java
new file mode 100644
index 0000000..d4d98e0
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeLightningProtectionServiceImpl.java
@@ -0,0 +1,28 @@
+package com.yuanchu.mom.service.impl;
+
+import com.yuanchu.mom.excel.FeLightningProtectionExcel;
+import com.yuanchu.mom.pojo.FeLightningProtection;
+import com.yuanchu.mom.mapper.FeLightningProtectionMapper;
+import com.yuanchu.mom.service.FeLightningProtectionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:36
+ */
+@Service
+public class FeLightningProtectionServiceImpl extends ServiceImpl<FeLightningProtectionMapper, FeLightningProtection> implements FeLightningProtectionService {
+
+    @Override
+    public List<FeLightningProtectionExcel> exportOfLightningProtectionDetection() {
+        return baseMapper.exportOfLightningProtectionDetection();
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeMeasuredQuantityServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeMeasuredQuantityServiceImpl.java
new file mode 100644
index 0000000..cba46d4
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeMeasuredQuantityServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.yuanchu.mom.pojo.FeMeasuredQuantity;
+import com.yuanchu.mom.mapper.FeMeasuredQuantityMapper;
+import com.yuanchu.mom.service.FeMeasuredQuantityService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�-娴嬪畾閲� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:44
+ */
+@Service
+public class FeMeasuredQuantityServiceImpl extends ServiceImpl<FeMeasuredQuantityMapper, FeMeasuredQuantity> implements FeMeasuredQuantityService {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FePowerStableServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FePowerStableServiceImpl.java
new file mode 100644
index 0000000..664329f
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FePowerStableServiceImpl.java
@@ -0,0 +1,121 @@
+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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
+import com.yuanchu.mom.dto.FePowerStableDto;
+import com.yuanchu.mom.dto.FePowerStableExportDto;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.mapper.FeMeasuredQuantityMapper;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.FeMeasuredQuantity;
+import com.yuanchu.mom.pojo.FePowerStable;
+import com.yuanchu.mom.mapper.FePowerStableMapper;
+import com.yuanchu.mom.service.FePowerStableService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.DateImageUtil;
+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.util.*;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:52
+ */
+@Service
+public class FePowerStableServiceImpl extends ServiceImpl<FePowerStableMapper, FePowerStable> implements FePowerStableService {
+
+    @Resource
+    private FeMeasuredQuantityMapper feMeasuredQuantityMapper;
+    @Resource
+    private UserMapper userMapper;
+
+    @Value("${file.path}")
+    private String imgUrl;
+
+    @Override
+    public IPage<FePowerStableDto> getLaboratoryFacilityPowerStablePage(Page page) {
+        return baseMapper.getLaboratoryFacilityPowerStablePage(page);
+    }
+
+    @Override
+    public Map<String, Objects> getCalibrationDate(Integer deviceId) {
+        return baseMapper.getCalibrationDate(deviceId);
+    }
+
+    /**
+     * 瀵煎嚭鐢垫簮绋冲畾鎬�
+     * @param powerStableId
+     * @param response
+     */
+    @Override
+    public void exportFePowerStable(Integer powerStableId, HttpServletResponse response) {
+        FePowerStableExportDto powerStable = baseMapper.selectPowerStable(powerStableId);
+
+        // 妫�娴嬩汉
+        String testerUrl = null;
+        if (powerStable.getTesterId() != null) {
+            testerUrl = userMapper.selectById(powerStable.getTesterId()).getSignatureUrl();
+            if (StringUtils.isBlank(testerUrl)) {
+                throw new ErrorException("鎵句笉鍒版娴嬩汉鐨勭鍚�");
+            }
+        }
+
+        // 鏍告煡浜�
+        String checkerUrl = null;
+        if (powerStable.getCheckerId() != null) {
+            checkerUrl = userMapper.selectById(powerStable.getCheckerId()).getSignatureUrl();
+            if (StringUtils.isBlank(checkerUrl)) {
+                throw new ErrorException("鎵句笉鍒版牳鏌ヤ汉鐨勭鍚�");
+            }
+        }
+
+        // 鏌ヨ璇︽儏
+        List<FeMeasuredQuantity> feMeasuredQuantities = feMeasuredQuantityMapper.selectList(Wrappers.<FeMeasuredQuantity>lambdaQuery()
+                .eq(FeMeasuredQuantity::getPowerStableId, powerStableId));
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/power-stable.docx");
+        Configure configure = Configure.builder()
+                .bind("measuredQuantityList", new HackLoopTableRenderPolicy())
+                .build();
+        String finalTesterUrl = testerUrl;
+        String finalCheckerUrl = checkerUrl;
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("stable", powerStable);
+                    put("measuredQuantityList", feMeasuredQuantities);
+                    put("testerUrl", StringUtils.isNotBlank(finalTesterUrl) ? Pictures.ofLocal(imgUrl + "/" + finalTesterUrl).create() : null);
+                    put("checkerUrl", StringUtils.isNotBlank(finalCheckerUrl) ? Pictures.ofLocal(imgUrl + "/" + finalCheckerUrl).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-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java
new file mode 100644
index 0000000..649bea9
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.yuanchu.mom.mapper.FeStandardSubstanceAcceptanceInspectionMapper;
+import com.yuanchu.mom.service.FeStandardSubstanceAcceptanceInspectionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+@Service
+public class FeStandardSubstanceAcceptanceInspectionServiceImpl extends ServiceImpl<FeStandardSubstanceAcceptanceInspectionMapper, FeStandardSubstanceAcceptanceInspection> implements FeStandardSubstanceAcceptanceInspectionService {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java
new file mode 100644
index 0000000..3fbdab4
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java
@@ -0,0 +1,112 @@
+package com.yuanchu.mom.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.dto.AcceptanceDto;
+import com.yuanchu.mom.mapper.FeStandardSubstanceAcceptanceInspectionMapper;
+import com.yuanchu.mom.mapper.FeStandardSubstanceMapper;
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptance;
+import com.yuanchu.mom.mapper.FeStandardSubstanceAcceptanceMapper;
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.yuanchu.mom.service.FeStandardSubstanceAcceptanceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.vo.AcceptanceDetailsVo;
+import com.yuanchu.mom.vo.AcceptanceVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川楠屾敹 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:29:41
+ */
+@Service
+public class FeStandardSubstanceAcceptanceServiceImpl extends ServiceImpl<FeStandardSubstanceAcceptanceMapper, FeStandardSubstanceAcceptance> implements FeStandardSubstanceAcceptanceService {
+
+    @Resource
+    private FeStandardSubstanceAcceptanceInspectionMapper feStandardSubstanceAcceptanceInspectionMapper;
+
+    @Resource
+    private FeStandardSubstanceMapper feStandardSubstanceMapper;
+
+
+
+    @Override
+    public void addAcceptance(AcceptanceDto dto) {
+        FeStandardSubstanceAcceptance acceptance = dto.getAcceptance();
+        List<FeStandardSubstanceAcceptanceInspection> list = dto.getList();
+        this.baseMapper.insert(acceptance);
+        list.forEach(v->{
+            v.setAcceptanceId(acceptance.getId());
+            feStandardSubstanceAcceptanceInspectionMapper.insert(v);
+        });
+    }
+
+    @Override
+    public IPage<AcceptanceVo> getPageAcceptance(Page page, String name) {
+        return this.baseMapper.getPageAcceptance(page,name);
+    }
+
+    @Override
+    public AcceptanceDetailsVo getAcceptanceDetails(Integer id) {
+        FeStandardSubstanceAcceptance acceptance = this.baseMapper.selectById(id);
+        FeStandardSubstance substance = feStandardSubstanceMapper.selectById(acceptance.getSubstanceId());
+        QueryWrapper<FeStandardSubstanceAcceptanceInspection> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("acceptance_id",id);
+        List<FeStandardSubstanceAcceptanceInspection> list = feStandardSubstanceAcceptanceInspectionMapper.selectList(queryWrapper);
+        AcceptanceDetailsVo vo = new AcceptanceDetailsVo();
+        vo.setSubstance(substance);
+        vo.setAcceptance(acceptance);
+        vo.setList(list);
+        return vo;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Integer deleteAcceptance(Integer id) {
+        feStandardSubstanceAcceptanceInspectionMapper.delete(new QueryWrapper<FeStandardSubstanceAcceptanceInspection>()
+                .lambda().eq(FeStandardSubstanceAcceptanceInspection::getAcceptanceId,id));
+        return this.baseMapper.deleteById(id);
+    }
+
+    @Override
+    public void exportFeStandardSubstanceAcceptance(HttpServletResponse response) {
+        List<FeStandardSubstanceAcceptance> list = this.list();
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("UTF-8");
+        // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
+        try {
+            String fileName = URLEncoder.encode("鏍囧噯鐗╄川楠屾敹", "UTF-8");
+            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+            // 鏂板缓ExcelWriter
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+            WriteSheet writeSheet = EasyExcel.writerSheet(0, "鏍囧噯鐗╄川楠屾敹").head(FeStandardSubstanceAcceptance.class).build();
+            excelWriter.write(list, writeSheet);
+            // 鍏抽棴娴�
+            excelWriter.finish();
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceRecordServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceRecordServiceImpl.java
new file mode 100644
index 0000000..ab23caf
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceRecordServiceImpl.java
@@ -0,0 +1,79 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.exception.ErrorException;
+import com.yuanchu.mom.mapper.FeStandardSubstanceMapper;
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import com.yuanchu.mom.pojo.FeStandardSubstanceRecord;
+import com.yuanchu.mom.mapper.FeStandardSubstanceRecordMapper;
+import com.yuanchu.mom.service.FeStandardSubstanceRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.vo.SubstanceRecordVo;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 01:49:11
+ */
+@Transactional(rollbackFor = Exception.class)
+@Service
+public class FeStandardSubstanceRecordServiceImpl extends ServiceImpl<FeStandardSubstanceRecordMapper, FeStandardSubstanceRecord> implements FeStandardSubstanceRecordService {
+
+    @Resource
+    private FeStandardSubstanceMapper feStandardSubstanceMapper;
+
+    @Override
+    public void borrowSubstance(FeStandardSubstanceRecord feStandardSubstanceRecord) {
+        FeStandardSubstance standardSubstance = feStandardSubstanceMapper.selectOne(Wrappers.<FeStandardSubstance>lambdaQuery()
+                .eq(FeStandardSubstance::getId, feStandardSubstanceRecord.getSubstanceId())
+                .eq(FeStandardSubstance::getState, 0)
+                .last("limit 1"));
+        if (ObjectUtils.isEmpty(standardSubstance)){
+            throw new ErrorException("璇ョ墿璐ㄥ凡琚�熷嚭锛�");
+        }
+        this.baseMapper.insert(feStandardSubstanceRecord);
+        standardSubstance.setState(1);
+        feStandardSubstanceMapper.updateById(standardSubstance);
+    }
+
+    @Override
+    public void returnSubstance(FeStandardSubstanceRecord feStandardSubstanceRecord) {
+        FeStandardSubstance standardSubstance = feStandardSubstanceMapper.selectOne(Wrappers.<FeStandardSubstance>lambdaQuery()
+                .eq(FeStandardSubstance::getId, feStandardSubstanceRecord.getSubstanceId())
+                .eq(FeStandardSubstance::getState, 1));
+        if (ObjectUtils.isEmpty(standardSubstance)){
+            throw new ErrorException("璇ョ墿璐ㄦ湭琚鐢紝鏃犻渶褰掕繕锛�");
+        }
+        standardSubstance.setState(0);
+        feStandardSubstanceMapper.updateById(standardSubstance);
+        System.out.println(feStandardSubstanceRecord);
+        baseMapper.update(feStandardSubstanceRecord, Wrappers.<FeStandardSubstanceRecord>lambdaUpdate()
+                .eq(FeStandardSubstanceRecord::getSubstanceId, feStandardSubstanceRecord.getSubstanceId())
+                .eq(FeStandardSubstanceRecord::getStatus, 0));
+    }
+
+    @Override
+    public List<FeStandardSubstanceRecord> getSubstanceRecord(Integer id) {
+        QueryWrapper<FeStandardSubstanceRecord> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("substance_id",id);
+        List<FeStandardSubstanceRecord> list = this.baseMapper.selectList(queryWrapper);
+        return list;
+    }
+
+    @Override
+    public IPage<SubstanceRecordVo> getPage(Page page, SubstanceRecordVo vo) {
+        return this.baseMapper.getPage(page,vo);
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceServiceImpl.java
new file mode 100644
index 0000000..d48f9f1
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeStandardSubstanceServiceImpl.java
@@ -0,0 +1,26 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import com.yuanchu.mom.mapper.FeStandardSubstanceMapper;
+import com.yuanchu.mom.service.FeStandardSubstanceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-13 03:58:59
+ */
+@Service
+public class FeStandardSubstanceServiceImpl extends ServiceImpl<FeStandardSubstanceMapper, FeStandardSubstance> implements FeStandardSubstanceService {
+
+    @Override
+    public IPage<FeStandardSubstance> page(Page page,FeStandardSubstance feStandardSubstance) {
+        return this.baseMapper.getPage(page,feStandardSubstance);
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeTempHumDateServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeTempHumDateServiceImpl.java
new file mode 100644
index 0000000..cc01bbd
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeTempHumDateServiceImpl.java
@@ -0,0 +1,96 @@
+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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
+import com.yuanchu.mom.dto.FeTempHumDateDto;
+import com.yuanchu.mom.dto.FeTempHumRecordDto;
+import com.yuanchu.mom.pojo.FeTempHumDate;
+import com.yuanchu.mom.mapper.FeTempHumDateMapper;
+import com.yuanchu.mom.pojo.FeTempHumRecord;
+import com.yuanchu.mom.service.FeTempHumDateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.service.FeTempHumRecordService;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.DateImageUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.time.Month;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-09 11:02:18
+ */
+@Service
+public class FeTempHumDateServiceImpl extends ServiceImpl<FeTempHumDateMapper, FeTempHumDate> implements FeTempHumDateService {
+
+    @Autowired
+    private FeTempHumRecordService feTempHumRecordService;
+
+    @Override
+    public IPage<FeTempHumDateDto> getFeTempHumDate(Page page) {
+        return baseMapper.getFeTempHumDate(page);
+    }
+
+    @Override
+    public void exportTemperatureAndHumidityRecords(Integer dateId, HttpServletResponse response) {
+        FeTempHumDate feTempHumDate = baseMapper.selectById(dateId);
+        IPage<FeTempHumRecordDto> list = feTempHumRecordService.getFeTempHumRecordPage(new Page<>(1, -1), dateId);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        list.getRecords().forEach(i -> {
+            i.setMonth(i.getMorningTestTime().getMonth().getValue());
+            i.setMorningTestTimeStr(i.getMorningTestTime().format(formatter));
+            i.setAfternoonTimeStr(i.getAfternoonTime().format(formatter));
+        });
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/temp_hum_date.docx");
+        Configure configure = Configure.builder()
+                .bind("recordList", new HackLoopTableRenderPolicy())
+                .build();
+
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("testAreaName", feTempHumDate.getTestAreaName());
+        map.put("experimentalYear", feTempHumDate.getMonthDate().getYear());
+        map.put("experimentalMonth", feTempHumDate.getMonthDate().getMonth().getValue());
+
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("feTempHum", map);
+                    put("recordList", list.getRecords());
+                }});
+
+        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-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeTempHumRecordServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeTempHumRecordServiceImpl.java
new file mode 100644
index 0000000..0730793
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/FeTempHumRecordServiceImpl.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.yuanchu.mom.dto.FeTempHumRecordDto;
+import com.yuanchu.mom.pojo.FeTempHumRecord;
+import com.yuanchu.mom.mapper.FeTempHumRecordMapper;
+import com.yuanchu.mom.service.FeTempHumRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:28:52
+ */
+@Service
+public class FeTempHumRecordServiceImpl extends ServiceImpl<FeTempHumRecordMapper, FeTempHumRecord> implements FeTempHumRecordService {
+
+    @Override
+    public IPage<FeTempHumRecordDto> getFeTempHumRecordPage(Page page, Integer dateId) {
+        return baseMapper.getFeTempHumRecordPage(page, dateId);
+    }
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/ForeignRegisterServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/ForeignRegisterServiceImpl.java
new file mode 100644
index 0000000..a588e2c
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/ForeignRegisterServiceImpl.java
@@ -0,0 +1,103 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.dto.ForeignRegisterDto;
+import com.yuanchu.mom.mapper.UserMapper;
+import com.yuanchu.mom.pojo.ForeignRegister;
+import com.yuanchu.mom.mapper.ForeignRegisterMapper;
+import com.yuanchu.mom.service.ForeignRegisterService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.DateImageUtil;
+import com.yuanchu.mom.utils.QueryWrappers;
+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.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 澶栨潵浜哄憳鐧昏 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 07:17:35
+ */
+@Service
+public class ForeignRegisterServiceImpl extends ServiceImpl<ForeignRegisterMapper, ForeignRegister> implements ForeignRegisterService {
+    @Resource
+    private UserMapper userMapper;
+    @Value("${file.path}")
+    private String imgUrl;
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ
+     * @param page
+     * @param foreignRegister
+     * @return
+     */
+    @Override
+    public IPage<ForeignRegisterDto> pageForeignRegister(Page page, ForeignRegisterDto foreignRegister) {
+        String beginDate = foreignRegister.getBeginDate();
+        String endDate = foreignRegister.getEndDate();
+        foreignRegister.setBeginDate(null);
+        foreignRegister.setEndDate(null);
+        return baseMapper.pageForeignRegister(page, QueryWrappers.queryWrappers(foreignRegister), beginDate, endDate);
+    }
+
+    /**
+     * 瀵煎嚭澶栨潵浜哄憳鐧昏
+     * @param foreignRegister
+     */
+    @Override
+    public void exportForeignRegister(ForeignRegisterDto foreignRegister, HttpServletResponse response) {
+        String beginDate = foreignRegister.getBeginDate();
+        String endDate = foreignRegister.getEndDate();
+        foreignRegister.setBeginDate(null);
+        foreignRegister.setEndDate(null);
+        List<ForeignRegisterDto> register = baseMapper.getForeignRegisterList(QueryWrappers.queryWrappers(foreignRegister), beginDate, endDate);
+
+        for (ForeignRegisterDto foreignRegisterDto : register) {
+            // 娣诲姞鍗忓悓浜哄拰鎵瑰噯浜虹鍚�
+            foreignRegisterDto.setAccompanyingRender(StringUtils.isNotBlank(foreignRegisterDto.getAccompanyingUrl())
+                    ? Pictures.ofLocal(imgUrl + "/" + foreignRegisterDto.getAccompanyingUrl()).create() : null);
+            foreignRegisterDto.setApproveRender(StringUtils.isNotBlank(foreignRegisterDto.getApproveUrl())
+                    ? Pictures.ofLocal(imgUrl + "/" + foreignRegisterDto.getApproveUrl()).create() : null);
+        }
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/foreign-register.docx");
+        Configure configure = Configure.builder()
+                .bind("register", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("register", register);
+                }});
+        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-resource-require/src/main/java/com/yuanchu/mom/service/impl/InternalWastesDetailServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/InternalWastesDetailServiceImpl.java
new file mode 100644
index 0000000..8f96cc1
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/InternalWastesDetailServiceImpl.java
@@ -0,0 +1,20 @@
+package com.yuanchu.mom.service.impl;
+
+import com.yuanchu.mom.pojo.InternalWastesDetail;
+import com.yuanchu.mom.mapper.InternalWastesDetailMapper;
+import com.yuanchu.mom.service.InternalWastesDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏璇︽儏 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:54
+ */
+@Service
+public class InternalWastesDetailServiceImpl extends ServiceImpl<InternalWastesDetailMapper, InternalWastesDetail> implements InternalWastesDetailService {
+
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/InternalWastesServiceImpl.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/InternalWastesServiceImpl.java
new file mode 100644
index 0000000..b858c2a
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/service/impl/InternalWastesServiceImpl.java
@@ -0,0 +1,173 @@
+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.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.yuanchu.mom.dto.InternalWastesDto;
+import com.yuanchu.mom.pojo.InternalWastes;
+import com.yuanchu.mom.mapper.InternalWastesMapper;
+import com.yuanchu.mom.pojo.InternalWastesDetail;
+import com.yuanchu.mom.service.InternalWastesDetailService;
+import com.yuanchu.mom.service.InternalWastesService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.mom.utils.HackLoopTableRenderPolicy;
+import com.yuanchu.mom.utils.DateImageUtil;
+import com.yuanchu.mom.utils.QueryWrappers;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.BeanUtils;
+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.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:27
+ */
+@Service
+@AllArgsConstructor
+@Transactional(rollbackFor = Exception.class)
+public class InternalWastesServiceImpl extends ServiceImpl<InternalWastesMapper, InternalWastes> implements InternalWastesService {
+
+    private InternalWastesDetailService internalWastesDetailService;
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾鐧昏鍒嗛〉鏌ヨ
+     * @param page
+     * @param internalWastes
+     * @return
+     */
+    @Override
+    public IPage<InternalWastesDto> pageInternalWastes(Page page, InternalWastes internalWastes) {
+        return baseMapper.pageInternalWastes(page, QueryWrappers.queryWrappers(internalWastes));
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾鐧昏鏂板
+     * @param internalWastes
+     * @return
+     */
+    @Override
+    public boolean addInternalWastes(InternalWastesDto internalWastes) {
+
+        baseMapper.insert(internalWastes);
+        // 鏂板璇︽儏
+        for (InternalWastesDetail internalWastesDetail : internalWastes.getWastesDetailList()) {
+            internalWastesDetail.setWastesId(internalWastes.getWastesId());
+        }
+        internalWastesDetailService.saveBatch(internalWastes.getWastesDetailList());
+        return true;
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾鐧昏淇敼
+     * @param internalWastes
+     * @return
+     */
+    @Override
+    public boolean updateInternalWastes(InternalWastesDto internalWastes) {
+        baseMapper.updateById(internalWastes);
+
+        // 鍒犻櫎涔嬪墠鐨勮鎯�
+        internalWastesDetailService.remove(Wrappers.<InternalWastesDetail>lambdaQuery()
+                .eq(InternalWastesDetail::getWastesId, internalWastes.getWastesId()));
+
+        // 鏂板璇︽儏
+        for (InternalWastesDetail internalWastesDetail : internalWastes.getWastesDetailList()) {
+            internalWastesDetail.setWastesId(internalWastes.getWastesId());
+        }
+        internalWastesDetailService.saveBatch(internalWastes.getWastesDetailList());
+
+        return true;
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾鐧昏鍒犻櫎
+     * @param WastesId
+     * @return
+     */
+    @Override
+    public boolean delInternalWastes(Integer WastesId) {
+        internalWastesDetailService.remove(Wrappers.<InternalWastesDetail>lambdaQuery()
+                .eq(InternalWastesDetail::getWastesId, WastesId));
+        baseMapper.deleteById(WastesId);
+        return true;
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾鐧昏鏌ョ湅璇︽儏
+     * @param WastesId
+     * @return
+     */
+    @Override
+    public InternalWastesDto getInternalWastesOne(Integer WastesId) {
+        InternalWastes internalWastes = baseMapper.selectById(WastesId);
+        InternalWastesDto internalWastesDto = new InternalWastesDto();
+        BeanUtils.copyProperties(internalWastes, internalWastesDto);
+
+        // 鏌ヨ璇︾粏淇℃伅
+        internalWastesDto.setWastesDetailList(internalWastesDetailService.list(Wrappers.<InternalWastesDetail>lambdaQuery()
+                .eq(InternalWastesDetail::getWastesId, WastesId)));
+        return internalWastesDto;
+    }
+
+    /**
+     * 瀵煎嚭涓夊簾澶勭悊
+     * @param wastesId
+     * @param response
+     */
+    @Override
+    public void exportInternalWastes(Integer wastesId, HttpServletResponse response) {
+        InternalWastes internalWastes = baseMapper.selectById(wastesId);
+
+        List<InternalWastesDetail> wastesDetailList = internalWastesDetailService.list(Wrappers.<InternalWastesDetail>lambdaQuery()
+                .eq(InternalWastesDetail::getWastesId, wastesId));
+
+        int index = 1;
+        for (InternalWastesDetail detail : wastesDetailList) {
+            detail.setIndex(index);
+            index++;
+        }
+
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-wastes.docx");
+        Configure configure = Configure.builder()
+                .bind("wastesDetailList", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("remark", internalWastes.getRemark());
+                    put("wastesDetailList", wastesDetailList);
+                }});
+
+        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-resource-require/src/main/java/com/yuanchu/mom/vo/AcceptanceDetailsVo.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/vo/AcceptanceDetailsVo.java
new file mode 100644
index 0000000..c02fc17
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/vo/AcceptanceDetailsVo.java
@@ -0,0 +1,23 @@
+package com.yuanchu.mom.vo;
+
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptance;
+import com.yuanchu.mom.pojo.FeStandardSubstanceAcceptanceInspection;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+public class AcceptanceDetailsVo  extends FeStandardSubstanceAcceptance {
+
+    @ApiModelProperty("鐗╄川娓呭崟")
+    private FeStandardSubstance substance;
+
+    @ApiModelProperty("楠屾敹鍗�")
+    private FeStandardSubstanceAcceptance acceptance;
+
+    @ApiModelProperty("寮�绠辫褰�")
+    private List<FeStandardSubstanceAcceptanceInspection> list;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/vo/AcceptanceVo.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/vo/AcceptanceVo.java
new file mode 100644
index 0000000..f23ade7
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/vo/AcceptanceVo.java
@@ -0,0 +1,47 @@
+package com.yuanchu.mom.vo;
+
+import com.yuanchu.mom.pojo.FeStandardSubstance;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class AcceptanceVo {
+
+    @ApiModelProperty("妫�楠岃〃id")
+    private Integer id;
+
+    @ApiModelProperty("鏍囧噯鐗╄川鍚嶇О")
+    private String name;
+
+    @ApiModelProperty("瑙勬牸鍨嬪彿")
+    private String model;
+
+    @ApiModelProperty("鐢熶骇鍘傚")
+    private String factoryManufacturer;
+
+    @ApiModelProperty("鍑哄満缂栧彿")
+    private String factoryNum;
+
+    @ApiModelProperty("绠$悊缂栧彿")
+    private String manageNum;
+
+    @ApiModelProperty("涓嶇‘瀹氬害")
+    private String uncertainty;
+
+    @ApiModelProperty("鏁伴噺")
+    private Long quantity;
+
+    @ApiModelProperty("璐疆鏃ユ湡")
+    private LocalDateTime acquisitionDate;
+
+    @ApiModelProperty("鏈夋晥鏈�")
+    private LocalDateTime effectiveDate;
+
+    @ApiModelProperty("鏂囨。缂栧彿")
+    private String fileNum;
+
+    @ApiModelProperty("瀛樻斁浣嶇疆")
+    private String position;
+}
diff --git a/cnas-resource-require/src/main/java/com/yuanchu/mom/vo/SubstanceRecordVo.java b/cnas-resource-require/src/main/java/com/yuanchu/mom/vo/SubstanceRecordVo.java
new file mode 100644
index 0000000..a2fe984
--- /dev/null
+++ b/cnas-resource-require/src/main/java/com/yuanchu/mom/vo/SubstanceRecordVo.java
@@ -0,0 +1,46 @@
+package com.yuanchu.mom.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class SubstanceRecordVo {
+
+    @ApiModelProperty("id")
+    private Integer id;
+
+    @ApiModelProperty("鏍囧噯鐗╄川鍚嶇О")
+    private String name;
+
+    @ApiModelProperty("瑙勬牸鍨嬪彿")
+    private String model;
+
+    @ApiModelProperty("鍑哄満缂栧彿")
+    private String factoryNum;
+
+    @ApiModelProperty("鏁伴噺")
+    private Long quantity;
+
+    @ApiModelProperty("棰嗙敤浜�")
+    private String borrowUser;
+
+    @ApiModelProperty("鍊熷嚭鏃ユ湡")
+    private LocalDateTime borrowDate;
+
+    @ApiModelProperty("褰掕繕鏃ユ湡")
+    private LocalDateTime returnDate;
+
+    @ApiModelProperty("褰掕繕浜�")
+    private String returnedPerson;
+
+    @ApiModelProperty("瀹屽ソ鎬�")
+    private String returnIntegrity;
+
+    @ApiModelProperty("0锛氬�熺敤 1:褰掕繕")
+    private String status;
+
+    @ApiModelProperty("澶囨敞")
+    private String remark;
+}
diff --git a/cnas-resource-require/src/main/resources/mapper/FeCalibrationScheduleMapper.xml b/cnas-resource-require/src/main/resources/mapper/FeCalibrationScheduleMapper.xml
new file mode 100644
index 0000000..8ba39c4
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FeCalibrationScheduleMapper.xml
@@ -0,0 +1,38 @@
+<?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.FeCalibrationScheduleMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FeCalibrationSchedule">
+        <id column="id" property="id" />
+        <result column="instrument_name" property="instrumentName" />
+        <result column="model" property="model" />
+        <result column="management_number" property="managementNumber" />
+        <result column="technical_indicators" property="technicalIndicators" />
+        <result column="verification_cyde" property="verificationCyde" />
+        <result column="verification_unit" property="verificationUnit" />
+        <result column="recently_time" property="recentlyTime" />
+        <result column="next_time" property="nextTime" />
+        <result column="remark" property="remark" />
+        <result column="organization" property="organization" />
+        <result column="organization_date" property="organizationDate" />
+        <result column="approve" property="approve" />
+        <result column="approve_date" property="approveDate" />
+        <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="ipage" resultType="com.yuanchu.mom.pojo.FeCalibrationSchedule">
+        select * from cnas_fe_calibration_schedule
+        <where>
+            <if test="instrumentName != null and instrumentName != ''">
+                instrument_name like CONCAT('%', #{instrumentName}, '%')
+            </if>
+            <if test="instrumentName != null and managementNumber != ''">
+                management_number like CONCAT('%', #{managementNumber}, '%')
+            </if>
+        </where>
+    </select>
+
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/FeIlluminationDetectionAreaMapper.xml b/cnas-resource-require/src/main/resources/mapper/FeIlluminationDetectionAreaMapper.xml
new file mode 100644
index 0000000..d425782
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FeIlluminationDetectionAreaMapper.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.FeIlluminationDetectionAreaMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FeIlluminationDetectionArea">
+        <id column="detection_area_id" property="detectionAreaId" />
+        <result column="detection_area_label" property="detectionAreaLabel" />
+        <result column="value_one" property="valueOne" />
+        <result column="value_two" property="valueTwo" />
+        <result column="value_three" property="valueThree" />
+        <result column="average" property="average" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/FeIlluminationMapper.xml b/cnas-resource-require/src/main/resources/mapper/FeIlluminationMapper.xml
new file mode 100644
index 0000000..068fb01
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FeIlluminationMapper.xml
@@ -0,0 +1,54 @@
+<?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.FeIlluminationMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FeIllumination">
+        <id column="intensity_illumination_id" property="intensityIlluminationId" />
+        <result column="device_id" property="deviceId" />
+        <result column="conclusion" property="conclusion" />
+        <result column="tester_id" property="testerId" />
+        <result column="checker_id" property="checkerId" />
+        <result column="test_date" property="testDate" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+    <select id="getFeLightningProtection" resultType="com.yuanchu.mom.dto.FeIlluminationDto">
+        SELECT cdi.*, d.*, u1.name checker_user, u2.name tester_user, dv.device_name, dv.management_number
+        FROM cnas_fe_illumination cdi
+                 left join device dv on dv.id = cdi.device_id
+                 LEFT JOIN (SELECT d.id,
+                                   dmr.calibration_date,
+                                   dmr.next_calibration_date
+                            FROM device d
+                                     LEFT JOIN device_metric_record dmr ON dmr.device_id = d.id
+                                AND dmr.type = 'calibrate'
+                            GROUP BY d.id
+                            HAVING max(dmr.id)) d ON d.id = cdi.device_id
+                 left join user u1 on u1.id = cdi.checker_id
+                 left join user u2 on u2.id = cdi.tester_id
+    </select>
+
+    <!-- 鏌ヨ鐓ф槑璁板綍 -->
+    <select id="selectFeIllumination" resultType="com.yuanchu.mom.dto.FeIlluminationExportDto">
+        SELECT cdi.*,
+               dv.device_name,
+               dv.management_number,
+               DATE_FORMAT(d.calibration_date, '%Y-%m-%d') calibrationDateString,
+               DATE_FORMAT(d.next_calibration_date, '%Y-%m-%d') nextCalibrationDateString
+        FROM cnas_fe_illumination cdi
+                 left join device dv on dv.id = cdi.device_id
+                 LEFT JOIN (SELECT d.id,
+                                   dmr.calibration_date,
+                                   dmr.next_calibration_date
+                            FROM device d
+                                     LEFT JOIN device_metric_record dmr ON dmr.device_id = d.id
+                                AND dmr.type = 'calibrate'
+                            GROUP BY d.id
+                            HAVING max(dmr.id)) d ON d.id = cdi.device_id
+                 left join user u1 on u1.id = cdi.checker_id
+                 left join user u2 on u2.id = cdi.tester_id
+        where cdi.intensity_illumination_id = #{intensityIlluminationId}
+    </select>
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/FeLightningProtectionMapper.xml b/cnas-resource-require/src/main/resources/mapper/FeLightningProtectionMapper.xml
new file mode 100644
index 0000000..ed10676
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FeLightningProtectionMapper.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.FeLightningProtectionMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FeLightningProtection">
+        <id column="lightning_protection_id" property="lightningProtectionId" />
+        <result column="file_name" property="fileName" />
+        <result column="system_file_name" property="systemFileName" />
+        <result column="detection_date" property="detectionDate" />
+        <result column="term_validity" property="termValidity" />
+        <result column="detection_unit" property="detectionUnit" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+    <select id="exportOfLightningProtectionDetection" resultType="com.yuanchu.mom.excel.FeLightningProtectionExcel">
+        select * from cnas_fe_lightning_protection
+    </select>
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/FeMeasuredQuantityMapper.xml b/cnas-resource-require/src/main/resources/mapper/FeMeasuredQuantityMapper.xml
new file mode 100644
index 0000000..46bc435
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FeMeasuredQuantityMapper.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.FeMeasuredQuantityMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FeMeasuredQuantity">
+        <id column="measured_quantity_id" property="measuredQuantityId" />
+        <result column="measured_quantity_label" property="measuredQuantityLabel" />
+        <result column="value_a" property="valueA" />
+        <result column="value_b" property="valueB" />
+        <result column="value_c" property="valueC" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="power_stable_id" property="powerStableId" />
+    </resultMap>
+
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/FePowerStableMapper.xml b/cnas-resource-require/src/main/resources/mapper/FePowerStableMapper.xml
new file mode 100644
index 0000000..41e795b
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FePowerStableMapper.xml
@@ -0,0 +1,71 @@
+<?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.FePowerStableMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FePowerStable">
+        <id column="power_stable_id" property="powerStableId" />
+        <result column="test_location" property="testLocation" />
+        <result column="test_date" property="testDate" />
+        <result column="device_id" property="deviceId" />
+        <result column="conclusion" property="conclusion" />
+        <result column="tester_id" property="testerId" />
+        <result column="checker_id" property="checkerId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+    <select id="getLaboratoryFacilityPowerStablePage" resultType="com.yuanchu.mom.dto.FePowerStableDto">
+        SELECT cfps.*, d.*, u1.name checker_user, u2.name tester_user, dv.device_name, dv.management_number
+        FROM cnas_fe_power_stable cfps
+                 left join device dv on dv.id = cfps.device_id
+                 LEFT JOIN (SELECT d.id,
+                                   dmr.calibration_date,
+                                   dmr.next_calibration_date
+                            FROM device d
+                                     LEFT JOIN device_metric_record dmr ON dmr.device_id = d.id
+                                AND dmr.type = 'calibrate'
+                            GROUP BY d.id
+                            HAVING max(dmr.id)) d ON d.id = cfps.device_id
+                 left join user u1 on u1.id = cfps.checker_id
+                 left join user u2 on u2.id = cfps.tester_id
+    </select>
+
+    <select id="getCalibrationDate" resultType="java.util.Map">
+        SELECT
+            d.device_name deviceName,
+            d.management_number managementNumber,
+            date_format(dmr.calibration_date,'%Y-%m-%d') calibrationDate,
+            date_format(dmr.next_calibration_date,'%Y-%m-%d') nextCalibrationDate
+        FROM
+            device d
+                LEFT JOIN device_metric_record dmr ON dmr.device_id = d.id
+                AND dmr.type = 'calibrate'
+        where d.id = #{deviceId}
+        GROUP BY
+            d.id
+    </select>
+
+    <!-- 鏌ヨ鐢垫簮绋冲畾鎬� -->
+    <select id="selectPowerStable" resultType="com.yuanchu.mom.dto.FePowerStableExportDto">
+        SELECT cfps.*,
+               dv.device_name,
+               dv.management_number,
+               DATE_FORMAT(cfps.test_date, '%Y-%m-%d') testDateString,
+               DATE_FORMAT(d.calibration_date, '%Y-%m-%d') calibrationDateString,
+               DATE_FORMAT(d.next_calibration_date, '%Y-%m-%d') nextCalibrationDateString
+        FROM cnas_fe_power_stable cfps
+                 left join device dv on dv.id = cfps.device_id
+                 LEFT JOIN (SELECT d.id,
+                                   dmr.calibration_date,
+                                   dmr.next_calibration_date
+                            FROM device d
+                                     LEFT JOIN device_metric_record dmr ON dmr.device_id = d.id
+                                AND dmr.type = 'calibrate'
+                            GROUP BY d.id
+                            HAVING max(dmr.id)) d ON d.id = cfps.device_id
+                 left join user u1 on u1.id = cfps.checker_id
+                 left join user u2 on u2.id = cfps.tester_id
+        where cfps.power_stable_id = #{powerStableId}
+    </select>
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceInspectionMapper.xml b/cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceInspectionMapper.xml
new file mode 100644
index 0000000..d56e37f
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceInspectionMapper.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.FeStandardSubstanceAcceptanceInspectionMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FeStandardSubstanceAcceptanceInspection">
+        <id column="id" property="id" />
+        <result column="acceptance_id" property="acceptanceId" />
+        <result column="name" property="name" />
+        <result column="number" property="number" />
+        <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-resource-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceMapper.xml b/cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceMapper.xml
new file mode 100644
index 0000000..93c1d76
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceMapper.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.FeStandardSubstanceAcceptanceMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FeStandardSubstanceAcceptance">
+        <id column="id" property="id" />
+        <result column="substance_id" property="substanceId" />
+        <result column="arrive_date" property="arriveDate" />
+        <result column="maintenance_unit" property="maintenanceUnit" />
+        <result column="perameters" property="perameters" />
+        <result column="installation" property="installation" />
+        <result column="situation" property="situation" />
+        <result column="signature" property="signature" />
+        <result column="producer" property="producer" />
+        <result column="recipient" property="recipient" />
+        <result column="file" property="file" />
+        <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="getPageAcceptance" resultType="com.yuanchu.mom.vo.AcceptanceVo">
+        SELECT
+            sa.id,
+            ss.name,
+            ss.model,
+            ss.factory_manufacturer,
+            ss.factory_num,
+            ss.manage_num,
+            ss.uncertainty,
+            ss.quantity,
+            ss.acquisition_date,
+            ss.effective_date,
+            ss.file_num,
+            ss.position
+        FROM cnas_fe_standard_substance_acceptance sa
+                 LEFT JOIN cnas_fe_standard_substance ss on ss.id = sa.substance_id
+        <where>
+            <if test="name != null and name != ''">
+                ss.name like CONCAT('%', #{name}, '%')
+            </if>
+        </where>
+    </select>
+
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceMapper.xml b/cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceMapper.xml
new file mode 100644
index 0000000..842126d
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceMapper.xml
@@ -0,0 +1,56 @@
+<?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.FeStandardSubstanceMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FeStandardSubstance">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="model" property="model" />
+        <result column="factory_manufacturer" property="factoryManufacturer" />
+        <result column="factory_num" property="factoryNum" />
+        <result column="manage_num" property="manageNum" />
+        <result column="uncertainty" property="uncertainty" />
+        <result column="quantity" property="quantity" />
+        <result column="acquisition_date" property="acquisitionDate" />
+        <result column="effective_date" property="effectiveDate" />
+        <result column="file_num" property="fileNum" />
+        <result column="position" property="position" />
+        <result column="state" property="state" />
+        <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="getPage" resultType="com.yuanchu.mom.pojo.FeStandardSubstance">
+        select * from cnas_fe_standard_substance
+        <where>
+            <if test="ew.name != null and ew.name != ''">
+                name like CONCAT('%', #{ew.name}, '%')
+            </if>
+            <if test="ew.factoryManufacturer != null and ew.factoryManufacturer != ''">
+                and factory_manufacturer like CONCAT('%', #{ew.factoryManufacturer}, '%')
+            </if>
+            <if test="ew.factoryNum != null and ew.factoryNum != ''">
+                and factory_num like CONCAT('%', #{factoryNum}, '%')
+            </if>
+            <if test="ew.manageNum != null and ew.manageNum != ''">
+                and manage_num like CONCAT('%', #{ew.manageNum}, '%')
+            </if>
+            <if test="ew.model != null and ew.model != ''">
+                and model like CONCAT('%', #{ew.model}, '%')
+            </if>
+            <if test="ew.effectiveDate != null and ew.effectiveDate != ''">
+                and effective_date =  #{ew.effectiveDate}
+            </if>
+            <if test="ew.fileNum != null and ew.fileNum != ''">
+                and file_num like CONCAT('%', #{ew.fileNum}, '%')
+            </if>
+            <if test="ew.position != null and ew.position != ''">
+                and position like CONCAT('%', #{ew.position}, '%')
+            </if>
+        </where>
+    </select>
+
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceRecordMapper.xml b/cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceRecordMapper.xml
new file mode 100644
index 0000000..3ca6aef
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FeStandardSubstanceRecordMapper.xml
@@ -0,0 +1,51 @@
+<?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.FeStandardSubstanceRecordMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FeStandardSubstanceRecord">
+        <id column="id" property="id" />
+        <result column="substance_id" property="substanceId" />
+        <result column="integrity" property="integrity" />
+        <result column="borrow_user" property="borrowUser" />
+        <result column="phone" property="phone" />
+        <result column="borrow_date" property="borrowDate" />
+        <result column="return_date" property="returnDate" />
+        <result column="lender" property="lender" />
+        <result column="rummager" property="rummager" />
+        <result column="status" property="status" />
+        <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="getPage" resultType="com.yuanchu.mom.vo.SubstanceRecordVo">
+        SELECT
+        ssr.id,
+        ss.name,
+        ss.model,
+        ss.factory_num,
+        ss.quantity,
+        ssr.borrow_user,
+        ssr.borrow_date,
+        ssr.return_date,
+        ssr.integrity,
+        ssr.return_integrity,
+        ssr.returned_person,
+        ss.remark
+        FROM cnas_fe_standard_substance_record ssr
+        LEFT JOIN cnas_fe_standard_substance ss on ss.id = ssr.substance_id
+        <where>
+            <if test="ew.name != null and ew.name != ''">
+                ss.name like CONCAT('%', #{ew.name}, '%')
+            </if>
+            <if test="ew.model != null and ew.model != ''">
+                and ss.model like CONCAT('%', #{ew.model}, '%')
+            </if>
+            <if test="ew.factoryNum != null and ew.factoryNum != ''">
+                and ss.factory_num like CONCAT('%', #{ew.factoryNum}, '%')
+            </if>
+        </where>
+    </select>
+
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/FeTempHumDateMapper.xml b/cnas-resource-require/src/main/resources/mapper/FeTempHumDateMapper.xml
new file mode 100644
index 0000000..8fa9edc
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FeTempHumDateMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yuanchu.mom.mapper.FeTempHumDateMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FeTempHumDate">
+        <id column="date_id" property="dateId" />
+        <result column="month_date" property="monthDate" />
+        <result column="test_area_name" property="testAreaName" />
+        <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="getFeTempHumDate" resultType="com.yuanchu.mom.dto.FeTempHumDateDto">
+        select c.*, u.name create_name
+        from cnas_fe_temp_hum_date c
+                 left join user u on c.create_user = u.id
+    </select>
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/FeTempHumRecordMapper.xml b/cnas-resource-require/src/main/resources/mapper/FeTempHumRecordMapper.xml
new file mode 100644
index 0000000..f029b37
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/FeTempHumRecordMapper.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.FeTempHumRecordMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.FeTempHumRecord">
+        <id column="temp_hum_id" property="tempHumId" />
+        <result column="test_area_name" property="testAreaName" />
+        <result column="morning_test_time" property="morningTestTime" />
+        <result column="morning_temp" property="morningTemp" />
+        <result column="morning_hum" property="morningHum" />
+        <result column="morning_recorder_id" property="morningRecorderId" />
+        <result column="afternoon_time" property="afternoonTime" />
+        <result column="afternoon_temp" property="afternoonTemp" />
+        <result column="afternoon_hum" property="afternoonHum" />
+        <result column="afternoon_recorder" property="afternoonRecorder" />
+        <result column="note" property="note" />
+    </resultMap>
+
+    <select id="getFeTempHumRecordPage" resultType="com.yuanchu.mom.dto.FeTempHumRecordDto">
+        select c.*, u1.name afternoon_recorder_user, u2.name morning_recorder_user
+        from cnas_fe_temp_hum_record c
+                 left join user u1 on u1.id = c.afternoon_recorder_id
+                 left join user u2 on u2.id = c.morning_recorder_id
+        where c.date_id = #{dateId}
+        ORDER BY c.temp_hum_id desc
+    </select>
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/ForeignRegisterMapper.xml b/cnas-resource-require/src/main/resources/mapper/ForeignRegisterMapper.xml
new file mode 100644
index 0000000..428d593
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/ForeignRegisterMapper.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.ForeignRegisterMapper">
+
+    <!-- 澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ -->
+    <select id="pageForeignRegister" resultType="com.yuanchu.mom.dto.ForeignRegisterDto">
+        select *
+        from (select *
+        from cnas_foreign_register
+        <where>
+            <if test="beginDate != null and beginDate != '' and endDate != null and endDate != ''">
+                register_date between #{beginDate} and #{endDate}
+            </if>
+        </where>
+        order by create_time desc) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+    <select id="getForeignRegisterList" resultType="com.yuanchu.mom.dto.ForeignRegisterDto">
+        select *
+        from (select cfr.*,
+        u1.signature_url accompanyingUrl,
+        u2.signature_url approveUrl
+        from cnas_foreign_register cfr
+        left join user u1 on u1.id = cfr.accompanying_id
+        left join user u2 on u2.id = cfr.approve_id
+        <where>
+            <if test="beginDate != null and beginDate != '' and endDate != null and endDate != ''">
+                cfr.register_date between #{beginDate} and #{endDate}
+            </if>
+        </where>
+        order by cfr.create_time desc) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/InternalWastesDetailMapper.xml b/cnas-resource-require/src/main/resources/mapper/InternalWastesDetailMapper.xml
new file mode 100644
index 0000000..d42a6bf
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/InternalWastesDetailMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yuanchu.mom.mapper.InternalWastesDetailMapper">
+
+
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/mapper/InternalWastesMapper.xml b/cnas-resource-require/src/main/resources/mapper/InternalWastesMapper.xml
new file mode 100644
index 0000000..e9cc9d5
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/mapper/InternalWastesMapper.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.InternalWastesMapper">
+
+    <!-- 瀹夊叏鍐呭姟涓夊簾鐧昏鍒楄〃 -->
+    <select id="pageInternalWastes" resultType="com.yuanchu.mom.dto.InternalWastesDto">
+        select *
+        from (select *
+        from cnas_internal_wastes
+        order by create_time desc) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+
+</mapper>
diff --git a/cnas-resource-require/src/main/resources/static/foreign-register.docx b/cnas-resource-require/src/main/resources/static/foreign-register.docx
new file mode 100644
index 0000000..ca6eed5
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/static/foreign-register.docx
Binary files differ
diff --git a/cnas-resource-require/src/main/resources/static/illumination.docx b/cnas-resource-require/src/main/resources/static/illumination.docx
new file mode 100644
index 0000000..58311e0
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/static/illumination.docx
Binary files differ
diff --git a/cnas-resource-require/src/main/resources/static/internal-wastes.docx b/cnas-resource-require/src/main/resources/static/internal-wastes.docx
new file mode 100644
index 0000000..b4bc955
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/static/internal-wastes.docx
Binary files differ
diff --git a/cnas-resource-require/src/main/resources/static/power-stable.docx b/cnas-resource-require/src/main/resources/static/power-stable.docx
new file mode 100644
index 0000000..69fe3b1
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/static/power-stable.docx
Binary files differ
diff --git a/cnas-resource-require/src/main/resources/static/temp_hum_date.docx b/cnas-resource-require/src/main/resources/static/temp_hum_date.docx
new file mode 100644
index 0000000..e88b4f0
--- /dev/null
+++ b/cnas-resource-require/src/main/resources/static/temp_hum_date.docx
Binary files differ
diff --git a/framework/src/main/java/com/yuanchu/mom/annotation/CustomClazzName.java b/framework/src/main/java/com/yuanchu/mom/annotation/CustomClazzName.java
new file mode 100644
index 0000000..a18e75d
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/annotation/CustomClazzName.java
@@ -0,0 +1,17 @@
+package com.yuanchu.mom.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE, ElementType.METHOD})
+public @interface CustomClazzName {
+
+    String name() default "";
+
+    int index() default 0;
+
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java b/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
index 54eaa1d..d539429 100644
--- a/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
+++ b/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java
@@ -17,11 +17,7 @@
         String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
         String date2 = LocalDate.now().format(DateTimeFormatter.ofPattern(patten));
         int num;
-        if (tableName.equals("ins_order")) {
-            num = systemLogMapper.countRowsByNow2(tableName, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + 1;
-        } else {
-            num = systemLogMapper.countRowsByNow(tableName, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + 1;
-        }
+        num = systemLogMapper.countRowsByNow(tableName, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + 1;
         String nums = num + "";
         if (nums.length() == 1) nums = "00" + num;
         else if (nums.length() == 2) nums = "0" + num;
@@ -29,29 +25,14 @@
     }
 
     //妫�楠屽崟濮旀墭鍗曞彿鐨勭敓鎴愯鍒�
-    public String giveCode2(String code, Long companyId, String laboratory, String tableName, String symbol, String patten) {
+    public String giveCode2(String code, String tableName, String symbol, String patten) {
         String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
         String date2 = LocalDate.now().format(DateTimeFormatter.ofPattern(patten));
         int num;
-        num = systemLogMapper.countRowsByNow3(tableName, companyId, laboratory, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"))) + 1;
+        num = systemLogMapper.countRowsByNow2(tableName, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + 1;
         String nums = num + "";
         if (nums.length() == 1) nums = "00" + num;
         else if (nums.length() == 2) nums = "0" + num;
         return code + (date2 == null ? date : date2) + symbol + nums;
     }
-
-    //妫�楠屽崟鐢熸垚澶栭儴濮旀墭缂栧彿鐨勮鍒�
-    public String giveCode3(String code, Long companyId, String laboratory, String tableName, String symbol, String patten) {
-        String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
-        String date2 = LocalDate.now().format(DateTimeFormatter.ofPattern(patten));
-        int num;
-        num = systemLogMapper.countRowsByNow4(tableName, companyId, laboratory, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"))) + 1;
-        String nums = num + "";
-        if (nums.length() == 1) nums = "0000" + num;
-        else if (nums.length() == 2) nums = "000" + num;
-        else if (nums.length() == 3) nums = "00" + num;
-        else if (nums.length() == 4) nums = "0" + num;
-        return code + (date2 == null ? date : date2) + symbol + nums;
-    }
-
 }
diff --git a/framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java b/framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java
new file mode 100644
index 0000000..ff6e615
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/utils/QYWXApi.java
@@ -0,0 +1,67 @@
+package com.yuanchu.mom.utils;
+
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.yuanchu.mom.exception.ErrorException;
+import com.yuanchu.mom.vo.Result;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import java.util.HashMap;
+import java.util.Map;
+
+@Data
+@Slf4j
+@Component
+//浼佷笟寰俊瀵规帴鎺ュ彛
+public class QYWXApi {
+
+
+	public static final String WWA_423654_B_975441_AC = "wwa423654b975441ac";
+	final String ip = "https://qyapi.weixin.qq.com/";
+	final String corpid = WWA_423654_B_975441_AC;
+	final String corpsecret = "rQ1_ddKBVW5qVSMNK_p0EnR3Z2OHrAMxGahBKTKWYxE";
+
+
+	/**
+	 * 浼佷笟寰俊鑾峰彇token
+	 *
+	 * @return
+	 */
+	public String getToken() {
+		try {
+			Map<String, Object> map = new HashMap<>();
+			map.put("corpid", corpid);
+			map.put("corpsecret", corpsecret);
+			String result = HttpRequest.get(ip + "cgi-bin/gettoken")
+					.contentType("application/x-www-form-urlencoded")
+					.form(map).execute().body();
+			JSONObject jsonObject = JSONObject.parseObject(result);
+			return jsonObject.getString("access_token");
+		} catch (Exception e) {
+			throw new RuntimeException("token鑾峰彇寮傚父");
+		}
+	}
+
+	/**
+	 * 鍙戦�佸簲鐢ㄥ崱鐗囨秷鎭�
+	 *
+	 * @param map
+	 * @return
+	 */
+	public void send(Map map) {
+		try {
+			String result = HttpRequest.post(ip + "cgi-bin/message/send?access_token=" + getToken())
+					.contentType("application/json")
+					.body(JSONArray.toJSONString(map)).execute().body();
+			JSONObject jsonObject = JSONObject.parseObject(result);
+			if (jsonObject.getInteger("errcode") == 0) {
+			} else {
+				throw new ErrorException("浼佷笟寰俊鎺ㄩ�佹秷鎭け璐�" + jsonObject.getString("errmsg"));
+			}
+		} catch (Exception e) {
+			throw new ErrorException("浼佷笟寰俊鎺ㄩ�佹秷鎭け璐�,鑾峰彇寮傚父:" + e.getMessage());
+		}
+	}
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
index cd15ba1..6f0e46d 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
@@ -7,8 +7,6 @@
 import com.alibaba.excel.ExcelWriter;
 import com.alibaba.excel.write.metadata.WriteSheet;
 import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -22,15 +20,11 @@
 import com.yuanchu.mom.mapper.*;
 import com.yuanchu.mom.pojo.*;
 import com.yuanchu.mom.service.InformationNotificationService;
-import com.yuanchu.mom.service.InsOrderPlanService;
 import com.yuanchu.mom.service.InsOrderService;
-import com.yuanchu.mom.service.InsProductService;
 import com.yuanchu.mom.utils.GiveCode;
 import com.yuanchu.mom.utils.QYWXApi;
 import com.yuanchu.mom.utils.QueryWrappers;
 import com.yuanchu.mom.vo.SampleDefectsFatherVo;
-import lombok.AllArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -44,7 +38,6 @@
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.net.URLEncoder;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;

--
Gitblit v1.9.3