From 217e39bec2ae2a861c4619d277ab0bc823cf85d4 Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期五, 28 二月 2025 11:41:35 +0800
Subject: [PATCH] Merge branch 'dev_cr' into dev

---
 cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesExpendsMapper.java                |   16 
 cnas-require/src/main/resources/mapper/FePowerStableMapper.xml                                           |   63 ++
 cnas-require/src/main/java/com/ruoyi/require/excel/StoreExcel.java                                       |   37 +
 cnas-require/src/main/resources/static/foreign-register.docx                                             |    0 
 cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java               |    1 
 cnas-require/src/main/java/com/ruoyi/require/pojo/FeLightningProtection.java                             |    1 
 cnas-require/src/main/resources/mapper/FeLightningProtectionMapper.xml                                   |   20 
 cnas-require/src/main/resources/mapper/InternalWastesMapper.xml                                          |   20 
 cnas-personnel/src/main/resources/mapper/PersonTrainingRecordMapper.xml                                  |    3 
 cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java            |    2 
 cnas-require/src/main/java/com/ruoyi/require/pojo/ForeignRegister.java                                   |    2 
 cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java                           |    3 
 cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesStoreController.java          |   80 ++
 cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java           |   10 
 ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java                                     |   11 
 cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java                   |    6 
 cnas-require/src/main/resources/static/temp_hum_date.docx                                                |    0 
 cnas-require/src/main/java/com/ruoyi/require/service/SuppliersDirectoryContentsService.java              |   22 
 cnas-require/src/main/resources/mapper/FeIlluminationMapper.xml                                          |   46 +
 cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml                                           |   31 +
 cnas-require/src/main/resources/static/power-stable.docx                                                 |    0 
 cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml                                         |   13 
 ruoyi-framework/src/main/java/com/ruoyi/framework/common/PrintChina.java                                 |   60 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/dto/UpdateUserDto.java                                |   11 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java                            |   24 
 cnas-require/src/main/resources/mapper/ForeignRegisterMapper.xml                                         |   39 +
 cnas-require/src/main/resources/static/internal-wastes.docx                                              |    0 
 cnas-require/src/main/java/com/ruoyi/require/controller/ForeignRegisterController.java                   |   15 
 cnas-require/src/main/java/com/ruoyi/require/controller/SuppliersDirectoryContentsController.java        |   77 ++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java                            |   23 
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java                  |    2 
 cnas-process/src/main/java/com/ruoyi/process/controller/QualityMonitorController.java                    |    2 
 cnas-require/src/main/java/com/ruoyi/require/dto/StoreDto.java                                           |   22 
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java                |   11 
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java                       |    3 
 cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingMapper.java                        |    3 
 cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml                                |   84 +++
 cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesExpendsController.java        |   49 +
 cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingService.java                      |    3 
 cnas-require/src/main/java/com/ruoyi/require/controller/SupplierManagementController.java                |    2 
 cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesExpends.java                        |   53 +
 cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesExpendDto.java                       |   11 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesExpendsServiceImpl.java     |   90 +++
 cnas-require/src/main/resources/static/illumination.docx                                                 |    0 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/SuppliersDirectoryContentsServiceImpl.java     |   76 ++
 cnas-require/src/main/java/com/ruoyi/require/pojo/SuppliersDirectoryContents.java                        |   52 +
 cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesServiceImpl.java                 |    2 
 cnas-require/src/main/java/com/ruoyi/require/controller/InternalWastesController.java                    |   11 
 cnas-require/src/main/java/com/ruoyi/require/mapper/SuppliersDirectoryContentsMapper.java                |   16 
 cnas-process/src/main/java/com/ruoyi/process/controller/QualitySuperviseController.java                  |    7 
 cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesConsumablesMapper.java            |    9 
 cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesStoreService.java                |   21 
 cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewBackupsMapper.java             |    3 
 cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesContentsController.java       |   75 ++
 cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java               |    8 
 cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesStoreMapper.java                  |   27 +
 cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesConsumablesService.java          |    7 
 ruoyi-framework/src/main/java/com/ruoyi/framework/annotation/ValueTableShow.java                         |   15 
 cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesConsumablesServiceImpl.java |   14 
 cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesStore.java                          |   52 +
 cnas-personnel/src/main/resources/mapper/PersonBasicInfoMapper.xml                                       |    1 
 cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesExpendsService.java              |   22 
 cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesConsumables.java                    |   50 +
 cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesStoreServiceImpl.java       |  125 ++++
 64 files changed, 1,515 insertions(+), 49 deletions(-)

diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java
index 01b44d4..979c1cb 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/controller/PersonBasicInfoController.java
@@ -74,7 +74,7 @@
 
     @ApiOperation(value = "浜哄憳鏄庣粏鍒嗛〉鏌ヨ")
     @GetMapping("basicInformationOfPersonnelSelectPage")
