From f3bb76fa668530d5613700e57a30e6c7394d5224 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 06 三月 2025 16:50:00 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FeTempHumRecord.java                                            |   63 
 cnas-require/src/main/resources/mapper/FePowerStableMapper.xml                                                    |   71 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesStoreMapper.java                           |   27 
 cnas-require/src/main/java/com/ruoyi/requier/service/FeTempHumDateService.java                                    |   24 
 cnas-require/src/main/resources/static/foreign-register.docx                                                      |    0 
 cnas-require/src/main/java/com/ruoyi/requier/excel/FeCalibrationScheduleExport.java                               |   36 
 cnas-require/src/main/resources/mapper/FeStandardSubstanceRecordMapper.xml                                        |   51 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/SupplierManagementMapper.java                                 |   31 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeIlluminationServiceImpl.java                          |  135 +
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/InternalWastesDetailServiceImpl.java                    |   20 
 cnas-require/src/main/java/com/ruoyi/requier/service/FeIlluminationService.java                                   |   29 
 basic-server/src/main/java/com/ruoyi/basic/pojo/Laboratory.java                                                   |    1 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/ForeignRegisterServiceImpl.java                         |  101 
 cnas-require/src/main/resources/mapper/ProcurementSuppliesListMapper.xml                                          |   74 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeMeasuredQuantityServiceImpl.java                      |   20 
 cnas-require/src/main/resources/static/temp_hum_date.docx                                                         |    0 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FeTempHumDateMapper.java                                      |   20 
 cnas-require/src/main/resources/mapper/ProcurementSuppliesExpendsMapper.xml                                       |   43 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesExpends.java                                 |   62 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesConsumablesServiceImpl.java          |   14 
 cnas-require/src/main/java/com/ruoyi/requier/service/FePowerStableService.java                                    |   33 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstance.java                                        |   81 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesContentsServiceImpl.java             |   91 
 cnas-require/src/main/java/com/ruoyi/requier/dto/InternalWastesDto.java                                           |   19 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FePowerStableMapper.java                                      |   34 
 cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml                                                    |   21 
 cnas-require/src/main/resources/static/power-stable.docx                                                          |    0 
 cnas-require/src/main/java/com/ruoyi/requier/vo/AcceptanceVo.java                                                 |   46 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java            |   16 
 cnas-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceMapper.xml                                    |   46 
 cnas-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesExpendDto.java                                |   27 
 cnas-require/src/main/java/com/ruoyi/requier/vo/AcceptanceDetailsVo.java                                          |   22 
 cnas-require/src/main/resources/mapper/ForeignRegisterMapper.xml                                                  |   39 
 cnas-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceInspectionMapper.xml                          |   17 
 cnas-require/src/main/resources/mapper/FeStandardSubstanceMapper.xml                                              |   56 
 cnas-require/src/main/java/com/ruoyi/requier/controller/FeCalibrationScheduleController.java                      |   88 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesListMapper.java                            |   29 
 cnas-require/src/main/java/com/ruoyi/requier/controller/FePowerStableController.java                              |   96 
 cnas-require/src/main/java/com/ruoyi/requier/controller/FeTempHumDateController.java                              |   91 
 cnas-require/src/main/java/com/ruoyi/requier/service/FeIlluminationDetectionAreaService.java                      |   16 
 cnas-require/src/main/java/com/ruoyi/requier/dto/AcceptanceDto.java                                               |   15 
 basic-server/src/main/java/com/ruoyi/basic/controller/CertificationController.java                                |    2 
 cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceAcceptanceInspectionController.java    |   40 
 cnas-require/src/main/java/com/ruoyi/requier/controller/InternalWastesController.java                             |   93 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FeTempHumDate.java                                              |   54 
 cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesListService.java                          |   28 
 cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceService.java                              |   19 
 cnas-require/src/main/resources/mapper/SuppliersDirectoryContentsMapper.xml                                       |   15 
 cnas-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesListDto.java                                  |   17 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesContentsMapper.java                        |    9 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesContents.java                                |   42 
 cnas-require/src/main/java/com/ruoyi/requier/dto/StoreDto.java                                                    |   28 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FeTempHumRecordMapper.java                                    |   20 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/InternalWastesDetailMapper.java                               |   16 
 pom.xml                                                                                                           |    8 
 cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceRecordController.java                  |   60 
 cnas-require/src/main/java/com/ruoyi/requier/dto/ForeignRegisterDto.java                                          |   32 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FeIlluminationDetectionAreaMapper.java                        |   16 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/InternalWastes.java                                             |   44 
 cnas-require/src/main/java/com/ruoyi/requier/dto/FeTempHumDateDto.java                                            |   12 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FePowerStable.java                                              |   58 
 cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesListController.java                    |   94 
 cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesConsumablesService.java                   |    7 
 cnas-require/src/main/java/com/ruoyi/requier/controller/SuppliersDirectoryContentsController.java                 |   77 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/SuppliersDirectoryContents.java                                 |   52 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeIlluminationDetectionAreaServiceImpl.java             |   20 
 cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesStoreController.java                   |   81 
 cnas-require/src/main/java/com/ruoyi/requier/vo/SubstanceRecordVo.java                                            |   46 
 cnas-require/src/main/java/com/ruoyi/requier/excel/FeStandardSubstanceExcel.java                                  |   54 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FeIlluminationMapper.java                                     |   28 
 cnas-require/src/main/java/com/ruoyi/requier/dto/SupplierManagementDto.java                                       |   67 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FeMeasuredQuantity.java                                         |   54 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceRecordMapper.java                          |   22 
 cnas-require/src/main/java/com/ruoyi/requier/controller/SupplierManagementController.java                         |   91 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FeIlluminationDetectionArea.java                                |   59 
 cnas-require/src/main/java/com/ruoyi/requier/service/FeCalibrationScheduleService.java                            |   20 
 cnas-require/src/main/java/com/ruoyi/requier/controller/FeLightningProtectionController.java                      |   80 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesStore.java                                   |   52 
 cnas-require/src/main/java/com/ruoyi/requier/service/SuppliersDirectoryContentsService.java                       |   22 
 cnas-require/src/main/java/com/ruoyi/requier/service/ForeignRegisterService.java                                  |   34 
 cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesExpendsService.java                       |   23 
 cnas-require/src/main/java/com/ruoyi/requier/service/InternalWastesService.java                                   |   63 
 cnas-require/src/main/java/com/ruoyi/requier/dto/FePowerStableAddDto.java                                         |   15 
 cnas-require/src/main/resources/mapper/SupplierManagementMapper.xml                                               |   86 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/FileSaveUtil.java                                               |  179 +
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FeLightningProtection.java                                      |   58 
 cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesStoreService.java                         |   21 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/SuppliersDirectoryContentsMapper.java                         |   16 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/InternalWastesServiceImpl.java                          |  170 +
 cnas-require/src/main/java/com/ruoyi/requier/service/SupplierManagementService.java                               |   32 
 cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesContentsService.java                      |   16 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesConsumablesMapper.java                     |    9 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceAcceptance.java                              |   87 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/ForeignRegister.java                                            |   72 
 cnas-require/pom.xml                                                                                              |   39 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeTempHumDateServiceImpl.java                           |   86 
 cnas-require/src/main/resources/mapper/InternalWastesDetailMapper.xml                                             |    6 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesListServiceImpl.java                 |  121 +
 cnas-require/src/main/resources/mapper/FeLightningProtectionMapper.xml                                            |   20 
 cnas-require/src/main/resources/mapper/InternalWastesMapper.xml                                                   |   16 
 cnas-require/src/main/java/com/ruoyi/requier/controller/ForeignRegisterController.java                            |   93 
 cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceRecordService.java                        |   30 
 cnas-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationAddDto.java                                        |   15 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FeIllumination.java                                             |   55 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeCalibrationScheduleServiceImpl.java                   |   27 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FeLightningProtectionMapper.java                              |   21 
 cnas-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationExportDto.java                                     |   25 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceRecordServiceImpl.java               |   79 
 cnas-require/src/main/java/com/ruoyi/requier/excel/StoreExcel.java                                                |   37 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java           |  111 
 cnas-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesListEDto.java                                 |  104 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceMapper.java                                |   20 
 cnas-require/src/main/resources/mapper/FeIlluminationMapper.xml                                                   |   54 
 cnas-require/src/main/resources/mapper/FeCalibrationScheduleMapper.xml                                            |   38 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesList.java                                    |  101 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeLightningProtectionServiceImpl.java                   |   27 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesExpendsMapper.java                         |   22 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/InternalWastesMapper.java                                     |   31 
 cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml                                                  |   26 
 cnas-require/src/main/java/com/ruoyi/requier/dto/FePowerStableExportDto.java                                      |   30 
 cnas-require/src/main/resources/static/internal-wastes.docx                                                       |    0 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FeCalibrationSchedule.java                                      |   81 
 cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml                                         |   84 
 cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceController.java                        |   82 
 cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceAcceptanceController.java              |   88 
 cnas-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationDto.java                                           |   28 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FeMeasuredQuantityMapper.java                                 |   16 
 cnas-require/src/main/resources/mapper/FeIlluminationDetectionAreaMapper.xml                                      |   16 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java |   20 
 cnas-require/src/main/java/com/ruoyi/requier/dto/FePowerStableDto.java                                            |   29 
 cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceAcceptanceInspectionService.java          |   16 
 cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceAcceptanceService.java                    |   33 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/InternalWastesDetail.java                                       |   66 
 cnas-require/src/main/resources/static/illumination.docx                                                          |    0 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/SuppliersDirectoryContentsServiceImpl.java              |   76 
 cnas-require/src/main/java/com/ruoyi/requier/service/InternalWastesDetailService.java                             |   16 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FePowerStableServiceImpl.java                           |  123 +
 cnas-require/src/main/resources/mapper/FeMeasuredQuantityMapper.xml                                               |   17 
 cnas-require/src/main/java/com/ruoyi/requier/controller/FeIlluminationController.java                             |   87 
 cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesExpendsController.java                 |   50 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceAcceptanceInspection.java                    |   47 
 cnas-require/src/main/java/com/ruoyi/requier/service/FeMeasuredQuantityService.java                               |   16 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeTempHumRecordServiceImpl.java                         |   27 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FeCalibrationScheduleMapper.java                              |   20 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceAcceptanceMapper.java                      |   22 
 ruoyi-admin/pom.xml                                                                                               |    6 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesConsumables.java                             |   50 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/SupplierManagement.java                                         |  111 
 cnas-require/src/main/java/com/ruoyi/requier/excel/FeLightningProtectionExcel.java                                |   22 
 cnas-require/src/main/java/com/ruoyi/requier/mapper/ForeignRegisterMapper.java                                    |   39 
 basic-server/src/main/resources/mapper/CertificationMapper.xml                                                    |   16 
 cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceRecord.java                                  |   78 
 basic-server/src/main/java/com/ruoyi/basic/service/impl/CertificationServiceImpl.java                             |    4 
 cnas-require/src/main/java/com/ruoyi/requier/dto/FeTempHumRecordDto.java                                          |   24 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesExpendsServiceImpl.java              |   77 
 cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesContentsController.java                |   75 
 cnas-require/src/main/java/com/ruoyi/requier/service/FeLightningProtectionService.java                            |   21 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/SupplierManagementServiceImpl.java                      |   92 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceServiceImpl.java                     |   26 
 cnas-require/src/main/java/com/ruoyi/requier/service/FeTempHumRecordService.java                                  |   20 
 cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesStoreServiceImpl.java                |  142 +
 161 files changed, 7,212 insertions(+), 10 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/controller/CertificationController.java b/basic-server/src/main/java/com/ruoyi/basic/controller/CertificationController.java
index 740218f..20de46f 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/controller/CertificationController.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/controller/CertificationController.java
@@ -32,7 +32,7 @@
     }
     @ApiOperation(value = "鍒犻櫎璧勮川鏄庣粏鍒楄〃")
     @DeleteMapping("/delCertificationDetail")
-    public Result<?> delCertificationDetail( String ids) {
+    public Result<?> delCertificationDetail(String ids) {
         return Result.success(certificationService.delCertificationDetail(ids));
     }
 }
diff --git a/basic-server/src/main/java/com/ruoyi/basic/pojo/Laboratory.java b/basic-server/src/main/java/com/ruoyi/basic/pojo/Laboratory.java
index a9343a1..92226bc 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/pojo/Laboratory.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/pojo/Laboratory.java
@@ -44,6 +44,7 @@
     private Integer createUser;
 
     @ApiModelProperty(value = "鍒涘缓浜�")
+    @TableField(select = false,exist = false)
     private String createUserName;
 
     @ApiModelProperty(value = "淇敼浜篿d")
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CertificationServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CertificationServiceImpl.java
index 9028444..4249e3a 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CertificationServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CertificationServiceImpl.java
@@ -12,7 +12,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 @AllArgsConstructor
@@ -38,7 +40,7 @@
     //鍒犻櫎璧勮川鏄庣粏鍒楄〃
     @Override
     public int delCertificationDetail(String ids) {
-        List<Integer> list = JSON.parseArray(ids,Integer.class);
+        List<Integer> list = Arrays.stream(ids.split(",")).map(Integer::parseInt).collect(Collectors.toList());
         return certificationMapper.deleteBatchIds(list);
     }
 
diff --git a/basic-server/src/main/resources/mapper/CertificationMapper.xml b/basic-server/src/main/resources/mapper/CertificationMapper.xml
index 4926d05..bb4ab06 100644
--- a/basic-server/src/main/resources/mapper/CertificationMapper.xml
+++ b/basic-server/src/main/resources/mapper/CertificationMapper.xml
@@ -3,17 +3,17 @@
 <mapper namespace="com.ruoyi.basic.mapper.CertificationMapper">
     <select id="getCertificationDetail" resultType="com.ruoyi.basic.pojo.Certification">
         select b.*
