From c89b4a74d3d770da0ccdd679e5942b1e9028776b Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 24 二月 2025 13:35:21 +0800
Subject: [PATCH] 服务和供应品采购/供应商管理/设施和环境条件代码迁移

---
 cnas-require/src/main/java/com/ruoyi/require/dto/ForeignRegisterDto.java                              |   32 
 cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumRecordDto.java                              |   27 
 cnas-require/src/main/java/com/ruoyi/require/mapper/FePowerStableMapper.java                          |   34 
 cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumRecord.java                                |   67 +
 cnas-require/src/main/java/com/ruoyi/require/service/FeLightningProtectionService.java                |   21 
 cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesListMapper.java                |   30 
 cnas-require/src/main/java/com/ruoyi/require/pojo/FeIlluminationDetectionArea.java                    |   59 
 cnas-require/src/main/java/com/ruoyi/require/pojo/FeLightningProtection.java                          |   58 
 cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableAddDto.java                             |   15 
 cnas-require/src/main/java/com/ruoyi/require/service/FeTempHumRecordService.java                      |   20 
 cnas-require/src/main/java/com/ruoyi/require/pojo/ForeignRegister.java                                |   72 +
 cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java                        |   20 
 cnas-require/src/main/java/com/ruoyi/require/pojo/FeIllumination.java                                 |   62 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/FeIlluminationServiceImpl.java              |  123 +
 cnas-require/src/main/java/com/ruoyi/require/pojo/InternalWastesDetail.java                           |   66 +
 cnas-require/src/main/java/com/ruoyi/require/service/FeIlluminationDetectionAreaService.java          |   16 
 cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java        |   93 +
 cnas-require/src/main/resources/mapper/ProcurementSuppliesListMapper.xml                              |   71 +
 cnas-require/src/main/java/com/ruoyi/require/service/impl/SupplierManagementServiceImpl.java          |   91 +
 cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationDto.java                               |   21 
 cnas-require/src/main/java/com/ruoyi/require/service/FeIlluminationService.java                       |   29 
 cnas-require/src/main/java/com/ruoyi/require/mapper/FeMeasuredQuantityMapper.java                     |   16 
 cnas-require/src/main/java/com/ruoyi/require/service/FeMeasuredQuantityService.java                   |   16 
 cnas-require/src/main/java/com/ruoyi/require/service/SupplierManagementService.java                   |   32 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java               |  141 ++
 cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesListDto.java                      |   15 
 cnas-require/src/main/java/com/ruoyi/require/mapper/InternalWastesDetailMapper.java                   |   16 
 cnas-require/src/main/java/com/ruoyi/require/dto/InternalWastesDto.java                               |   26 
 cnas-require/src/main/java/com/ruoyi/require/dto/SupplierManagementDto.java                           |   67 +
 cnas-require/src/main/java/com/ruoyi/require/controller/FePowerStableController.java                  |   99 +
 cnas-require/src/main/java/com/ruoyi/require/controller/ForeignRegisterController.java                |   97 +
 cnas-require/src/main/java/com/ruoyi/require/controller/FeIlluminationController.java                 |   88 +
 cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesContentsMapper.java            |    9 
 cnas-require/src/main/java/com/ruoyi/require/pojo/InternalWastes.java                                 |   44 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/ForeignRegisterServiceImpl.java             |  101 +
 cnas-require/src/main/java/com/ruoyi/require/mapper/ForeignRegisterMapper.java                        |   39 
 cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableExportDto.java                          |   30 
 cnas-require/src/main/java/com/ruoyi/require/service/ForeignRegisterService.java                      |   34 
 cnas-require/src/main/java/com/ruoyi/require/controller/FeTempHumDateController.java                  |  103 +
 cnas-require/src/main/java/com/ruoyi/require/controller/SupplierManagementController.java             |   91 +
 cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableDto.java                                |   22 
 cnas-require/src/main/java/com/ruoyi/require/controller/FeLightningProtectionController.java          |   80 +
 cnas-require/src/main/java/com/ruoyi/require/mapper/InternalWastesMapper.java                         |   31 
 cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumDateDto.java                                |   12 
 cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesContents.java                    |   42 
 cnas-require/src/main/java/com/ruoyi/require/pojo/FeMeasuredQuantity.java                             |   54 
 cnas-require/src/main/java/com/ruoyi/require/pojo/SupplierManagement.java                             |  110 +
 cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesServiceImpl.java              |  170 ++
 cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java             |   27 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesContentsServiceImpl.java |   91 +
 cnas-require/src/main/java/com/ruoyi/require/controller/InternalWastesController.java                 |   97 +
 cnas-require/src/main/java/com/ruoyi/require/mapper/FeIlluminationDetectionAreaMapper.java            |   16 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesListServiceImpl.java     |  130 ++
 cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationExportDto.java                         |   25 
 cnas-require/src/main/java/com/ruoyi/require/pojo/FePowerStable.java                                  |   64 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesDetailServiceImpl.java        |   20 
 cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesListService.java              |   28 
 cnas-require/src/main/java/com/ruoyi/require/mapper/SupplierManagementMapper.java                     |   31 
 cnas-require/src/main/java/com/ruoyi/require/service/FeTempHumDateService.java                        |   30 
 cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumDateMapper.java                          |   30 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/FeIlluminationDetectionAreaServiceImpl.java |   20 
 cnas-require/src/main/java/com/ruoyi/require/service/InternalWastesService.java                       |   63 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/FeMeasuredQuantityServiceImpl.java          |   20 
 cnas-require/src/main/java/com/ruoyi/require/mapper/FeLightningProtectionMapper.java                  |   21 
 cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesList.java                        |  101 +
 cnas-require/src/main/resources/mapper/SupplierManagementMapper.xml                                   |   81 +
 cnas-require/src/main/java/com/ruoyi/require/service/impl/FePowerStableServiceImpl.java               |  123 +
 cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesContentsService.java          |   16 
 cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationAddDto.java                            |   15 
 cnas-require/src/main/java/com/ruoyi/require/service/InternalWastesDetailService.java                 |   16 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/FeLightningProtectionServiceImpl.java       |   27 
 inspect-server/src/main/java/com/ruoyi/inspect/dto/ProcurementSuppliesListEDto.java                   |   54 
 cnas-require/src/main/java/com/ruoyi/require/mapper/FeIlluminationMapper.java                         |   28 
 cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumDate.java                                  |   56 
 cnas-require/src/main/java/com/ruoyi/require/service/FePowerStableService.java                        |   33 
 75 files changed, 3,875 insertions(+), 0 deletions(-)

diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/FeIlluminationController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/FeIlluminationController.java
new file mode 100644
index 0000000..a96d5a4
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/FeIlluminationController.java
@@ -0,0 +1,88 @@
+package com.ruoyi.require.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.require.dto.FeIlluminationAddDto;
+import com.ruoyi.require.dto.FeIlluminationDto;
+import com.ruoyi.require.pojo.FeIllumination;
+import com.ruoyi.require.pojo.FeIlluminationDetectionArea;
+import com.ruoyi.require.service.FeIlluminationDetectionAreaService;
+import com.ruoyi.require.service.FeIlluminationService;
+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")
+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);
+        if (CollectionUtils.isNotEmpty(feIlluminationAddDto.getIlluminationDetectionAreaList())) {
+            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/require/controller/FeLightningProtectionController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/FeLightningProtectionController.java
new file mode 100644
index 0000000..48c0369
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/FeLightningProtectionController.java
@@ -0,0 +1,80 @@
+package com.ruoyi.require.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.require.excel.FeLightningProtectionExcel;
+import com.ruoyi.require.pojo.FeLightningProtection;
+import com.ruoyi.require.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/require/controller/FePowerStableController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/FePowerStableController.java
new file mode 100644
index 0000000..215c48f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/FePowerStableController.java
@@ -0,0 +1,99 @@
+package com.ruoyi.require.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.require.dto.FePowerStableAddDto;
+import com.ruoyi.require.dto.FePowerStableDto;
+import com.ruoyi.require.pojo.FeMeasuredQuantity;
+import com.ruoyi.require.pojo.FePowerStable;
+import com.ruoyi.require.service.FeMeasuredQuantityService;
+import com.ruoyi.require.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);
+        if (CollectionUtils.isNotEmpty(fePowerStableAddDto.getFeMeasuredQuantityList())) {
+            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/require/controller/FeTempHumDateController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/FeTempHumDateController.java
new file mode 100644
index 0000000..008dbd5
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/FeTempHumDateController.java
@@ -0,0 +1,103 @@
+package com.ruoyi.require.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.require.dto.FeTempHumDateDto;
+import com.ruoyi.require.dto.FeTempHumRecordDto;
+import com.ruoyi.require.pojo.FeTempHumDate;
+import com.ruoyi.require.pojo.FeTempHumRecord;
+import com.ruoyi.require.service.FeTempHumDateService;
+import com.ruoyi.require.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
+ */
+@Api(tags = "娓╂箍搴﹁褰�")
+@RestController
+@RequestMapping("/feTempHumDate")
+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, FeTempHumDateDto feTempHumDateDto) {
+        IPage<FeTempHumDateDto> page1 = feTempHumDateService.getFeTempHumDate(page, feTempHumDateDto);
+        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);
+    }
+
+    /**
+     * 娓╂箍搴︾‘璁�
+     * @param feTempHumDate
+     * @return
+     */
+    @ApiOperation("娓╂箍搴︾‘璁�")
+    @PostMapping("affirmFeTempHumDate")
+    public Result<?> affirmFeTempHumDate(@RequestBody FeTempHumDate feTempHumDate) {
+        feTempHumDateService.affirmFeTempHumDate(feTempHumDate);
+        return Result.success();
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/ForeignRegisterController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/ForeignRegisterController.java
new file mode 100644
index 0000000..244e9fd
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/ForeignRegisterController.java
@@ -0,0 +1,97 @@
+package com.ruoyi.require.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.JackSonUtil;
+import com.ruoyi.require.dto.ForeignRegisterDto;
+import com.ruoyi.require.pojo.ForeignRegister;
+import com.ruoyi.require.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;
+import java.util.Map;
+
+/**
+ * <p>
+ * 澶栨潵浜哄憳鐧昏 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 07:17:35
+ */
+@Api(tags = "澶栨潵浜哄憳鐧昏")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/foreignRegister")
+public class ForeignRegisterController {
+
+    private ForeignRegisterService foreignRegisterService;
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ
+     * @param data
+     * @return
+     */
+    @ApiOperation(value = "澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ")
+    @PostMapping("/pageForeignRegister")
+    public Result<IPage<ForeignRegisterDto>> pageForeignRegister(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        ForeignRegisterDto foreignRegister = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), ForeignRegisterDto.class);
+        return Result.success(foreignRegisterService.pageForeignRegister(page, foreignRegister));
+    }
+
+    /**
+     * 澶栨潵浜哄憳鐧昏鏂板
+     * @return
+     */
+    @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 = "澶栨潵浜哄憳鐧昏鍒犻櫎")
+    @GetMapping("/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 = "瀵煎嚭澶栨潵浜哄憳鐧昏")
+    @PostMapping("/exportForeignRegister")
+    public void exportForeignRegister(@RequestBody ForeignRegisterDto foreignRegister, HttpServletResponse response){
+        foreignRegisterService.exportForeignRegister(foreignRegister, response);
+    }
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/InternalWastesController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/InternalWastesController.java
new file mode 100644
index 0000000..e507069
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/InternalWastesController.java
@@ -0,0 +1,97 @@
+package com.ruoyi.require.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.JackSonUtil;
+import com.ruoyi.require.dto.InternalWastesDto;
+import com.ruoyi.require.pojo.InternalWastes;
+import com.ruoyi.require.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;
+import java.util.Map;
+
+/**
+ * <p>
+ * 瀹夊叏鍐呭姟涓夊簾鐧昏 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-19 06:39:27
+ */
+@Api(tags = "瀹夊叏鍐呭姟涓夊簾鐧昏")
+@AllArgsConstructor
+@RestController
+@RequestMapping("/internalWastes")
+public class InternalWastesController {
+
+    private InternalWastesService internalWastesService;
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鍒嗛〉鏌ヨ
+     * @param data
+     * @return
+     */
+    @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊鍒嗛〉鏌ヨ")
+    @PostMapping("/pageInternalWastes")
+    public Result<IPage<InternalWastesDto>> pageInternalWastes(@RequestBody Map<String, Object> data) throws Exception {
+        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
+        InternalWastes internalWastes = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), InternalWastes.class);
+        return Result.success(internalWastesService.pageInternalWastes(page, internalWastes));
+    }
+
+    /**
+     * 瀹夊叏鍐呭姟涓夊簾澶勭悊鏂板
+     * @return
+     */
+    @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 = "瀹夊叏鍐呭姟涓夊簾澶勭悊鍒犻櫎")
+    @GetMapping("/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/require/controller/ProcurementSuppliesListController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java
new file mode 100644
index 0000000..27b5729
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java
@@ -0,0 +1,93 @@
+package com.ruoyi.require.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.require.dto.ProcurementSuppliesListDto;
+import com.ruoyi.require.mapper.ProcurementSuppliesListMapper;
+import com.ruoyi.require.mapper.SupplierManagementMapper;
+import com.ruoyi.require.pojo.ProcurementSuppliesList;
+import com.ruoyi.require.pojo.SupplierManagement;
+import com.ruoyi.require.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.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;
+
+    @Autowired
+    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 = "鍒犻櫎鑰楁潗")
+    @PostMapping("/deleteProcurementSuppliesList")
+    public Result deleteProcurementSuppliesList(@RequestBody ProcurementSuppliesListDto dto) {
+        return Result.success(listMapper.deleteById(dto.getId()));
+    }
+
+    @ApiOperation(value = "瀵煎嚭鑰楁潗鍒楄〃")
+    @PostMapping("/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/require/controller/SupplierManagementController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/SupplierManagementController.java
new file mode 100644
index 0000000..495dfbb
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/SupplierManagementController.java
@@ -0,0 +1,91 @@
+package com.ruoyi.require.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.require.pojo.SupplierManagement;
+import com.ruoyi.require.service.ProcurementSuppliesContentsService;
+import com.ruoyi.require.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) {
+        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("鍒犻櫎渚涘簲鍟�")
+    @PostMapping("/delSupplierManagement")
+    public Result delSupplierManagement(Integer supplierManagementId) {
+        return Result.success(supplierManagementService.removeById(supplierManagementId));
+    }
+
+    @ApiOperation("瀵煎嚭渚涘簲鍟�")
+    @PostMapping("/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/require/dto/FeIlluminationAddDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationAddDto.java
new file mode 100644
index 0000000..0958d04
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationAddDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.pojo.FeIllumination;
+import com.ruoyi.require.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/require/dto/FeIlluminationDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationDto.java
new file mode 100644
index 0000000..2ee004c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationDto.java
@@ -0,0 +1,21 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.pojo.FeIllumination;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class FeIlluminationDto extends FeIllumination {
+    @ApiModelProperty("妫�娴嬭��")
+    private String checkerUser;
+
+    @ApiModelProperty("鏍告煡浜�")
+    private String testerUser;
+
+    @ApiModelProperty("璁惧鍚嶇О")
+    private String deviceName;
+
+    @ApiModelProperty("璁惧缂栧彿")
+    private String managementNumber;
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationExportDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationExportDto.java
new file mode 100644
index 0000000..62ce2ee
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/FeIlluminationExportDto.java
@@ -0,0 +1,25 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.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/require/dto/FePowerStableAddDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableAddDto.java
new file mode 100644
index 0000000..a6707ea
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableAddDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.pojo.FeMeasuredQuantity;
+import com.ruoyi.require.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/require/dto/FePowerStableDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableDto.java
new file mode 100644
index 0000000..9711760
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableDto.java
@@ -0,0 +1,22 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.pojo.FePowerStable;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class FePowerStableDto extends FePowerStable {
+
+    @ApiModelProperty("妫�娴嬭��")
+    private String checkerUser;
+
+    @ApiModelProperty("鏍告煡浜�")
+    private String testerUser;
+
+    @ApiModelProperty("璁惧鍚嶇О")
+    private String deviceName;
+
+    @ApiModelProperty("璁惧缂栧彿")
+    private String managementNumber;
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableExportDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableExportDto.java
new file mode 100644
index 0000000..52a0203
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/FePowerStableExportDto.java
@@ -0,0 +1,30 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.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/require/dto/FeTempHumDateDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumDateDto.java
new file mode 100644
index 0000000..0ba415c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumDateDto.java
@@ -0,0 +1,12 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.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/require/dto/FeTempHumRecordDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumRecordDto.java
new file mode 100644
index 0000000..0791d8d
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumRecordDto.java
@@ -0,0 +1,27 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.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;
+
+    @ApiModelProperty("妫�娴嬪ぉ")
+    private Integer monthDay;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/dto/ForeignRegisterDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/ForeignRegisterDto.java
new file mode 100644
index 0000000..0fb9861
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/ForeignRegisterDto.java
@@ -0,0 +1,32 @@
+package com.ruoyi.require.dto;
+
+import com.deepoove.poi.data.PictureRenderData;
+import com.ruoyi.require.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/require/dto/InternalWastesDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/InternalWastesDto.java
new file mode 100644
index 0000000..07aaec5
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/InternalWastesDto.java
@@ -0,0 +1,26 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.pojo.InternalWastes;
+import com.ruoyi.require.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;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    private String createUserName;
+
+    @ApiModelProperty("淇敼浜�")
+    private String updateUserName;
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesListDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesListDto.java
new file mode 100644
index 0000000..1e70361
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesListDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.require.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.require.pojo.ProcurementSuppliesList;
+import lombok.Data;
+
+@Data
+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/require/dto/SupplierManagementDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/SupplierManagementDto.java
new file mode 100644
index 0000000..fb0475a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/SupplierManagementDto.java
@@ -0,0 +1,67 @@
+package com.ruoyi.require.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/require/mapper/FeIlluminationDetectionAreaMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeIlluminationDetectionAreaMapper.java
new file mode 100644
index 0000000..8c03dbc
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeIlluminationDetectionAreaMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.require.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/require/mapper/FeIlluminationMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeIlluminationMapper.java
new file mode 100644
index 0000000..8e1dfa1
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeIlluminationMapper.java
@@ -0,0 +1,28 @@
+package com.ruoyi.require.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.require.dto.FeIlluminationDto;
+import com.ruoyi.require.dto.FeIlluminationExportDto;
+import com.ruoyi.require.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/require/mapper/FeLightningProtectionMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeLightningProtectionMapper.java
new file mode 100644
index 0000000..f32393a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeLightningProtectionMapper.java
@@ -0,0 +1,21 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.require.excel.FeLightningProtectionExcel;
+import com.ruoyi.require.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/require/mapper/FeMeasuredQuantityMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeMeasuredQuantityMapper.java
new file mode 100644
index 0000000..9b25b5e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeMeasuredQuantityMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.require.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/require/mapper/FePowerStableMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FePowerStableMapper.java
new file mode 100644
index 0000000..95ec45e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FePowerStableMapper.java
@@ -0,0 +1,34 @@
+package com.ruoyi.require.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.require.dto.FePowerStableDto;
+import com.ruoyi.require.dto.FePowerStableExportDto;
+import com.ruoyi.require.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/require/mapper/FeTempHumDateMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumDateMapper.java
new file mode 100644
index 0000000..74e7017
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumDateMapper.java
@@ -0,0 +1,30 @@
+package com.ruoyi.require.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.require.dto.FeTempHumDateDto;
+import com.ruoyi.require.pojo.FeTempHumDate;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-09 11:02:18
+ */
+public interface FeTempHumDateMapper extends BaseMapper<FeTempHumDate> {
+
+    IPage<FeTempHumDateDto> getFeTempHumDate(Page page, @Param("ew") QueryWrapper<FeTempHumDateDto> ew);
+
+    /**
+     * 鏌ヨ杩欎釜鏈堟槸鍚︽湁璇ュ疄楠屽鐨勪换鍔�
+     * @param laboratory 瀹為獙瀹�
+     * @param formattedDate 褰撳墠鏈堜唤
+     * @return 杩斿洖鏉℃暟
+     */
+    int selectFeTempHumDateIncludeFormattedDate(@Param("laboratory") String laboratory, @Param("formattedDate") String formattedDate);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java
new file mode 100644
index 0000000..8e0e9ab
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.require.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.require.dto.FeTempHumRecordDto;
+import com.ruoyi.require.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/require/mapper/ForeignRegisterMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/ForeignRegisterMapper.java
new file mode 100644
index 0000000..d4d21ba
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/ForeignRegisterMapper.java
@@ -0,0 +1,39 @@
+package com.ruoyi.require.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.require.dto.ForeignRegisterDto;
+import com.ruoyi.require.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 foreignRegister
+     * @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/require/mapper/InternalWastesDetailMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/InternalWastesDetailMapper.java
new file mode 100644
index 0000000..39004eb
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/InternalWastesDetailMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.require.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/require/mapper/InternalWastesMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/InternalWastesMapper.java
new file mode 100644
index 0000000..75215d3
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/InternalWastesMapper.java
@@ -0,0 +1,31 @@
+package com.ruoyi.require.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.require.dto.InternalWastesDto;
+import com.ruoyi.require.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/require/mapper/ProcurementSuppliesContentsMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesContentsMapper.java
new file mode 100644
index 0000000..6f41af3
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesContentsMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.require.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/require/mapper/ProcurementSuppliesListMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesListMapper.java
new file mode 100644
index 0000000..e5cfb35
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesListMapper.java
@@ -0,0 +1,30 @@
+package com.ruoyi.require.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.require.dto.ProcurementSuppliesListDto;
+import com.ruoyi.require.pojo.ProcurementSuppliesList;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鏈嶅姟涓庝緵搴斿晢 鑰楁潗鍒楄〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 04:04:32
+ */
+@Mapper
+public interface ProcurementSuppliesListMapper extends BaseMapper<ProcurementSuppliesList> {
+    IPage<ProcurementSuppliesList> selectProcurementSuppliesList(Page page, @Param("ew") 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/require/mapper/SupplierManagementMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/SupplierManagementMapper.java
new file mode 100644
index 0000000..48abcbc
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/SupplierManagementMapper.java
@@ -0,0 +1,31 @@
+package com.ruoyi.require.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.require.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/require/pojo/FeIllumination.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeIllumination.java
new file mode 100644
index 0000000..bc63720
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeIllumination.java
@@ -0,0 +1,62 @@
+package com.ruoyi.require.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-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 LocalDate testDate;
+
+    @ApiModelProperty("鏍″噯鏃ユ湡")
+    private LocalDateTime lastCalibrationDate;
+
+    @ApiModelProperty("涓嬫鏍″噯鏃ユ湡")
+    private LocalDateTime nextCalibrationDate;
+
+    @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/require/pojo/FeIlluminationDetectionArea.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeIlluminationDetectionArea.java
new file mode 100644
index 0000000..5e8a99e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeIlluminationDetectionArea.java
@@ -0,0 +1,59 @@
+package com.ruoyi.require.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/require/pojo/FeLightningProtection.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeLightningProtection.java
new file mode 100644
index 0000000..c6068f0
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeLightningProtection.java
@@ -0,0 +1,58 @@
+package com.ruoyi.require.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/require/pojo/FeMeasuredQuantity.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeMeasuredQuantity.java
new file mode 100644
index 0000000..1fdd836
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeMeasuredQuantity.java
@@ -0,0 +1,54 @@
+package com.ruoyi.require.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/require/pojo/FePowerStable.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FePowerStable.java
new file mode 100644
index 0000000..d7238e0
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FePowerStable.java
@@ -0,0 +1,64 @@
+package com.ruoyi.require.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-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 LocalDate testDate;
+
+    @ApiModelProperty("璁惧id")
+    private Integer deviceId;
+
+    @ApiModelProperty("缁撹")
+    private String conclusion;
+
+    @ApiModelProperty("妫�娴嬭�卛d")
+    private Integer testerId;
+
+    @ApiModelProperty("鏍告煡浜篿d")
+    private Integer checkerId;
+
+    @ApiModelProperty("鏍″噯鏃ユ湡")
+    private LocalDateTime lastCalibrationDate;
+
+    @ApiModelProperty("涓嬫鏍″噯鏃ユ湡")
+    private LocalDateTime nextCalibrationDate;
+
+    @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/require/pojo/FeTempHumDate.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumDate.java
new file mode 100644
index 0000000..f8fb4a3
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumDate.java
@@ -0,0 +1,56 @@
+package com.ruoyi.require.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-09 11:02:18
+ */
+@Getter
+@Setter
+@TableName("cnas_fe_temp_hum_date")
+@ApiModel(value = "FeTempHumDate瀵硅薄", description = "璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖�")
+public class FeTempHumDate {
+
+    @ApiModelProperty("涓婚敭ID")
+    @TableId(value = "date_id", type = IdType.AUTO)
+    private Integer dateId;
+
+    @ApiModelProperty("鏈堝害鏃堕棿")
+    private String monthDate;
+
+    @ApiModelProperty("璇曢獙鍖哄煙鍚嶇О")
+    private String testAreaName;
+
+    @ApiModelProperty("澧炶ˉ淇℃伅")
+    private String subjoin;
+
+    @ApiModelProperty("鏄惁纭")
+    private String isAffirm;
+
+    @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/require/pojo/FeTempHumRecord.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumRecord.java
new file mode 100644
index 0000000..8e0910f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumRecord.java
@@ -0,0 +1,67 @@
+package com.ruoyi.require.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.LocalDate;
+import java.time.LocalTime;
+
+/**
+ * <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 LocalDate recordDate;
+
+    @ApiModelProperty("涓婂崍-鏃堕棿")
+    private LocalTime morningTestTime;
+
+    @ApiModelProperty("涓婂崍娓╁害")
+    private String morningTemp;
+
+    @ApiModelProperty("涓婂崍婀垮害")
+    private String morningHum;
+
+    @ApiModelProperty("涓婂崍璁板綍鍛�")
+    private Integer morningRecorderId;
+
+    @ApiModelProperty("涓嬪崍鏃堕棿")
+    private LocalTime 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/require/pojo/ForeignRegister.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/ForeignRegister.java
new file mode 100644
index 0000000..ba7eaf4
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/ForeignRegister.java
@@ -0,0 +1,72 @@
+package com.ruoyi.require.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/require/pojo/InternalWastes.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/InternalWastes.java
new file mode 100644
index 0000000..a56ed4e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/InternalWastes.java
@@ -0,0 +1,44 @@
+package com.ruoyi.require.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/require/pojo/InternalWastesDetail.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/InternalWastesDetail.java
new file mode 100644
index 0000000..ac9ce0c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/InternalWastesDetail.java
@@ -0,0 +1,66 @@
+package com.ruoyi.require.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/require/pojo/ProcurementSuppliesContents.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesContents.java
new file mode 100644
index 0000000..0d5649c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesContents.java
@@ -0,0 +1,42 @@
+package com.ruoyi.require.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/require/pojo/ProcurementSuppliesList.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesList.java
new file mode 100644
index 0000000..eda754b
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesList.java
@@ -0,0 +1,101 @@
+package com.ruoyi.require.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/require/pojo/SupplierManagement.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/SupplierManagement.java
new file mode 100644
index 0000000..d105000
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/SupplierManagement.java
@@ -0,0 +1,110 @@
+package com.ruoyi.require.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/require/service/FeIlluminationDetectionAreaService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FeIlluminationDetectionAreaService.java
new file mode 100644
index 0000000..c58efc1
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FeIlluminationDetectionAreaService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.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/require/service/FeIlluminationService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FeIlluminationService.java
new file mode 100644
index 0000000..0fc5100
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FeIlluminationService.java
@@ -0,0 +1,29 @@
+package com.ruoyi.require.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.require.dto.FeIlluminationDto;
+import com.ruoyi.require.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/require/service/FeLightningProtectionService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FeLightningProtectionService.java
new file mode 100644
index 0000000..effd73c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FeLightningProtectionService.java
@@ -0,0 +1,21 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.excel.FeLightningProtectionExcel;
+import com.ruoyi.require.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/require/service/FeMeasuredQuantityService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FeMeasuredQuantityService.java
new file mode 100644
index 0000000..b4f4832
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FeMeasuredQuantityService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.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/require/service/FePowerStableService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FePowerStableService.java
new file mode 100644
index 0000000..6ad3b0f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FePowerStableService.java
@@ -0,0 +1,33 @@
+package com.ruoyi.require.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.require.dto.FePowerStableDto;
+import com.ruoyi.require.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/require/service/FeTempHumDateService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FeTempHumDateService.java
new file mode 100644
index 0000000..19572cf
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FeTempHumDateService.java
@@ -0,0 +1,30 @@
+package com.ruoyi.require.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.require.dto.FeTempHumDateDto;
+import com.ruoyi.require.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, FeTempHumDateDto feTempHumDateDto);
+
+    void exportTemperatureAndHumidityRecords(Integer dateId, HttpServletResponse response);
+
+    /**
+     * 娓╂箍搴︾‘璁�
+     * @param feTempHumDate
+     */
+    void affirmFeTempHumDate(FeTempHumDate feTempHumDate);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/FeTempHumRecordService.java b/cnas-require/src/main/java/com/ruoyi/require/service/FeTempHumRecordService.java
new file mode 100644
index 0000000..3e6f45e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/FeTempHumRecordService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.require.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.require.dto.FeTempHumRecordDto;
+import com.ruoyi.require.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/require/service/ForeignRegisterService.java b/cnas-require/src/main/java/com/ruoyi/require/service/ForeignRegisterService.java
new file mode 100644
index 0000000..1034ac5
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/ForeignRegisterService.java
@@ -0,0 +1,34 @@
+package com.ruoyi.require.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.require.dto.ForeignRegisterDto;
+import com.ruoyi.require.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/require/service/InternalWastesDetailService.java b/cnas-require/src/main/java/com/ruoyi/require/service/InternalWastesDetailService.java
new file mode 100644
index 0000000..17805ce
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/InternalWastesDetailService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.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/require/service/InternalWastesService.java b/cnas-require/src/main/java/com/ruoyi/require/service/InternalWastesService.java
new file mode 100644
index 0000000..06ad0e8
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/InternalWastesService.java
@@ -0,0 +1,63 @@
+package com.ruoyi.require.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.require.dto.InternalWastesDto;
+import com.ruoyi.require.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/require/service/ProcurementSuppliesContentsService.java b/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesContentsService.java
new file mode 100644
index 0000000..930c1c5
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesContentsService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.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/require/service/ProcurementSuppliesListService.java b/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesListService.java
new file mode 100644
index 0000000..d604d6f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesListService.java
@@ -0,0 +1,28 @@
+package com.ruoyi.require.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.require.dto.ProcurementSuppliesListDto;
+import com.ruoyi.require.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/require/service/SupplierManagementService.java b/cnas-require/src/main/java/com/ruoyi/require/service/SupplierManagementService.java
new file mode 100644
index 0000000..e4ebd7f
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/SupplierManagementService.java
@@ -0,0 +1,32 @@
+package com.ruoyi.require.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.require.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/require/service/impl/FeIlluminationDetectionAreaServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeIlluminationDetectionAreaServiceImpl.java
new file mode 100644
index 0000000..739d3b5
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeIlluminationDetectionAreaServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.require.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.require.mapper.FeIlluminationDetectionAreaMapper;
+import com.ruoyi.require.pojo.FeIlluminationDetectionArea;
+import com.ruoyi.require.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/require/service/impl/FeIlluminationServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeIlluminationServiceImpl.java
new file mode 100644
index 0000000..85ba721
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeIlluminationServiceImpl.java
@@ -0,0 +1,123 @@
+package com.ruoyi.require.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.require.dto.FeIlluminationDto;
+import com.ruoyi.require.dto.FeIlluminationExportDto;
+import com.ruoyi.require.mapper.FeIlluminationDetectionAreaMapper;
+import com.ruoyi.require.mapper.FeIlluminationMapper;
+import com.ruoyi.require.pojo.FeIllumination;
+import com.ruoyi.require.pojo.FeIlluminationDetectionArea;
+import com.ruoyi.require.service.FeIlluminationService;
+import com.ruoyi.system.mapper.UserMapper;
+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.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-鐓у害璁板綍琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-07 04:15:57
+ */
+@Service
+public class FeIlluminationServiceImpl extends ServiceImpl<FeIlluminationMapper, FeIllumination> implements FeIlluminationService {
+
+    @Resource
+    private FeIlluminationDetectionAreaMapper feIlluminationDetectionAreaMapper;
+    @Resource
+    private UserMapper userMapper;
+
+    @Value("${file.path}")
+    private String imgUrl;
+
+
+    @Override
+    public IPage<FeIlluminationDto> getFeLightningProtection(Page page) {
+        return baseMapper.getFeLightningProtection(page);
+    }
+
+    /**
+     * 瀵煎嚭鐓у害璁板綍
+     * @param intensityIlluminationId
+     * @param response
+     */
+    @Override
+    public void exportFeIllumination(Integer intensityIlluminationId, HttpServletResponse response) {
+        FeIlluminationExportDto illuminationExportDto = baseMapper.selectFeIllumination(intensityIlluminationId);
+        // 妫�娴嬩汉
+        String testerUrl = null;
+        if (illuminationExportDto.getTesterId() != null) {
+            testerUrl = userMapper.selectById(illuminationExportDto.getTesterId()).getSignatureUrl();
+            if (StringUtils.isBlank(testerUrl)) {
+                throw new ErrorException("鎵句笉鍒版娴嬩汉鐨勭鍚�");
+            }
+        }
+
+        // 鏍告煡浜�
+        String checkerUrl = null;
+        if (illuminationExportDto.getCheckerId() != null) {
+            checkerUrl = userMapper.selectById(illuminationExportDto.getCheckerId()).getSignatureUrl();
+            if (StringUtils.isBlank(checkerUrl)) {
+                throw new ErrorException("鎵句笉鍒版牳鏌ヤ汉鐨勭鍚�");
+            }
+        }
+
+        // 鏌ヨ璇︽儏
+        List<FeIlluminationDetectionArea> feIlluminationDetectionAreas = feIlluminationDetectionAreaMapper.selectList(Wrappers.<FeIlluminationDetectionArea>lambdaQuery()
+                .eq(FeIlluminationDetectionArea::getIntensityIlluminationId, intensityIlluminationId));
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/illumination.docx");
+        Configure configure = Configure.builder()
+                .bind("detectionAreaList", new HackLoopTableRenderPolicy())
+                .build();
+        String finalTesterUrl = testerUrl;
+        String finalCheckerUrl = checkerUrl;
+
+        // 鍒ゆ柇妫�娴嬫棩鏈熸槸鍚︿负绌�
+        LocalDateTime finalLocalDateTime = illuminationExportDto.getTestDate() == null ? null : illuminationExportDto.getTestDate().atStartOfDay();
+        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/require/service/impl/FeLightningProtectionServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeLightningProtectionServiceImpl.java
new file mode 100644
index 0000000..6eeed39
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeLightningProtectionServiceImpl.java
@@ -0,0 +1,27 @@
+package com.ruoyi.require.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.require.excel.FeLightningProtectionExcel;
+import com.ruoyi.require.mapper.FeLightningProtectionMapper;
+import com.ruoyi.require.pojo.FeLightningProtection;
+import com.ruoyi.require.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/require/service/impl/FeMeasuredQuantityServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeMeasuredQuantityServiceImpl.java
new file mode 100644
index 0000000..6dd7936
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeMeasuredQuantityServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.require.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.require.mapper.FeMeasuredQuantityMapper;
+import com.ruoyi.require.pojo.FeMeasuredQuantity;
+import com.ruoyi.require.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/require/service/impl/FePowerStableServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FePowerStableServiceImpl.java
new file mode 100644
index 0000000..d5f2174
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FePowerStableServiceImpl.java
@@ -0,0 +1,123 @@
+package com.ruoyi.require.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.require.dto.FePowerStableDto;
+import com.ruoyi.require.dto.FePowerStableExportDto;
+import com.ruoyi.require.mapper.FeMeasuredQuantityMapper;
+import com.ruoyi.require.mapper.FePowerStableMapper;
+import com.ruoyi.require.pojo.FeMeasuredQuantity;
+import com.ruoyi.require.pojo.FePowerStable;
+import com.ruoyi.require.service.FePowerStableService;
+import com.ruoyi.system.mapper.UserMapper;
+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/require/service/impl/FeTempHumDateServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java
new file mode 100644
index 0000000..61ee538
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java
@@ -0,0 +1,141 @@
+package com.ruoyi.require.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.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.common.utils.SecurityUtils;
+import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.require.dto.FeTempHumDateDto;
+import com.ruoyi.require.dto.FeTempHumRecordDto;
+import com.ruoyi.require.mapper.FeTempHumDateMapper;
+import com.ruoyi.require.pojo.FeTempHumDate;
+import com.ruoyi.require.pojo.FeTempHumRecord;
+import com.ruoyi.require.service.FeTempHumDateService;
+import com.ruoyi.require.service.FeTempHumRecordService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-09 11:02:18
+ */
+@Service
+public class FeTempHumDateServiceImpl extends ServiceImpl<FeTempHumDateMapper, FeTempHumDate> implements FeTempHumDateService {
+
+    @Resource
+    private FeTempHumRecordService feTempHumRecordService;
+
+    @Override
+    public IPage<FeTempHumDateDto> getFeTempHumDate(Page page, FeTempHumDateDto feTempHumDateDto) {
+        return baseMapper.getFeTempHumDate(page, QueryWrappers.queryWrappers(feTempHumDateDto));
+    }
+
+    @Override
+    public void exportTemperatureAndHumidityRecords(Integer dateId, HttpServletResponse response) {
+        FeTempHumDate feTempHumDate = baseMapper.selectById(dateId);
+        // 鑾峰彇骞村害鏈堝害鏃堕棿
+        String[] month = feTempHumDate.getMonthDate().split("-");
+
+        IPage<FeTempHumRecordDto> list = feTempHumRecordService.getFeTempHumRecordPage(new Page<>(1, -1), dateId);
+        List<FeTempHumRecordDto> feTempHumRecordDtos = list.getRecords();
+        // 鎸夌収澶╂暟鍒嗙粍
+        Map<Integer, List<FeTempHumRecordDto>> groupMap = feTempHumRecordDtos.stream().peek(feTempHumRecordDto -> {
+                    feTempHumRecordDto.setMonthDay(feTempHumRecordDto.getRecordDate().getDayOfMonth());
+                })
+                .collect(Collectors.groupingBy(FeTempHumRecordDto::getMonthDay));
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
+        // 閬嶅巻31鑾峰彇31涓璞�
+        List<FeTempHumRecordDto> recordDtoList = new ArrayList<>();
+        for (int i = 1; i <= 31; i++) {
+            FeTempHumRecordDto recordDto = new FeTempHumRecordDto();
+            recordDto.setMonth(i);
+            recordDtoList.add(recordDto);
+            // 鑾峰彇褰撳墠鏈堢殑
+            List<FeTempHumRecordDto> recordDtos = groupMap.get(i);
+            if (CollectionUtils.isNotEmpty(recordDtos)) {
+                // 澶嶅埗瀵硅薄
+                BeanUtils.copyProperties(recordDtos.get(0), recordDto, "month");
+                recordDto.setMorningTestTimeStr(recordDto.getMorningTestTime() == null ? null : recordDto.getMorningTestTime().format(formatter));
+                recordDto.setAfternoonTimeStr(recordDto.getAfternoonTime() == null ? null : recordDto.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", month[0]);
+        map.put("experimentalMonth", month[1]);
+        map.put("subjoin", feTempHumDate.getSubjoin());
+
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("feTempHum", map);
+                    put("recordList", recordDtoList);
+                }});
+
+        try {
+            response.setContentType("application/msword");
+            String fileName = URLEncoder.encode(
+                    "娓╂箍搴﹁褰曞鍑�", "UTF-8");
+            response.setHeader("Content-disposition",
+                    "attachment;filename=" + fileName + ".docx");
+            OutputStream os = response.getOutputStream();
+            template.write(os);
+            os.flush();
+            os.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
+    }
+
+    /**
+     * 娓╂箍搴︾‘璁�
+     * @param feTempHumDate
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void affirmFeTempHumDate(FeTempHumDate feTempHumDate) {
+        // 娓╂箍搴︾‘璁�
+        this.update(Wrappers.<FeTempHumDate>lambdaUpdate()
+                .eq(FeTempHumDate::getDateId, feTempHumDate.getDateId())
+                .set(FeTempHumDate::getSubjoin, feTempHumDate.getSubjoin())
+                .set(FeTempHumDate::getIsAffirm, 1));
+
+        // 娓╂箍搴﹁褰曟坊鍔犺褰曞憳
+        Integer userId = SecurityUtils.getUserId().intValue();
+        feTempHumRecordService.update(Wrappers.<FeTempHumRecord>lambdaUpdate()
+                .eq(FeTempHumRecord::getDateId, feTempHumDate.getDateId())
+                .set(FeTempHumRecord::getAfternoonRecorderId, userId)
+                .set(FeTempHumRecord::getMorningRecorderId, userId));
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java
new file mode 100644
index 0000000..2e37f6a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java
@@ -0,0 +1,27 @@
+package com.ruoyi.require.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.require.dto.FeTempHumRecordDto;
+import com.ruoyi.require.mapper.FeTempHumRecordMapper;
+import com.ruoyi.require.pojo.FeTempHumRecord;
+import com.ruoyi.require.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/require/service/impl/ForeignRegisterServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ForeignRegisterServiceImpl.java
new file mode 100644
index 0000000..a32af2c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ForeignRegisterServiceImpl.java
@@ -0,0 +1,101 @@
+package com.ruoyi.require.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.require.dto.ForeignRegisterDto;
+import com.ruoyi.require.mapper.ForeignRegisterMapper;
+import com.ruoyi.require.pojo.ForeignRegister;
+import com.ruoyi.require.service.ForeignRegisterService;
+import com.ruoyi.system.mapper.UserMapper;
+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/require/service/impl/InternalWastesDetailServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesDetailServiceImpl.java
new file mode 100644
index 0000000..80be802
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesDetailServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.require.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.require.mapper.InternalWastesDetailMapper;
+import com.ruoyi.require.pojo.InternalWastesDetail;
+import com.ruoyi.require.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/require/service/impl/InternalWastesServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesServiceImpl.java
new file mode 100644
index 0000000..9d58f8b
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesServiceImpl.java
@@ -0,0 +1,170 @@
+package com.ruoyi.require.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.require.dto.InternalWastesDto;
+import com.ruoyi.require.mapper.InternalWastesMapper;
+import com.ruoyi.require.pojo.InternalWastes;
+import com.ruoyi.require.pojo.InternalWastesDetail;
+import com.ruoyi.require.service.InternalWastesDetailService;
+import com.ruoyi.require.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/require/service/impl/ProcurementSuppliesContentsServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesContentsServiceImpl.java
new file mode 100644
index 0000000..634d4c7
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesContentsServiceImpl.java
@@ -0,0 +1,91 @@
+package com.ruoyi.require.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.require.mapper.ProcurementSuppliesContentsMapper;
+import com.ruoyi.require.pojo.ProcurementSuppliesContents;
+import com.ruoyi.require.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/require/service/impl/ProcurementSuppliesListServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesListServiceImpl.java
new file mode 100644
index 0000000..2b019b8
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesListServiceImpl.java
@@ -0,0 +1,130 @@
+package com.ruoyi.require.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.inspect.dto.ProcurementSuppliesListEDto;
+import com.ruoyi.require.dto.ProcurementSuppliesListDto;
+import com.ruoyi.require.mapper.ProcurementSuppliesListMapper;
+import com.ruoyi.require.mapper.SupplierManagementMapper;
+import com.ruoyi.require.pojo.ProcurementSuppliesList;
+import com.ruoyi.require.pojo.SupplierManagement;
+import com.ruoyi.require.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.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;
+
+    @Autowired
+    private SupplierManagementMapper supplierManagementMapper;
+
+    @Autowired
+    private ProcurementSuppliesListMapper procurementSuppliesListMapper;
+
+    @Override
+    public IPage<ProcurementSuppliesListDto> selectList(Page page, ProcurementSuppliesListDto list) {
+        IPage<ProcurementSuppliesList> iPage = baseMapper.selectProcurementSuppliesList(page, 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());
+            }
+
+            if (record.getSupplier() != 0) {
+                SupplierManagement supplierManagement = supplierManagementMapper.selectById(record.getSupplier());
+                dto.setSupplierName(supplierManagement.getSupplierName());
+            }
+
+            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 = this.list(new QueryWrapper<ProcurementSuppliesList>().lambda()
+//                .select(ProcurementSuppliesList::getId
+//                        , ProcurementSuppliesList::getUnit
+//                        , ProcurementSuppliesList::getLowerLimit
+//                        , ProcurementSuppliesList::getConsumablesType
+//                        , ProcurementSuppliesList::getItemNumber
+//                        , ProcurementSuppliesList::getConsumablesName
+//                        , ProcurementSuppliesList::getSpecifications
+//                        , ProcurementSuppliesList::getCurrentAmount
+//                        , ProcurementSuppliesList::getRemark).eq(ProcurementSuppliesList::getContentsId, contentsId));
+        List<ProcurementSuppliesList> data = procurementSuppliesListMapper.selectProcurementSuppliesListByContentsId(contentsId);
+        if (data.size()==0) {
+            throw new RuntimeException("鏃犳暟鎹�");
+        }
+        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 RuntimeException("瀵煎嚭澶辫触");
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/SupplierManagementServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/SupplierManagementServiceImpl.java
new file mode 100644
index 0000000..855db1e
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/SupplierManagementServiceImpl.java
@@ -0,0 +1,91 @@
+package com.ruoyi.require.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.require.dto.SupplierManagementDto;
+import com.ruoyi.require.mapper.SupplierManagementMapper;
+import com.ruoyi.require.pojo.SupplierManagement;
+import com.ruoyi.require.service.SupplierManagementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+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 {
+
+    @Autowired
+    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/resources/mapper/ProcurementSuppliesListMapper.xml b/cnas-require/src/main/resources/mapper/ProcurementSuppliesListMapper.xml
new file mode 100644
index 0000000..229983a
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/ProcurementSuppliesListMapper.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.require.mapper.ProcurementSuppliesListMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.require.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="ew.contentId != null and ew.contentId != ''">
+                and content_id = ${ew.contentId}
+            </if>
+        </where>
+    </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.contentId != null and ew.contentId != ''">
+                and content_id = ${ew.contentId}
+            </if>
+        </where>
+    </select>
+    <select id="selectProcurementSuppliesListByContentsId"
+            resultType="com.ruoyi.require.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/SupplierManagementMapper.xml b/cnas-require/src/main/resources/mapper/SupplierManagementMapper.xml
new file mode 100644
index 0000000..431dc29
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/SupplierManagementMapper.xml
@@ -0,0 +1,81 @@
+<?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.require.mapper.SupplierManagementMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.require.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.require.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.require.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.require.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 csm.parent_id in (select id from procurement_supplies_contents where id = #{parentId} or parent_id = #{parentId})
+    </select>
+    <select id="selectSupplierManagement" resultType="com.ruoyi.require.pojo.SupplierManagement">
+        select
+            *
+        from cnas_supplier_management csm
+        where
+            csm.parent_id = #{parentId} or
+            csm.parent_id in
+        (select id from procurement_supplies_contents where id = #{parentId} or parent_id = #{parentId})
+    </select>
+</mapper>
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/ProcurementSuppliesListEDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/ProcurementSuppliesListEDto.java
new file mode 100644
index 0000000..05fba85
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/ProcurementSuppliesListEDto.java
@@ -0,0 +1,54 @@
+package com.ruoyi.inspect.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ProcurementSuppliesListEDto {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty("缂栧彿")
+    @ExcelProperty("缂栧彿")
+    private Long id;
+
+    @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 Integer lowerLimit;
+
+
+
+    @ApiModelProperty("澶囨敞")
+    @ExcelProperty("澶囨敞")
+    private String remark;
+
+
+    @ApiModelProperty("褰撳墠搴撳瓨鏁伴噺")
+    @ExcelProperty("褰撳墠搴撳瓨")
+    private Integer currentAmount;
+}

--
Gitblit v1.9.3