-    public Result<IPage<Map<String, Object>>> basicInformationOfPersonnelSelectPage(Page<List<PersonBasicInfoDetailsDto>> page, String name, Integer departmentId) {
+    public Result<IPage<Map<String, Object>>> basicInformationOfPersonnelSelectPage(Page page, String name, Integer departmentId) {
         return Result.success(personBasicInfoService.basicInformationOfPersonnelSelectPage(page, name, departmentId));
     }
 
@@ -83,7 +83,7 @@
     @PostMapping("/saveCNASFile")
     public Result saveFile(@RequestPart("file") MultipartFile file) {
         String s = FileSaveUtil.uploadWordFile(file);
-        return Result.success("涓婁紶鎴愬姛", s);
+        return Result.success(s, "涓婁紶鎴愬姛");
     }
 
     @GetMapping("/getAnnexByUserId")
@@ -176,7 +176,7 @@
      * @return
      */
     @ApiOperation(value = "浜哄憳鍩硅鍩烘湰淇℃伅闄勪欢鍒犻櫎")
-    @GetMapping("/delBasicInfoFileList")
+    @DeleteMapping("/delBasicInfoFileList")
     public Result delBasicInfoFileList(Integer basicInfoFileId){
         return Result.success(personBasicInfoFileService.removeById(basicInfoFileId));
     }
@@ -212,7 +212,7 @@
      * @return
      */
     @ApiOperation(value = "浜哄憳宸ヤ綔缁忓巻鍒犻櫎")
-    @GetMapping("/delBasicInfoWorkList")
+    @DeleteMapping("/delBasicInfoWorkList")
     public Result delBasicInfoWorkList(Integer basicInfoWorkId){
         return Result.success(personBasicInfoWorkService.removeById(basicInfoWorkId));
     }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java
index f23ba5f..b915ccf 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonBasicInfoMapper.java
@@ -6,6 +6,7 @@
 import com.ruoyi.common.core.domain.entity.DepartmentDto;
 import com.ruoyi.personnel.dto.PersonBasicInfoDto;
 import com.ruoyi.personnel.pojo.PersonBasicInfo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -31,7 +32,7 @@
      * @param departmentId
      * @return
      */
-    IPage<Map<String, Object>> selectPersonBasecInfoAndUser(Page page, String name, Integer departmentId);
+    IPage<Map<String, Object>> selectPersonBasecInfoAndUser(Page page, @Param("name") String name, @Param("departmentId") Integer departmentId);
 
     /**
      * 瀵煎嚭鏌ヨ浜哄憳淇℃伅
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java
index 47c397b..0fa5306 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingDetailedMapper.java
@@ -20,11 +20,12 @@
 public interface PersonTrainingDetailedMapper extends MyBaseMapper<PersonTrainingDetailed> {
 
     IPage<PersonTrainingDetailedDto> queryTheAnnualPlanDetailsTable(Page page,
-                                                                    String trainingLecturerName,
-                                                                    String courseCode, String trainingDate,
-                                                                    Integer id,
-                                                                    Integer userId,
-                                                                    Integer loginUserId);
+                                                                    @Param("trainingLecturerName") String trainingLecturerName,
+                                                                    @Param("courseCode") String courseCode,
+                                                                    @Param("trainingDate") String trainingDate,
+                                                                    @Param("id") Integer id,
+                                                                    @Param("userId") Integer userId,
+                                                                    @Param("loginUserId") Integer loginUserId);
 
     /**
      * 鏍规嵁涓昏〃id鏌ヨ璇︽儏
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingMapper.java
index f5dd8a6..1798f6c 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingMapper.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.personnel.dto.PersonTrainingDto;
 import com.ruoyi.personnel.pojo.PersonTraining;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -16,5 +17,5 @@
  */
 public interface PersonTrainingMapper extends BaseMapper<PersonTraining> {
 
-    IPage<PersonTrainingDto> personTrainingSelect(Page page, String compilerName, String departLimsId);
+    IPage<PersonTrainingDto> personTrainingSelect(Page page, @Param("compilerName") String compilerName,@Param("departLimsId") String departLimsId);
 }
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java
index a10ed81..6f59398 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/mapper/PersonTrainingRecordMapper.java
@@ -21,7 +21,7 @@
  */
 public interface PersonTrainingRecordMapper extends BaseMapper<PersonTrainingRecord> {
 
-    List<PersonTrainingRecordDto> trainingAndAssessmentRecordsPage(Integer trainingDetailedId, String userName);
+    List<PersonTrainingRecordDto> trainingAndAssessmentRecordsPage(@Param("trainingDetailedId") Integer trainingDetailedId,@Param("userName") String userName);
 
     IPage<PersonTrainingRecordListDto> personnelTrainingPersonnel(Page page, String userName, Integer userId, Integer departLimsId);
 
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingService.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingService.java
index 046cf24..46e3fab 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingService.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/PersonTrainingService.java
@@ -6,6 +6,7 @@
 import com.ruoyi.personnel.dto.PersonTrainingDto;
 import com.ruoyi.personnel.pojo.PersonTraining;
 import com.ruoyi.personnel.pojo.PersonTrainingDetailed;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -22,7 +23,7 @@
 public interface PersonTrainingService extends IService<PersonTraining> {
 
     IPage<PersonTrainingDto> personTrainingSelect(Page page,
-                                                  String compilerName, String departmentId);
+                                                  @Param("compilerName") String compilerName, @Param("departmentId") String departmentId);
 
     void personTrainingImport(MultipartFile file, PersonTraining training);
 
diff --git a/cnas-personnel/src/main/resources/mapper/PersonBasicInfoMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonBasicInfoMapper.xml
index 206013d..da32169 100644
--- a/cnas-personnel/src/main/resources/mapper/PersonBasicInfoMapper.xml
+++ b/cnas-personnel/src/main/resources/mapper/PersonBasicInfoMapper.xml
@@ -35,7 +35,6 @@
             cpbi.professional_title professionalTitle
         from user u
                  left join cnas_person_basic_info cpbi on cpbi.user_id = u.id
-                 left join user u1 on u1.id = u.create_user
         <where>
             FIND_IN_SET(#{departmentId},u.depart_lims_id)
             <if test="name != null and name != ''">
diff --git a/cnas-personnel/src/main/resources/mapper/PersonTrainingRecordMapper.xml b/cnas-personnel/src/main/resources/mapper/PersonTrainingRecordMapper.xml
index c57dd3d..93360e5 100644
--- a/cnas-personnel/src/main/resources/mapper/PersonTrainingRecordMapper.xml
+++ b/cnas-personnel/src/main/resources/mapper/PersonTrainingRecordMapper.xml
@@ -3,10 +3,9 @@
 <mapper namespace="com.ruoyi.personnel.mapper.PersonTrainingRecordMapper">
 
     <select id="trainingAndAssessmentRecordsPage" resultType="com.ruoyi.personnel.dto.PersonTrainingRecordDto">
-        select cptr.*, u.account, u.name user_name, u.phone, r.name role_name
+        select cptr.*, u.account, u.name user_name, u.phone
         from cnas_person_training_record cptr
                  left join user u on u.id = cptr.user_id
-                 left join role r on r.id = u.role_id
         where cptr.course_id = #{trainingDetailedId}
         <if test="userName != null and userName != ''">
             and u.name like concat('%', #{userName}, '%')
diff --git a/cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java b/cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java
index 47bf3f2..06ada10 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java
@@ -99,10 +99,8 @@
      * @return
      */
     @ApiOperation(value = "濮旀墭鍗曟煡璇㈡垚鍝佽鍗�")
-    @PostMapping("/getInsOrderOnInspection")
-    public Result<IPage<InsOrder>> getInsOrderOnInspection(@RequestBody Map<String, Object> data) throws Exception {
-        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
-        InsOrder insOrder = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), InsOrder.class);
+    @GetMapping("/getInsOrderOnInspection")
+    public Result<IPage<InsOrder>> getInsOrderOnInspection(Page page ,InsOrder insOrder) throws Exception {
         return Result.success(inspectionOrderService.getInsOrderOnInspection(page, insOrder));
     }
 
diff --git a/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java b/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java
index 7ba9d7d..b206980 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessMethodSearchNewController.java
@@ -100,7 +100,7 @@
      */
     @ApiOperation(value = "鏌ヨ瀛樻。")
     @GetMapping("/pageSearchNewArchived")
-    public Result<IPage<ProcessMethodSearchNewArchivedDto>> pageSearchNewArchived(ProcessMethodSearchNewArchivedDto archived,Page page) throws Exception {
+    public Result pageSearchNewArchived(ProcessMethodSearchNewArchivedDto archived,Page page) throws Exception {
         return Result.success(processMethodSearchNewService.pageSearchNewArchived(page, archived));
     }
 
diff --git a/cnas-process/src/main/java/com/ruoyi/process/controller/QualityMonitorController.java b/cnas-process/src/main/java/com/ruoyi/process/controller/QualityMonitorController.java
index b47ab14..5f54572 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/controller/QualityMonitorController.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/controller/QualityMonitorController.java
@@ -68,7 +68,7 @@
      * @return
      */
     @ApiOperation(value = "鐩戞帶璁″垝鍒犻櫎")
-    @GetMapping("/delQualitySupervise")
+    @DeleteMapping("/delQualitySupervise")
     public Result delQualitySupervise(Integer qualityMonitorId) {
         return Result.success(qualityMonitorService.removeById(qualityMonitorId));
     }
diff --git a/cnas-process/src/main/java/com/ruoyi/process/controller/QualitySuperviseController.java b/cnas-process/src/main/java/com/ruoyi/process/controller/QualitySuperviseController.java
index b2da7ec..eeb68f7 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/controller/QualitySuperviseController.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/controller/QualitySuperviseController.java
@@ -83,11 +83,12 @@
 
     /**
      * 鐩戠潱璁″垝璇︽儏鍒楄〃
-     * @param data
+     * @param qualitySuperviseDetails
+     * @param page
      * @return
      */
     @ApiOperation(value = "鐩戠潱璁″垝璇︽儏鍒楄〃")
-    @PostMapping("/pageQualitySuperviseDetail")
+    @GetMapping("/pageQualitySuperviseDetail")
     public Result<IPage<QualitySuperviseDetailsDto>> pageQualitySuperviseDetail(QualitySuperviseDetailsDto qualitySuperviseDetails,Page page) throws Exception {
         return Result.success(qualitySuperviseService.pageQualitySuperviseDetail(page, qualitySuperviseDetails));
     }
@@ -120,7 +121,7 @@
      * @return
      */
     @ApiOperation(value = "鍒犻櫎鐩戠潱璁″垝璇︽儏")
-    @GetMapping("/delQualitySuperviseDetail")
+    @DeleteMapping("/delQualitySuperviseDetail")
     public Result delQualitySuperviseDetail(Integer superviseDetailsId){
         return Result.success(qualitySuperviseDetailsService.removeById(superviseDetailsId));
     }
diff --git a/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewBackupsMapper.java b/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewBackupsMapper.java
index 9c9ebf7..9d7b089 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewBackupsMapper.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessMethodSearchNewBackupsMapper.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.process.pojo.ProcessMethodSearchNewBackups;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -22,5 +23,5 @@
      * @param ew
      * @return
      */
-    IPage<ProcessMethodSearchNewBackups> pageSearchNewBackups(Page page, QueryWrapper<ProcessMethodSearchNewBackups> ew);
+    IPage<ProcessMethodSearchNewBackups> pageSearchNewBackups(Page page, @Param("ew") QueryWrapper<ProcessMethodSearchNewBackups> ew);
 }
diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java
index 1d58571..2283874 100644
--- a/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java
+++ b/cnas-process/src/main/java/com/ruoyi/process/service/impl/QualitySuperviseServiceImpl.java
@@ -238,6 +238,7 @@
      */
     @Override
     public List<Map<String, String>> getRecordUser(Integer superviseDetailsId) {
+        List<Map<String, String>> recordUser = baseMapper.getRecordUser(superviseDetailsId);
         return baseMapper.getRecordUser(superviseDetailsId);
     }
 
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
index 244e9fd..5c48d2f 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/controller/ForeignRegisterController.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/ForeignRegisterController.java
@@ -33,14 +33,13 @@
 
     /**
      * 澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ
-     * @param data
+     * @param page
+     * @param foreignRegister
      * @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);
+    @GetMapping("/pageForeignRegister")
+    public Result<IPage<ForeignRegisterDto>> pageForeignRegister(Page page,ForeignRegisterDto foreignRegister) throws Exception {
         return Result.success(foreignRegisterService.pageForeignRegister(page, foreignRegister));
     }
 
@@ -69,7 +68,7 @@
      * @return
      */
     @ApiOperation(value = "澶栨潵浜哄憳鐧昏鍒犻櫎")
-    @GetMapping("/delForeignRegister")
+    @DeleteMapping("/delForeignRegister")
     public Result delForeignRegister(Integer registerId){
         return Result.success(foreignRegisterService.removeById(registerId));
     }
@@ -89,8 +88,8 @@
      * @return
      */
     @ApiOperation(value = "瀵煎嚭澶栨潵浜哄憳鐧昏")
-    @PostMapping("/exportForeignRegister")
-    public void exportForeignRegister(@RequestBody ForeignRegisterDto foreignRegister, HttpServletResponse response){
+    @GetMapping("/exportForeignRegister")
+    public void exportForeignRegister(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
index e507069..2103526 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/controller/InternalWastesController.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/InternalWastesController.java
@@ -33,14 +33,13 @@
 
     /**
      * 瀹夊叏鍐呭姟涓夊簾澶勭悊鍒嗛〉鏌ヨ
-     * @param data
+     * @param page
+     * @param internalWastes
      * @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);
+    @GetMapping("/pageInternalWastes")
+    public Result<IPage<InternalWastesDto>> pageInternalWastes(Page page,InternalWastes internalWastes) throws Exception {
         return Result.success(internalWastesService.pageInternalWastes(page, internalWastes));
     }
 
@@ -69,7 +68,7 @@
      * @return
      */
     @ApiOperation(value = "瀹夊叏鍐呭姟涓夊簾澶勭悊鍒犻櫎")
-    @GetMapping("/delInternalWastes")
+    @DeleteMapping("/delInternalWastes")
     public Result delInternalWastes(Integer wastesId){
         return Result.success(internalWastesService.delInternalWastes(wastesId));
     }
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesContentsController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesContentsController.java
new file mode 100644
index 0000000..aff3aa5
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesContentsController.java
@@ -0,0 +1,75 @@
+package com.ruoyi.require.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.require.pojo.ProcurementSuppliesContents;
+import com.ruoyi.require.service.ProcurementSuppliesContentsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Api(tags = "鏈嶅姟鍜屼緵搴斿搧閲囪喘鍏徃鍒楄〃")
+@RestController
+@RequestMapping("/procurementSuppliesContents")
+@AllArgsConstructor
+public class ProcurementSuppliesContentsController {
+
+    private ProcurementSuppliesContentsService procurementSuppliesService;
+
+    @ApiOperation(value = "鏌ヨ鐩綍鍒楄〃")
+    @GetMapping("/directoryListing")
+    public Result directoryListing() {
+        return Result.success(procurementSuppliesService.directoryListing());
+    }
+
+    @ApiOperation(value = "鏍规嵁id鏌ヨ")
+    @GetMapping("/selectProcurementSuppliesContentById")
+    public Result selectProcurementSuppliesContentById(Integer id) {
+        return Result.success(procurementSuppliesService.getById(id));
+    }
+
+    @ApiOperation(value = "娣诲姞瀛愯妭鐐�")
+    @PostMapping("/addProcurementSuppliesContents")
+    public Result addProcurementSuppliesContents(@RequestBody ProcurementSuppliesContents procurementSupplies) {
+        procurementSupplies.setUpdateTime(LocalDateTime.now());
+        procurementSuppliesService.save(procurementSupplies);
+        return Result.success(procurementSupplies.getId());
+    }
+
+    @ApiOperation(value = "鏇存柊瀛愯妭鐐�")
+    @PostMapping("/updateProcurementSuppliesContents")
+    public Result updateProcurementSuppliesContents(@RequestBody ProcurementSuppliesContents procurementSupplies) {
+        return Result.success(procurementSuppliesService.updateById(procurementSupplies));
+    }
+
+    @ApiOperation(value = "鍒犻櫎瀛愯妭鐐�")
+    @DeleteMapping("/deleteProcurementSuppliesContentById")
+    public Result deleteProcurementSuppliesContentById(Integer id) {
+        List<ProcurementSuppliesContents> list = procurementSuppliesService.list(new LambdaQueryWrapper<ProcurementSuppliesContents>()
+                .eq(ProcurementSuppliesContents::getParentId, id));
+        if(list.size() > 0) {
+            throw new ErrorException("璇ヨ妭鐐瑰惈鏈夊瓙鑺傜偣,璇峰厛鍒犻櫎瀛愯妭鐐�");
+        }
+        procurementSuppliesService.removeById(id);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏌ヨ鎵�鏈夎妭鐐�")
+    @GetMapping("/getNodeNames")
+    public Result getNodeNames() {
+        return Result.success(procurementSuppliesService.getNodeNames());
+    }
+
+    @ApiOperation(value = "鑾峰彇鎵�鏈変汉鍛�")
+    @GetMapping("/getUserList")
+    public Result getUserList() {
+        return Result.success(procurementSuppliesService.getUserList());
+    }
+
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesExpendsController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesExpendsController.java
new file mode 100644
index 0000000..d8dd387
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesExpendsController.java
@@ -0,0 +1,49 @@
+package com.ruoyi.require.controller;
+
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.require.dto.ProcurementSuppliesExpendDto;
+import com.ruoyi.require.service.ProcurementSuppliesExpendsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 03:47:19
+ */
+@Api(tags = "鏈嶅姟鍜屼緵搴斿搧閲囪喘鑰楁潗娑堣��")
+@RestController
+@RequestMapping("/procurementSuppliesExpends")
+public class ProcurementSuppliesExpendsController {
+    @Autowired
+    private ProcurementSuppliesExpendsService procurementSuppliesExpendsService;
+
+    @ApiOperation(value = "鏌ヨ鎵�鏈夎褰�")
+    @GetMapping("/procurementSuppliesExpendlist")
+    public Result procurementSuppliesExpendlist(Long procurementSuppliesListId) {
+        return Result.success(procurementSuppliesExpendsService.selectAll(procurementSuppliesListId));
+    }
+
+    @ApiOperation(value = "鏂板娑堣�楄褰�")
+    @PostMapping("/addProcurementSuppliesExpends")
+    public Result addProcurementSuppliesExpends(@RequestBody ProcurementSuppliesExpendDto dto) throws ServiceException {
+        Integer added = procurementSuppliesExpendsService.addExpends(dto);
+
+        if ( added == 0) {
+            return Result.fail("褰撳墠搴撳瓨涓嶈冻");
+        }
+        return Result.success(added);
+    }
+
+    @ApiOperation(value = "鍒犻櫎娑堣�楄褰�")
+    @DeleteMapping("/deleteProcurementSuppliesExpends")
+    public Result deleteProcurementSuppliesExpends(Long expendId) throws ServiceException {
+        return Result.success(procurementSuppliesExpendsService.deleteExpends(expendId));
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java
index 27b5729..8311a65 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java
@@ -79,14 +79,14 @@
     }
 
     @ApiOperation(value = "鍒犻櫎鑰楁潗")
-    @PostMapping("/deleteProcurementSuppliesList")
-    public Result deleteProcurementSuppliesList(@RequestBody ProcurementSuppliesListDto dto) {
-        return Result.success(listMapper.deleteById(dto.getId()));
+    @DeleteMapping("/deleteProcurementSuppliesList")
+    public Result deleteProcurementSuppliesList(Long id) {
+        return Result.success(listMapper.deleteById(id));
     }
 
     @ApiOperation(value = "瀵煎嚭鑰楁潗鍒楄〃")
-    @PostMapping("/exportProcurementSuppliesList/{parentId}")
-    public void exportProcurementSuppliesList( @PathVariable Integer parentId ,HttpServletResponse response) throws Exception {
+    @GetMapping("/exportProcurementSuppliesList")
+    public void exportProcurementSuppliesList(Integer parentId ,HttpServletResponse response) throws Exception {
         procurementSuppliesListService.exportProcurementSuppliesList(parentId,response);
 
     }
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesStoreController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesStoreController.java
new file mode 100644
index 0000000..08d86e4
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesStoreController.java
@@ -0,0 +1,80 @@
+package com.ruoyi.require.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.utils.JackSonUtil;
+import com.ruoyi.require.dto.StoreDto;
+import com.ruoyi.require.pojo.ProcurementSuppliesConsumables;
+import com.ruoyi.require.pojo.ProcurementSuppliesStore;
+import com.ruoyi.require.service.ProcurementSuppliesConsumablesService;
+import com.ruoyi.require.service.ProcurementSuppliesStoreService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Api(tags = "鏈嶅姟鍜屼緵搴斿搧閲囪喘鑰楁潗鍏ュ簱")
+@RestController
+@RequestMapping("/procurementSuppliesStore")
+@AllArgsConstructor
+public class ProcurementSuppliesStoreController {
+
+    private ProcurementSuppliesStoreService storeService;
+
+    private ProcurementSuppliesConsumablesService consumablesService;
+
+
+    @ApiOperation(value = "鑰楁潗鍏ュ簱鍒嗛〉鏌ヨ")
+    @GetMapping("/storeList")
+    public Result storeList(Page page,StoreDto storeDto) throws Exception {
+        return Result.success(storeService.selectStoreList(page, storeDto));
+    }
+
+    @ApiOperation(value = "娣诲姞鑰楁潗鍏ュ簱鍒楄〃")
+    @PostMapping("/addStore")
+    public Result addStore(@RequestBody Map<String,Object> map) {
+        storeService.addStore(map);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鍒犻櫎鑰楁潗鍏ュ簱")
+    @DeleteMapping("/deleteStore")
+    public Result deleteStore(@RequestParam("id") Integer id,@RequestParam("consumablesId") Integer consumablesId) {
+        storeService.deleteStore(id,consumablesId);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏇存柊鑰楁潗鍏ュ簱")
+        @PostMapping("/updateStore")
+    public Result updateStore(@RequestBody Map<String,Object> map) {
+        storeService.updateStore(map);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏍规嵁id鏌ヨ鑰楁潗鍏ュ簱")
+    @GetMapping("/selectStoreById")
+    public Result selectStore(Integer id) {
+        HashMap<String, Object> map = new HashMap<>();
+        ProcurementSuppliesStore procurementSuppliesStore = storeService.getById(id);
+        List<ProcurementSuppliesConsumables> list = consumablesService.list(new LambdaQueryWrapper<ProcurementSuppliesConsumables>()
+                .eq(ProcurementSuppliesConsumables::getStoreId, id));
+        map.put("store", procurementSuppliesStore);
+        map.put("consumables", list);
+        return Result.success(map);
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @GetMapping("/exportExcel")
+    public void exportExcel(Integer parentId, HttpServletResponse response) throws IOException {
+        storeService.exportExcel(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
index 495dfbb..faeaab7 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/controller/SupplierManagementController.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/SupplierManagementController.java
@@ -71,7 +71,7 @@
     }
 
     @ApiOperation("鍒犻櫎渚涘簲鍟�")
-    @PostMapping("/delSupplierManagement")
+    @DeleteMapping("/delSupplierManagement")
     public Result delSupplierManagement(Integer supplierManagementId) {
         return Result.success(supplierManagementService.removeById(supplierManagementId));
     }
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/SuppliersDirectoryContentsController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/SuppliersDirectoryContentsController.java
new file mode 100644
index 0000000..2b7aeb5
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/SuppliersDirectoryContentsController.java
@@ -0,0 +1,77 @@
+package com.ruoyi.require.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.require.pojo.SuppliersDirectoryContents;
+import com.ruoyi.require.service.SuppliersDirectoryContentsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏈嶅姟鍜屼緵搴斿搧閲囪喘鐩綍 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-17 06:14:51
+ */
+@Api(tags = "渚涘簲鍟嗙鐞嗘爲")
+@RestController
+@RequestMapping("/suppliersDirectoryContents")
+public class SuppliersDirectoryContentsController {
+
+    @Autowired
+    private SuppliersDirectoryContentsService suppliersDirectoryContentsService;
+
+    @ApiOperation(value = "鏌ヨ鐩綍鍒楄〃")
+    @GetMapping("/suppliersDirectoryContentsListing")
+    public Result suppliersDirectoryContentsListing() {
+        return Result.success(suppliersDirectoryContentsService.directoryListing());
+
+    }
+
+    @ApiOperation(value = "鏍规嵁id鏌ヨ")
+    @GetMapping("/selectSuppliersDirectoryContentsById")
+    public Result selectSuppliersDirectoryContentsById(Integer id) {
+        return Result.success(suppliersDirectoryContentsService.getById(id));
+    }
+
+    @ApiOperation(value = "娣诲姞瀛愯妭鐐�")
+    @PostMapping("/addSuppliersDirectoryContents")
+    public Result addSuppliersDirectoryContents(@RequestBody SuppliersDirectoryContents suppliersDirectoryContents ) {
+        suppliersDirectoryContents.setUpdateTime(LocalDateTime.now());
+        suppliersDirectoryContentsService.save(suppliersDirectoryContents);
+        return Result.success(suppliersDirectoryContents.getId());
+    }
+
+    @ApiOperation(value = "鏇存柊瀛愯妭鐐�")
+    @PostMapping("/updateSuppliersDirectoryContents")
+    public Result updateSuppliersDirectoryContents(@RequestBody SuppliersDirectoryContents suppliersDirectoryContents) {
+        return Result.success(suppliersDirectoryContentsService.updateById(suppliersDirectoryContents));
+    }
+
+    @ApiOperation(value = "鍒犻櫎瀛愯妭鐐�")
+    @DeleteMapping("/deleteSuppliersDirectoryContentsById")
+    public Result deleteSuppliersDirectoryContentsById(Integer id) {
+        List<SuppliersDirectoryContents> list = suppliersDirectoryContentsService.list(new LambdaQueryWrapper<SuppliersDirectoryContents>()
+                .eq(SuppliersDirectoryContents::getParentId, id));
+        if(list.size() > 0) {
+            throw new ErrorException("璇ヨ妭鐐瑰惈鏈夊瓙鑺傜偣,璇峰厛鍒犻櫎瀛愯妭鐐�");
+        }
+        suppliersDirectoryContentsService.removeById(id);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鏌ヨ鎵�鏈夎妭鐐�")
+    @GetMapping("/getSuppliersDirectoryContentsNodeNames")
+    public Result getSuppliersDirectoryContentsNodeNames() {
+        return Result.success(suppliersDirectoryContentsService.getSuppliersDirectoryContentsNodeNames());
+    }
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesExpendDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesExpendDto.java
new file mode 100644
index 0000000..6022164
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesExpendDto.java
@@ -0,0 +1,11 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.pojo.ProcurementSuppliesExpends;
+import lombok.Data;
+
+@Data
+public class ProcurementSuppliesExpendDto extends ProcurementSuppliesExpends {
+    private String listName; // 椤圭洰鑰楁潗鍚嶇О
+    private String enterUserName; // 褰曞叆浜哄悕绉�
+    private String updateUserName; // 鏇存柊浜哄悕绉�
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/dto/StoreDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/StoreDto.java
new file mode 100644
index 0000000..818c205
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/StoreDto.java
@@ -0,0 +1,22 @@
+package com.ruoyi.require.dto;
+
+import com.ruoyi.require.pojo.ProcurementSuppliesStore;
+import lombok.Data;
+
+@Data
+public class StoreDto extends ProcurementSuppliesStore {
+
+
+    private String consumablesName;
+
+    private Integer storeNumber;
+
+    private Double totalPrice;
+
+    private String registrantName;
+
+    private String storageUserName;
+
+    private Integer consumablesId;
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/excel/StoreExcel.java b/cnas-require/src/main/java/com/ruoyi/require/excel/StoreExcel.java
new file mode 100644
index 0000000..d0d7b88
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/excel/StoreExcel.java
@@ -0,0 +1,37 @@
+package com.ruoyi.require.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class StoreExcel {
+    @ExcelProperty("鍏ュ簱鍗曞彿")
+    private String oddNumbers;
+
+    @ExcelProperty("鑰楁潗鍚嶇О")
+    private String consumablesName;
+
+    @ExcelProperty("鍏ュ簱鏁伴噺")
+    private Integer storeNumber;
+
+    @ExcelProperty("鍏ュ簱鎬讳环")
+    private Double totalPrice;
+
+    @ExcelProperty("鍏ュ簱浜�")
+    private String storageUserName;
+
+    @ExcelProperty("鍏ュ簱鏃ユ湡")
+    private LocalDate storageTime;
+
+    @ExcelProperty("璇存槑")
+    private String remark;
+
+    @ExcelProperty("鐧昏浜�")
+    private String registrantName;
+
+    @ExcelProperty("鐧昏鏃ユ湡")
+    private LocalDate registrantTime;
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java
index 8e0e9ab..9130a25 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.require.dto.FeTempHumRecordDto;
 import com.ruoyi.require.pojo.FeTempHumRecord;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -16,5 +17,5 @@
  */
 public interface FeTempHumRecordMapper extends BaseMapper<FeTempHumRecord> {
 
-    IPage<FeTempHumRecordDto> getFeTempHumRecordPage(Page page, Integer dateId);
+    IPage<FeTempHumRecordDto> getFeTempHumRecordPage(Page page, @Param("dateId") Integer dateId);
 }
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesConsumablesMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesConsumablesMapper.java
new file mode 100644
index 0000000..8d9eddf
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesConsumablesMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.require.pojo.ProcurementSuppliesConsumables;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ProcurementSuppliesConsumablesMapper extends BaseMapper<ProcurementSuppliesConsumables> {
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesExpendsMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesExpendsMapper.java
new file mode 100644
index 0000000..08df116
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesExpendsMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.require.pojo.ProcurementSuppliesExpends;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 03:47:19
+ */
+public interface ProcurementSuppliesExpendsMapper extends BaseMapper<ProcurementSuppliesExpends> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesStoreMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesStoreMapper.java
new file mode 100644
index 0000000..93b16ec
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesStoreMapper.java
@@ -0,0 +1,27 @@
+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.StoreDto;
+import com.ruoyi.require.excel.StoreExcel;
+import com.ruoyi.require.pojo.ProcurementSuppliesStore;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ProcurementSuppliesStoreMapper extends BaseMapper<ProcurementSuppliesStore> {
+
+    IPage<StoreDto> selectStoreList(Page page, @Param("ew") QueryWrapper<StoreDto> ew);
+
+    /**
+     *       鍜屾爲鍏宠仈鐨勬潯浠讹紝锛岋紝鐩墠娌℃湁鍏宠仈鍏崇郴    WHERE s.contents_id = #{contentsId}
+     * @param contentsId
+     * @return
+     */
+    List<StoreExcel> exportExcel(Integer contentsId);
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/SuppliersDirectoryContentsMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/SuppliersDirectoryContentsMapper.java
new file mode 100644
index 0000000..b2e8b89
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/SuppliersDirectoryContentsMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.require.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.require.pojo.SuppliersDirectoryContents;
+
+/**
+ * <p>
+ * 鏈嶅姟鍜屼緵搴斿搧閲囪喘鐩綍 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-17 06:14:51
+ */
+public interface SuppliersDirectoryContentsMapper extends BaseMapper<SuppliersDirectoryContents> {
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/FeLightningProtection.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeLightningProtection.java
index c6068f0..0b7e893 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/pojo/FeLightningProtection.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeLightningProtection.java
@@ -6,6 +6,7 @@
 import lombok.Getter;
 import lombok.Setter;
 import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.Serializable;
 import java.time.LocalDate;
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
index ba7eaf4..b655e0b 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/pojo/ForeignRegister.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/ForeignRegister.java
@@ -4,6 +4,7 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -25,6 +26,7 @@
     private Integer registerId;
 
     @ApiModelProperty("鐧昏濡傛湡")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private LocalDate registerDate;
 
     @ApiModelProperty("杩涘叆鍖哄煙")
diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesConsumables.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesConsumables.java
new file mode 100644
index 0000000..3bd0a29
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesConsumables.java
@@ -0,0 +1,50 @@
+package com.ruoyi.require.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@TableName("procurement_supplies_consumables")
+@ApiModel("鑰楁潗閲囪喘鏄庣粏琛�")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ProcurementSuppliesConsumables {
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鑰楁潗涓昏〃id")
+    private Integer storeId;
+
+    @ApiModelProperty("鑰楁潗鍚嶇О")
+    private String consumablesName;
+
+    @ApiModelProperty("鍗曚环")
+    private Double unitPrice;
+
+    @ApiModelProperty("鍏ュ簱鏁伴噺")
+    private Integer storeNumber;
+
+    @ApiModelProperty("鎬讳环")
+    private Double totalPrice;
+
+    @ApiModelProperty("璐у彿")
+    private String itemNumber;
+
+    @ApiModelProperty("绫诲埆")
+    private String type;
+
+    @ApiModelProperty("瑙勬牸")
+    private String specifications;
+
+    @ApiModelProperty("鍙傝�冧緵搴斿晢")
+    private String supplier;
+
+    @ApiModelProperty("璁¢噺鍗曚綅")
+    private String unit;
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesExpends.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesExpends.java
new file mode 100644
index 0000000..731a523
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesExpends.java
@@ -0,0 +1,53 @@
+package com.ruoyi.require.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 03:47:19
+ */
+@Getter
+@Setter
+@TableName("procurement_supplies_expends")
+@ApiModel(value = "ProcurementSuppliesExpends瀵硅薄", description = "")
+public class ProcurementSuppliesExpends implements Serializable {
+
+
+    @ApiModelProperty("涓昏〃Id")
+    @TableId(value = "expend_id", type = IdType.AUTO)
+    private Long expendId;
+
+    @ApiModelProperty("鑰楁潗Id")
+    private Long listId;
+
+    @ApiModelProperty("娑堣�楁暟閲�")
+    private Integer amount;
+
+    @ApiModelProperty("褰曞叆浜篿d")
+    private Integer enterUserId;
+
+    @ApiModelProperty("鏇存柊浜篿d")
+    private Integer updateUserId;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesStore.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesStore.java
new file mode 100644
index 0000000..076cf31
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesStore.java
@@ -0,0 +1,52 @@
+package com.ruoyi.require.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@TableName("procurement_supplies_store")
+@ApiModel("鑰楁潗鍏ュ簱琛�")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ProcurementSuppliesStore implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鐩綍id")
+    private Integer contentsId;
+
+    @ApiModelProperty("鍏ュ簱鍗曞彿")
+    private String oddNumbers;
+
+    @ApiModelProperty("鍏ュ簱搴撳瓨")
+    private String inventory;
+
+    @ApiModelProperty("鍏ュ簱鎬婚噾棰�")
+    private Double totalAmount;
+
+    @ApiModelProperty("鍏ュ簱浜�")
+    private Integer storageUser;
+
+    @ApiModelProperty("鍏ュ簱鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate storageTime;
+
+    @ApiModelProperty("鍏ュ簱璇存槑")
+    private String remark;
+
+    @ApiModelProperty("鐧昏浜�")
+    private Integer registrant;
+
+    @ApiModelProperty("鐧昏鏃堕棿")
+    private LocalDate registrantTime;
+
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/SuppliersDirectoryContents.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/SuppliersDirectoryContents.java
new file mode 100644
index 0000000..8d43ecc
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/SuppliersDirectoryContents.java
@@ -0,0 +1,52 @@
+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;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏈嶅姟鍜屼緵搴斿搧閲囪喘鐩綍
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-17 06:14:51
+ */
+@Getter
+@Setter
+@TableName("suppliers_directory_contents")
+@ApiModel(value = "SuppliersDirectoryContents瀵硅薄", description = "鏈嶅姟鍜屼緵搴斿搧閲囪喘鐩綍")
+public class SuppliersDirectoryContents implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鑺傜偣鍚嶇О")
+    private String nodeName;
+
+    @ApiModelProperty("浠e彿")
+    private String code;
+
+    @ApiModelProperty("鏇存柊浜�")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("鐖惰妭鐐�")
+    private Integer parentId;
+
+
+    @TableField(exist = false)
+    private List<SuppliersDirectoryContents> children;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesConsumablesService.java b/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesConsumablesService.java
new file mode 100644
index 0000000..ade7f0c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesConsumablesService.java
@@ -0,0 +1,7 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.pojo.ProcurementSuppliesConsumables;
+
+public interface ProcurementSuppliesConsumablesService extends IService<ProcurementSuppliesConsumables> {
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesExpendsService.java b/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesExpendsService.java
new file mode 100644
index 0000000..f5ef01a
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesExpendsService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.require.dto.ProcurementSuppliesExpendDto;
+import com.ruoyi.require.pojo.ProcurementSuppliesExpends;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 03:47:19
+ */
+public interface ProcurementSuppliesExpendsService extends IService<ProcurementSuppliesExpends> {
+    public List<ProcurementSuppliesExpendDto> selectAll(Long procurementSuppliesListId);
+    public Integer addExpends(ProcurementSuppliesExpendDto expendDto) throws ServiceException;
+    public Integer deleteExpends(Long id);
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesStoreService.java b/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesStoreService.java
new file mode 100644
index 0000000..931890c
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesStoreService.java
@@ -0,0 +1,21 @@
+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.StoreDto;
+import com.ruoyi.require.pojo.ProcurementSuppliesStore;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Map;
+
+public interface ProcurementSuppliesStoreService extends IService<ProcurementSuppliesStore> {
+    void addStore(Map<String,Object> map);
+    void updateStore(Map<String,Object> map);
+
+    void deleteStore(Integer id, Integer consumablesId);
+    IPage<StoreDto> selectStoreList(Page page, StoreDto storeDto);
+
+    void exportExcel(Integer contentsId, HttpServletResponse response) throws IOException;
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/SuppliersDirectoryContentsService.java b/cnas-require/src/main/java/com/ruoyi/require/service/SuppliersDirectoryContentsService.java
new file mode 100644
index 0000000..a6db661
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/SuppliersDirectoryContentsService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.require.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.require.pojo.SuppliersDirectoryContents;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 鏈嶅姟鍜屼緵搴斿搧閲囪喘鐩綍 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-17 06:14:51
+ */
+public interface SuppliersDirectoryContentsService extends IService<SuppliersDirectoryContents> {
+
+    ArrayList<SuppliersDirectoryContents> directoryListing();
+    List<Map<String, Object>> getSuppliersDirectoryContentsNodeNames();
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/InternalWastesServiceImpl.java
index 9d58f8b..a7debfb 100644
--- 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
@@ -138,8 +138,6 @@
             detail.setIndex(index);
             index++;
         }
-
-
         // 鑾峰彇璺緞
         InputStream inputStream = this.getClass().getResourceAsStream("/static/internal-wastes.docx");
         Configure configure = Configure.builder()
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesConsumablesServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesConsumablesServiceImpl.java
new file mode 100644
index 0000000..deeb125
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesConsumablesServiceImpl.java
@@ -0,0 +1,14 @@
+package com.ruoyi.require.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.require.mapper.ProcurementSuppliesConsumablesMapper;
+import com.ruoyi.require.pojo.ProcurementSuppliesConsumables;
+import com.ruoyi.require.service.ProcurementSuppliesConsumablesService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+@Service
+@AllArgsConstructor
+public class ProcurementSuppliesConsumablesServiceImpl extends ServiceImpl<ProcurementSuppliesConsumablesMapper, ProcurementSuppliesConsumables>
+        implements ProcurementSuppliesConsumablesService {
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesExpendsServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesExpendsServiceImpl.java
new file mode 100644
index 0000000..0d1c184
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesExpendsServiceImpl.java
@@ -0,0 +1,90 @@
+package com.ruoyi.require.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.require.dto.ProcurementSuppliesExpendDto;
+import com.ruoyi.require.mapper.ProcurementSuppliesExpendsMapper;
+import com.ruoyi.require.mapper.ProcurementSuppliesListMapper;
+import com.ruoyi.require.pojo.ProcurementSuppliesExpends;
+import com.ruoyi.require.pojo.ProcurementSuppliesList;
+import com.ruoyi.require.service.ProcurementSuppliesExpendsService;
+import com.ruoyi.system.mapper.UserMapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-11-15 03:47:19
+ */
+@Service
+public class ProcurementSuppliesExpendsServiceImpl extends ServiceImpl<ProcurementSuppliesExpendsMapper, ProcurementSuppliesExpends> implements ProcurementSuppliesExpendsService {
+    @Autowired
+    private ProcurementSuppliesExpendsMapper expendsMapper;
+
+    @Autowired
+    private UserMapper userMapper;
+
+    @Autowired
+    private ProcurementSuppliesListMapper listMapper;
+
+    @Override
+    public List<ProcurementSuppliesExpendDto> selectAll(Long procurementSuppliesListId) {
+        List<ProcurementSuppliesExpendDto> res = new ArrayList<>();
+        List<ProcurementSuppliesExpends> list =  expendsMapper.selectList(new QueryWrapper<ProcurementSuppliesExpends>().lambda().eq(ProcurementSuppliesExpends::getListId, procurementSuppliesListId));
+        for (ProcurementSuppliesExpends procurementSuppliesExpend : list) {
+            ProcurementSuppliesExpendDto dto = new ProcurementSuppliesExpendDto();
+            BeanUtils.copyProperties(procurementSuppliesExpend, dto);
+
+            User enterUser = userMapper.selectById(procurementSuppliesExpend.getEnterUserId());
+            User updateUser = userMapper.selectById(procurementSuppliesExpend.getUpdateUserId());
+            dto.setEnterUserName(enterUser.getName());
+            dto.setUpdateUserName(updateUser.getName());
+            res.add(dto);
+        }
+
+        return res;
+    }
+
+    @Override
+    @Transactional
+    public Integer addExpends(ProcurementSuppliesExpendDto expendDto) throws ServiceException {
+        ProcurementSuppliesList list = listMapper.selectProcurementSuppliesListForUpdate(expendDto.getListId());
+
+        ProcurementSuppliesExpends expends = new ProcurementSuppliesExpends();
+        BeanUtils.copyProperties(expendDto, expends);
+        expends.setEnterUserId(SecurityUtils.getUserId().intValue());
+        expends.setUpdateUserId(SecurityUtils.getUserId().intValue());
+        if (list.getCurrentAmount() < expendDto.getAmount()) {
+            return 0;
+        }
+
+        list.setCurrentAmount(list.getCurrentAmount() - expendDto.getAmount());
+
+        listMapper.updateById(list);
+        return expendsMapper.insert(expends);
+    }
+
+    @Override
+    @Transactional
+    public Integer deleteExpends(Long id) {
+        ProcurementSuppliesExpends expend = expendsMapper.selectById(id);
+        ProcurementSuppliesList list = listMapper.selectProcurementSuppliesListForUpdate(expend.getListId());
+        list.setCurrentAmount(list.getCurrentAmount() + expend.getAmount());
+        list.setUpdateUser(SecurityUtils.getUserId().intValue());
+        listMapper.updateById(list);
+        return expendsMapper.deleteById(id);
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesStoreServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesStoreServiceImpl.java
new file mode 100644
index 0000000..9e7a548
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesStoreServiceImpl.java
@@ -0,0 +1,125 @@
+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.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.framework.common.PrintChina;
+import com.ruoyi.require.dto.StoreDto;
+import com.ruoyi.require.excel.StoreExcel;
+import com.ruoyi.require.mapper.ProcurementSuppliesConsumablesMapper;
+import com.ruoyi.require.mapper.ProcurementSuppliesStoreMapper;
+import com.ruoyi.require.pojo.ProcurementSuppliesConsumables;
+import com.ruoyi.require.pojo.ProcurementSuppliesStore;
+import com.ruoyi.require.service.ProcurementSuppliesStoreService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@Service
+@AllArgsConstructor
+public class ProcurementSuppliesStoreServiceImpl extends ServiceImpl<ProcurementSuppliesStoreMapper, ProcurementSuppliesStore>
+        implements ProcurementSuppliesStoreService {
+
+    private ProcurementSuppliesConsumablesMapper consumablesMapper;
+
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addStore(Map<String,Object> map) {
+        ProcurementSuppliesStore procurementSuppliesStore = JSONObject.parseObject(JSONObject.toJSONString(map.get("store")), ProcurementSuppliesStore.class);
+        procurementSuppliesStore.setRegistrant(SecurityUtils.getUserId().intValue());
+        procurementSuppliesStore.setRegistrantTime(LocalDate.now());
+        baseMapper.insert(procurementSuppliesStore);
+        List<ProcurementSuppliesConsumables> list = JSON.parseArray(JSONObject.toJSONString(map.get("consumables")), ProcurementSuppliesConsumables.class);
+        // 鐢熸垚璐у彿
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+        if(!Objects.isNull(list) && list.size() > 0) {
+            for (int i = 0; i < list.size(); i++) {
+                list.get(i).setStoreId(procurementSuppliesStore.getId());
+                String itemNumber ="HCRK" + LocalDate.now().format(dateTimeFormatter) +  String.format("%03d", i);
+                list.get(i).setItemNumber(itemNumber);
+                consumablesMapper.insert(list.get(i));
+            }
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateStore(Map<String,Object> map) {
+        ProcurementSuppliesStore procurementSuppliesStore = JSONObject.parseObject(JSONObject.toJSONString(map.get("store")), ProcurementSuppliesStore.class);
+        baseMapper.updateById(procurementSuppliesStore);
+        List<ProcurementSuppliesConsumables> list = JSON.parseArray(JSONObject.toJSONString(map.get("consumables")), ProcurementSuppliesConsumables.class);
+        consumablesMapper.delete(new LambdaQueryWrapper<ProcurementSuppliesConsumables>()
+                .eq(ProcurementSuppliesConsumables::getStoreId, procurementSuppliesStore.getId()));
+        if(!Objects.isNull(list) && list.size() > 0) {
+            for (int i = 0; i < list.size(); i++) {
+                list.get(i).setId(null);
+                list.get(i).setStoreId(procurementSuppliesStore.getId());
+                consumablesMapper.insert(list.get(i));
+            }
+        }
+    }
+
+    @Override
+    public void deleteStore(Integer id, Integer consumablesId) {
+        consumablesMapper.deleteById(consumablesId);
+        List<ProcurementSuppliesConsumables> consumables = consumablesMapper.selectList(new LambdaQueryWrapper<ProcurementSuppliesConsumables>()
+                .eq(ProcurementSuppliesConsumables::getStoreId, id));
+        // 鍒ゆ柇鏄惁杩樻湁鑰楁潗 娌℃湁灏卞皢涓昏〃Store鍒犻櫎
+        if(CollectionUtils.isEmpty(consumables)) {
+            baseMapper.deleteById(id);
+        }
+    }
+
+    @Override
+    public  IPage<StoreDto> selectStoreList(Page page, StoreDto storeDto) {
+        IPage<StoreDto> iPage = baseMapper.selectStoreList(page, QueryWrappers.queryWrappers(storeDto));
+        return iPage;
+    }
+
+    /**
+     * 瀵煎嚭excel
+     * @param contentsId
+     * @param response
+     */
+    @Override
+    public void exportExcel(Integer contentsId, HttpServletResponse response) throws IOException {
+        List<StoreExcel> storeExcels = baseMapper.exportExcel(contentsId);
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("UTF-8");
+        // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
+        String fileName = null;
+        try {
+            fileName = URLEncoder.encode("鑰楁潗鍏ュ簱", "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException(e);
+        }
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+        WriteSheet writeSheet = EasyExcel.writerSheet(0, "鑰楁潗鍏ュ簱").head(StoreExcel.class).build();
+        excelWriter.write(storeExcels, writeSheet);
+        excelWriter.finish();
+    }
+}
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/SuppliersDirectoryContentsServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/SuppliersDirectoryContentsServiceImpl.java
new file mode 100644
index 0000000..ce0bde8
--- /dev/null
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/SuppliersDirectoryContentsServiceImpl.java
@@ -0,0 +1,76 @@
+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.require.mapper.SuppliersDirectoryContentsMapper;
+import com.ruoyi.require.pojo.SuppliersDirectoryContents;
+import com.ruoyi.require.service.SuppliersDirectoryContentsService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 鏈嶅姟鍜屼緵搴斿搧閲囪喘鐩綍 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2024-12-17 06:14:51
+ */
+@Service
+public class SuppliersDirectoryContentsServiceImpl extends ServiceImpl<SuppliersDirectoryContentsMapper, SuppliersDirectoryContents> implements SuppliersDirectoryContentsService {
+
+    @Override
+    public ArrayList<SuppliersDirectoryContents> directoryListing() {
+        ArrayList<SuppliersDirectoryContents> list = new ArrayList<>();
+        // 鏌ュ嚭涓�绾х洰褰�
+        List<SuppliersDirectoryContents> firstLevel = baseMapper.selectList(new LambdaQueryWrapper<SuppliersDirectoryContents>()
+                .isNull(SuppliersDirectoryContents::getParentId));
+
+        // 鏌ュ嚭鍚湁鐖惰妭鐐圭殑 骞堕�氳繃鐖惰妭鐐瑰垎缁�
+        List<SuppliersDirectoryContents> seconds = baseMapper.selectList(new LambdaQueryWrapper<SuppliersDirectoryContents>()
+                .isNotNull(SuppliersDirectoryContents::getParentId));
+        if(firstLevel.size() > 0){
+            Map<Integer, List<SuppliersDirectoryContents>> collect = seconds.stream()
+                    .collect(Collectors.groupingBy(SuppliersDirectoryContents::getParentId));
+            // 鏍规嵁鍒嗙粍鐨刱ey 璧嬪�煎搴旂殑children
+            for (int i = 0; i < firstLevel.size(); i++) {
+                recursion(firstLevel.get(i),collect);
+                list.add(firstLevel.get(i));
+            }
+        }
+        return list;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSuppliersDirectoryContentsNodeNames() {
+        List<SuppliersDirectoryContents> procurementSuppliesContents = baseMapper.selectList(null);
+        List<Map<String, Object>> collect = new ArrayList<>();
+        if(procurementSuppliesContents.size() > 0) {
+            collect = procurementSuppliesContents.stream().map(item -> {
+                HashMap<String, Object> map = new HashMap<>();
+                map.put("id", item.getId());
+                map.put("nodeName", item.getNodeName());
+                return map;
+            }).collect(Collectors.toList());
+        }
+        return collect;
+    }
+
+
+    public SuppliersDirectoryContents recursion(SuppliersDirectoryContents firstLevel, Map<Integer, List<SuppliersDirectoryContents>> collect) {
+        // 灏嗙埗鑺傜偣鐨刢hildren璧嬪��
+        if(collect.containsKey(firstLevel.getId())) {
+            List<SuppliersDirectoryContents> procurementSupplies = collect.get(firstLevel.getId());
+            firstLevel.setChildren(procurementSupplies);
+            for (int i = 0; i < procurementSupplies.size(); i++) {
+                recursion(procurementSupplies.get(i),collect);
+            }
+        }
+        return firstLevel;
+    }
+}
diff --git a/cnas-require/src/main/resources/mapper/FeIlluminationMapper.xml b/cnas-require/src/main/resources/mapper/FeIlluminationMapper.xml
new file mode 100644
index 0000000..70e1768
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/FeIlluminationMapper.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.require.mapper.FeIlluminationMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.require.pojo.FeIllumination">
+        <id column="intensity_illumination_id" property="intensityIlluminationId" />
+        <result column="device_id" property="deviceId" />
+        <result column="conclusion" property="conclusion" />
+        <result column="tester_id" property="testerId" />
+        <result column="checker_id" property="checkerId" />
+        <result column="test_date" property="testDate" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+    <select id="getFeLightningProtection" resultType="com.ruoyi.require.dto.FeIlluminationDto">
+        SELECT cdi.*, u1.name checker_user, u2.name tester_user, dv.device_name, dv.management_number
+        FROM cnas_fe_illumination cdi
+                 left join device dv on dv.id = cdi.device_id
+                 left join user u1 on u1.id = cdi.checker_id
+                 left join user u2 on u2.id = cdi.tester_id
+    </select>
+
+    <!-- 鏌ヨ鐓ф槑璁板綍 -->
+    <select id="selectFeIllumination" resultType="com.ruoyi.require.dto.FeIlluminationExportDto">
+        SELECT cdi.*,
+               dv.device_name,
+               dv.management_number,
+               DATE_FORMAT(d.calibration_date, '%Y-%m-%d') calibrationDateString,
+               DATE_FORMAT(d.next_calibration_date, '%Y-%m-%d') nextCalibrationDateString
+        FROM cnas_fe_illumination cdi
+                 left join device dv on dv.id = cdi.device_id
+                 LEFT JOIN (SELECT d.id,
+                                   dmr.calibration_date,
+                                   dmr.next_calibration_date
+                            FROM device d
+                                     LEFT JOIN device_metric_record dmr ON dmr.device_id = d.id
+                                AND dmr.type = 'calibrate'
+                            GROUP BY d.id
+                            HAVING max(dmr.id)) d ON d.id = cdi.device_id
+                 left join user u1 on u1.id = cdi.checker_id
+                 left join user u2 on u2.id = cdi.tester_id
+        where cdi.intensity_illumination_id = #{intensityIlluminationId}
+    </select>
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/FeLightningProtectionMapper.xml b/cnas-require/src/main/resources/mapper/FeLightningProtectionMapper.xml
new file mode 100644
index 0000000..4d3096d
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/FeLightningProtectionMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.require.mapper.FeLightningProtectionMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.require.pojo.FeLightningProtection">
+        <id column="lightning_protection_id" property="lightningProtectionId" />
+        <result column="file_name" property="fileName" />
+        <result column="system_file_name" property="systemFileName" />
+        <result column="detection_date" property="detectionDate" />
+        <result column="term_validity" property="termValidity" />
+        <result column="detection_unit" property="detectionUnit" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+    <select id="exportOfLightningProtectionDetection" resultType="com.ruoyi.require.excel.FeLightningProtectionExcel">
+        select * from cnas_fe_lightning_protection
+    </select>
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/FePowerStableMapper.xml b/cnas-require/src/main/resources/mapper/FePowerStableMapper.xml
new file mode 100644
index 0000000..39937b6
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/FePowerStableMapper.xml
@@ -0,0 +1,63 @@
+<?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.FePowerStableMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.require.pojo.FePowerStable">
+        <id column="power_stable_id" property="powerStableId" />
+        <result column="test_location" property="testLocation" />
+        <result column="test_date" property="testDate" />
+        <result column="device_id" property="deviceId" />
+        <result column="conclusion" property="conclusion" />
+        <result column="tester_id" property="testerId" />
+        <result column="checker_id" property="checkerId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+    <select id="getLaboratoryFacilityPowerStablePage" resultType="com.ruoyi.require.dto.FePowerStableDto">
+        SELECT cfps.*, u1.name checker_user, u2.name tester_user, dv.device_name, dv.management_number
+        FROM cnas_fe_power_stable cfps
+                 left join device dv on dv.id = cfps.device_id
+                 left join user u1 on u1.id = cfps.checker_id
+                 left join user u2 on u2.id = cfps.tester_id
+    </select>
+
+    <select id="getCalibrationDate" resultType="java.util.Map">
+        SELECT
+            d.device_name deviceName,
+            d.management_number managementNumber,
+            date_format(dmr.calibration_date,'%Y-%m-%d') calibrationDate,
+            date_format(dmr.next_calibration_date,'%Y-%m-%d') nextCalibrationDate
+        FROM
+            device d
+                LEFT JOIN device_metric_record dmr ON dmr.device_id = d.id
+                AND dmr.type = 'calibrate'
+        where d.id = #{deviceId}
+        GROUP BY
+            d.id
+    </select>
+
+    <!-- 鏌ヨ鐢垫簮绋冲畾鎬� -->
+    <select id="selectPowerStable" resultType="com.ruoyi.require.dto.FePowerStableExportDto">
+        SELECT cfps.*,
+               dv.device_name,
+               dv.management_number,
+               DATE_FORMAT(cfps.test_date, '%Y-%m-%d') testDateString,
+               DATE_FORMAT(d.calibration_date, '%Y-%m-%d') calibrationDateString,
+               DATE_FORMAT(d.next_calibration_date, '%Y-%m-%d') nextCalibrationDateString
+        FROM cnas_fe_power_stable cfps
+                 left join device dv on dv.id = cfps.device_id
+                 LEFT JOIN (SELECT d.id,
+                                   dmr.calibration_date,
+                                   dmr.next_calibration_date
+                            FROM device d
+                                     LEFT JOIN device_metric_record dmr ON dmr.device_id = d.id
+                                AND dmr.type = 'calibrate'
+                            GROUP BY d.id
+                            HAVING max(dmr.id)) d ON d.id = cfps.device_id
+                 left join user u1 on u1.id = cfps.checker_id
+                 left join user u2 on u2.id = cfps.tester_id
+        where cfps.power_stable_id = #{powerStableId}
+    </select>
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml b/cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml
new file mode 100644
index 0000000..b59bb72
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.require.mapper.FeTempHumDateMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.require.pojo.FeTempHumDate">
+        <id column="date_id" property="dateId" />
+        <result column="month_date" property="monthDate" />
+        <result column="test_area_name" property="testAreaName" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="create_user" property="createUser" />
+        <result column="update_user" property="updateUser" />
+    </resultMap>
+
+    <select id="getFeTempHumDate" resultType="com.ruoyi.require.dto.FeTempHumDateDto">
+        select * from (
+        select c.*, u.name create_name
+        from cnas_fe_temp_hum_date c
+        left join user u on c.create_user = u.id) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+    <select id="selectFeTempHumDateIncludeFormattedDate" resultType="java.lang.Integer">
+        select count(*)
+        from cnas_fe_temp_hum_date
+        where test_area_name = #{laboratory}
+          and month_date = #{formattedDate}
+    </select>
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml b/cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml
new file mode 100644
index 0000000..3a5cfa6
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.require.mapper.FeTempHumRecordMapper">
+
+    <select id="getFeTempHumRecordPage" resultType="com.ruoyi.require.dto.FeTempHumRecordDto">
+        select c.*, u1.name afternoon_recorder_user, u2.name morning_recorder_user
+        from cnas_fe_temp_hum_record c
+                 left join user u1 on u1.id = c.afternoon_recorder_id
+                 left join user u2 on u2.id = c.morning_recorder_id
+        where c.date_id = #{dateId}
+        ORDER BY c.temp_hum_id desc
+    </select>
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/ForeignRegisterMapper.xml b/cnas-require/src/main/resources/mapper/ForeignRegisterMapper.xml
new file mode 100644
index 0000000..a619f2f
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/ForeignRegisterMapper.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.require.mapper.ForeignRegisterMapper">
+
+    <!-- 澶栨潵浜哄憳鐧昏鍒嗛〉鏌ヨ -->
+    <select id="pageForeignRegister" resultType="com.ruoyi.require.dto.ForeignRegisterDto">
+        select *
+        from (select *
+        from cnas_foreign_register
+        <where>
+            <if test="beginDate != null and beginDate != '' and endDate != null and endDate != ''">
+                register_date between #{beginDate} and #{endDate}
+            </if>
+        </where>
+        order by create_time desc) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+    <select id="getForeignRegisterList" resultType="com.ruoyi.require.dto.ForeignRegisterDto">
+        select *
+        from (select cfr.*,
+        u1.signature_url accompanyingUrl,
+        u2.signature_url approveUrl
+        from cnas_foreign_register cfr
+        left join user u1 on u1.id = cfr.accompanying_id
+        left join user u2 on u2.id = cfr.approve_id
+        <where>
+            <if test="beginDate != null and beginDate != '' and endDate != null and endDate != ''">
+                cfr.register_date between #{beginDate} and #{endDate}
+            </if>
+        </where>
+        order by cfr.create_time desc) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/InternalWastesMapper.xml b/cnas-require/src/main/resources/mapper/InternalWastesMapper.xml
new file mode 100644
index 0000000..1ee1a73
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/InternalWastesMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.require.mapper.InternalWastesMapper">
+
+    <!-- 瀹夊叏鍐呭姟涓夊簾鐧昏鍒楄〃 -->
+    <select id="pageInternalWastes" resultType="com.ruoyi.require.dto.InternalWastesDto">
+        select *
+        from (select ciw.*,
+              u1.name create_user_name,
+              u2.name update_user_name
+        from cnas_internal_wastes ciw
+        left join user u1 on u1.id = ciw.create_user
+        left join user u2 on u2.id = ciw.update_user
+        order by ciw.create_time desc) a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+
+</mapper>
diff --git a/cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml b/cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml
new file mode 100644
index 0000000..20f4dd9
--- /dev/null
+++ b/cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ruoyi.require.mapper.ProcurementSuppliesStoreMapper">
+    <resultMap id="map" type="com.ruoyi.require.dto.StoreDto">
+        <id column="id" property="id"/>
+        <result column="consumables_id" property="consumablesId"/>
+        <result column="odd_numbers" property="oddNumbers"/>
+        <result column="consumables_name" property="consumablesName"/>
+        <result column="store_number" property="storeNumber"/>
+        <result column="total_price" property="totalPrice"/>
+        <result column="storage_user" property="storageUser"/>
+        <result column="storage_time" property="storageTime"/>
+        <result column="remark" property="remark"/>
+        <result column="registrant" property="registrant"/>
+        <result column="registrant_time" property="registrantTime"/>
+        <result column="storageUserName" property="storageUserName"/>
+        <result column="registrantName" property="registrantName"/>
+    </resultMap>
+
+    <resultMap id="storeExcelMap" type="com.ruoyi.require.excel.StoreExcel">
+        <result column="odd_numbers" property="oddNumbers"/>
+        <result column="consumables_name" property="consumablesName"/>
+        <result column="store_number" property="storeNumber"/>
+        <result column="total_price" property="totalPrice"/>
+        <result column="storage_time" property="storageTime"/>
+        <result column="remark" property="remark"/>
+        <result column="registrant_time" property="registrantTime"/>
+        <result column="storageUserName" property="storageUserName"/>
+        <result column="registrantName" property="registrantName"/>
+    </resultMap>
+
+
+    <select id="selectStoreList" resultMap="map">
+select * from (
+        SELECT
+        s.id,
+        c.id AS consumables_id,
+        s.contents_id,
+        s.odd_numbers,
+        c.consumables_name,
+        c.store_number,
+        c.total_price,
+        s.storage_user,
+        s.storage_time,
+        s.remark,
+        s.registrant,
+        s.registrant_time,
+        u.name AS storageUserName,
+        u1.name AS registrantName
+        FROM
+        `procurement_supplies_store` s
+        LEFT JOIN procurement_supplies_consumables c ON s.id = c.store_id
+        LEFT JOIN user u ON u.id = s.storage_user
+        LEFT JOIN user u1 ON u1.id = s.registrant
+        )a
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+    </select>
+
+    <select id="exportExcel" resultMap="storeExcelMap">
+        SELECT * FROM (
+                          SELECT
+                              s.odd_numbers,
+                              c.consumables_name,
+                              c.store_number,
+                              c.total_price,
+                              s.storage_time,
+                              s.remark,
+                              s.registrant_time,
+                              u.name AS storageUserName,
+                              u1.name AS registrantName
+                          FROM
+                              `procurement_supplies_store` s
+                                  LEFT JOIN procurement_supplies_consumables c ON s.id = c.store_id
+                                  LEFT JOIN user u ON u.id = s.storage_user
+                                  LEFT JOIN user u1 ON u1.id = s.registrant
+
+                      ) a
+    </select>
+
+
+
+</mapper>
\ No newline at end of file
diff --git a/cnas-require/src/main/resources/static/foreign-register.docx b/cnas-require/src/main/resources/static/foreign-register.docx
new file mode 100644
index 0000000..ca6eed5
--- /dev/null
+++ b/cnas-require/src/main/resources/static/foreign-register.docx
Binary files differ
diff --git a/cnas-require/src/main/resources/static/illumination.docx b/cnas-require/src/main/resources/static/illumination.docx
new file mode 100644
index 0000000..58311e0
--- /dev/null
+++ b/cnas-require/src/main/resources/static/illumination.docx
Binary files differ
diff --git a/cnas-require/src/main/resources/static/internal-wastes.docx b/cnas-require/src/main/resources/static/internal-wastes.docx
new file mode 100644
index 0000000..7f03f75
--- /dev/null
+++ b/cnas-require/src/main/resources/static/internal-wastes.docx
Binary files differ
diff --git a/cnas-require/src/main/resources/static/power-stable.docx b/cnas-require/src/main/resources/static/power-stable.docx
new file mode 100644
index 0000000..69fe3b1
--- /dev/null
+++ b/cnas-require/src/main/resources/static/power-stable.docx
Binary files differ
diff --git a/cnas-require/src/main/resources/static/temp_hum_date.docx b/cnas-require/src/main/resources/static/temp_hum_date.docx
new file mode 100644
index 0000000..2c91d51
--- /dev/null
+++ b/cnas-require/src/main/resources/static/temp_hum_date.docx
Binary files differ
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/dto/UpdateUserDto.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/dto/UpdateUserDto.java
new file mode 100644
index 0000000..474b874
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/dto/UpdateUserDto.java
@@ -0,0 +1,11 @@
+package com.ruoyi.web.controller.dto;
+
+import lombok.Data;
+
+@Data
+public class UpdateUserDto {
+
+    private String id;
+
+    private String ids;
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java
index 4bdb129..fba3273 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/UserController.java
@@ -5,6 +5,7 @@
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.common.core.domain.entity.User;
 import com.ruoyi.system.service.UserService;
+import com.ruoyi.web.controller.dto.UpdateUserDto;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 
@@ -48,5 +49,28 @@
         return Result.success(userService.getUserNow());
     }
 
+    /**
+     * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛閮ㄩ棬
+     * @return
+     */
+    @GetMapping ("/selectUserDepartmentLimsName")
+    @ApiOperation(value = "鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛閮ㄩ棬")
+    public Result<?> selectUserDepartmentLimsName(){
+        return Result.success("鎴愬姛", userService.selectUserDepartmentLimsName());
+    }
+
+    @PostMapping("/upUserDepardLimsId")
+    @ApiOperation(value = "淇敼浜哄憳鏄庣粏鎵�鍦ㄧ粍缁囨灦鏋�")
+    public Result<?> upUserDepardLimsId(@RequestBody UpdateUserDto dto){
+        return Result.success(userService.upUserDepardLimsId(dto.getIds(), dto.getId()));
+    }
+
+    @DeleteMapping("/delUserDepardLimsId")
+    @ApiOperation(value = "鍒犻櫎浜哄憳鏄庣粏鎵�鍦ㄧ粍缁囨灦鏋�")
+    public Result<?> delUserDepardLimsId(Integer id){
+        return Result.success(userService.delUserDepardLimsId(id));
+    }
+
+
 }
 
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/annotation/ValueTableShow.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/annotation/ValueTableShow.java
new file mode 100644
index 0000000..cd1a804
--- /dev/null
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/annotation/ValueTableShow.java
@@ -0,0 +1,15 @@
+package com.ruoyi.framework.annotation;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ValueTableShow {
+
+    int value() default 1;
+
+    String name() default "";
+
+    int width() default 0;
+
+}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/common/PrintChina.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/common/PrintChina.java
new file mode 100644
index 0000000..d02315e
--- /dev/null
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/common/PrintChina.java
@@ -0,0 +1,60 @@
+package com.ruoyi.framework.common;
+
+import com.ruoyi.framework.annotation.ValueTableShow;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.lang.reflect.Field;
+import java.util.*;
+
+/*鏉庢灄
+* 閫氳繃娉ㄨВ蹇�熺敓鎴恡able琛ㄥご*/
+
+public class PrintChina {
+
+    public static <T> List<Map<String, Object>> printChina(Class<T> tClass) {
+        //灏嗗疄浣撶被鐨勫睘鎬у拰娉ㄩ噴杞崲鎴愬弬鏁�
+        List<Field> fieldList = new ArrayList<>();
+        while (tClass != null){
+            fieldList.addAll(new ArrayList<>(Arrays.asList(tClass.getDeclaredFields())));
+            tClass = (Class<T>) tClass.getSuperclass();
+        }
+        Field[] fields = new Field[fieldList.size()];
+        fieldList.toArray(fields);
+        ArrayList<Map<String, Object>> list = new ArrayList<>();
+        for (Field field : fields) {
+            Map<String, Object> soundVo = new HashMap<>();
+            boolean bool = field.isAnnotationPresent(ApiModelProperty.class);
+            boolean bool2 = field.isAnnotationPresent(ValueTableShow.class);
+            if (bool2) {
+                int order = field.getAnnotation(ValueTableShow.class).value();
+                String value = field.getAnnotation(ValueTableShow.class).name();
+                int width = field.getAnnotation(ValueTableShow.class).width();
+                if (bool){
+                    value = value.isEmpty() ? field.getAnnotation(ApiModelProperty.class).value() : value;
+                }
+                soundVo.put("label", field.getName());
+                soundVo.put("value", value);
+                if(width>0){
+                    soundVo.put("width", width);
+                }
+                soundVo.put("order", order + "");
+                if(list.isEmpty()){
+                    list.add(soundVo);
+                }else{
+                    boolean isAdd = false;
+                    for (int i = 0; i < list.size(); i++) {
+                        Map<String, Object> map = list.get(i);
+                        if(order < Integer.parseInt(map.get("order").toString())){
+                            list.add(i, soundVo);
+                            isAdd = true;
+                            break;
+                        }
+                    }
+                    if (!isAdd) list.add(soundVo);
+                }
+            }
+        }
+        return list;
+    }
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java
index 9c0a6d3..b75fdb4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/UserService.java
@@ -27,5 +27,16 @@
      * @return
      */
     User getUserNow();
+
+    /**
+     * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛閮ㄩ棬
+     * @return
+     */
+    String selectUserDepartmentLimsName();
+
+
+    int upUserDepardLimsId(String ids, String id);
+
+    int delUserDepardLimsId(Integer id);
 }
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java
index 3241365..cc655fc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserServiceImpl.java
@@ -1,5 +1,7 @@
 package com.ruoyi.system.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.entity.User;
 import com.ruoyi.common.utils.QueryWrappers;
@@ -8,6 +10,7 @@
 import com.ruoyi.system.service.UserService;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -38,5 +41,25 @@
     public User getUserNow() {
         return baseMapper.getUserNow(SecurityUtils.getUserId().intValue());
     }
+
+    /**
+     * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛閮ㄩ棬
+     * @return
+     */
+    @Override
+    public String selectUserDepartmentLimsName() {
+        return baseMapper.selectUserDepartmentLimsName(SecurityUtils.getUserId().intValue());
+    }
+
+    @Override
+    public int upUserDepardLimsId(String ids, String id) {
+        List<Integer> userIds = JSON.parseArray(ids, Integer.class);
+        return baseMapper.update(null, Wrappers.<User>lambdaUpdate().in(User::getId, userIds).set(User::getDepartLimsId, id).set(User::getUpdateTime, LocalDateTime.now()).set(User::getUpdateBy,SecurityUtils.getLoginUser().getUsername()));
+    }
+
+    @Override
+    public int delUserDepardLimsId(Integer id) {
+        return baseMapper.update(null, Wrappers.<User>lambdaUpdate().eq(User::getId, id).set(User::getDepartLimsId, null).set(User::getUpdateTime, LocalDateTime.now()).set(User::getUpdateBy, SecurityUtils.getUsername()));
+    }
 }
 

--
Gitblit v1.9.3