-        from ( select a.`name`, a.`code`,a.organization,a.explanation,a.first_issuance_date,a.latest_issuance_date,c.expire_time FROM
-            (SELECT id,name,MIN(date_of_issuance) AS first_issuance_date,
-                    MAX(date_of_issuance) AS latest_issuance_date,
-                    c.`code`,c.organization,c.explanation
-             FROM
-                 certification c
+        from ( select a.id, a.`name`, a.`code`,a.organization,a.explanation,a.first_issuance_date,a.latest_issuance_date,c.expire_time FROM
+        (SELECT id,name,MIN(date_of_issuance) AS first_issuance_date,
+        MAX(date_of_issuance) AS latest_issuance_date,
+        c.`code`,c.organization,c.explanation
+        FROM
+        certification c
         <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
             ${ew.customSqlSegment}
         </if>
-             GROUP BY
-                 name) a left join certification c on a.id=c.id
+        GROUP BY
+        name) a left join certification c on a.id=c.id
         ) b
     </select>
 </mapper>
diff --git a/cnas-require/pom.xml b/cnas-require/pom.xml
new file mode 100644
index 0000000..32347b9
--- /dev/null
+++ b/cnas-require/pom.xml
@@ -0,0 +1,39 @@
+<?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>ruoyi</artifactId>
+        <groupId>com.ruoyi</groupId>
+        <version>3.8.9</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>cnas-require</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <!-- 閫氱敤宸ュ叿-->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common</artifactId>
+        </dependency>
+
+        <!-- 鏍稿績妯″潡-->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-framework</artifactId>
+        </dependency>
+
+        <!--涓氬姟妯″潡-->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>inspect-server</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/FeCalibrationScheduleController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeCalibrationScheduleController.java
new file mode 100644
index 0000000..d2a9654
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeCalibrationScheduleController.java
@@ -0,0 +1,88 @@
+package com.ruoyi.requier.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.ruoyi.common.core.domain.Result;
+import com.ruoyi.requier.excel.FeCalibrationScheduleExport;
+import com.ruoyi.requier.pojo.FeCalibrationSchedule;
+import com.ruoyi.requier.service.FeCalibrationScheduleService;
+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;
+
+    @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);
+    }
+
+    @ApiOperation(value = "閲忓�兼函婧愯鍒掓柊澧炵紪杈�")
+    @PostMapping("/addCalibrationSchedule")
+    public Result addCalibrationSchedule(@RequestBody FeCalibrationSchedule feCalibrationSchedule) {
+        return Result.success(feCalibrationScheduleService.saveOrUpdate(feCalibrationSchedule));
+    }
+
+    @ApiOperation(value = "閲忓�兼函婧愯鍒掑垹闄�")
+    @DeleteMapping("/removeCalibrationSchedule")
+    public Result removeCalibrationSchedule(Integer id) {
+        return Result.success(feCalibrationScheduleService.removeById(id));
+    }
+
+    @ApiOperation(value = "閲忓�兼函婧愯鍒掑鍑�")
+    @GetMapping("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);
+    }
+
+    @ApiOperation(value = "閲忓�兼函婧愯鍒掑鍏�")
+    @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-require/src/main/java/com/ruoyi/requier/controller/FeIlluminationController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeIlluminationController.java
new file mode 100644
index 0000000..98bbd0c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeIlluminationController.java
@@ -0,0 +1,87 @@
+package com.ruoyi.requier.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.ruoyi.common.core.domain.Result;
+import com.ruoyi.requier.dto.FeIlluminationAddDto;
+import com.ruoyi.requier.dto.FeIlluminationDto;
+import com.ruoyi.requier.pojo.FeIllumination;
+import com.ruoyi.requier.pojo.FeIlluminationDetectionArea;
+import com.ruoyi.requier.service.FeIlluminationDetectionAreaService;
+import com.ruoyi.requier.service.FeIlluminationService;
+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:15:57
+ */
+@RestController
+@RequestMapping("/feIllumination")
+@Api(tags = "璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�")
+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
+     */
+    @ApiOperation(value = "瀵煎嚭鐓у害璁板綍")
+    @GetMapping("/exportFeIllumination")
+    public void exportFeIllumination(Integer intensityIlluminationId, HttpServletResponse response){
+        feIlluminationService.exportFeIllumination(intensityIlluminationId, response);
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/FeLightningProtectionController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeLightningProtectionController.java
new file mode 100644
index 0000000..9b72a8a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeLightningProtectionController.java
@@ -0,0 +1,80 @@
+package com.ruoyi.requier.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.utils.FileSaveUtil;
+import com.ruoyi.requier.excel.FeLightningProtectionExcel;
+import com.ruoyi.requier.pojo.FeLightningProtection;
+import com.ruoyi.requier.service.FeLightningProtectionService;
+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;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:36
+ */
+@Api(tags = "璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴�")
+@RestController
+@RequestMapping("/feLightningProtection")
+public class FeLightningProtectionController {
+
+    @Autowired
+    private FeLightningProtectionService feLightningProtectionService;
+
+    @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();
+    }
+
+    @DeleteMapping("deleteLightningProtectionDetection")
+    @ApiOperation("璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴嬪垹闄�")
+    public Result<?> deleteFeLightningProtection(@RequestParam("lightningProtectionId") Integer lightningProtectionId) {
+        feLightningProtectionService.removeById(lightningProtectionId);
+        return Result.success();
+    }
+
+    @GetMapping("getLightningProtectionDetection")
+    @ApiOperation("璁炬柦鍜岀幆澧冩潯浠惰姹�-闃查浄妫�娴嬫煡璇�")
+    public Result<IPage<FeLightningProtection>> getFeLightningProtection(Page page) {
+        IPage<FeLightningProtection> page1 = feLightningProtectionService.page(page);
+        return Result.success(page1);
+    }
+
+    @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-require/src/main/java/com/ruoyi/requier/controller/FePowerStableController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/FePowerStableController.java
new file mode 100644
index 0000000..dd7d91d
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/FePowerStableController.java
@@ -0,0 +1,96 @@
+package com.ruoyi.requier.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.ruoyi.common.core.domain.Result;
+import com.ruoyi.requier.dto.FePowerStableAddDto;
+import com.ruoyi.requier.dto.FePowerStableDto;
+import com.ruoyi.requier.pojo.FeMeasuredQuantity;
+import com.ruoyi.requier.pojo.FePowerStable;
+import com.ruoyi.requier.service.FeMeasuredQuantityService;
+import com.ruoyi.requier.service.FePowerStableService;
+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")
+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);
+    }
+
+    @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
+     */
+    @ApiOperation(value = "瀵煎嚭鐢垫簮绋冲畾鎬�")
+    @GetMapping("/exportFePowerStable")
+    public void exportFePowerStable(Integer powerStableId, HttpServletResponse response){
+        fePowerStableService.exportFePowerStable(powerStableId, response);
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceAcceptanceController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceAcceptanceController.java
new file mode 100644
index 0000000..a55b1aa
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceAcceptanceController.java
@@ -0,0 +1,88 @@
+package com.ruoyi.requier.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.requier.dto.AcceptanceDto;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.ruoyi.requier.service.FeStandardSubstanceAcceptanceInspectionService;
+import com.ruoyi.requier.service.FeStandardSubstanceAcceptanceService;
+import com.ruoyi.requier.vo.AcceptanceVo;
+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;
+
+/**
+ * <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;
+
+    @ApiOperation(value = "鏂板")
+    @PostMapping("/addAcceptance")
+    @Transactional
+    public Result addAcceptance(@RequestBody AcceptanceDto dto) {
+        feStandardSubstanceAcceptanceService.addAcceptance(dto);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏍囧噯鐗╄川楠屾敹鏌ヨ")
+    @GetMapping("/getPageAcceptance")
+    public Result<IPage<AcceptanceVo>> getPageAcceptance(Page page, String name) {
+        IPage<AcceptanceVo> ipage = feStandardSubstanceAcceptanceService.getPageAcceptance(page, name);
+        return Result.success(ipage);
+    }
+
+    @ApiOperation(value = "鏍囧噯鐗╄川楠屾敹鍒犻櫎")
+    @DeleteMapping("/deleteAcceptance/{id}")
+    public Result deleteAcceptance(@PathVariable("id") Integer id) {
+        return Result.success(feStandardSubstanceAcceptanceService.deleteAcceptance(id));
+    }
+
+    @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();
+    }
+
+
+    @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-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceAcceptanceInspectionController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceAcceptanceInspectionController.java
new file mode 100644
index 0000000..5253a8a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceAcceptanceInspectionController.java
@@ -0,0 +1,40 @@
+package com.ruoyi.requier.controller;
+
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.ruoyi.requier.service.FeStandardSubstanceAcceptanceInspectionService;
+import io.swagger.annotations.Api;
+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;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+@Api(tags = "楠屾敹寮�绠辫褰�")
+@RestController
+@RequestMapping("/feStandardSubstanceAcceptanceInspection")
+public class FeStandardSubstanceAcceptanceInspectionController {
+
+
+    @Resource
+    private FeStandardSubstanceAcceptanceInspectionService feStandardSubstanceAcceptanceInspectionService;
+
+
+    @ApiOperation(value = "鏂板鎴栫紪杈�")
+    @PostMapping("/addInspection")
+    public Result addInspection(@RequestBody FeStandardSubstanceAcceptanceInspection inspection) {
+        feStandardSubstanceAcceptanceInspectionService.saveOrUpdate(inspection);
+        return Result.success();
+    }
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceController.java
new file mode 100644
index 0000000..6fb3da4
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceController.java
@@ -0,0 +1,82 @@
+package com.ruoyi.requier.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.ruoyi.common.core.domain.Result;
+import com.ruoyi.requier.excel.FeStandardSubstanceExcel;
+import com.ruoyi.requier.pojo.FeStandardSubstance;
+import com.ruoyi.requier.service.FeStandardSubstanceService;
+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;
+
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鏌ヨ")
+    @GetMapping("/getPageStandardSubstance")
+    public Result<IPage<FeStandardSubstance>> getPageStandardSubstance(Page page, FeStandardSubstance feStandardSubstance) {
+        IPage<FeStandardSubstance> ipage = feStandardSubstanceService.page(page, feStandardSubstance);
+        return Result.success(ipage);
+    }
+
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鏂板缂栬緫")
+    @PostMapping("/addStandardSubstance")
+    public Result addStandardSubstance(@RequestBody FeStandardSubstance feStandardSubstance) {
+        return Result.success(feStandardSubstanceService.saveOrUpdate(feStandardSubstance));
+    }
+
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鍒犻櫎")
+    @DeleteMapping("/removeStandardSubstance")
+    public Result removeStandardSubstance(Integer id) {
+        return Result.success(feStandardSubstanceService.removeById(id));
+    }
+
+
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鏌ヨ鎵�鏈�")
+    @GetMapping("/getStandardSubstanceAll")
+    public Result<List<FeStandardSubstance>> getStandardSubstanceAll( ) {
+        return Result.success(feStandardSubstanceService.list());
+    }
+
+
+    @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-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceRecordController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceRecordController.java
new file mode 100644
index 0000000..1b2c449
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeStandardSubstanceRecordController.java
@@ -0,0 +1,60 @@
+package com.ruoyi.requier.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.requier.pojo.FeStandardSubstanceRecord;
+import com.ruoyi.requier.service.FeStandardSubstanceRecordService;
+import com.ruoyi.requier.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;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 01:49:11
+ */
+@Api(tags = "鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍")
+@RestController
+@RequestMapping("/feStandardSubstanceRecord")
+public class FeStandardSubstanceRecordController {
+
+    @Resource
+    private FeStandardSubstanceRecordService feStandardSubstanceRecordService;
+
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟鍊熺敤")
+    @PostMapping("/borrowSubstance")
+    @Transactional
+    public Result borrowSubstance(@RequestBody FeStandardSubstanceRecord record) {
+        feStandardSubstanceRecordService.borrowSubstance(record);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟褰掕繕")
+    @PostMapping("/returnSubstance")
+    @Transactional
+    public Result returnSubstance(@RequestBody FeStandardSubstanceRecord record) {
+        feStandardSubstanceRecordService.returnSubstance(record);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏍囧噯鐗╄川娓呭崟棰嗙敤鏌ヨ")
+    @GetMapping("/getSubstanceRecord")
+    public Result getSubstanceRecord(Integer id) {
+        return Result.success(feStandardSubstanceRecordService.getSubstanceRecord(id));
+    }
+
+    @ApiOperation(value = "鍒嗛〉鏌ヨ")
+    @GetMapping("/getPageSubstanceRecord")
+    public Result<IPage<SubstanceRecordVo>> getPageSubstanceRecord(Page page, SubstanceRecordVo vo) {
+        IPage<SubstanceRecordVo> ipage = feStandardSubstanceRecordService.getPage(page,vo);
+        return Result.success(ipage);
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/FeTempHumDateController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeTempHumDateController.java
new file mode 100644
index 0000000..af391c9
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/FeTempHumDateController.java
@@ -0,0 +1,91 @@
+package com.ruoyi.requier.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.requier.dto.FeTempHumDateDto;
+import com.ruoyi.requier.dto.FeTempHumRecordDto;
+import com.ruoyi.requier.pojo.FeTempHumDate;
+import com.ruoyi.requier.pojo.FeTempHumRecord;
+import com.ruoyi.requier.service.FeTempHumDateService;
+import com.ruoyi.requier.service.FeTempHumRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-09 11:02:18
+ */
+@RestController
+@RequestMapping("/feTempHumDate")
+@Api(tags = "璇曢獙鍖哄煙")
+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
+     */
+    @ApiOperation(value = "娓╂箍搴﹁褰曞鍑�")
+    @GetMapping("/exportTemperatureAndHumidityRecords")
+    public void exportTemperatureAndHumidityRecords(Integer dateId, HttpServletResponse response){
+        feTempHumDateService.exportTemperatureAndHumidityRecords(dateId, response);
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/ForeignRegisterController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/ForeignRegisterController.java
new file mode 100644
index 0000000..f3af0fb
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/ForeignRegisterController.java
@@ -0,0 +1,93 @@
+package com.ruoyi.requier.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.requier.dto.ForeignRegisterDto;
+import com.ruoyi.requier.pojo.ForeignRegister;
+import com.ruoyi.requier.service.ForeignRegisterService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 澶栨潵浜哄憳鐧昏 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 07:17:35
+ */
+@Api(tags = "澶栨潵浜哄憳鐧昏")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/foreignRegister")
+public class ForeignRegisterController {
+
+    private ForeignRegisterService foreignRegisterService;
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ")
+    @GetMapping("/pageForeignRegister")
+    public Result<IPage<ForeignRegisterDto>> pageForeignRegister(Page page, ForeignRegisterDto foreignRegister) throws Exception {
+        return Result.success(foreignRegisterService.pageForeignRegister(page, foreignRegister));
+    }
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鏂板
+     * @return
+     */
+    @ApiOperation(value = "澶栨潵浜哄憳鐧昏鏂板")
+    @PostMapping("/addForeignRegister")
+    public Result addForeignRegister(@RequestBody ForeignRegister foreignRegister){
+        return Result.success(foreignRegisterService.save(foreignRegister));
+    }
+
+    /**
+     * 澶栨潵浜哄憳鐧昏淇敼
+     * @return
+     */
+    @ApiOperation(value = "澶栨潵浜哄憳鐧昏淇敼")
+    @PostMapping("/updateForeignRegister")
+    public Result updateForeignRegister(@RequestBody ForeignRegister foreignRegister){
+        return Result.success(foreignRegisterService.updateById(foreignRegister));
+    }
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鍒犻櫎
+     * @return
+     */
+    @ApiOperation(value = "澶栨潵浜哄憳鐧昏鍒犻櫎")
+    @DeleteMapping("/delForeignRegister")
+    public Result delForeignRegister(Integer registerId){
+        return Result.success(foreignRegisterService.removeById(registerId));
+    }
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鏌ョ湅璇︽儏
+     * @return
+     */
+    @ApiOperation(value = "澶栨潵浜哄憳鐧昏鏌ョ湅璇︽儏")
+    @GetMapping("/getForeignRegisterOne")
+    public Result<ForeignRegister> getForeignRegisterOne(Integer registerId){
+        return Result.success(foreignRegisterService.getById(registerId));
+    }
+
+    /**
+     * 瀵煎嚭澶栨潵浜哄憳鐧昏
+     * @return
+     */
+    @ApiOperation(value = "瀵煎嚭澶栨潵浜哄憳鐧昏")
+    @GetMapping("/exportForeignRegister")
+    public void exportForeignRegister(ForeignRegisterDto foreignRegister, HttpServletResponse response){
+        foreignRegisterService.exportForeignRegister(foreignRegister, response);
+    }
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/InternalWastesController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/InternalWastesController.java
new file mode 100644
index 0000000..f124356
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/InternalWastesController.java
@@ -0,0 +1,93 @@
+package com.ruoyi.requier.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.requier.dto.InternalWastesDto;
+import com.ruoyi.requier.pojo.InternalWastes;
+import com.ruoyi.requier.service.InternalWastesService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:27
+ */
+@Api(tags = "瀹夊叏鍐呭姟涓夊簾鐧昏")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/internalWastes")
+public class InternalWastesController {
+
+    private InternalWastesService internalWastesService;
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鍒嗛〉鏌ヨ
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊鍒嗛〉鏌ヨ")
+    @GetMapping("/pageInternalWastes")
+    public Result<IPage<InternalWastesDto>> pageInternalWastes(Page page,InternalWastes internalWastes) throws Exception {
+        return Result.success(internalWastesService.pageInternalWastes(page, internalWastes));
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鏂板
+     * @return
+     */
+    @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊鏂板")
+    @PostMapping("/addInternalWastes")
+    public Result addInternalWastes(@RequestBody InternalWastesDto internalWastes){
+        return Result.success(internalWastesService.addInternalWastes(internalWastes));
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊淇敼
+     * @return
+     */
+    @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊淇敼")
+    @PostMapping("/updateInternalWastes")
+    public Result updateInternalWastes(@RequestBody InternalWastesDto internalWastes){
+        return Result.success(internalWastesService.updateInternalWastes(internalWastes));
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鍒犻櫎
+     * @return
+     */
+    @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊鍒犻櫎")
+    @DeleteMapping("/delInternalWastes")
+    public Result delInternalWastes(Integer wastesId){
+        return Result.success(internalWastesService.delInternalWastes(wastesId));
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鏌ョ湅璇︽儏
+     * @return
+     */
+    @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊鏌ョ湅璇︽儏")
+    @GetMapping("/getInternalWastesOne")
+    public Result<InternalWastesDto> getInternalWastesOne(Integer wastesId){
+        return Result.success(internalWastesService.getInternalWastesOne(wastesId));
+    }
+
+    /**
+     * 瀵煎嚭涓夊簾澶勭悊
+     * @return
+     */
+    @ApiOperation(value = "瀵煎嚭涓夊簾澶勭悊")
+    @GetMapping("/exportInternalWastes")
+    public void exportInternalWastes(Integer wastesId, HttpServletResponse response){
+        internalWastesService.exportInternalWastes(wastesId, response);
+    }
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesContentsController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesContentsController.java
new file mode 100644
index 0000000..97d98ba
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesContentsController.java
@@ -0,0 +1,75 @@
+package com.ruoyi.requier.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.requier.pojo.ProcurementSuppliesContents;
+import com.ruoyi.requier.service.ProcurementSuppliesContentsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Api(tags = "鏈嶅姟鍜屼緵搴斿搧閲囪喘鍏徃鍒楄〃")
+@RestController
+@RequestMapping("/procurementSuppliesContents")
+@AllArgsConstructor
+public class ProcurementSuppliesContentsController {
+
+    private ProcurementSuppliesContentsService procurementSuppliesService;
+
+    @ApiOperation(value = "鏌ヨ鐩綍鍒楄〃")
+    @GetMapping("/directoryListing")
+    public Result directoryListing() {
+        return Result.success(procurementSuppliesService.directoryListing());
+    }
+
+    @ApiOperation(value = "鏍规嵁id鏌ヨ")
+    @GetMapping("/selectProcurementSuppliesContentById")
+    public Result selectProcurementSuppliesContentById(Integer id) {
+        return Result.success(procurementSuppliesService.getById(id));
+    }
+
+    @ApiOperation(value = "娣诲姞瀛愯妭鐐�")
+    @PostMapping("/addProcurementSuppliesContents")
+    public Result addProcurementSuppliesContents(@RequestBody ProcurementSuppliesContents procurementSupplies) {
+        procurementSupplies.setUpdateTime(LocalDateTime.now());
+        procurementSuppliesService.save(procurementSupplies);
+        return Result.success(procurementSupplies.getId());
+    }
+
+    @ApiOperation(value = "鏇存柊瀛愯妭鐐�")
+    @PostMapping("/updateProcurementSuppliesContents")
+    public Result updateProcurementSuppliesContents(@RequestBody ProcurementSuppliesContents procurementSupplies) {
+        return Result.success(procurementSuppliesService.updateById(procurementSupplies));
+    }
+
+    @ApiOperation(value = "鍒犻櫎瀛愯妭鐐�")
+    @DeleteMapping("/deleteProcurementSuppliesContentById")
+    public Result deleteProcurementSuppliesContentById(Integer id) {
+        List<ProcurementSuppliesContents> list = procurementSuppliesService.list(new LambdaQueryWrapper<ProcurementSuppliesContents>()
+                .eq(ProcurementSuppliesContents::getParentId, id));
+        if(list.size() > 0) {
+            throw new ErrorException("璇ヨ妭鐐瑰惈鏈夊瓙鑺傜偣,璇峰厛鍒犻櫎瀛愯妭鐐�");
+        }
+        procurementSuppliesService.removeById(id);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏌ヨ鎵�鏈夎妭鐐�")
+    @GetMapping("/getNodeNames")
+    public Result getNodeNames() {
+        return Result.success(procurementSuppliesService.getNodeNames());
+    }
+
+    @ApiOperation(value = "鑾峰彇鎵�鏈変汉鍛�")
+    @GetMapping("/getUserList")
+    public Result getUserList() {
+        return Result.success(procurementSuppliesService.getUserList());
+    }
+
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesExpendsController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesExpendsController.java
new file mode 100644
index 0000000..7fcc1ed
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesExpendsController.java
@@ -0,0 +1,50 @@
+package com.ruoyi.requier.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.requier.dto.ProcurementSuppliesExpendDto;
+import com.ruoyi.requier.service.ProcurementSuppliesExpendsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 03:47:19
+ */
+@Api(tags = "鏈嶅姟鍜屼緵搴斿搧閲囪喘鑰楁潗娑堣��")
+@RestController
+@RequestMapping("/procurementSuppliesExpends")
+public class ProcurementSuppliesExpendsController {
+    @Autowired
+    private ProcurementSuppliesExpendsService procurementSuppliesExpendsService;
+
+    @ApiOperation(value = "鏌ヨ鎵�鏈夎褰�")
+    @GetMapping("/procurementSuppliesExpendlist")
+    public Result procurementSuppliesExpendlist(Page page,Long procurementSuppliesListId) {
+        return Result.success(procurementSuppliesExpendsService.selectAll(page,procurementSuppliesListId));
+    }
+
+    @ApiOperation(value = "鏂板娑堣�楄褰�")
+    @PostMapping("/addProcurementSuppliesExpends")
+    public Result addProcurementSuppliesExpends(@RequestBody ProcurementSuppliesExpendDto dto) {
+        Integer added = procurementSuppliesExpendsService.addExpends(dto);
+
+        if ( added == 0) {
+            return Result.fail("褰撳墠搴撳瓨涓嶈冻");
+        }
+        return Result.success(added);
+    }
+
+    @ApiOperation(value = "鍒犻櫎娑堣�楄褰�")
+    @DeleteMapping("/deleteProcurementSuppliesExpends")
+    public Result deleteProcurementSuppliesExpends(Long expendId) throws ServiceException {
+        return Result.success(procurementSuppliesExpendsService.deleteExpends(expendId));
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesListController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesListController.java
new file mode 100644
index 0000000..3af071e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesListController.java
@@ -0,0 +1,94 @@
+package com.ruoyi.requier.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.requier.dto.ProcurementSuppliesListDto;
+import com.ruoyi.requier.mapper.ProcurementSuppliesListMapper;
+import com.ruoyi.requier.mapper.SupplierManagementMapper;
+import com.ruoyi.requier.pojo.ProcurementSuppliesList;
+import com.ruoyi.requier.pojo.SupplierManagement;
+import com.ruoyi.requier.service.ProcurementSuppliesListService;
+import com.ruoyi.system.mapper.UserMapper;
+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.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 鏈嶅姟涓庝緵搴斿晢 鑰楁潗鍒楄〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 04:04:32
+ */
+@Api(tags = "鏈嶅姟鍜屼緵搴斿搧閲囪喘鑰楁潗")
+@RestController
+@RequestMapping("/procurementSuppliesList")
+public class ProcurementSuppliesListController {
+    @Autowired
+    private ProcurementSuppliesListService procurementSuppliesListService;
+
+    @Resource
+    private ProcurementSuppliesListMapper listMapper;
+
+    @Autowired
+    private UserMapper userMapper;
+
+    @Autowired
+    private SupplierManagementMapper supplierManagementMapper;
+
+    @ApiOperation(value = "鍒嗛〉鏌ヨ")
+    @GetMapping("/procurementSuppliesList")
+    public Result<IPage<ProcurementSuppliesListDto>> procurementSuppliesList(Page page, ProcurementSuppliesListDto list) {
+        return Result.success(procurementSuppliesListService.selectList(page, list));
+    }
+
+    @ApiOperation(value = "鏍规嵁id鏌ヨ鑰楁潗")
+    @GetMapping("/selectProcurementSuppliesListById")
+    public Result selectProcurementSuppliesListById(Integer id) {
+        ProcurementSuppliesList procurementSuppliesStore = listMapper.selectById(id);
+        ProcurementSuppliesListDto dto = new ProcurementSuppliesListDto();
+        BeanUtils.copyProperties(procurementSuppliesStore, dto);
+
+        User user = userMapper.selectById(procurementSuppliesStore.getPersonInCharge());
+        User updateUser = userMapper.selectById(procurementSuppliesStore.getUpdateUser());
+        SupplierManagement supplierManagement = supplierManagementMapper.selectById(procurementSuppliesStore.getSupplier());
+
+        dto.setPersonInChargeName(user.getName());
+        dto.setUpdateUserName(updateUser.getName());
+        dto.setSupplierName(supplierManagement.getSupplierName());
+        return Result.success(dto);
+    }
+
+    @ApiOperation(value = "鏂板鑰楁潗")
+    @PostMapping("/addProcurementSuppliesList")
+    public Result addProcurementSuppliesList(@RequestBody ProcurementSuppliesListDto dto) {
+        return Result.success(procurementSuppliesListService.addProcurementSuppliesList(dto));
+    }
+
+    @ApiOperation(value = "缂栬緫鑰楁潗")
+    @PostMapping("/updateProcurementSuppliesList")
+    public Result updateProcurementSuppliesList(@RequestBody ProcurementSuppliesListDto dto) {
+        return Result.success(procurementSuppliesListService.updateProcurementSuppliesList(dto));
+    }
+
+    @ApiOperation(value = "鍒犻櫎鑰楁潗")
+    @DeleteMapping("/deleteProcurementSuppliesList")
+    public Result deleteProcurementSuppliesList(Long id) {
+        return Result.success(listMapper.deleteById(id));
+    }
+
+    @ApiOperation(value = "瀵煎嚭鑰楁潗鍒楄〃")
+    @GetMapping("/exportProcurementSuppliesList/{parentId}")
+    public void exportProcurementSuppliesList( @PathVariable Integer parentId ,HttpServletResponse response) throws Exception {
+        procurementSuppliesListService.exportProcurementSuppliesList(parentId,response);
+
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesStoreController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesStoreController.java
new file mode 100644
index 0000000..7880499
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/ProcurementSuppliesStoreController.java
@@ -0,0 +1,81 @@
+package com.ruoyi.requier.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.utils.JackSonUtil;
+import com.ruoyi.requier.dto.StoreDto;
+import com.ruoyi.requier.pojo.ProcurementSuppliesConsumables;
+import com.ruoyi.requier.pojo.ProcurementSuppliesStore;
+import com.ruoyi.requier.service.ProcurementSuppliesConsumablesService;
+import com.ruoyi.requier.service.ProcurementSuppliesStoreService;
+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.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Api(tags = "鏈嶅姟鍜屼緵搴斿搧閲囪喘鑰楁潗鍏ュ簱")
+@RestController
+@RequestMapping("/procurementSuppliesStore")
+@AllArgsConstructor
+public class ProcurementSuppliesStoreController {
+
+    private ProcurementSuppliesStoreService storeService;
+
+    private ProcurementSuppliesConsumablesService consumablesService;
+
+
+    @ApiOperation(value = "鑰楁潗鍏ュ簱鍒嗛〉鏌ヨ")
+    @GetMapping("/storeList")
+    public Result storeList(Page page,StoreDto storeDto) throws Exception {
+        return Result.success(storeService.selectStoreList(page, storeDto));
+    }
+
+    @ApiOperation(value = "娣诲姞鑰楁潗鍏ュ簱鍒楄〃")
+    @PostMapping("/addStore")
+    public Result addStore(@RequestBody Map<String,Object> map) {
+        storeService.addStore(map);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鍒犻櫎鑰楁潗鍏ュ簱")
+    @DeleteMapping("/deleteStore")
+    public Result deleteStore(@RequestParam("id") Integer id,@RequestParam("consumablesId") Integer consumablesId) {
+        storeService.deleteStore(id,consumablesId);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏇存柊鑰楁潗鍏ュ簱")
+        @PostMapping("/updateStore")
+    public Result updateStore(@RequestBody Map<String,Object> map) {
+        storeService.updateStore(map);
+        return Result.success();
+    }
+
+
+    @ApiOperation(value = "鏍规嵁id鏌ヨ鑰楁潗鍏ュ簱")
+    @GetMapping("/selectStoreById")
+    public Result selectStore(Integer id) {
+        HashMap<String, Object> map = new HashMap<>();
+        ProcurementSuppliesStore procurementSuppliesStore = storeService.getById(id);
+        List<ProcurementSuppliesConsumables> list = consumablesService.list(new LambdaQueryWrapper<ProcurementSuppliesConsumables>()
+                .eq(ProcurementSuppliesConsumables::getStoreId, id));
+        map.put("store", procurementSuppliesStore);
+        map.put("consumables", list);
+        return Result.success(map);
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @GetMapping("/exportExcel/{parentId}")
+    public void exportExcel(@PathVariable Integer parentId, HttpServletResponse response) throws IOException {
+        storeService.exportExcel(parentId, response);
+    }
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/SupplierManagementController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/SupplierManagementController.java
new file mode 100644
index 0000000..3c67874
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/SupplierManagementController.java
@@ -0,0 +1,91 @@
+package com.ruoyi.requier.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.requier.pojo.SupplierManagement;
+import com.ruoyi.requier.service.ProcurementSuppliesContentsService;
+import com.ruoyi.requier.service.SupplierManagementService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 02:46:45
+ */
+@Api(tags = "渚涘簲鍟嗙鐞�")
+@RestController
+@RequestMapping("/supplierManagement")
+@AllArgsConstructor
+public class SupplierManagementController {
+
+    @Autowired
+    private SupplierManagementService supplierManagementService;
+
+    @Autowired
+    private ProcurementSuppliesContentsService procurementSuppliesContentsService;
+
+    @ApiOperation("鏌ヨ渚涙柟鍚嶅綍")
+    @GetMapping("/selectSupplierManagementByParentId/{parentId}")
+    public Result<List<SupplierManagement>> selectSupplierManagementByParentId(@PathVariable Integer parentId) throws Exception {
+        return Result.success(supplierManagementService.selectSupplierManagementByParentId(parentId));
+    }
+
+
+    @ApiOperation("鍒嗛〉鏌ヨ鍚堟牸渚涙柟鍚嶅綍")
+    @GetMapping("/selectQualifiedSupplierManagementPage")
+    public Result<IPage<SupplierManagement>> selectQualifiedSupplierManagement(SupplierManagement supplierManagement, Page page) throws Exception {
+        return Result.success(supplierManagementService.selectQualifiedSupplierManagement(page, supplierManagement));
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ渚涘簲鍟�")
+    @GetMapping("/selectQualifiedSupplierManagementById/{supplierManagementId}")
+    public Result<List<SupplierManagement>> selectQualifiedSupplierManagementById(@PathVariable Integer supplierManagementId) throws Exception {
+        return Result.success(supplierManagementService.selectQualifiedSupplierManagementById(supplierManagementId));
+    }
+
+    @ApiOperation("鏂板渚涘簲鍟�")
+    @PostMapping("/addSupplierManagement")
+    public Result addSupplierManagement(@RequestBody SupplierManagement supplierManagement) {
+        supplierManagement.setCreateUser(SecurityUtils.getUserId().intValue());
+        return Result.success(supplierManagementService.save(supplierManagement));
+    }
+
+    @ApiOperation("淇敼渚涘簲鍟�")
+    @PostMapping("/updateSupplierManagement")
+    public Result updateSupplierManagement(@RequestBody SupplierManagement supplierManagement) {
+        supplierManagement.setUpdateUser(SecurityUtils.getUserId().intValue());
+        return Result.success(supplierManagementService.updateById(supplierManagement));
+    }
+
+    @ApiOperation("鍒犻櫎渚涘簲鍟�")
+    @DeleteMapping("/delSupplierManagement/{id}")
+    public Result delSupplierManagement(@PathVariable Integer id) {
+        return Result.success(supplierManagementService.removeById(id));
+    }
+
+    @ApiOperation("瀵煎嚭渚涘簲鍟�")
+    @GetMapping("/exportSupplierManagement/{parentId}")
+    public void exportSupplierManagement(@PathVariable Integer parentId, HttpServletResponse response) throws Exception {
+        supplierManagementService.exportSupplierManagement(parentId, response);
+    }
+
+    @ApiOperation("鏌ヨ鍏ㄩ儴渚涙柟鍚嶅綍")
+    @GetMapping("/selectSupplierManagementAll")
+    public Result<List<SupplierManagement>> selectSupplierManagementAll() throws Exception {
+        return Result.success(supplierManagementService.selectSupplierManagementAll());
+    }
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/controller/SuppliersDirectoryContentsController.java b/cnas-require/src/main/java/com/ruoyi/requier/controller/SuppliersDirectoryContentsController.java
new file mode 100644
index 0000000..c114f66
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/controller/SuppliersDirectoryContentsController.java
@@ -0,0 +1,77 @@
+package com.ruoyi.requier.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.requier.pojo.SuppliersDirectoryContents;
+import com.ruoyi.requier.service.SuppliersDirectoryContentsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏈嶅姟鍜屼緵搴斿搧閲囪喘鐩綍 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-17 06:14:51
+ */
+@Api(tags = "渚涘簲鍟嗙鐞嗘爲")
+@RestController
+@RequestMapping("/suppliersDirectoryContents")
+public class SuppliersDirectoryContentsController {
+
+    @Autowired
+    private SuppliersDirectoryContentsService suppliersDirectoryContentsService;
+
+    @ApiOperation(value = "鏌ヨ鐩綍鍒楄〃")
+    @GetMapping("/suppliersDirectoryContentsListing")
+    public Result suppliersDirectoryContentsListing() {
+        return Result.success(suppliersDirectoryContentsService.directoryListing());
+
+    }
+
+    @ApiOperation(value = "鏍规嵁id鏌ヨ")
+    @GetMapping("/selectSuppliersDirectoryContentsById")
+    public Result selectSuppliersDirectoryContentsById(Integer id) {
+        return Result.success(suppliersDirectoryContentsService.getById(id));
+    }
+
+    @ApiOperation(value = "娣诲姞瀛愯妭鐐�")
+    @PostMapping("/addSuppliersDirectoryContents")
+    public Result addSuppliersDirectoryContents(@RequestBody SuppliersDirectoryContents suppliersDirectoryContents ) {
+        suppliersDirectoryContents.setUpdateTime(LocalDateTime.now());
+        suppliersDirectoryContentsService.save(suppliersDirectoryContents);
+        return Result.success(suppliersDirectoryContents.getId());
+    }
+
+    @ApiOperation(value = "鏇存柊瀛愯妭鐐�")
+    @PostMapping("/updateSuppliersDirectoryContents")
+    public Result updateSuppliersDirectoryContents(@RequestBody SuppliersDirectoryContents suppliersDirectoryContents) {
+        return Result.success(suppliersDirectoryContentsService.updateById(suppliersDirectoryContents));
+    }
+
+    @ApiOperation(value = "鍒犻櫎瀛愯妭鐐�")
+    @DeleteMapping("/deleteSuppliersDirectoryContentsById")
+    public Result deleteSuppliersDirectoryContentsById(Integer id) {
+        List<SuppliersDirectoryContents> list = suppliersDirectoryContentsService.list(new LambdaQueryWrapper<SuppliersDirectoryContents>()
+                .eq(SuppliersDirectoryContents::getParentId, id));
+        if(list.size() > 0) {
+            throw new ErrorException("璇ヨ妭鐐瑰惈鏈夊瓙鑺傜偣,璇峰厛鍒犻櫎瀛愯妭鐐�");
+        }
+        suppliersDirectoryContentsService.removeById(id);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏌ヨ鎵�鏈夎妭鐐�")
+    @GetMapping("/getSuppliersDirectoryContentsNodeNames")
+    public Result getSuppliersDirectoryContentsNodeNames() {
+        return Result.success(suppliersDirectoryContentsService.getSuppliersDirectoryContentsNodeNames());
+    }
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/dto/AcceptanceDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/AcceptanceDto.java
new file mode 100644
index 0000000..287ca9a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/AcceptanceDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptance;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptanceInspection;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AcceptanceDto {
+
+    private FeStandardSubstanceAcceptance acceptance;
+
+    private List<FeStandardSubstanceAcceptanceInspection> list;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationAddDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationAddDto.java
new file mode 100644
index 0000000..804e9d9
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationAddDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.FeIllumination;
+import com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationDto.java
new file mode 100644
index 0000000..554ec20
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationDto.java
@@ -0,0 +1,28 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationExportDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationExportDto.java
new file mode 100644
index 0000000..3749a13
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/FeIlluminationExportDto.java
@@ -0,0 +1,25 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.FeIllumination;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @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-require/src/main/java/com/ruoyi/requier/dto/FePowerStableAddDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/FePowerStableAddDto.java
new file mode 100644
index 0000000..7adfb9c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/FePowerStableAddDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.FeMeasuredQuantity;
+import com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/dto/FePowerStableDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/FePowerStableDto.java
new file mode 100644
index 0000000..5eb16b6
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/FePowerStableDto.java
@@ -0,0 +1,29 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/dto/FePowerStableExportDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/FePowerStableExportDto.java
new file mode 100644
index 0000000..8c52cfc
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/FePowerStableExportDto.java
@@ -0,0 +1,30 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.FePowerStable;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @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-require/src/main/java/com/ruoyi/requier/dto/FeTempHumDateDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/FeTempHumDateDto.java
new file mode 100644
index 0000000..3179d2e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/FeTempHumDateDto.java
@@ -0,0 +1,12 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.FeTempHumDate;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class FeTempHumDateDto extends FeTempHumDate {
+
+    @ApiModelProperty("鍒涘缓浜�")
+    private String createName;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/dto/FeTempHumRecordDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/FeTempHumRecordDto.java
new file mode 100644
index 0000000..29a4308
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/FeTempHumRecordDto.java
@@ -0,0 +1,24 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.FeTempHumRecord;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@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-require/src/main/java/com/ruoyi/requier/dto/ForeignRegisterDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/ForeignRegisterDto.java
new file mode 100644
index 0000000..532fee7
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/ForeignRegisterDto.java
@@ -0,0 +1,32 @@
+package com.ruoyi.requier.dto;
+
+import com.deepoove.poi.data.PictureRenderData;
+import com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/dto/InternalWastesDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/InternalWastesDto.java
new file mode 100644
index 0000000..4072707
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/InternalWastesDto.java
@@ -0,0 +1,19 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.InternalWastes;
+import com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesExpendDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesExpendDto.java
new file mode 100644
index 0000000..14b6450
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesExpendDto.java
@@ -0,0 +1,27 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.ProcurementSuppliesExpends;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ProcurementSuppliesExpendDto extends ProcurementSuppliesExpends {
+
+    /**
+     * 椤圭洰鑰楁潗鍚嶇О
+     */
+    @ApiModelProperty("椤圭洰鑰楁潗鍚嶇О")
+    private String listName;
+
+    /**
+     * 褰曞叆浜哄悕绉�
+     */
+    @ApiModelProperty("褰曞叆浜哄悕绉�")
+    private String enterUserName; //
+
+    /**
+     * 鏇存柊浜哄悕绉�
+     */
+    @ApiModelProperty("鏇存柊浜哄悕绉�")
+    private String updateUserName; //
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesListDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesListDto.java
new file mode 100644
index 0000000..5b00229
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesListDto.java
@@ -0,0 +1,17 @@
+package com.ruoyi.requier.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.requier.pojo.ProcurementSuppliesList;
+import lombok.Data;
+
+@Data
+@ExcelIgnoreUnannotated
+public class ProcurementSuppliesListDto extends ProcurementSuppliesList {
+    @ExcelProperty("鍙傝�冧緵搴斿晢")
+    private String supplierName; // 渚涘簲鍟嗗悕绉�
+    @ExcelProperty("鏇存柊浜�")
+    private String updateUserName; // 鏇存柊浜哄悕绉�
+    @ExcelProperty("璐熻矗浜�")
+    private String personInChargeName; // 璐熻矗浜哄悕绉�
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesListEDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesListEDto.java
new file mode 100644
index 0000000..f75318a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/ProcurementSuppliesListEDto.java
@@ -0,0 +1,104 @@
+package com.ruoyi.requier.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+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.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@ExcelIgnoreUnannotated
+public class ProcurementSuppliesListEDto {
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty("缂栧彿")
+    @ExcelProperty("缂栧彿")
+    private Long id;
+
+    @ApiModelProperty("鐩綍id")
+    @ExcelProperty("鐩綍")
+    private Long contentsId;
+
+    @ApiModelProperty("鑰楁潗绫诲瀷")
+    @ExcelProperty("绫诲埆")
+    private String consumablesType;
+
+    @ApiModelProperty("璐у彿")
+    @ExcelProperty("璐у彿")
+    private String itemNumber;
+
+    @ApiModelProperty("鑰楁潗鍚嶇О")
+    @ExcelProperty("鍚嶇О")
+    private String consumablesName;
+
+    @ApiModelProperty("瑙勬牸")
+    @ExcelProperty("瑙勬牸")
+    private String specifications;
+
+    @ApiModelProperty("璁¢噺鍗曚綅")
+    @ExcelProperty("璁¢噺鍗曚綅")
+    private String unit;
+
+    @ApiModelProperty("鍙傝�冧环鏍�")
+    @ExcelProperty("鍙傝�冧环鏍�")
+    private BigDecimal referencePrice;
+
+    @ApiModelProperty("瀛樻斁浣嶇疆")
+    @ExcelProperty("瀛樻斁浣嶇疆")
+    private Integer contentId;
+
+    @ApiModelProperty("璐熻矗浜�")
+    @ExcelProperty("璐熻矗浜�")
+    private Integer personInCharge;
+
+    @ApiModelProperty("搴撳瓨涓婇檺")
+    @ExcelProperty("搴撳瓨涓婇檺")
+    private Integer upperLimit;
+
+    @ApiModelProperty("搴撳瓨涓嬮檺")
+    @ExcelProperty("搴撳瓨涓嬮檺")
+    private Integer lowerLimit;
+
+    @ApiModelProperty("渚涘簲鍟�")
+    @ExcelProperty("渚涘簲鍟�")
+    private Integer supplier;
+
+    @ApiModelProperty("鑰楁潗鍥炬爣")
+    @ExcelProperty("鑰楁潗鍥炬爣")
+    private String consumablesIcon;
+
+    @ApiModelProperty("鑰楁潗闄勪欢")
+    @ExcelProperty("鑰楁潗闄勪欢")
+    private String attachment;
+
+    @ApiModelProperty("澶囨敞")
+    @ExcelProperty("澶囨敞")
+    private String remark;
+
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @ExcelProperty("鍒涘缓鏃堕棿")
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @ExcelProperty("鏇存柊鏃堕棿")
+    private LocalDateTime updateTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @ApiModelProperty("鏇存柊浜�")
+    @ExcelProperty("鏇存柊浜�")
+    private Integer updateUser;
+
+    @ApiModelProperty("褰撳墠搴撳瓨鏁伴噺")
+    @ExcelProperty("褰撳墠搴撳瓨")
+    private Integer currentAmount;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/dto/StoreDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/StoreDto.java
new file mode 100644
index 0000000..81ab776
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/StoreDto.java
@@ -0,0 +1,28 @@
+package com.ruoyi.requier.dto;
+
+import com.ruoyi.requier.pojo.ProcurementSuppliesStore;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class StoreDto extends ProcurementSuppliesStore {
+
+
+    @ApiModelProperty("鑰楁潗鍚嶇О")
+    private String consumablesName;
+
+    @ApiModelProperty("鍏ュ簱鏁伴噺")
+    private Integer storeNumber;
+
+    @ApiModelProperty("鍏ュ簱鎬讳环")
+    private Double totalPrice;
+
+    @ApiModelProperty("鐧昏浜�")
+    private String registrantName;
+
+    @ApiModelProperty("鍏ュ簱浜�")
+    private String storageUserName;
+
+    private Integer consumablesId;
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/dto/SupplierManagementDto.java b/cnas-require/src/main/java/com/ruoyi/requier/dto/SupplierManagementDto.java
new file mode 100644
index 0000000..3fb2358
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/dto/SupplierManagementDto.java
@@ -0,0 +1,67 @@
+package com.ruoyi.requier.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ExcelIgnoreUnannotated
+public class SupplierManagementDto {
+
+    @ApiModelProperty("渚涘簲鍟�")
+    @ExcelProperty("渚涘簲鍟�")
+    private String supplierName;
+
+    @ApiModelProperty("缂栧彿")
+    @ExcelProperty("缂栧彿")
+    private String supplierRef;
+
+    @ApiModelProperty("渚涘簲鍟嗙墿鍝佹湇鍔″悕绉�")
+    @ExcelProperty("渚涘簲鍟嗙墿鍝佹湇鍔″悕绉�")
+    private String supplierItemServiceName;
+
+    @ApiModelProperty("閭紪")
+    @ExcelProperty("閭紪")
+    private String postalCode;
+
+    @ApiModelProperty("鍦板潃")
+    @ExcelProperty("鍦板潃")
+    private String adress;
+
+    @ApiModelProperty("鑱旂郴浜�")
+    @ExcelProperty("鑱旂郴浜�")
+    private String contacts;
+
+    @ApiModelProperty("鑱旂郴鐢佃瘽")
+    @ExcelProperty("鑱旂郴鐢佃瘽")
+    private String phone;
+
+    @ApiModelProperty("鎴峰悕")
+    @ExcelProperty("鎴峰悕")
+    private String householdName;
+
+    @ApiModelProperty("浼犵湡")
+    @ExcelProperty("浼犵湡")
+    private String fax;
+
+    @ApiModelProperty("寮�鎴疯")
+    @ExcelProperty("寮�鎴疯")
+    private String openingName;
+
+    @ApiModelProperty("缃戝潃")
+    @ExcelProperty("缃戝潃")
+    private String website;
+
+    @ApiModelProperty("璐﹀彿")
+    @ExcelProperty("璐﹀彿")
+    private String accountName;
+
+    @ApiModelProperty("email")
+    @ExcelProperty("email")
+    private String email;
+
+    @ApiModelProperty("澶囨敞")
+    @ExcelProperty("澶囨敞")
+    private String remarks;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/excel/FeCalibrationScheduleExport.java b/cnas-require/src/main/java/com/ruoyi/requier/excel/FeCalibrationScheduleExport.java
new file mode 100644
index 0000000..5981c56
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/excel/FeCalibrationScheduleExport.java
@@ -0,0 +1,36 @@
+package com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/excel/FeLightningProtectionExcel.java b/cnas-require/src/main/java/com/ruoyi/requier/excel/FeLightningProtectionExcel.java
new file mode 100644
index 0000000..589d217
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/excel/FeLightningProtectionExcel.java
@@ -0,0 +1,22 @@
+package com.ruoyi.requier.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@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-require/src/main/java/com/ruoyi/requier/excel/FeStandardSubstanceExcel.java b/cnas-require/src/main/java/com/ruoyi/requier/excel/FeStandardSubstanceExcel.java
new file mode 100644
index 0000000..2820ccd
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/excel/FeStandardSubstanceExcel.java
@@ -0,0 +1,54 @@
+package com.ruoyi.requier.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+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-require/src/main/java/com/ruoyi/requier/excel/StoreExcel.java b/cnas-require/src/main/java/com/ruoyi/requier/excel/StoreExcel.java
new file mode 100644
index 0000000..26bb425
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/excel/StoreExcel.java
@@ -0,0 +1,37 @@
+package com.ruoyi.requier.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class StoreExcel {
+    @ExcelProperty("鍏ュ簱鍗曞彿")
+    private String oddNumbers;
+
+    @ExcelProperty("鑰楁潗鍚嶇О")
+    private String consumablesName;
+
+    @ExcelProperty("鍏ュ簱鏁伴噺")
+    private Integer storeNumber;
+
+    @ExcelProperty("鍏ュ簱鎬讳环")
+    private Double totalPrice;
+
+    @ExcelProperty("鍏ュ簱浜�")
+    private String storageUserName;
+
+    @ExcelProperty("鍏ュ簱鏃ユ湡")
+    private LocalDate storageTime;
+
+    @ExcelProperty("璇存槑")
+    private String remark;
+
+    @ExcelProperty("鐧昏浜�")
+    private String registrantName;
+
+    @ExcelProperty("鐧昏鏃ユ湡")
+    private LocalDate registrantTime;
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeCalibrationScheduleMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeCalibrationScheduleMapper.java
new file mode 100644
index 0000000..81dd7b1
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeCalibrationScheduleMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.pojo.FeCalibrationSchedule;
+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-require/src/main/java/com/ruoyi/requier/mapper/FeIlluminationDetectionAreaMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeIlluminationDetectionAreaMapper.java
new file mode 100644
index 0000000..1af8871
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeIlluminationDetectionAreaMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.requier.pojo.FeIlluminationDetectionArea;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:28
+ */
+public interface FeIlluminationDetectionAreaMapper extends BaseMapper<FeIlluminationDetectionArea> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeIlluminationMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeIlluminationMapper.java
new file mode 100644
index 0000000..928edae
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeIlluminationMapper.java
@@ -0,0 +1,28 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.dto.FeIlluminationDto;
+import com.ruoyi.requier.dto.FeIlluminationExportDto;
+import com.ruoyi.requier.pojo.FeIllumination;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/mapper/FeLightningProtectionMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeLightningProtectionMapper.java
new file mode 100644
index 0000000..2a84194
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeLightningProtectionMapper.java
@@ -0,0 +1,21 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.requier.excel.FeLightningProtectionExcel;
+import com.ruoyi.requier.pojo.FeLightningProtection;
+
+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-require/src/main/java/com/ruoyi/requier/mapper/FeMeasuredQuantityMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeMeasuredQuantityMapper.java
new file mode 100644
index 0000000..1222f71
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeMeasuredQuantityMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.requier.pojo.FeMeasuredQuantity;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�-娴嬪畾閲� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:44
+ */
+public interface FeMeasuredQuantityMapper extends BaseMapper<FeMeasuredQuantity> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/FePowerStableMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FePowerStableMapper.java
new file mode 100644
index 0000000..1ce2f83
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FePowerStableMapper.java
@@ -0,0 +1,34 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.dto.FePowerStableDto;
+import com.ruoyi.requier.dto.FePowerStableExportDto;
+import com.ruoyi.requier.pojo.FePowerStable;
+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-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java
new file mode 100644
index 0000000..deb7158
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceAcceptanceInspectionMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptanceInspection;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+public interface FeStandardSubstanceAcceptanceInspectionMapper extends BaseMapper<FeStandardSubstanceAcceptanceInspection> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceAcceptanceMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceAcceptanceMapper.java
new file mode 100644
index 0000000..65ff664
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceAcceptanceMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptance;
+import com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceMapper.java
new file mode 100644
index 0000000..6bc4786
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.pojo.FeStandardSubstance;
+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-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceRecordMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceRecordMapper.java
new file mode 100644
index 0000000..def2916
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeStandardSubstanceRecordMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.pojo.FeStandardSubstanceRecord;
+import com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/mapper/FeTempHumDateMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeTempHumDateMapper.java
new file mode 100644
index 0000000..66616dd
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeTempHumDateMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.dto.FeTempHumDateDto;
+import com.ruoyi.requier.pojo.FeTempHumDate;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/mapper/FeTempHumRecordMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeTempHumRecordMapper.java
new file mode 100644
index 0000000..3cef462
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/FeTempHumRecordMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.dto.FeTempHumRecordDto;
+import com.ruoyi.requier.pojo.FeTempHumRecord;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/mapper/ForeignRegisterMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ForeignRegisterMapper.java
new file mode 100644
index 0000000..60cab30
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ForeignRegisterMapper.java
@@ -0,0 +1,39 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.dto.ForeignRegisterDto;
+import com.ruoyi.requier.pojo.ForeignRegister;
+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
+     * @return
+     */
+    List<ForeignRegisterDto> getForeignRegisterList(@Param("ew") QueryWrapper<ForeignRegisterDto> ew,
+                                                    @Param("beginDate") String beginDate,
+                                                    @Param("endDate") String endDate);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/InternalWastesDetailMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/InternalWastesDetailMapper.java
new file mode 100644
index 0000000..5bb0060
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/InternalWastesDetailMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.requier.pojo.InternalWastesDetail;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏璇︽儏 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:54
+ */
+public interface InternalWastesDetailMapper extends BaseMapper<InternalWastesDetail> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/InternalWastesMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/InternalWastesMapper.java
new file mode 100644
index 0000000..0e364a4
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/InternalWastesMapper.java
@@ -0,0 +1,31 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.dto.InternalWastesDto;
+import com.ruoyi.requier.pojo.InternalWastes;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesConsumablesMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesConsumablesMapper.java
new file mode 100644
index 0000000..1f540a1
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesConsumablesMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.requier.pojo.ProcurementSuppliesConsumables;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ProcurementSuppliesConsumablesMapper extends BaseMapper<ProcurementSuppliesConsumables> {
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesContentsMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesContentsMapper.java
new file mode 100644
index 0000000..9c6a96a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesContentsMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.requier.pojo.ProcurementSuppliesContents;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ProcurementSuppliesContentsMapper extends BaseMapper<ProcurementSuppliesContents> {
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesExpendsMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesExpendsMapper.java
new file mode 100644
index 0000000..2fc09fa
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesExpendsMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.dto.ProcurementSuppliesExpendDto;
+import com.ruoyi.requier.pojo.ProcurementSuppliesExpends;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 03:47:19
+ */
+public interface ProcurementSuppliesExpendsMapper extends BaseMapper<ProcurementSuppliesExpends> {
+
+    IPage<ProcurementSuppliesExpendDto> pageList(Page page, @Param("ew") LambdaQueryWrapper<ProcurementSuppliesExpendDto> eq);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesListMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesListMapper.java
new file mode 100644
index 0000000..c16c7b5
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesListMapper.java
@@ -0,0 +1,29 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.dto.ProcurementSuppliesListDto;
+import com.ruoyi.requier.pojo.ProcurementSuppliesList;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鏈嶅姟涓庝緵搴斿晢 鑰楁潗鍒楄〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 04:04:32
+ */
+public interface ProcurementSuppliesListMapper extends BaseMapper<ProcurementSuppliesList> {
+    IPage<ProcurementSuppliesList> selectProcurementSuppliesList(Page page,@Param("contentsId") Long contentsId, @Param("ew") QueryWrapper<ProcurementSuppliesListDto> ew);
+
+    ProcurementSuppliesList selectProcurementSuppliesListForUpdate(@Param("id") Long id);
+
+    List<ProcurementSuppliesList> selectProcurementSuppliesListAll(@Param("ew") ProcurementSuppliesListDto ew);
+
+    List<ProcurementSuppliesList> selectProcurementSuppliesListByContentsId(@Param("id") Integer contentsId);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesStoreMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesStoreMapper.java
new file mode 100644
index 0000000..8325693
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/ProcurementSuppliesStoreMapper.java
@@ -0,0 +1,27 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.dto.StoreDto;
+import com.ruoyi.requier.excel.StoreExcel;
+import com.ruoyi.requier.pojo.ProcurementSuppliesStore;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ProcurementSuppliesStoreMapper extends BaseMapper<ProcurementSuppliesStore> {
+
+    IPage<StoreDto> selectStoreList(Page page, @Param("ew") QueryWrapper<StoreDto> ew);
+
+    /**
+     *       鍜屾爲鍏宠仈鐨勬潯浠讹紝锛岋紝鐩墠娌℃湁鍏宠仈鍏崇郴    WHERE s.contents_id = #{contentsId}
+     * @param contentsId
+     * @return
+     */
+    List<StoreExcel> exportExcel(Integer contentsId);
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/SupplierManagementMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/SupplierManagementMapper.java
new file mode 100644
index 0000000..b2ff085
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/SupplierManagementMapper.java
@@ -0,0 +1,31 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.requier.pojo.SupplierManagement;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 02:46:45
+ */
+@Mapper
+public interface SupplierManagementMapper extends BaseMapper<SupplierManagement> {
+
+    IPage<SupplierManagement> pageSupplierManagement(Page page, @Param("ew") QueryWrapper<SupplierManagement> supplierManagementQueryWrapper);
+
+    IPage<SupplierManagement> selectQualifiedSupplierManagement(Page page, @Param("ew") QueryWrapper<SupplierManagement> supplierManagementQueryWrapper);
+
+    List<SupplierManagement> selectSupplierManagementAll(@Param("parentId") Integer parentId);
+
+    List<SupplierManagement> selectSupplierManagement(@Param("parentId")Integer parentId);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/mapper/SuppliersDirectoryContentsMapper.java b/cnas-require/src/main/java/com/ruoyi/requier/mapper/SuppliersDirectoryContentsMapper.java
new file mode 100644
index 0000000..1fae1c7
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/mapper/SuppliersDirectoryContentsMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.requier.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.requier.pojo.SuppliersDirectoryContents;
+
+/**
+ * <p>
+ * 鏈嶅姟鍜屼緵搴斿搧閲囪喘鐩綍 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-17 06:14:51
+ */
+public interface SuppliersDirectoryContentsMapper extends BaseMapper<SuppliersDirectoryContents> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeCalibrationSchedule.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeCalibrationSchedule.java
new file mode 100644
index 0000000..8ce8a04
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeCalibrationSchedule.java
@@ -0,0 +1,81 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 浠櫒璁惧妫�瀹�/鏍″噯璁″垝琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-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-require/src/main/java/com/ruoyi/requier/pojo/FeIllumination.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeIllumination.java
new file mode 100644
index 0000000..2754e00
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeIllumination.java
@@ -0,0 +1,55 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/pojo/FeIlluminationDetectionArea.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeIlluminationDetectionArea.java
new file mode 100644
index 0000000..bd8bc4c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeIlluminationDetectionArea.java
@@ -0,0 +1,59 @@
+package com.ruoyi.requier.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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/pojo/FeLightningProtection.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeLightningProtection.java
new file mode 100644
index 0000000..ab678f1
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeLightningProtection.java
@@ -0,0 +1,58 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/pojo/FeMeasuredQuantity.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeMeasuredQuantity.java
new file mode 100644
index 0000000..8033706
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeMeasuredQuantity.java
@@ -0,0 +1,54 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�-娴嬪畾閲�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-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-require/src/main/java/com/ruoyi/requier/pojo/FePowerStable.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FePowerStable.java
new file mode 100644
index 0000000..c0d0f80
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FePowerStable.java
@@ -0,0 +1,58 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstance.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstance.java
new file mode 100644
index 0000000..713fafb
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstance.java
@@ -0,0 +1,81 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-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-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceAcceptance.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceAcceptance.java
new file mode 100644
index 0000000..be9a52d
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceAcceptance.java
@@ -0,0 +1,87 @@
+package com.ruoyi.requier.pojo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川楠屾敹
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:29:41
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_standard_substance_acceptance")
+@ApiModel(value = "FeStandardSubstanceAcceptance瀵硅薄", description = "鏍囧噯鐗╄川楠屾敹")
+@ExcelIgnoreUnannotated
+public class FeStandardSubstanceAcceptance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("娓呭崟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-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceAcceptanceInspection.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceAcceptanceInspection.java
new file mode 100644
index 0000000..10ab373
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceAcceptanceInspection.java
@@ -0,0 +1,47 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceRecord.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceRecord.java
new file mode 100644
index 0000000..6c11eff
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeStandardSubstanceRecord.java
@@ -0,0 +1,78 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 鏍囧噯鐗╄川娓呭崟鍊熺敤褰掕繕璁板綍琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-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-require/src/main/java/com/ruoyi/requier/pojo/FeTempHumDate.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeTempHumDate.java
new file mode 100644
index 0000000..b6b1a75
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeTempHumDate.java
@@ -0,0 +1,54 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-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-require/src/main/java/com/ruoyi/requier/pojo/FeTempHumRecord.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeTempHumRecord.java
new file mode 100644
index 0000000..dff462a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/FeTempHumRecord.java
@@ -0,0 +1,63 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-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-require/src/main/java/com/ruoyi/requier/pojo/ForeignRegister.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ForeignRegister.java
new file mode 100644
index 0000000..70fe906
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ForeignRegister.java
@@ -0,0 +1,72 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/pojo/InternalWastes.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/InternalWastes.java
new file mode 100644
index 0000000..0348a78
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/InternalWastes.java
@@ -0,0 +1,44 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/pojo/InternalWastesDetail.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/InternalWastesDetail.java
new file mode 100644
index 0000000..f65c3f3
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/InternalWastesDetail.java
@@ -0,0 +1,66 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesConsumables.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesConsumables.java
new file mode 100644
index 0000000..304969f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesConsumables.java
@@ -0,0 +1,50 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@TableName("procurement_supplies_consumables")
+@ApiModel("鑰楁潗閲囪喘鏄庣粏琛�")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ProcurementSuppliesConsumables {
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鑰楁潗涓昏〃id")
+    private Integer storeId;
+
+    @ApiModelProperty("鑰楁潗鍚嶇О")
+    private String consumablesName;
+
+    @ApiModelProperty("鍗曚环")
+    private Double unitPrice;
+
+    @ApiModelProperty("鍏ュ簱鏁伴噺")
+    private Integer storeNumber;
+
+    @ApiModelProperty("鎬讳环")
+    private Double totalPrice;
+
+    @ApiModelProperty("璐у彿")
+    private String itemNumber;
+
+    @ApiModelProperty("绫诲埆")
+    private String type;
+
+    @ApiModelProperty("瑙勬牸")
+    private String specifications;
+
+    @ApiModelProperty("鍙傝�冧緵搴斿晢")
+    private String supplier;
+
+    @ApiModelProperty("璁¢噺鍗曚綅")
+    private String unit;
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesContents.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesContents.java
new file mode 100644
index 0000000..ae9dd69
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesContents.java
@@ -0,0 +1,42 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@TableName("procurement_supplies_contents")
+@ApiModel("鏈嶅姟鍜屼緵搴斿搧閲囪喘琛�")
+public class ProcurementSuppliesContents {
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鑺傜偣鍚嶇О")
+    private String nodeName;
+
+    @ApiModelProperty("浠e彿")
+    private String code;
+
+
+    @ApiModelProperty("鏇存柊浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鐖惰妭鐐�")
+    private Integer parentId;
+
+    @TableField(exist = false)
+    private List<ProcurementSuppliesContents> children;
+
+
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesExpends.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesExpends.java
new file mode 100644
index 0000000..8a5b5a9
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesExpends.java
@@ -0,0 +1,62 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 03:47:19
+ */
+@Getter
+@Setter
+@TableName("procurement_supplies_expends")
+@ApiModel(value = "ProcurementSuppliesExpends瀵硅薄", description = "")
+public class ProcurementSuppliesExpends implements Serializable {
+
+
+    @ApiModelProperty("涓昏〃Id")
+    @TableId(value = "expend_id", type = IdType.AUTO)
+    private Long expendId;
+
+    @ApiModelProperty("鑰楁潗Id")
+    private Long listId;
+
+    @ApiModelProperty("娑堣�楁暟閲�")
+    private Integer amount;
+
+    @ApiModelProperty("妫�楠屽璞″悕绉�")
+    private String specimenName;
+
+    @ApiModelProperty("妫�楠岄」")
+    private String inspectionItem;
+
+    @ApiModelProperty("妫�楠屽瓙椤�")
+    private String inspectionItemSubclass;
+
+    @ApiModelProperty("褰曞叆浜篿d")
+    private Integer enterUserId;
+
+    @ApiModelProperty("鏇存柊浜篿d")
+    private Integer updateUserId;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesList.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesList.java
new file mode 100644
index 0000000..3011b84
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesList.java
@@ -0,0 +1,101 @@
+package com.ruoyi.requier.pojo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 鏈嶅姟涓庝緵搴斿晢 鑰楁潗鍒楄〃
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 04:04:32
+ */
+@Getter
+@Setter
+@TableName("procurement_supplies_list")
+@ApiModel(value = "ProcurementSuppliesList瀵硅薄", description = "鏈嶅姟涓庝緵搴斿晢 鑰楁潗鍒楄〃")
+public class ProcurementSuppliesList implements Serializable {
+
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty("缂栧彿")
+    @ExcelProperty("缂栧彿")
+    private Long id;
+
+    @ApiModelProperty("鐩綍id")
+    private Long contentsId;
+
+    @ApiModelProperty("鑰楁潗绫诲瀷")
+    @ExcelProperty("绫诲埆")
+    private String consumablesType;
+
+    @ApiModelProperty("璐у彿")
+    @ExcelProperty("璐у彿")
+    private String itemNumber;
+
+    @ApiModelProperty("鑰楁潗鍚嶇О")
+    @ExcelProperty("鍚嶇О")
+    private String consumablesName;
+
+    @ApiModelProperty("瑙勬牸")
+    @ExcelProperty("瑙勬牸")
+    private String specifications;
+
+    @ApiModelProperty("璁¢噺鍗曚綅")
+    @ExcelProperty("璁¢噺鍗曚綅")
+    private String unit;
+
+    @ApiModelProperty("鍙傝�冧环鏍�")
+    private BigDecimal referencePrice;
+
+    @ApiModelProperty("瀛樻斁浣嶇疆")
+    private Integer contentId;
+
+    @ApiModelProperty("璐熻矗浜�")
+    private Integer personInCharge;
+
+    @ApiModelProperty("搴撳瓨涓婇檺")
+    private Integer upperLimit;
+
+    @ApiModelProperty("搴撳瓨涓嬮檺")
+    @ExcelProperty("搴撳瓨涓嬮檺")
+    private Integer lowerLimit;
+
+    @ApiModelProperty("渚涘簲鍟�")
+    private Integer supplier;
+
+    @ApiModelProperty("鑰楁潗鍥炬爣")
+    private String consumablesIcon;
+
+    @ApiModelProperty("鑰楁潗闄勪欢")
+    private String attachment;
+
+    @ApiModelProperty("澶囨敞")
+    @ExcelProperty("澶囨敞")
+    private String remark;
+
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("褰撳墠搴撳瓨鏁伴噺")
+    @ExcelProperty("褰撳墠搴撳瓨")
+    private Integer currentAmount;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesStore.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesStore.java
new file mode 100644
index 0000000..b3b4271
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/ProcurementSuppliesStore.java
@@ -0,0 +1,52 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@TableName("procurement_supplies_store")
+@ApiModel("鑰楁潗鍏ュ簱琛�")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ProcurementSuppliesStore implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鐩綍id")
+    private Integer contentsId;
+
+    @ApiModelProperty("鍏ュ簱鍗曞彿")
+    private String oddNumbers;
+
+    @ApiModelProperty("鍏ュ簱搴撳瓨")
+    private String inventory;
+
+    @ApiModelProperty("鍏ュ簱鎬婚噾棰�")
+    private Double totalAmount;
+
+    @ApiModelProperty("鍏ュ簱浜�")
+    private Integer storageUser;
+
+    @ApiModelProperty("鍏ュ簱鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate storageTime;
+
+    @ApiModelProperty("鍏ュ簱璇存槑")
+    private String remark;
+
+    @ApiModelProperty("鐧昏浜�")
+    private Integer registrant;
+
+    @ApiModelProperty("鐧昏鏃堕棿")
+    private LocalDate registrantTime;
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/SupplierManagement.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/SupplierManagement.java
new file mode 100644
index 0000000..592ba76
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/SupplierManagement.java
@@ -0,0 +1,111 @@
+package com.ruoyi.requier.pojo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 02:46:45
+ */
+@Getter
+@Setter
+@TableName("cnas_supplier_management")
+@ApiModel(value = "SupplierManagement瀵硅薄", description = "")
+public class SupplierManagement implements Serializable {
+
+
+    @ApiModelProperty("涓昏〃Id")
+    @TableId(value = "supplier_management_id", type = IdType.AUTO)
+    private Integer supplierManagementId;
+
+    @ApiModelProperty("渚涘簲鍟�")
+    @ExcelProperty("渚涘簲鍟�")
+    private String supplierName;
+
+    @ApiModelProperty("缂栧彿")
+    @ExcelProperty("缂栧彿")
+    private String supplierRef;
+
+    @ApiModelProperty("渚涘簲鍟嗙墿鍝佹湇鍔″悕绉�")
+    @ExcelProperty("渚涘簲鍟嗙墿鍝佹湇鍔″悕绉�")
+    private String supplierItemServiceName;
+
+    @ApiModelProperty("閭紪")
+    @ExcelProperty("閭紪")
+    private String postalCode;
+
+    @ApiModelProperty("鍦板潃")
+    @ExcelProperty("鍦板潃")
+    private String adress;
+
+    @ApiModelProperty("logo")
+    private String logo;
+
+    @ApiModelProperty("鑱旂郴浜�")
+    @ExcelProperty("鑱旂郴浜�")
+    private String contacts;
+
+    @ApiModelProperty("鑱旂郴鐢佃瘽")
+    @ExcelProperty("鑱旂郴鐢佃瘽")
+    private String phone;
+
+    @ApiModelProperty("鎴峰悕")
+    @ExcelProperty("鎴峰悕")
+    private String householdName;
+
+    @ApiModelProperty("浼犵湡")
+    @ExcelProperty("浼犵湡")
+    private String fax;
+
+    @ApiModelProperty("寮�鎴疯")
+    @ExcelProperty("寮�鎴疯")
+    private String openingName;
+
+    @ApiModelProperty("缃戝潃")
+    @ExcelProperty("缃戝潃")
+    private String website;
+
+    @ApiModelProperty("璐﹀彿")
+    @ExcelProperty("璐﹀彿")
+    private String accountName;
+
+    @ApiModelProperty("email")
+    @ExcelProperty("email")
+    private String email;
+
+    @ApiModelProperty("澶囨敞")
+    @ExcelProperty("澶囨敞")
+    private String remarks;
+
+    @ApiModelProperty("闄勪欢")
+    private String enclosure;
+
+    @ApiModelProperty("鐘舵��")
+    private String status;
+
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("鐖秈d")
+    private Integer parentId;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/pojo/SuppliersDirectoryContents.java b/cnas-require/src/main/java/com/ruoyi/requier/pojo/SuppliersDirectoryContents.java
new file mode 100644
index 0000000..4963620
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/pojo/SuppliersDirectoryContents.java
@@ -0,0 +1,52 @@
+package com.ruoyi.requier.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏈嶅姟鍜屼緵搴斿搧閲囪喘鐩綍
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-17 06:14:51
+ */
+@Getter
+@Setter
+@TableName("suppliers_directory_contents")
+@ApiModel(value = "SuppliersDirectoryContents瀵硅薄", description = "鏈嶅姟鍜屼緵搴斿搧閲囪喘鐩綍")
+public class SuppliersDirectoryContents implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鑺傜偣鍚嶇О")
+    private String nodeName;
+
+    @ApiModelProperty("浠e彿")
+    private String code;
+
+    @ApiModelProperty("鏇存柊浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鐖惰妭鐐�")
+    private Integer parentId;
+
+
+    @TableField(exist = false)
+    private List<SuppliersDirectoryContents> children;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/FeCalibrationScheduleService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FeCalibrationScheduleService.java
new file mode 100644
index 0000000..5edbcad
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FeCalibrationScheduleService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.FeCalibrationSchedule;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/service/FeIlluminationDetectionAreaService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FeIlluminationDetectionAreaService.java
new file mode 100644
index 0000000..de21f15
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FeIlluminationDetectionAreaService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.FeIlluminationDetectionArea;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛�-妫�娴嬪尯鍩� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:28
+ */
+public interface FeIlluminationDetectionAreaService extends IService<FeIlluminationDetectionArea> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/FeIlluminationService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FeIlluminationService.java
new file mode 100644
index 0000000..a674d45
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FeIlluminationService.java
@@ -0,0 +1,29 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.FeIlluminationDto;
+import com.ruoyi.requier.pojo.FeIllumination;
+
+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-require/src/main/java/com/ruoyi/requier/service/FeLightningProtectionService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FeLightningProtectionService.java
new file mode 100644
index 0000000..f53900c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FeLightningProtectionService.java
@@ -0,0 +1,21 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.excel.FeLightningProtectionExcel;
+import com.ruoyi.requier.pojo.FeLightningProtection;
+
+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-require/src/main/java/com/ruoyi/requier/service/FeMeasuredQuantityService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FeMeasuredQuantityService.java
new file mode 100644
index 0000000..122917d
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FeMeasuredQuantityService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.FeMeasuredQuantity;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐢垫簮绋冲畾鎬�-娴嬪畾閲� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:16:44
+ */
+public interface FeMeasuredQuantityService extends IService<FeMeasuredQuantity> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/FePowerStableService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FePowerStableService.java
new file mode 100644
index 0000000..fe15469
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FePowerStableService.java
@@ -0,0 +1,33 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.FePowerStableDto;
+import com.ruoyi.requier.pojo.FePowerStable;
+
+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-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceAcceptanceInspectionService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceAcceptanceInspectionService.java
new file mode 100644
index 0000000..8f25219
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceAcceptanceInspectionService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptanceInspection;
+
+/**
+ * <p>
+ * 楠屾敹寮�绠辫褰� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-14 03:30:09
+ */
+public interface FeStandardSubstanceAcceptanceInspectionService extends IService<FeStandardSubstanceAcceptanceInspection> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceAcceptanceService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceAcceptanceService.java
new file mode 100644
index 0000000..9aa8de9
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceAcceptanceService.java
@@ -0,0 +1,33 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.AcceptanceDto;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptance;
+import com.ruoyi.requier.vo.AcceptanceDetailsVo;
+import com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceRecordService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceRecordService.java
new file mode 100644
index 0000000..1c3568f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceRecordService.java
@@ -0,0 +1,30 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.FeStandardSubstanceRecord;
+import com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceService.java
new file mode 100644
index 0000000..cd7ea90
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FeStandardSubstanceService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.FeStandardSubstance;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/service/FeTempHumDateService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FeTempHumDateService.java
new file mode 100644
index 0000000..bf1df8b
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FeTempHumDateService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.FeTempHumDateDto;
+import com.ruoyi.requier.pojo.FeTempHumDate;
+
+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-require/src/main/java/com/ruoyi/requier/service/FeTempHumRecordService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/FeTempHumRecordService.java
new file mode 100644
index 0000000..8c8724e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/FeTempHumRecordService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.FeTempHumRecordDto;
+import com.ruoyi.requier.pojo.FeTempHumRecord;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/service/ForeignRegisterService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/ForeignRegisterService.java
new file mode 100644
index 0000000..5897e3c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/ForeignRegisterService.java
@@ -0,0 +1,34 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.ForeignRegisterDto;
+import com.ruoyi.requier.pojo.ForeignRegister;
+
+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-require/src/main/java/com/ruoyi/requier/service/InternalWastesDetailService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/InternalWastesDetailService.java
new file mode 100644
index 0000000..596342f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/InternalWastesDetailService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.InternalWastesDetail;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏璇︽儏 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:54
+ */
+public interface InternalWastesDetailService extends IService<InternalWastesDetail> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/InternalWastesService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/InternalWastesService.java
new file mode 100644
index 0000000..37b8d61
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/InternalWastesService.java
@@ -0,0 +1,63 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.InternalWastesDto;
+import com.ruoyi.requier.pojo.InternalWastes;
+
+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-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesConsumablesService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesConsumablesService.java
new file mode 100644
index 0000000..0d5eeea
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesConsumablesService.java
@@ -0,0 +1,7 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.ProcurementSuppliesConsumables;
+
+public interface ProcurementSuppliesConsumablesService extends IService<ProcurementSuppliesConsumables> {
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesContentsService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesContentsService.java
new file mode 100644
index 0000000..b6f55be
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesContentsService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.ProcurementSuppliesContents;
+
+import java.util.List;
+import java.util.Map;
+
+public interface ProcurementSuppliesContentsService extends IService<ProcurementSuppliesContents> {
+
+    List<ProcurementSuppliesContents> directoryListing();
+
+    List<Map<String,Object>> getNodeNames();
+
+    List<Map<String,Object>> getUserList();
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesExpendsService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesExpendsService.java
new file mode 100644
index 0000000..e6eb91d
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesExpendsService.java
@@ -0,0 +1,23 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.ProcurementSuppliesExpendDto;
+import com.ruoyi.requier.pojo.ProcurementSuppliesExpends;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 03:47:19
+ */
+public interface ProcurementSuppliesExpendsService extends IService<ProcurementSuppliesExpends> {
+    IPage<ProcurementSuppliesExpendDto> selectAll(Page page, Long procurementSuppliesListId);
+
+    Integer addExpends(ProcurementSuppliesExpendDto expendDto);
+
+    Integer deleteExpends(Long id);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesListService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesListService.java
new file mode 100644
index 0000000..2b4c3cd
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesListService.java
@@ -0,0 +1,28 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.ProcurementSuppliesListDto;
+import com.ruoyi.requier.pojo.ProcurementSuppliesList;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 鏈嶅姟涓庝緵搴斿晢 鑰楁潗鍒楄〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 04:04:32
+ */
+public interface ProcurementSuppliesListService extends IService<ProcurementSuppliesList> {
+    IPage<ProcurementSuppliesListDto> selectList(Page page, ProcurementSuppliesListDto list);
+
+    public Integer addProcurementSuppliesList(ProcurementSuppliesListDto dto);
+
+    public Integer updateProcurementSuppliesList(ProcurementSuppliesListDto dto);
+
+    void exportProcurementSuppliesList(Integer contentsId,HttpServletResponse response);
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesStoreService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesStoreService.java
new file mode 100644
index 0000000..94e4009
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/ProcurementSuppliesStoreService.java
@@ -0,0 +1,21 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.dto.StoreDto;
+import com.ruoyi.requier.pojo.ProcurementSuppliesStore;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Map;
+
+public interface ProcurementSuppliesStoreService extends IService<ProcurementSuppliesStore> {
+    void addStore(Map<String,Object> map);
+    void updateStore(Map<String,Object> map);
+
+    void deleteStore(Integer id, Integer consumablesId);
+    IPage<StoreDto> selectStoreList(Page page, StoreDto storeDto);
+
+    void exportExcel(Integer contentsId, HttpServletResponse response) throws IOException;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/SupplierManagementService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/SupplierManagementService.java
new file mode 100644
index 0000000..994b695
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/SupplierManagementService.java
@@ -0,0 +1,32 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.SupplierManagement;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 02:46:45
+ */
+public interface SupplierManagementService extends IService<SupplierManagement> {
+
+    List<SupplierManagement> selectSupplierManagement(SupplierManagement supplierManagement);
+
+    void exportSupplierManagement(Integer parentId, HttpServletResponse response);
+
+    IPage<SupplierManagement> selectQualifiedSupplierManagement(Page page, SupplierManagement supplierManagement);
+
+    List<SupplierManagement> selectQualifiedSupplierManagementById(Integer supplierManagementId);
+
+    List<SupplierManagement> selectSupplierManagementByParentId(Integer parentId);
+
+    List<SupplierManagement> selectSupplierManagementAll();
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/SuppliersDirectoryContentsService.java b/cnas-require/src/main/java/com/ruoyi/requier/service/SuppliersDirectoryContentsService.java
new file mode 100644
index 0000000..e8e35f9
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/SuppliersDirectoryContentsService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.requier.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.requier.pojo.SuppliersDirectoryContents;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟鍜屼緵搴斿搧閲囪喘鐩綍 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-17 06:14:51
+ */
+public interface SuppliersDirectoryContentsService extends IService<SuppliersDirectoryContents> {
+
+    ArrayList<SuppliersDirectoryContents> directoryListing();
+    List<Map<String, Object>> getSuppliersDirectoryContentsNodeNames();
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeCalibrationScheduleServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeCalibrationScheduleServiceImpl.java
new file mode 100644
index 0000000..98621dd
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeCalibrationScheduleServiceImpl.java
@@ -0,0 +1,27 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.mapper.FeCalibrationScheduleMapper;
+import com.ruoyi.requier.pojo.FeCalibrationSchedule;
+import com.ruoyi.requier.service.FeCalibrationScheduleService;
+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-require/src/main/java/com/ruoyi/requier/service/impl/FeIlluminationDetectionAreaServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeIlluminationDetectionAreaServiceImpl.java
new file mode 100644
index 0000000..74f74e6
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeIlluminationDetectionAreaServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.mapper.FeIlluminationDetectionAreaMapper;
+import com.ruoyi.requier.pojo.FeIlluminationDetectionArea;
+import com.ruoyi.requier.service.FeIlluminationDetectionAreaService;
+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-require/src/main/java/com/ruoyi/requier/service/impl/FeIlluminationServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeIlluminationServiceImpl.java
new file mode 100644
index 0000000..c885dc9
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeIlluminationServiceImpl.java
@@ -0,0 +1,135 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
+import com.ruoyi.common.utils.DateImageUtil;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.system.mapper.UserMapper;
+import com.ruoyi.requier.dto.FeIlluminationDto;
+import com.ruoyi.requier.dto.FeIlluminationExportDto;
+import com.ruoyi.requier.mapper.FeIlluminationDetectionAreaMapper;
+import com.ruoyi.requier.mapper.FeIlluminationMapper;
+import com.ruoyi.requier.pojo.FeIllumination;
+import com.ruoyi.requier.pojo.FeIlluminationDetectionArea;
+import com.ruoyi.requier.service.FeIlluminationService;
+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));
+
+        for (int i = 0; i < feIlluminationDetectionAreas.size(); i++) {
+            feIlluminationDetectionAreas.get(i).setIndex(i + 1);
+        }
+
+        // 鑾峰彇璺緞
+        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-require/src/main/java/com/ruoyi/requier/service/impl/FeLightningProtectionServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeLightningProtectionServiceImpl.java
new file mode 100644
index 0000000..665952b
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeLightningProtectionServiceImpl.java
@@ -0,0 +1,27 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.excel.FeLightningProtectionExcel;
+import com.ruoyi.requier.mapper.FeLightningProtectionMapper;
+import com.ruoyi.requier.pojo.FeLightningProtection;
+import com.ruoyi.requier.service.FeLightningProtectionService;
+import org.springframework.stereotype.Service;
+
+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-require/src/main/java/com/ruoyi/requier/service/impl/FeMeasuredQuantityServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeMeasuredQuantityServiceImpl.java
new file mode 100644
index 0000000..c471ed7
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeMeasuredQuantityServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.mapper.FeMeasuredQuantityMapper;
+import com.ruoyi.requier.pojo.FeMeasuredQuantity;
+import com.ruoyi.requier.service.FeMeasuredQuantityService;
+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-require/src/main/java/com/ruoyi/requier/service/impl/FePowerStableServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FePowerStableServiceImpl.java
new file mode 100644
index 0000000..9d00e6b
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FePowerStableServiceImpl.java
@@ -0,0 +1,123 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.system.mapper.UserMapper;
+import com.ruoyi.requier.dto.FePowerStableDto;
+import com.ruoyi.requier.dto.FePowerStableExportDto;
+import com.ruoyi.requier.mapper.FeMeasuredQuantityMapper;
+import com.ruoyi.requier.mapper.FePowerStableMapper;
+import com.ruoyi.requier.pojo.FeMeasuredQuantity;
+import com.ruoyi.requier.pojo.FePowerStable;
+import com.ruoyi.requier.service.FePowerStableService;
+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;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java
new file mode 100644
index 0000000..99c906c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceAcceptanceInspectionServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.mapper.FeStandardSubstanceAcceptanceInspectionMapper;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.ruoyi.requier.service.FeStandardSubstanceAcceptanceInspectionService;
+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-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java
new file mode 100644
index 0000000..d24567b
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceAcceptanceServiceImpl.java
@@ -0,0 +1,111 @@
+package com.ruoyi.requier.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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.dto.AcceptanceDto;
+import com.ruoyi.requier.mapper.FeStandardSubstanceAcceptanceInspectionMapper;
+import com.ruoyi.requier.mapper.FeStandardSubstanceAcceptanceMapper;
+import com.ruoyi.requier.mapper.FeStandardSubstanceMapper;
+import com.ruoyi.requier.pojo.FeStandardSubstance;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptance;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptanceInspection;
+import com.ruoyi.requier.service.FeStandardSubstanceAcceptanceService;
+import com.ruoyi.requier.vo.AcceptanceDetailsVo;
+import com.ruoyi.requier.vo.AcceptanceVo;
+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-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceRecordServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceRecordServiceImpl.java
new file mode 100644
index 0000000..74b7510
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceRecordServiceImpl.java
@@ -0,0 +1,79 @@
+package com.ruoyi.requier.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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.requier.mapper.FeStandardSubstanceMapper;
+import com.ruoyi.requier.mapper.FeStandardSubstanceRecordMapper;
+import com.ruoyi.requier.pojo.FeStandardSubstance;
+import com.ruoyi.requier.pojo.FeStandardSubstanceRecord;
+import com.ruoyi.requier.service.FeStandardSubstanceRecordService;
+import com.ruoyi.requier.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-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceServiceImpl.java
new file mode 100644
index 0000000..21e50ee
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeStandardSubstanceServiceImpl.java
@@ -0,0 +1,26 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.mapper.FeStandardSubstanceMapper;
+import com.ruoyi.requier.pojo.FeStandardSubstance;
+import com.ruoyi.requier.service.FeStandardSubstanceService;
+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-require/src/main/java/com/ruoyi/requier/service/impl/FeTempHumDateServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeTempHumDateServiceImpl.java
new file mode 100644
index 0000000..cde3cbd
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeTempHumDateServiceImpl.java
@@ -0,0 +1,86 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.requier.dto.FeTempHumDateDto;
+import com.ruoyi.requier.dto.FeTempHumRecordDto;
+import com.ruoyi.requier.mapper.FeTempHumDateMapper;
+import com.ruoyi.requier.pojo.FeTempHumDate;
+import com.ruoyi.requier.service.FeTempHumDateService;
+import com.ruoyi.requier.service.FeTempHumRecordService;
+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.format.DateTimeFormatter;
+import java.util.HashMap;
+
+/**
+ * <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-require/src/main/java/com/ruoyi/requier/service/impl/FeTempHumRecordServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeTempHumRecordServiceImpl.java
new file mode 100644
index 0000000..0b54a27
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/FeTempHumRecordServiceImpl.java
@@ -0,0 +1,27 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.dto.FeTempHumRecordDto;
+import com.ruoyi.requier.mapper.FeTempHumRecordMapper;
+import com.ruoyi.requier.pojo.FeTempHumRecord;
+import com.ruoyi.requier.service.FeTempHumRecordService;
+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-require/src/main/java/com/ruoyi/requier/service/impl/ForeignRegisterServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ForeignRegisterServiceImpl.java
new file mode 100644
index 0000000..cc56c2d
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ForeignRegisterServiceImpl.java
@@ -0,0 +1,101 @@
+package com.ruoyi.requier.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.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.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.system.mapper.UserMapper;
+import com.ruoyi.requier.dto.ForeignRegisterDto;
+import com.ruoyi.requier.mapper.ForeignRegisterMapper;
+import com.ruoyi.requier.pojo.ForeignRegister;
+import com.ruoyi.requier.service.ForeignRegisterService;
+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-require/src/main/java/com/ruoyi/requier/service/impl/InternalWastesDetailServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/InternalWastesDetailServiceImpl.java
new file mode 100644
index 0000000..578c914
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/InternalWastesDetailServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.mapper.InternalWastesDetailMapper;
+import com.ruoyi.requier.pojo.InternalWastesDetail;
+import com.ruoyi.requier.service.InternalWastesDetailService;
+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-require/src/main/java/com/ruoyi/requier/service/impl/InternalWastesServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/InternalWastesServiceImpl.java
new file mode 100644
index 0000000..f472230
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/InternalWastesServiceImpl.java
@@ -0,0 +1,170 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.requier.dto.InternalWastesDto;
+import com.ruoyi.requier.mapper.InternalWastesMapper;
+import com.ruoyi.requier.pojo.InternalWastes;
+import com.ruoyi.requier.pojo.InternalWastesDetail;
+import com.ruoyi.requier.service.InternalWastesDetailService;
+import com.ruoyi.requier.service.InternalWastesService;
+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.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-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesConsumablesServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesConsumablesServiceImpl.java
new file mode 100644
index 0000000..af8034e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesConsumablesServiceImpl.java
@@ -0,0 +1,14 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.mapper.ProcurementSuppliesConsumablesMapper;
+import com.ruoyi.requier.pojo.ProcurementSuppliesConsumables;
+import com.ruoyi.requier.service.ProcurementSuppliesConsumablesService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+@Service
+@AllArgsConstructor
+public class ProcurementSuppliesConsumablesServiceImpl extends ServiceImpl<ProcurementSuppliesConsumablesMapper, ProcurementSuppliesConsumables>
+        implements ProcurementSuppliesConsumablesService {
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesContentsServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesContentsServiceImpl.java
new file mode 100644
index 0000000..25f6d14
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesContentsServiceImpl.java
@@ -0,0 +1,91 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.requier.mapper.ProcurementSuppliesContentsMapper;
+import com.ruoyi.requier.pojo.ProcurementSuppliesContents;
+import com.ruoyi.requier.service.ProcurementSuppliesContentsService;
+import com.ruoyi.system.mapper.UserMapper;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+@AllArgsConstructor
+public class ProcurementSuppliesContentsServiceImpl extends ServiceImpl<ProcurementSuppliesContentsMapper, ProcurementSuppliesContents>
+        implements ProcurementSuppliesContentsService {
+
+    private UserMapper userMapper;
+
+    @Override
+    public List<ProcurementSuppliesContents> directoryListing() {
+        ArrayList<ProcurementSuppliesContents> list = new ArrayList<>();
+        // 鏌ュ嚭涓�绾х洰褰�
+        List<ProcurementSuppliesContents> firstLevel = baseMapper.selectList(new LambdaQueryWrapper<ProcurementSuppliesContents>()
+                .isNull(ProcurementSuppliesContents::getParentId));
+
+        // 鏌ュ嚭鍚湁鐖惰妭鐐圭殑 骞堕�氳繃鐖惰妭鐐瑰垎缁�
+        List<ProcurementSuppliesContents> seconds = baseMapper.selectList(new LambdaQueryWrapper<ProcurementSuppliesContents>()
+                .isNotNull(ProcurementSuppliesContents::getParentId));
+        if(firstLevel.size() > 0){
+            Map<Integer, List<ProcurementSuppliesContents>> collect = seconds.stream()
+                    .collect(Collectors.groupingBy(ProcurementSuppliesContents::getParentId));
+            // 鏍规嵁鍒嗙粍鐨刱ey 璧嬪�煎搴旂殑children
+            for (int i = 0; i < firstLevel.size(); i++) {
+                recursion(firstLevel.get(i),collect);
+                list.add(firstLevel.get(i));
+            }
+        }
+        return list;
+    }
+
+    // 閫掑綊璧嬪�糲hildren
+    public ProcurementSuppliesContents recursion(ProcurementSuppliesContents firstLevel, Map<Integer, List<ProcurementSuppliesContents>> collect) {
+        // 灏嗙埗鑺傜偣鐨刢hildren璧嬪��
+        if(collect.containsKey(firstLevel.getId())) {
+            List<ProcurementSuppliesContents> procurementSupplies = collect.get(firstLevel.getId());
+            firstLevel.setChildren(procurementSupplies);
+            for (int i = 0; i < procurementSupplies.size(); i++) {
+                recursion(procurementSupplies.get(i),collect);
+            }
+        }
+        return firstLevel;
+    }
+
+    @Override
+    public List<Map<String, Object>> getNodeNames() {
+        List<ProcurementSuppliesContents> procurementSuppliesContents = baseMapper.selectList(null);
+        List<Map<String, Object>> collect = new ArrayList<>();
+        if(procurementSuppliesContents.size() > 0) {
+            collect = procurementSuppliesContents.stream().map(item -> {
+                HashMap<String, Object> map = new HashMap<>();
+                map.put("id", item.getId());
+                map.put("nodeName", item.getNodeName());
+                return map;
+            }).collect(Collectors.toList());
+        }
+        return collect;
+    }
+
+    @Override
+    public List<Map<String, Object>> getUserList() {
+        // 1 鍋滅敤
+        List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getStatus, 0));
+        List<Map<String, Object>> collect = new ArrayList<>();
+        if(users.size() > 0) {
+            collect = users.stream().map(item -> {
+                HashMap<String, Object> map = new HashMap<>();
+                map.put("id", item.getId());
+                map.put("nodeName", item.getName());
+                return map;
+            }).collect(Collectors.toList());
+        }
+        return collect;
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesExpendsServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesExpendsServiceImpl.java
new file mode 100644
index 0000000..ddb107b
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesExpendsServiceImpl.java
@@ -0,0 +1,77 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.requier.dto.ProcurementSuppliesExpendDto;
+import com.ruoyi.requier.mapper.ProcurementSuppliesExpendsMapper;
+import com.ruoyi.requier.mapper.ProcurementSuppliesListMapper;
+import com.ruoyi.requier.pojo.ProcurementSuppliesExpends;
+import com.ruoyi.requier.pojo.ProcurementSuppliesList;
+import com.ruoyi.requier.service.ProcurementSuppliesExpendsService;
+import com.ruoyi.system.mapper.UserMapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 03:47:19
+ */
+@Service
+public class ProcurementSuppliesExpendsServiceImpl extends ServiceImpl<ProcurementSuppliesExpendsMapper, ProcurementSuppliesExpends> implements ProcurementSuppliesExpendsService {
+    @Resource
+    private ProcurementSuppliesExpendsMapper expendsMapper;
+
+    @Resource
+    private ProcurementSuppliesListMapper listMapper;
+
+    @Override
+    public IPage<ProcurementSuppliesExpendDto> selectAll(Page page, Long procurementSuppliesListId) {
+        IPage<ProcurementSuppliesExpendDto> list =  expendsMapper.pageList(page, Wrappers.<ProcurementSuppliesExpendDto>lambdaQuery().eq(ProcurementSuppliesExpendDto::getListId, procurementSuppliesListId));
+        return list;
+    }
+
+    @Override
+    @Transactional
+    public Integer addExpends(ProcurementSuppliesExpendDto expendDto) {
+        ProcurementSuppliesList list = listMapper.selectProcurementSuppliesListForUpdate(expendDto.getListId());
+
+        ProcurementSuppliesExpends expends = new ProcurementSuppliesExpends();
+        BeanUtils.copyProperties(expendDto, expends);
+        int userId = SecurityUtils.getUserId().intValue();
+        expends.setEnterUserId(userId);
+        expends.setUpdateUserId(userId);
+        expends.setSpecimenName(expendDto.getSpecimenName());
+        if (list.getCurrentAmount() < expendDto.getAmount()) {
+            return 0;
+        }
+
+        list.setCurrentAmount(list.getCurrentAmount() - expendDto.getAmount());
+
+        listMapper.updateById(list);
+        return expendsMapper.insert(expends);
+    }
+
+    @Override
+    @Transactional
+    public Integer deleteExpends(Long id) {
+        ProcurementSuppliesExpends expend = expendsMapper.selectById(id);
+        ProcurementSuppliesList list = listMapper.selectProcurementSuppliesListForUpdate(expend.getListId());
+        list.setCurrentAmount(list.getCurrentAmount() + expend.getAmount());
+        int userId = SecurityUtils.getUserId().intValue();
+        list.setUpdateUser(userId);
+        listMapper.updateById(list);
+        return expendsMapper.deleteById(id);
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesListServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesListServiceImpl.java
new file mode 100644
index 0000000..c4645c7
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesListServiceImpl.java
@@ -0,0 +1,121 @@
+package com.ruoyi.requier.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.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.requier.dto.ProcurementSuppliesListDto;
+import com.ruoyi.requier.dto.ProcurementSuppliesListEDto;
+import com.ruoyi.requier.mapper.ProcurementSuppliesListMapper;
+import com.ruoyi.requier.mapper.SupplierManagementMapper;
+import com.ruoyi.requier.pojo.ProcurementSuppliesList;
+import com.ruoyi.requier.service.ProcurementSuppliesListService;
+import com.ruoyi.system.mapper.UserMapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏈嶅姟涓庝緵搴斿晢 鑰楁潗鍒楄〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 04:04:32
+ */
+@Service
+public class ProcurementSuppliesListServiceImpl extends ServiceImpl<ProcurementSuppliesListMapper, ProcurementSuppliesList> implements ProcurementSuppliesListService {
+    @Autowired
+    private UserMapper userMapper;
+
+    @Resource
+    private ProcurementSuppliesListMapper procurementSuppliesListMapper;
+
+    @Override
+    public IPage<ProcurementSuppliesListDto> selectList(Page page, ProcurementSuppliesListDto list) {
+        Long contentsId = list.getContentsId();
+        list.setContentsId(null);
+        IPage<ProcurementSuppliesList> iPage = baseMapper.selectProcurementSuppliesList(page,contentsId, QueryWrappers.queryWrappers(list));
+        IPage<ProcurementSuppliesListDto> result = new Page<>();
+        List<ProcurementSuppliesListDto> dtos = new ArrayList<>();
+        BeanUtils.copyProperties(iPage, result);
+        for (int i = 0; i < iPage.getRecords().size(); i++) {
+            ProcurementSuppliesList record = iPage.getRecords().get(i);
+            ProcurementSuppliesListDto dto = new ProcurementSuppliesListDto();
+            BeanUtils.copyProperties(record, dto);
+            if (record.getPersonInCharge() != 0) {
+                User user = userMapper.selectById(record.getPersonInCharge());
+                dto.setPersonInChargeName(user.getName());
+            }
+            if (record.getUpdateUser() != 0) {
+                User updateUser = userMapper.selectById(record.getUpdateUser());
+                dto.setUpdateUserName(updateUser.getName());
+            }
+            //鑰楁潗鍚嶇О
+            dto.setSupplierName(record.getConsumablesName());
+
+            dtos.add(dto);
+        }
+        result.setRecords(dtos);
+
+        return result;
+    }
+
+    @Override
+    public Integer addProcurementSuppliesList(ProcurementSuppliesListDto dto) {
+        ProcurementSuppliesList list = new ProcurementSuppliesList();
+        BeanUtils.copyProperties(dto, list);
+        return baseMapper.insert(list);
+    }
+
+    @Override
+    public Integer updateProcurementSuppliesList(ProcurementSuppliesListDto dto) {
+        ProcurementSuppliesList list = new ProcurementSuppliesList();
+        BeanUtils.copyProperties(dto, list);
+        return baseMapper.updateById(list);
+    }
+
+    @Override
+    public void exportProcurementSuppliesList(Integer contentsId,HttpServletResponse response) {
+        List<ProcurementSuppliesList> data = procurementSuppliesListMapper.selectProcurementSuppliesListByContentsId(contentsId);
+        if (contentsId==0){
+            data = procurementSuppliesListMapper.selectList(null);
+        }
+        if (data.size()==0) {
+            throw new ErrorException("鏃犳暟鎹�");
+        }
+        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(ProcurementSuppliesListEDto.class).build();
+            excelWriter.write(data, writeSheet);
+            // 鍏抽棴娴�
+            excelWriter.finish();
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+            throw new ErrorException("瀵煎嚭澶辫触");
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new ErrorException("瀵煎嚭澶辫触");
+        }
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesStoreServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesStoreServiceImpl.java
new file mode 100644
index 0000000..79d7a52
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/ProcurementSuppliesStoreServiceImpl.java
@@ -0,0 +1,142 @@
+package com.ruoyi.requier.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.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.requier.dto.StoreDto;
+import com.ruoyi.requier.excel.StoreExcel;
+import com.ruoyi.requier.mapper.ProcurementSuppliesConsumablesMapper;
+import com.ruoyi.requier.mapper.ProcurementSuppliesStoreMapper;
+import com.ruoyi.requier.pojo.ProcurementSuppliesConsumables;
+import com.ruoyi.requier.pojo.ProcurementSuppliesList;
+import com.ruoyi.requier.pojo.ProcurementSuppliesStore;
+import com.ruoyi.requier.service.ProcurementSuppliesListService;
+import com.ruoyi.requier.service.ProcurementSuppliesStoreService;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@Service
+@AllArgsConstructor
+public class ProcurementSuppliesStoreServiceImpl extends ServiceImpl<ProcurementSuppliesStoreMapper, ProcurementSuppliesStore>
+        implements ProcurementSuppliesStoreService {
+
+    private ProcurementSuppliesConsumablesMapper consumablesMapper;
+
+    @Autowired
+    private ProcurementSuppliesListService procurementSuppliesListService;
+
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addStore(Map<String,Object> map) {
+        ProcurementSuppliesStore procurementSuppliesStore = JSONObject.parseObject(JSONObject.toJSONString(map.get("store")), ProcurementSuppliesStore.class);
+        procurementSuppliesStore.setRegistrant(SecurityUtils.getUserId().intValue());
+        procurementSuppliesStore.setRegistrantTime(LocalDate.now());
+        if (Objects.isNull(procurementSuppliesStore.getId())) {
+            baseMapper.insert(procurementSuppliesStore);
+        } else {
+            baseMapper.updateById(procurementSuppliesStore);
+        }
+
+        List<ProcurementSuppliesConsumables> list = JSON.parseArray(JSONObject.toJSONString(map.get("consumables")), ProcurementSuppliesConsumables.class);
+        for (ProcurementSuppliesConsumables consumables : list) {
+            ProcurementSuppliesList one = procurementSuppliesListService.getOne(new QueryWrapper<ProcurementSuppliesList>().lambda()
+                    .eq(ProcurementSuppliesList::getConsumablesName, consumables.getConsumablesName()));
+            one.setCurrentAmount(one.getCurrentAmount() + consumables.getStoreNumber());
+            procurementSuppliesListService.updateById(one);
+        }
+        // 鐢熸垚璐у彿
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+        if(!Objects.isNull(list) && list.size() > 0) {
+            for (int i = 0; i < list.size(); i++) {
+                list.get(i).setStoreId(procurementSuppliesStore.getId());
+                String itemNumber ="HCRK" + LocalDate.now().format(dateTimeFormatter) +  String.format("%03d", i);
+                list.get(i).setItemNumber(itemNumber);
+                consumablesMapper.insert(list.get(i));
+            }
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateStore(Map<String,Object> map) {
+        ProcurementSuppliesStore procurementSuppliesStore = JSONObject.parseObject(JSONObject.toJSONString(map.get("store")), ProcurementSuppliesStore.class);
+        baseMapper.updateById(procurementSuppliesStore);
+        List<ProcurementSuppliesConsumables> list = JSON.parseArray(JSONObject.toJSONString(map.get("consumables")), ProcurementSuppliesConsumables.class);
+        consumablesMapper.delete(new LambdaQueryWrapper<ProcurementSuppliesConsumables>()
+                .eq(ProcurementSuppliesConsumables::getStoreId, procurementSuppliesStore.getId()));
+        if(!Objects.isNull(list) && list.size() > 0) {
+            for (int i = 0; i < list.size(); i++) {
+                list.get(i).setId(null);
+                list.get(i).setStoreId(procurementSuppliesStore.getId());
+                consumablesMapper.insert(list.get(i));
+            }
+        }
+    }
+
+    @Override
+    public void deleteStore(Integer id, Integer consumablesId) {
+        consumablesMapper.deleteById(consumablesId);
+        List<ProcurementSuppliesConsumables> consumables = consumablesMapper.selectList(new LambdaQueryWrapper<ProcurementSuppliesConsumables>()
+                .eq(ProcurementSuppliesConsumables::getStoreId, id));
+        // 鍒ゆ柇鏄惁杩樻湁鑰楁潗 娌℃湁灏卞皢涓昏〃Store鍒犻櫎
+        if(CollectionUtils.isEmpty(consumables)) {
+            baseMapper.deleteById(id);
+        }
+    }
+
+    @Override
+    public IPage<StoreDto> selectStoreList(Page page, StoreDto storeDto) {
+        IPage<StoreDto> iPage = baseMapper.selectStoreList(page, QueryWrappers.queryWrappers(storeDto));
+        return iPage;
+    }
+
+    /**
+     * 瀵煎嚭excel
+     * @param contentsId
+     * @param response
+     */
+    @Override
+    public void exportExcel(Integer contentsId, HttpServletResponse response) throws IOException {
+        List<StoreExcel> storeExcels = baseMapper.exportExcel(contentsId);
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("UTF-8");
+        // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
+        String fileName = null;
+        try {
+            fileName = URLEncoder.encode("鑰楁潗鍏ュ簱", "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException(e);
+        }
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+        WriteSheet writeSheet = EasyExcel.writerSheet(0, "鑰楁潗鍏ュ簱").head(StoreExcel.class).build();
+        excelWriter.write(storeExcels, writeSheet);
+        excelWriter.finish();
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/SupplierManagementServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/SupplierManagementServiceImpl.java
new file mode 100644
index 0000000..e4e505a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/SupplierManagementServiceImpl.java
@@ -0,0 +1,92 @@
+package com.ruoyi.requier.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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.requier.dto.SupplierManagementDto;
+import com.ruoyi.requier.mapper.SupplierManagementMapper;
+import com.ruoyi.requier.pojo.SupplierManagement;
+import com.ruoyi.requier.service.SupplierManagementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+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-15 02:46:45
+ */
+@Service
+public class SupplierManagementServiceImpl extends ServiceImpl<SupplierManagementMapper, SupplierManagement> implements SupplierManagementService {
+
+    @Resource
+    private  SupplierManagementMapper supplierManagementMapper;
+
+    public SupplierManagementServiceImpl(SupplierManagementMapper supplierManagementMapper) {
+        this.supplierManagementMapper = supplierManagementMapper;
+    }
+
+    @Override
+    public List<SupplierManagement> selectSupplierManagement( SupplierManagement supplierManagement) {
+        return this.list();
+    }
+
+    @Override
+    public void exportSupplierManagement(Integer parentId, HttpServletResponse response) {
+        List<SupplierManagement> data = supplierManagementMapper.selectSupplierManagementAll(parentId);
+        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(SupplierManagementDto.class).build();
+            excelWriter.write(data, writeSheet);
+            // 鍏抽棴娴�
+            excelWriter.finish();
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
+    }
+
+    @Override
+    public IPage<SupplierManagement> selectQualifiedSupplierManagement(Page page, SupplierManagement supplierManagement) {
+        return baseMapper.selectQualifiedSupplierManagement(page, QueryWrappers.queryWrappers(supplierManagement));
+    }
+
+    @Override
+    public List<SupplierManagement> selectQualifiedSupplierManagementById(Integer supplierManagementId) {
+        return this.list(new QueryWrapper<SupplierManagement>().lambda().eq(SupplierManagement::getSupplierManagementId , supplierManagementId));
+    }
+
+    @Override
+    public List<SupplierManagement> selectSupplierManagementByParentId(Integer parentId) {
+        return supplierManagementMapper.selectSupplierManagement(parentId);
+    }
+
+    @Override
+    public List<SupplierManagement> selectSupplierManagementAll() {
+        return supplierManagementMapper.selectList(null);
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/service/impl/SuppliersDirectoryContentsServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/SuppliersDirectoryContentsServiceImpl.java
new file mode 100644
index 0000000..4ebe667
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/service/impl/SuppliersDirectoryContentsServiceImpl.java
@@ -0,0 +1,76 @@
+package com.ruoyi.requier.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.requier.mapper.SuppliersDirectoryContentsMapper;
+import com.ruoyi.requier.pojo.SuppliersDirectoryContents;
+import com.ruoyi.requier.service.SuppliersDirectoryContentsService;
+import org.springframework.stereotype.Service;
+
+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-12-17 06:14:51
+ */
+@Service
+public class SuppliersDirectoryContentsServiceImpl extends ServiceImpl<SuppliersDirectoryContentsMapper, SuppliersDirectoryContents> implements SuppliersDirectoryContentsService {
+
+    @Override
+    public ArrayList<SuppliersDirectoryContents> directoryListing() {
+        ArrayList<SuppliersDirectoryContents> list = new ArrayList<>();
+        // 鏌ュ嚭涓�绾х洰褰�
+        List<SuppliersDirectoryContents> firstLevel = baseMapper.selectList(new LambdaQueryWrapper<SuppliersDirectoryContents>()
+                .isNull(SuppliersDirectoryContents::getParentId));
+
+        // 鏌ュ嚭鍚湁鐖惰妭鐐圭殑 骞堕�氳繃鐖惰妭鐐瑰垎缁�
+        List<SuppliersDirectoryContents> seconds = baseMapper.selectList(new LambdaQueryWrapper<SuppliersDirectoryContents>()
+                .isNotNull(SuppliersDirectoryContents::getParentId));
+        if(firstLevel.size() > 0){
+            Map<Integer, List<SuppliersDirectoryContents>> collect = seconds.stream()
+                    .collect(Collectors.groupingBy(SuppliersDirectoryContents::getParentId));
+            // 鏍规嵁鍒嗙粍鐨刱ey 璧嬪�煎搴旂殑children
+            for (int i = 0; i < firstLevel.size(); i++) {
+                recursion(firstLevel.get(i),collect);
+                list.add(firstLevel.get(i));
+            }
+        }
+        return list;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSuppliersDirectoryContentsNodeNames() {
+        List<SuppliersDirectoryContents> procurementSuppliesContents = baseMapper.selectList(null);
+        List<Map<String, Object>> collect = new ArrayList<>();
+        if(procurementSuppliesContents.size() > 0) {
+            collect = procurementSuppliesContents.stream().map(item -> {
+                HashMap<String, Object> map = new HashMap<>();
+                map.put("id", item.getId());
+                map.put("nodeName", item.getNodeName());
+                return map;
+            }).collect(Collectors.toList());
+        }
+        return collect;
+    }
+
+
+    public SuppliersDirectoryContents recursion(SuppliersDirectoryContents firstLevel, Map<Integer, List<SuppliersDirectoryContents>> collect) {
+        // 灏嗙埗鑺傜偣鐨刢hildren璧嬪��
+        if(collect.containsKey(firstLevel.getId())) {
+            List<SuppliersDirectoryContents> procurementSupplies = collect.get(firstLevel.getId());
+            firstLevel.setChildren(procurementSupplies);
+            for (int i = 0; i < procurementSupplies.size(); i++) {
+                recursion(procurementSupplies.get(i),collect);
+            }
+        }
+        return firstLevel;
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/requier/vo/AcceptanceDetailsVo.java b/cnas-require/src/main/java/com/ruoyi/requier/vo/AcceptanceDetailsVo.java
new file mode 100644
index 0000000..2a1e7ff
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/vo/AcceptanceDetailsVo.java
@@ -0,0 +1,22 @@
+package com.ruoyi.requier.vo;
+
+import com.ruoyi.requier.pojo.FeStandardSubstance;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptance;
+import com.ruoyi.requier.pojo.FeStandardSubstanceAcceptanceInspection;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+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-require/src/main/java/com/ruoyi/requier/vo/AcceptanceVo.java b/cnas-require/src/main/java/com/ruoyi/requier/vo/AcceptanceVo.java
new file mode 100644
index 0000000..071a374
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/vo/AcceptanceVo.java
@@ -0,0 +1,46 @@
+package com.ruoyi.requier.vo;
+
+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-require/src/main/java/com/ruoyi/requier/vo/SubstanceRecordVo.java b/cnas-require/src/main/java/com/ruoyi/requier/vo/SubstanceRecordVo.java
new file mode 100644
index 0000000..265637c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/requier/vo/SubstanceRecordVo.java
@@ -0,0 +1,46 @@
+package com.ruoyi.requier.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-require/src/main/resources/mapper/FeCalibrationScheduleMapper.xml b/cnas-require/src/main/resources/mapper/FeCalibrationScheduleMapper.xml
new file mode 100644
index 0000000..bbdeeae
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.FeCalibrationScheduleMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.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.ruoyi.requier.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-require/src/main/resources/mapper/FeIlluminationDetectionAreaMapper.xml b/cnas-require/src/main/resources/mapper/FeIlluminationDetectionAreaMapper.xml
new file mode 100644
index 0000000..7a7e576
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.FeIlluminationDetectionAreaMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.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-require/src/main/resources/mapper/FeIlluminationMapper.xml b/cnas-require/src/main/resources/mapper/FeIlluminationMapper.xml
new file mode 100644
index 0000000..8721bda
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.FeIlluminationMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.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.ruoyi.requier.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.ruoyi.requier.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-require/src/main/resources/mapper/FeLightningProtectionMapper.xml b/cnas-require/src/main/resources/mapper/FeLightningProtectionMapper.xml
new file mode 100644
index 0000000..c56edd3
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.FeLightningProtectionMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.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.ruoyi.requier.excel.FeLightningProtectionExcel">
+        select * from cnas_fe_lightning_protection
+    </select>
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/FeMeasuredQuantityMapper.xml b/cnas-require/src/main/resources/mapper/FeMeasuredQuantityMapper.xml
new file mode 100644
index 0000000..d86783e
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.FeMeasuredQuantityMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.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-require/src/main/resources/mapper/FePowerStableMapper.xml b/cnas-require/src/main/resources/mapper/FePowerStableMapper.xml
new file mode 100644
index 0000000..b295659
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.FePowerStableMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.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.ruoyi.requier.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.ruoyi.requier.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-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceInspectionMapper.xml b/cnas-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceInspectionMapper.xml
new file mode 100644
index 0000000..2419c7c
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.FeStandardSubstanceAcceptanceInspectionMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.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-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceMapper.xml b/cnas-require/src/main/resources/mapper/FeStandardSubstanceAcceptanceMapper.xml
new file mode 100644
index 0000000..011dda2
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.FeStandardSubstanceAcceptanceMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.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.ruoyi.requier.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-require/src/main/resources/mapper/FeStandardSubstanceMapper.xml b/cnas-require/src/main/resources/mapper/FeStandardSubstanceMapper.xml
new file mode 100644
index 0000000..a19c2f8
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.FeStandardSubstanceMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.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.ruoyi.requier.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-require/src/main/resources/mapper/FeStandardSubstanceRecordMapper.xml b/cnas-require/src/main/resources/mapper/FeStandardSubstanceRecordMapper.xml
new file mode 100644
index 0000000..7aef7cd
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.FeStandardSubstanceRecordMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.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.ruoyi.requier.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-require/src/main/resources/mapper/FeTempHumDateMapper.xml b/cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml
new file mode 100644
index 0000000..5e27062
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.FeTempHumDateMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.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.ruoyi.requier.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-require/src/main/resources/mapper/FeTempHumRecordMapper.xml b/cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml
new file mode 100644
index 0000000..095bb33
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.requier.mapper.FeTempHumRecordMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.pojo.FeTempHumRecord">
+        <id column="temp_hum_id" property="tempHumId" />
+        <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="note" property="note" />
+    </resultMap>
+
+    <select id="getFeTempHumRecordPage" resultType="com.ruoyi.requier.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-require/src/main/resources/mapper/ForeignRegisterMapper.xml b/cnas-require/src/main/resources/mapper/ForeignRegisterMapper.xml
new file mode 100644
index 0000000..6d41b28
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.ForeignRegisterMapper">
+
+    <!-- 澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ -->
+    <select id="pageForeignRegister" resultType="com.ruoyi.requier.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.ruoyi.requier.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-require/src/main/resources/mapper/InternalWastesDetailMapper.xml b/cnas-require/src/main/resources/mapper/InternalWastesDetailMapper.xml
new file mode 100644
index 0000000..a417111
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.InternalWastesDetailMapper">
+
+
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/InternalWastesMapper.xml b/cnas-require/src/main/resources/mapper/InternalWastesMapper.xml
new file mode 100644
index 0000000..bd64e20
--- /dev/null
+++ b/cnas-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.ruoyi.requier.mapper.InternalWastesMapper">
+
+    <!-- 瀹夊叏鍐呭姟涓夊簾鐧昏鍒楄〃 -->
+    <select id="pageInternalWastes" resultType="com.ruoyi.requier.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-require/src/main/resources/mapper/ProcurementSuppliesExpendsMapper.xml b/cnas-require/src/main/resources/mapper/ProcurementSuppliesExpendsMapper.xml
new file mode 100644
index 0000000..874a0bd
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/ProcurementSuppliesExpendsMapper.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.requier.mapper.ProcurementSuppliesExpendsMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.pojo.ProcurementSuppliesExpends">
+        <id column="expend_id" property="expendId" />
+        <result column="list_id" property="listId" />
+        <result column="amount" property="amount" />
+        <result column="enter_user_id" property="enterUserId" />
+        <result column="update_user_id" property="updateUserId" />
+        <result column="update_time" property="updateTime" />
+        <result column="create_time" property="createTime" />
+        <result column="create_time" property="createTime" />
+        <result column="create_time" property="createTime" />
+        <result column="create_time" property="createTime" />
+    </resultMap>
+    <select id="pageList" resultType="com.ruoyi.requier.dto.ProcurementSuppliesExpendDto">
+        select
+        psl.consumables_name as list_name,
+        pse.specimen_name,
+        pse.inspection_item,
+        pse.inspection_item_subclass as inspection_item_sub_class,
+        pse.expend_id,
+        pse.list_id,
+        pse.amount,
+        pse.enter_user_id,
+        pse.update_user_id,
+        pse.update_time,
+        pse.create_time,
+        u1.name as enter_user_name,
+        u2.name as update_user_name
+        from procurement_supplies_expends pse
+        left join procurement_supplies_list psl on pse.list_id = psl.id
+        left join user u1 on pse.enter_user_id = u1.id
+        left join user u2 on pse.update_user_id = u2.id
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+
+    </select>
+
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/ProcurementSuppliesListMapper.xml b/cnas-require/src/main/resources/mapper/ProcurementSuppliesListMapper.xml
new file mode 100644
index 0000000..f763d06
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/ProcurementSuppliesListMapper.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.requier.mapper.ProcurementSuppliesListMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.pojo.ProcurementSuppliesList">
+        <id column="id" property="id" />
+        <result column="contents_id" property="contentsId" />
+        <result column="consumables_type" property="consumablesType" />
+        <result column="item_number" property="itemNumber" />
+        <result column="consumables_name" property="consumablesName" />
+        <result column="specifications" property="specifications" />
+        <result column="unit" property="unit" />
+        <result column="reference_price" property="referencePrice" />
+        <result column="content_id" property="contentId" />
+        <result column="person_in_charge" property="personInCharge" />
+        <result column="upper_limit" property="upperLimit" />
+        <result column="lower_limit" property="lowerLimit" />
+        <result column="supplier" property="supplier" />
+        <result column="consumables_icon" property="consumablesIcon" />
+        <result column="attachment" property="attachment" />
+        <result column="remark" property="remark" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_user" property="updateUser" />
+        <result column="current_amount" property="currentAmount" />
+    </resultMap>
+
+    <select id="selectProcurementSuppliesList" resultMap="BaseResultMap">
+        select * from procurement_supplies_list
+        <where>
+            <if test="contentsId != null and contentsId != ''">
+                and contents_id = #{contentsId}
+            </if>
+        </where>
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+
+    <select id="selectProcurementSuppliesListForUpdate" resultMap="BaseResultMap">
+        select * from procurement_supplies_list where id = ${id} for update
+    </select>
+
+    <select id="selectProcurementSuppliesListAll" resultMap="BaseResultMap">
+        select
+            contents_id,item_number, consumables_type, consumables_name, specifications, supplier, upper_limit,
+        lower_limit, unit, remark, person_in_charge, update_user, update_time
+        from procurement_supplies_list
+        <where>
+            <if test="ew.contentsId != null and ew.contentsId != ''">
+                and contents_id = ${ew.contentsId}
+            </if>
+        </where>
+    </select>
+    <select id="selectProcurementSuppliesListByContentsId"
+            resultType="com.ruoyi.requier.pojo.ProcurementSuppliesList">
+        select id,
+               item_number,
+               consumables_type,
+               consumables_name,
+               specifications,
+               lower_limit,
+               unit,
+               remark
+        from procurement_supplies_list
+        where contents_id = ${id}
+           or contents_id in
+              (SELECT id
+               FROM `procurement_supplies_contents`
+               WHERE id = ${id}
+                  OR parent_id = ${id})
+    </select>
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml b/cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml
new file mode 100644
index 0000000..0df7937
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ruoyi.requier.mapper.ProcurementSuppliesStoreMapper">
+    <resultMap id="map" type="com.ruoyi.requier.dto.StoreDto">
+        <id column="id" property="id"/>
+        <result column="consumables_id" property="consumablesId"/>
+        <result column="odd_numbers" property="oddNumbers"/>
+        <result column="consumables_name" property="consumablesName"/>
+        <result column="store_number" property="storeNumber"/>
+        <result column="total_price" property="totalPrice"/>
+        <result column="storage_user" property="storageUser"/>
+        <result column="storage_time" property="storageTime"/>
+        <result column="remark" property="remark"/>
+        <result column="registrant" property="registrant"/>
+        <result column="registrant_time" property="registrantTime"/>
+        <result column="storageUserName" property="storageUserName"/>
+        <result column="registrantName" property="registrantName"/>
+    </resultMap>
+
+    <resultMap id="storeExcelMap" type="com.ruoyi.requier.excel.StoreExcel">
+        <result column="odd_numbers" property="oddNumbers"/>
+        <result column="consumables_name" property="consumablesName"/>
+        <result column="store_number" property="storeNumber"/>
+        <result column="total_price" property="totalPrice"/>
+        <result column="storage_time" property="storageTime"/>
+        <result column="remark" property="remark"/>
+        <result column="registrant_time" property="registrantTime"/>
+        <result column="storageUserName" property="storageUserName"/>
+        <result column="registrantName" property="registrantName"/>
+    </resultMap>
+
+
+    <select id="selectStoreList" resultMap="map">
+select * from (
+        SELECT
+        s.id,
+        c.id AS consumables_id,
+        s.contents_id,
+        s.odd_numbers,
+        c.consumables_name,
+        c.store_number,
+        c.total_price,
+        s.storage_user,
+        s.storage_time,
+        s.remark,
+        s.registrant,
+        s.registrant_time,
+        u.name AS storageUserName,
+        u1.name AS registrantName
+        FROM
+        `procurement_supplies_store` s
+        LEFT JOIN procurement_supplies_consumables c ON s.id = c.store_id
+        LEFT JOIN user u ON u.id = s.storage_user
+        LEFT JOIN user u1 ON u1.id = s.registrant
+        )a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+
+    <select id="exportExcel" resultMap="storeExcelMap">
+        SELECT * FROM (
+                          SELECT
+                              s.odd_numbers,
+                              c.consumables_name,
+                              c.store_number,
+                              c.total_price,
+                              s.storage_time,
+                              s.remark,
+                              s.registrant_time,
+                              u.name AS storageUserName,
+                              u1.name AS registrantName
+                          FROM
+                              `procurement_supplies_store` s
+                                  LEFT JOIN procurement_supplies_consumables c ON s.id = c.store_id
+                                  LEFT JOIN user u ON u.id = s.storage_user
+                                  LEFT JOIN user u1 ON u1.id = s.registrant
+
+                      ) a
+    </select>
+
+
+
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/SupplierManagementMapper.xml b/cnas-require/src/main/resources/mapper/SupplierManagementMapper.xml
new file mode 100644
index 0000000..ee8e38a
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/SupplierManagementMapper.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.requier.mapper.SupplierManagementMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.pojo.SupplierManagement">
+        <id column="supplier_management_id" property="supplierManagementId" />
+        <result column="supplier_name" property="supplierName" />
+        <result column="supplier_ref" property="supplierRef" />
+        <result column="supplier_item_service_name" property="supplierItemServiceName" />
+        <result column="postal_code" property="postalCode" />
+        <result column="adress" property="adress" />
+        <result column="logo" property="logo" />
+        <result column="contacts" property="contacts" />
+        <result column="phone" property="phone" />
+        <result column="household_name" property="householdName" />
+        <result column="fax" property="fax" />
+        <result column="opening_name" property="openingName" />
+        <result column="website" property="website" />
+        <result column="account_name" property="accountName" />
+        <result column="email" property="email" />
+        <result column="remarks" property="remarks" />
+        <result column="enclosure" property="enclosure" />
+        <result column="create_time" property="createTime" />
+        <result column="create_user" property="createUser" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_user" property="updateUser" />
+        <result column="status" property="status" />
+        <result column="parent_id" property="parentId" />
+    </resultMap>
+    <select id="pageSupplierManagement" resultType="com.ruoyi.requier.pojo.SupplierManagement">
+        select *
+        from (select *
+        from cnas_supplier_management
+        order by create_time desc
+        ) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+
+    <select id="selectQualifiedSupplierManagement" resultType="com.ruoyi.requier.pojo.SupplierManagement">
+        select *
+        from (select *
+        from cnas_supplier_management
+        where status = 0
+        order by create_time desc
+        ) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+    <select id="selectSupplierManagementAll" resultType="com.ruoyi.requier.pojo.SupplierManagement">
+        SELECT csm.supplier_name,
+        csm.supplier_ref,
+        csm.supplier_item_service_name,
+        csm.postal_code,
+        csm.adress,
+        csm.contacts,
+        csm.phone,
+        csm.household_name,
+        csm.fax,
+        csm.opening_name,
+        csm.website,
+        csm.account_name,
+        csm.email
+        FROM cnas_supplier_management csm
+        <where>
+            <if test="parentId != null and parentId != 0">
+                csm.parent_id in (select id
+                from suppliers_directory_contents
+                where id = #{parentId}
+                or parent_id = #{parentId})
+            </if>
+        </where>
+    </select>
+    <select id="selectSupplierManagement" resultType="com.ruoyi.requier.pojo.SupplierManagement">
+        select
+            *
+        from cnas_supplier_management csm
+        where
+            csm.parent_id = #{parentId} or
+            csm.parent_id in
+        (select id from suppliers_directory_contents where id = #{parentId} or parent_id = #{parentId})
+    </select>
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/SuppliersDirectoryContentsMapper.xml b/cnas-require/src/main/resources/mapper/SuppliersDirectoryContentsMapper.xml
new file mode 100644
index 0000000..c1a8e66
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/SuppliersDirectoryContentsMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.requier.mapper.SuppliersDirectoryContentsMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.requier.pojo.SuppliersDirectoryContents">
+        <id column="id" property="id" />
+        <result column="node_name" property="nodeName" />
+        <result column="code" property="code" />
+        <result column="update_user" property="updateUser" />
+        <result column="update_time" property="updateTime" />
+        <result column="parent_id" property="parentId" />
+    </resultMap>
+
+</mapper>
diff --git a/cnas-require/src/main/resources/static/foreign-register.docx b/cnas-require/src/main/resources/static/foreign-register.docx
new file mode 100644
index 0000000..60c94cf
--- /dev/null
+++ b/cnas-require/src/main/resources/static/foreign-register.docx
Binary files differ
diff --git a/cnas-require/src/main/resources/static/illumination.docx b/cnas-require/src/main/resources/static/illumination.docx
new file mode 100644
index 0000000..c2bfb5b
--- /dev/null
+++ b/cnas-require/src/main/resources/static/illumination.docx
Binary files differ
diff --git a/cnas-require/src/main/resources/static/internal-wastes.docx b/cnas-require/src/main/resources/static/internal-wastes.docx
new file mode 100644
index 0000000..3c3809e
--- /dev/null
+++ b/cnas-require/src/main/resources/static/internal-wastes.docx
Binary files differ
diff --git a/cnas-require/src/main/resources/static/power-stable.docx b/cnas-require/src/main/resources/static/power-stable.docx
new file mode 100644
index 0000000..070576f
--- /dev/null
+++ b/cnas-require/src/main/resources/static/power-stable.docx
Binary files differ
diff --git a/cnas-require/src/main/resources/static/temp_hum_date.docx b/cnas-require/src/main/resources/static/temp_hum_date.docx
new file mode 100644
index 0000000..72b9222
--- /dev/null
+++ b/cnas-require/src/main/resources/static/temp_hum_date.docx
Binary files differ
diff --git a/pom.xml b/pom.xml
index 92721e5..4bc4e9e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -275,6 +275,13 @@
                 <version>${ruoyi.version}</version>
             </dependency>
 
+            <!--cnas鏍囧噯鐗╄川-->
+            <dependency>
+                <groupId>com.ruoyi</groupId>
+                <artifactId>cnas-require</artifactId>
+                <version>${ruoyi.version}</version>
+            </dependency>
+
 
             <!-- minio -->
             <dependency>
@@ -390,6 +397,7 @@
         <module>performance-server</module>
         <module>cnas-manage</module>
         <module>cnas-process</module>
+        <module>cnas-require</module>
     </modules>
     <packaging>pom</packaging>
 
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index f3e566d..0fbb1aa 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -98,6 +98,12 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>cnas-process</artifactId>
         </dependency>
+
+        <!--cnas鏍囧噯鐗╄川-->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>cnas-require</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/FileSaveUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/FileSaveUtil.java
new file mode 100644
index 0000000..da4ca5f
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/FileSaveUtil.java
@@ -0,0 +1,179 @@
+package com.ruoyi.common.utils;
+
+import com.alibaba.excel.util.IoUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.FileSystemUtils;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.PostConstruct;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Random;
+
+/**
+ * 淇濆瓨鏂囦欢宸ュ叿
+ */
+@Slf4j
+@Component
+public class FileSaveUtil {
+
+    // 鍙杫ml涓殑璺緞 + /
+    private static String FILE_PATH;
+
+    private static String WORD_URL_PATH;
+
+    private static String[] ALLOWED;
+
+    @Value("${file.path}")
+    private String file;
+
+    @Value("${wordUrl}")
+    private String wordUrl;
+
+    @Value("${file.allowed}")
+    private String[] allowed;
+
+    @PostConstruct
+    public void getFile() {
+        FILE_PATH = this.file;
+    }
+
+    @PostConstruct
+    public void getWordUrl(){
+        WORD_URL_PATH = this.wordUrl;
+    }
+
+    @PostConstruct
+    public void getAllowed(){
+        ALLOWED = this.allowed;
+    }
+
+    /**
+     * 瀛樺偍鏂囦欢涓诲嚱鏁�
+     * @param file 鏂囦欢浜岃繘鍒舵祦
+     * @return 杩斿洖鏂囦欢鍚嶇О鐢ㄤ簬瀛樺偍鏁版嵁搴�
+     */
+    public static String StoreFile(MultipartFile file) {
+        String originalFilename = file.getOriginalFilename();
+        // 鐢熸垚闅忔満鍚嶇О锛氭椂闂確闅忔満6浣嶆暟瀛�
+        String FileName = System.currentTimeMillis() + "_" + getNumber(6);
+        String suffix = null;
+        if (originalFilename != null) {
+            suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
+            // 濡傛灉鍚庣紑鍚嶄笉閫氳繃鎶涘嚭寮傚父
+            if (!isFileAllowed(suffix)){
+                throw new RuntimeException(suffix);
+            }
+        }
+        // 鍚嶇О鎷兼帴
+        String fileName = FileName + suffix;
+        // 杩涜瀛樺偍
+        try {
+            storeFileWithFileName(file.getBytes(), fileName);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return fileName;
+    }
+
+    public static Boolean DeleteFile(String fileName) {
+        if (ObjectUtils.isEmpty(fileName)) {
+            return false;
+        }
+        return FileSystemUtils.deleteRecursively(new File(FILE_PATH + "/" + fileName));
+    }
+    /**
+     * 瀛樺偍鏂囦欢鍑芥暟
+     * @param content 鏂囦欢浜岃繘鍒舵祦
+     * @param fileName 鏂囦欢鍚嶇О
+     */
+    private static void storeFileWithFileName(byte[] content, String fileName) {
+        // 瀛樺偍璺緞
+        String path = FILE_PATH + File.separatorChar;
+        // 鐩綍涓嶅瓨鍦ㄥ垯鍒涘缓
+        File file = new File(path);
+        if (!file.exists()) {
+            file.mkdirs();
+        }
+        // 寮�濮嬪瓨鍌�
+        try (FileOutputStream os = new FileOutputStream(path + fileName);
+             ByteArrayInputStream is = new ByteArrayInputStream(content)) {
+             IoUtils.copy(is, os);
+        } catch (IOException e) {
+            throw new RuntimeException("鏂囦欢瀛樺偍鏍煎紡寮傚父");
+        }
+    }
+
+    /**
+     * 鍒ゆ柇鏂囦欢鏄惁琚厑璁镐笂浼�
+     *
+     * @param fileName 鏂囦欢鍚�
+     * @return 鍏佽true, 鍚﹀垯false
+     */
+    private static boolean isFileAllowed(String fileName) {
+        // 鑾峰彇鍚庣紑鍚�
+        String suffixName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
+        for (String allow : ALLOWED) {
+            if (allow.equals(suffixName)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 淇濆瓨鏂囦欢鍒皐ord鏂囦欢澶归噷
+     * @param file
+     * @return
+     */
+    public static String uploadWordFile(MultipartFile file) {
+        String urlString;
+        String pathName;
+        String path;
+        try {
+            String contentType = file.getContentType();
+            if (contentType != null && contentType.startsWith("image/")) {
+                // 鏄浘鐗�
+                path = FILE_PATH;
+            } else {
+                // 鏄枃浠�
+                path = WORD_URL_PATH;
+            }
+            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));
+            return pathName;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+
+
+    /**
+     * 鑾峰彇闅忔満鏁板瓧
+     * @param n 浣嶆暟
+     * @return 杩斿洖闅忔満鍊�
+     */
+    public static String getNumber(int n) {
+        char[] chars = "1234567890".toCharArray();
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < n; i++) {
+            char c = chars[new Random().nextInt(chars.length)];
+            sb.append(c);
+        }
+        return sb.toString();
+    }
+}

--
Gitblit v1.9.3