From 653cbd6bc42565dbdcc7fdbe652874738b1908df Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期二, 25 七月 2023 15:32:34 +0800
Subject: [PATCH] LIMS管理系统框架-开发7-25标准库修改前

---
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateEquipmentPointDto.java            |   34 +
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/ClassifyMapper.java                       |    2 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/InstrumentMapper.java                     |    8 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/InspectionMaterialList.java                 |    2 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/InspectionDto.java                      |    7 
 standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java        |   10 
 inspection-server/src/main/resources/mapper/InspectionMapper.xml                                            |   13 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/EquipmentPointController.java         |   71 ++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateInstrumentDto.java                |   70 ++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/EquipmentPoint.java                         |   66 ++
 sys/src/main/java/com/yuanchu/limslaboratory/CodeGenerator.java                                             |    3 
 sys/src/main/resources/application-prod.yml                                                                 |    2 
 sys/src/main/resources/application.yml                                                                      |    5 
 standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateSpecificationsInformationDto.java   |    4 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/EquipmentPointService.java               |   15 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java                     |    2 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/InspectionService.java                   |    3 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java          |    8 
 standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateMaterialInformation.java            |   33 +
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Classify.java                               |   57 ++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Instrument.java                             |  103 +++
 laboratory-server/src/main/resources/mapper/InstrumentMapper.xml                                            |   17 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java    |   76 ++
 standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateSpeStateSpecificationsDto.java      |    4 
 standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SpecificationsController.java           |   27 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ClassifyServiceImpl.java            |   80 ++
 standard-server/src/main/resources/mapper/SpecificationsMapper.xml                                          |    3 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInformation.java                    |   81 +++
 standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductController.java                  |   12 
 framework/src/main/java/com/yuanchu/limslaboratory/exception/MyFileException.java                           |   18 
 framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java                                  |   69 ++
 standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Material.java                                 |    2 
 standard-server/src/main/java/com/yuanchu/limslaboratory/service/SpecificationsService.java                 |    6 
 framework/src/main/java/com/yuanchu/limslaboratory/config/WebMvcConfig.java                                 |    3 
 standard-server/src/main/java/com/yuanchu/limslaboratory/service/MaterialService.java                       |    3 
 standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java              |    2 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InstrumentServiceImpl.java          |   64 ++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/InstrumentController.java             |   99 +++
 laboratory-server/pom.xml                                                                                   |    6 
 user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java                               |   10 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/ClassifyService.java                     |   12 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/InstrumentService.java                   |   22 
 framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java                      |   36 +
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/EquipmentPointMapper.java                 |    9 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/EquipmentPointServiceImpl.java      |   56 ++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MetricalInformationServiceImpl.java |   52 +
 standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SerialNumberController.java             |   10 
 sys/src/main/resources/application-dev.yml                                                                  |    2 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateMetricalInformationDto.java       |   53 +
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateClassifyDto.java                  |   20 
 /dev/null                                                                                                   |   71 --
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MetricalInformationService.java          |   13 
 laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml                                   |    7 
 standard-server/src/main/java/com/yuanchu/limslaboratory/controller/StandardsController.java                |   12 
 user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java                      |    8 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java            |    6 
 standard-server/src/main/java/com/yuanchu/limslaboratory/controller/MaterialController.java                 |   18 
 laboratory-server/src/main/resources/mapper/EquipmentPointMapper.xml                                        |    5 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/ClassifyController.java               |   72 ++
 59 files changed, 1,414 insertions(+), 170 deletions(-)

diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/config/WebMvcConfig.java b/framework/src/main/java/com/yuanchu/limslaboratory/config/WebMvcConfig.java
index aa0c995..241a68a 100644
--- a/framework/src/main/java/com/yuanchu/limslaboratory/config/WebMvcConfig.java
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/config/WebMvcConfig.java
@@ -19,7 +19,6 @@
         registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
 
         //璁剧疆鏂囦欢铏氭嫙璺緞鏄犲皠
-        registry.addResourceHandler("/img/**").addResourceLocations("file:"+filePath+"/")
-                .addResourceLocations("file:"+filePath+"/");
+        registry.addResourceHandler("/img/**").addResourceLocations("file:"+filePath+"/");
     }
 }
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/exception/MyFileException.java b/framework/src/main/java/com/yuanchu/limslaboratory/exception/MyFileException.java
new file mode 100644
index 0000000..8c0033e
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/exception/MyFileException.java
@@ -0,0 +1,18 @@
+package com.yuanchu.limslaboratory.exception;
+
+public class MyFileException extends RuntimeException{
+    public MyFileException() {
+    }
+
+    public MyFileException(String message) {
+        super(message);
+    }
+
+    public MyFileException(Throwable cause) {
+        super(cause);
+    }
+
+    public MyFileException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java b/framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java
index 0dd0dfd..976777b 100644
--- a/framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java
@@ -1,16 +1,22 @@
 package com.yuanchu.limslaboratory.handler;
 
+import com.yuanchu.limslaboratory.exception.MyFileException;
+import com.yuanchu.limslaboratory.utils.MyUtil;
 import com.yuanchu.limslaboratory.vo.Result;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException;
+import org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException;
 import org.springframework.beans.ConversionNotSupportedException;
 import org.springframework.beans.TypeMismatchException;
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.http.converter.HttpMessageNotReadableException;
 import org.springframework.http.converter.HttpMessageNotWritableException;
 import org.springframework.jdbc.BadSqlGrammarException;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.multipart.MultipartException;
 
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -20,6 +26,13 @@
 @Slf4j
 @RestControllerAdvice
 public class GlobalExceptionHandler {
+
+    @Value("${spring.servlet.multipart.max-file-size}")
+    private String maxFileSize;
+
+    @Value("${spring.servlet.multipart.max-request-size}")
+    private String maxRequestSize;
+
     @ExceptionHandler(SQLException.class)
     public Result<?> handlerSQLException(SQLException e)
     {
@@ -155,6 +168,29 @@
         return Result.fail("闄ゆ暟涓嶈兘涓�0寮傚父");
     }
 
+    /**
+     *鏂囦欢杩囧ぇ鎶ラ敊鎻愮ず
+     */
+    @ExceptionHandler({MultipartException.class})
+    public Result<?> fileUploadExceptionHandler(MultipartException  e) {
+        String msg;
+        Throwable rootCause = e.getRootCause();
+        if (rootCause instanceof FileSizeLimitExceededException) {
+            msg="涓婁紶鏂囦欢杩囧ぇ銆愬崟涓枃浠跺ぇ灏忎笉寰楄秴杩�" + maxFileSize + "銆�";
+        }else if(rootCause instanceof SizeLimitExceededException){
+            msg="涓婁紶鏂囦欢杩囧ぇ銆愭�讳笂浼犲ぇ灏忎笉寰楄秴杩�" + maxRequestSize + "銆�";
+        }else {
+            msg="鏂囦欢涓婁紶澶辫触銆愭湇鍔″櫒寮傚父銆�";
+        }
+        return Result.fail(msg);
+    }
+
+    /** 鏂囦欢鍚庣紑鍚嶄笉閫氳繃杩斿洖鎻愮ず */
+    @ExceptionHandler({MyFileException.class})
+    public Result<?> myFileException(Exception e) {
+        return Result.fail("鎶辨瓑涓嶆敮鎸併��" + e.getMessage() +"銆戝悗缂�鐨勬枃浠讹紒");
+    }
+
     /** 鍏朵粬閿欒 */
     @ExceptionHandler({Exception.class})
     public Result<?> exception(Exception e) {
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java b/framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java
index 75e28eb..1fd71d9 100644
--- a/framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java
@@ -1,10 +1,16 @@
 package com.yuanchu.limslaboratory.utils;
 
+import com.yuanchu.limslaboratory.exception.MyFileException;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.tomcat.util.http.fileupload.IOUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
+import org.springframework.util.FileSystemUtils;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.PostConstruct;
 import java.io.ByteArrayInputStream;
+import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 
@@ -16,32 +22,62 @@
 public class FileSaveUtil {
 
     // 鍙杫ml涓殑璺緞 + /
-//    @Value("${file.path}")
-    private String FILE_PATH;
+    private static String FILE_PATH;
 
+    private static String[] ALLOWED;
+
+    @Value("${file.path}")
+    private String file;
+
+    @Value("${file.allowed}")
+    private String[] allowed;
+
+    @PostConstruct
+    public void getFile() {
+        FILE_PATH = this.file;
+    }
+
+    @PostConstruct
+    public void getAllowed(){
+        ALLOWED = this.allowed;
+    }
     /**
      * 瀛樺偍鏂囦欢涓诲嚱鏁�
-     * @param content 鏂囦欢浜岃繘鍒舵祦
-     * @param originalFilename 鏂囦欢鍚嶇О
+     * @param file 鏂囦欢浜岃繘鍒舵祦
      * @return 杩斿洖鏂囦欢鍚嶇О鐢ㄤ簬瀛樺偍鏁版嵁搴�
      */
-    public String StoreFile(byte[] content, String originalFilename) {
+    public static String StoreFile(MultipartFile file) {
+        String originalFilename = file.getOriginalFilename();
         // 鐢熸垚闅忔満鍚嶇О锛氭椂闂確闅忔満6浣嶆暟瀛�
         String FileName = System.currentTimeMillis() + "_" + MyUtil.getNumber(6);
-        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
+        String suffix = null;
+        if (originalFilename != null) {
+            suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
+            // 濡傛灉鍚庣紑鍚嶄笉閫氳繃鎶涘嚭寮傚父
+            if (!isFileAllowed(suffix)){
+                throw  new MyFileException(suffix);
+            }
+        }
         // 鍚嶇О鎷兼帴
         String fileName = FileName + suffix;
         // 杩涜瀛樺偍
-        storeFileWithFileName(content, fileName);
+        try {
+            storeFileWithFileName(file.getBytes(), fileName);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
         return fileName;
     }
 
+    public static Boolean DeleteFile(String fileName) {
+        return FileSystemUtils.deleteRecursively(new File(FILE_PATH + "/" + fileName));
+    }
     /**
      * 瀛樺偍鏂囦欢鍑芥暟
      * @param content 鏂囦欢浜岃繘鍒舵祦
      * @param fileName 鏂囦欢鍚嶇О
      */
-    private void storeFileWithFileName(byte[] content, String fileName) {
+    private static void storeFileWithFileName(byte[] content, String fileName) {
         // 瀛樺偍璺緞
         String path = FILE_PATH + java.io.File.separatorChar;
         // 鐩綍涓嶅瓨鍦ㄥ垯鍒涘缓
@@ -57,4 +93,21 @@
             MyUtil.PrintLog("瀛樺偍鏂囦欢寮傚父锛�" + e);
         }
     }
+
+    /**
+     * 鍒ゆ柇鏂囦欢鏄惁琚厑璁镐笂浼�
+     *
+     * @param fileName 鏂囦欢鍚�
+     * @return 鍏佽true, 鍚﹀垯false
+     */
+    private static boolean isFileAllowed(String fileName) {
+        // 鑾峰彇鍚庣紑鍚�
+        String suffixName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
+        for (String allow : ALLOWED) {
+            if (allow.equals(suffixName)) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java
index fc125fe..106c79a 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/InspectionMapper.java
@@ -19,4 +19,6 @@
 
     List<InspectionDto> selectAllInspection(int pageSize, int countSize, Integer state);
 
+    int selectInspectToCount(Integer state);
+
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/InspectionMaterialList.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/InspectionMaterialList.java
index dca2648..b362524 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/InspectionMaterialList.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/InspectionMaterialList.java
@@ -27,7 +27,7 @@
 
     @TableId(value = "id", type = IdType.AUTO)
     @ApiModelProperty(value = "id", hidden = true)
-    private int id;
+    private Integer id;
 
     @ApiModelProperty(value = "materialId")
     private String materialId;
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/InspectionDto.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/InspectionDto.java
index 2f3174e..cf7f25e 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/InspectionDto.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/InspectionDto.java
@@ -1,11 +1,18 @@
 package com.yuanchu.limslaboratory.pojo.dto;
 
 import com.yuanchu.limslaboratory.pojo.Inspection;
+import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value="InspectionDto妫�楠屽崟瀵硅薄", description="")
 public class InspectionDto extends Inspection implements Serializable {
 
     private static final long serialVersionUID = 1L;
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/InspectionService.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/InspectionService.java
index f4c1e86..ac69116 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/InspectionService.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/InspectionService.java
@@ -19,9 +19,10 @@
 
     Inspection addInspection(String userName,int type);
 
-    List<InspectionDto> selectAllInspection(int pageSize, int countSize, Integer state);
+    Map selectAllInspection(int pageSize, int countSize, Integer state);
 
     boolean delInspectionByInsId(String inspectionId);
 
     boolean subInspectionByInsId(String inspectionId);
+
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java
index 0f49d8c..a85c835 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java
@@ -12,6 +12,7 @@
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -39,8 +40,11 @@
     }
 
     @Override
-    public List<InspectionDto> selectAllInspection(int pageSize, int countSize, Integer state) {
-        return inspectionMapper.selectAllInspection((pageSize - 1) * countSize,pageSize * countSize, state);
+    public Map selectAllInspection(int pageSize, int countSize, Integer state) {
+        Map map = new HashMap();
+        map.put("data",inspectionMapper.selectAllInspection((pageSize - 1) * countSize,pageSize * countSize, state));
+        map.put("count", inspectionMapper.selectInspectToCount(state));
+        return map;
     }
 
     @Override
diff --git a/inspection-server/src/main/resources/mapper/InspectionMapper.xml b/inspection-server/src/main/resources/mapper/InspectionMapper.xml
index dd3aef4..8ba9919 100644
--- a/inspection-server/src/main/resources/mapper/InspectionMapper.xml
+++ b/inspection-server/src/main/resources/mapper/InspectionMapper.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yuanchu.limslaboratory.mapper.InspectionMapper">
-    <select id="selectAllInspection" resultType="InspectionDto">
-        select i.id, type, inspection_status, qualified_state, i.state, i.create_time, user_name, inspect_user_id, inspect_start_time, inspect_end_time, u.name inspectUserName
+    <select id="selectAllInspection" resultType="com.yuanchu.limslaboratory.pojo.dto.InspectionDto">
+        select i.id, type, inspection_status, qualified_state, i.create_time, user_name, inspect_start_time, inspect_end_time, u.name inspectUserName
         from inspection i left join user u
         on i.inspect_user_id = u.id
         <if test="state!=null">
@@ -11,4 +11,13 @@
         order by i.create_time desc
         limit #{pageSize},#{countSize}
     </select>
+    <select id="selectInspectToCount" resultType="java.lang.Integer">
+        select count(*)
+        from inspection i left join user u
+        on i.inspect_user_id = u.id
+        <if test="state!=null">
+            where state = #{state}
+        </if>
+    </select>
+
 </mapper>
diff --git a/laboratory-server/pom.xml b/laboratory-server/pom.xml
index f8e87c8..865f62c 100644
--- a/laboratory-server/pom.xml
+++ b/laboratory-server/pom.xml
@@ -20,5 +20,11 @@
             <artifactId>framework</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.yunchu.limslaboratory</groupId>
+            <artifactId>user-server</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
     </dependencies>
 </project>
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/ClassifyController.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/ClassifyController.java
index a47de28..7b4b808 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/ClassifyController.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/ClassifyController.java
@@ -1,9 +1,19 @@
 package com.yuanchu.limslaboratory.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import com.yuanchu.limslaboratory.pojo.Classify;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateClassifyDto;
+import com.yuanchu.limslaboratory.service.ClassifyService;
+import com.yuanchu.limslaboratory.utils.JackSonUtil;
+import com.yuanchu.limslaboratory.utils.MyUtil;
+import com.yuanchu.limslaboratory.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * <p>
@@ -13,8 +23,64 @@
  * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
  * @since 2023-07-20
  */
+@Api(tags = "瀹為獙瀹�-->璁惧鍙拌处-->1銆佸垎绫绘ā鍧�")
 @RestController
 @RequestMapping("/classify")
 public class ClassifyController {
 
+    @Autowired
+    private ClassifyService classifyService;
+
+    @ApiOperation("娣诲姞鍒嗙被锛氬鏋滈�夋嫨浜唍ame鍗虫坊鍔犵殑涓哄瓙鑺傜偣鏁版嵁锛涘鏋滄病鏈夐�夋嫨鍗虫坊鍔犵殑涓虹埗鑺傜偣鏁版嵁锛涘悗鍙板鐞�")
+    @PostMapping("/add")
+    public Result<?> addClassifyInformation(@RequestBody Classify classify) {
+        if (ObjectUtils.isEmpty(classify.getSonName())){
+            return Result.fail("璇峰~鍐欏垎绫诲悕绉帮紒");
+        }
+        Integer isAddClassifySuccess = classifyService.addClassifyInformation(classify);
+        if (isAddClassifySuccess == 1) {
+            if (ObjectUtils.isEmpty(classify.getSonName())){
+                return Result.success("娣诲姞鐖剁骇銆�"+ classify.getFatherName() +"銆戝垎绫绘垚鍔燂紒");
+            }
+            return Result.success("娣诲姞鍒嗙被銆�"+ classify.getSonName() +"銆戞垚鍔燂紒");
+        } else if (isAddClassifySuccess == 2){
+            return Result.fail("鎶辨瓑閲嶅娣诲姞鐖剁骇銆�"+ classify.getFatherName() +"銆戝垎绫伙紝娣诲姞澶辫触锛�");
+        } else if (isAddClassifySuccess == 3) {
+            return Result.fail("鎶辨瓑閲嶅娣诲姞瀛愮骇銆�"+ classify.getSonName() +"銆戯紝娣诲姞澶辫触锛�");
+        }
+        return Result.fail("娣诲姞鍒嗙被銆�"+ classify.getSonName() +"銆戝け璐ワ紒");
+    }
+
+    @ApiOperation("鍒嗙被渚ц竟鏍忓垪琛細濡傛灉sonName涓虹┖锛屽垯甯︾潃father_name鐨処d杩涜鐐瑰嚮鎿嶄綔")
+    @GetMapping("/list")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(value = "鍒嗙被鍚嶇О", name = "classifyName", dataTypeClass = String.class)
+    })
+    public Result<?> getListClassifyInformation(String classifyName) {
+        return Result.success(classifyService.getListClassifyInformation(classifyName));
+    }
+
+    @ApiOperation("鍒犻櫎鍒嗙被")
+    @DeleteMapping("/delete")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(value = "鍒嗙被Id", name = "classifyId", dataTypeClass = String.class)
+    })
+    public Result<?> deleteClassifyInformation(String classifyId) {
+        Boolean isDeleteSuccess = classifyService.deleteClassifyInformation(classifyId);
+        if (isDeleteSuccess){
+            return Result.success("鍒犻櫎鍒嗙被鎴愬姛锛�");
+        }
+        return Result.fail("鍒犻櫎鍒嗙被澶辫触锛�");
+    }
+
+    @ApiOperation("鏇存柊鍒嗙被")
+    @PutMapping("/update")
+    public Result<?> updateClassifyInformation(@RequestBody UpdateClassifyDto updateClassifyDto) throws Exception {
+        Classify classify = JackSonUtil.unmarshal(JackSonUtil.marshal(updateClassifyDto), Classify.class);
+        Boolean isUpdateClassifySuccess = classifyService.updateClassifyInformation(classify);
+        if (isUpdateClassifySuccess){
+            return Result.success("鏇存柊鍒嗙被鎴愬姛锛�");
+        }
+        return Result.fail("鏇存柊鍒嗙被澶辫触锛�");
+    }
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/EquipmentPointController.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/EquipmentPointController.java
index ae1075c..4753c3e 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/EquipmentPointController.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/EquipmentPointController.java
@@ -1,9 +1,26 @@
 package com.yuanchu.limslaboratory.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.limslaboratory.pojo.EquipmentPoint;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateEquipmentPointDto;
+import com.yuanchu.limslaboratory.service.EquipmentPointService;
+import com.yuanchu.limslaboratory.utils.JackSonUtil;
+import com.yuanchu.limslaboratory.utils.MyUtil;
+import com.yuanchu.limslaboratory.utils.RedisUtil;
+import com.yuanchu.limslaboratory.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -13,8 +30,58 @@
  * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
  * @since 2023-07-20
  */
+@Api(tags = "瀹為獙瀹�-->璁惧鍙拌处-->3銆佽澶囩爜鐐�")
 @RestController
 @RequestMapping("/equipment-point")
 public class EquipmentPointController {
 
+    @Autowired
+    private EquipmentPointService equipmentPointService;
+
+    @ApiOperation("娣诲姞璁惧鐮佺偣")
+    @PostMapping("/add")
+    public Result<?> addEquipmentPointInformation(@RequestHeader("X-Token") String token, @RequestBody EquipmentPoint equipmentPoint) throws Exception {
+        Object object = RedisUtil.get(token);
+        Map<String, Object> unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(object), Map.class);
+        equipmentPoint.setUserId((Integer) unmarshal.get("id"));
+        Integer isInsertSuccess = equipmentPointService.addEquipmentPointInformation(equipmentPoint);
+        if (isInsertSuccess == 1){
+            return Result.success("娣诲姞銆�"+ equipmentPoint.getEquipmentPointName() +"銆戞垚鍔燂紒");
+        }
+        return Result.fail("娣诲姞銆�"+ equipmentPoint.getEquipmentPointName() +"銆戝け璐ワ紒璁惧鐮佺偣缂栫爜閲嶅锛�");
+    }
+
+    @ApiOperation("鏌ヨ鎵�鏈夎澶囩爜鐐规暟鎹�")
+    @GetMapping("/list")
+    public Result<?> getListEquipmentPointInformation() {
+        List<Map<String, Object>> list = equipmentPointService.getListEquipmentPointInformation();
+        return Result.success(list);
+    }
+
+    @ApiOperation("鏍规嵁鐮佺偣Id鍒犻櫎鏁版嵁")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "equipmentPointId", value = "璁惧鐮佺偣Id", dataTypeClass = Integer.class, required = true)
+    })
+    @DeleteMapping("/delete")
+    public Result<?> deleteEquipmentPointInformation(Integer equipmentPointId) {
+        Integer isDeleteSuccess = equipmentPointService.deleteEquipmentPointInformation(equipmentPointId);
+        if (isDeleteSuccess == 1){
+            return Result.success("鍒犻櫎鎴愬姛锛�");
+        }
+        return Result.fail("鍒犻櫎澶辫触锛�");
+    }
+
+    @ApiOperation("鏍规嵁鐮佺偣Id鏇存柊鏁版嵁")
+    @PutMapping("/update")
+    public Result<?> updateEquipmentPointInformation(@RequestHeader("X-Token") String token, @RequestBody UpdateEquipmentPointDto updateEquipmentPointDto) throws Exception {
+        Object object = RedisUtil.get(token);
+        Map<String, Object> unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(object), Map.class);
+        EquipmentPoint equipmentPoint = JackSonUtil.unmarshal(JackSonUtil.marshal(updateEquipmentPointDto), EquipmentPoint.class);
+        equipmentPoint.setUserId((Integer) unmarshal.get("id"));
+        Integer isUpdateSuccess = equipmentPointService.updateEquipmentPointInformation(equipmentPoint);
+        if (isUpdateSuccess == 1){
+            return Result.success("鏇存柊鎴愬姛锛�");
+        }
+        return Result.fail("鏇存柊澶辫触锛�");
+    }
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/InstrumentController.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/InstrumentController.java
index 3b1ee87..3c95351 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/InstrumentController.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/InstrumentController.java
@@ -1,9 +1,24 @@
 package com.yuanchu.limslaboratory.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.limslaboratory.pojo.Instrument;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateInstrumentDto;
+import com.yuanchu.limslaboratory.service.InstrumentService;
+import com.yuanchu.limslaboratory.service.UserService;
+import com.yuanchu.limslaboratory.utils.JackSonUtil;
+import com.yuanchu.limslaboratory.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -13,8 +28,88 @@
  * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
  * @since 2023-07-20
  */
+@Api(tags = "瀹為獙瀹�-->璁惧鍙拌处-->2銆佷华鍣ㄦā鍧�")
 @RestController
 @RequestMapping("/instrument")
 public class InstrumentController {
 
+    @Autowired
+    private InstrumentService instrumentService;
+
+    @Autowired
+    private UserService userService;
+
+    @ApiOperation("娣诲姞浠櫒璁惧")
+    @PostMapping("/add")
+    public Result<?> addInstrumentInformation(@RequestBody Instrument instrument) {
+        Integer isInsertSuccess = instrumentService.addInstrumentInformation(instrument);
+        if (isInsertSuccess == 1){
+            return Result.success("娣诲姞銆�" + instrument.getEquipmentName() + "銆戞垚鍔�!");
+        }
+        return Result.fail("浠櫒璁惧缂栧彿閲嶅锛屾坊鍔犮��" + instrument.getEquipmentName() + "銆戝け璐�! ");
+    }
+
+    @ApiOperation("鏍规嵁鍒嗙被Id锛氬垎椤靛垪琛ㄥ睍绀�")
+    @GetMapping("/list")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "classifyId", value = "鍒嗙被Id", dataTypeClass = Integer.class, required = true),
+            @ApiImplicitParam(name = "pageNo", value = "璧峰椤�", dataTypeClass = Integer.class, required = true),
+            @ApiImplicitParam(name = "pageSize", value = "姣忎竴椤垫暟閲�", dataTypeClass = Integer.class, required = true),
+            @ApiImplicitParam(name = "conditions", value = "鏌ヨ鐘舵��:榛樿鍏ㄩ儴", dataTypeClass = Integer.class),
+            @ApiImplicitParam(name = "whetherWhether", value = "鏄惁宸茶繃鏈�", dataTypeClass = Boolean.class),
+            @ApiImplicitParam(name = "numberOrNameOrSpecifications", value = "缂栧彿/璁惧鍚嶇О/瑙勬牸鍨嬪彿", dataTypeClass = String.class)
+    })
+    public Result<?> getListInstrumentInformation(Integer pageNo,
+                                                  Integer pageSize,
+                                                  Integer conditions,
+                                                  Integer classifyId,
+                                                  Boolean whetherWhether,
+                                                  String numberOrNameOrSpecifications) {
+        IPage<Map<String, Object>> pageList = instrumentService.getListInstrumentInformation(conditions, whetherWhether, numberOrNameOrSpecifications,
+                classifyId, new Page<Objects>(pageNo, pageSize));
+        Map<String, Object> map = new HashMap<>();
+        map.put("row", pageList.getRecords());
+        map.put("total", pageList.getTotal());
+        return Result.success(map);
+    }
+
+    @ApiOperation("鍒犻櫎浠櫒鏁版嵁")
+    @DeleteMapping("/delete")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "instrumentId", value = "浠櫒Id", dataTypeClass = String.class, required = true)
+    })
+    public Result<?> deleteInstrumentInformation(String instrumentId) {
+        Boolean isDeleteSuccess = instrumentService.deleteInstrumentInformation(instrumentId);
+        if (isDeleteSuccess){
+            return Result.success("鍒犻櫎浠櫒鎴愬姛锛�");
+        }
+        return Result.fail("鍒犻櫎浠櫒澶辫触锛�");
+    }
+
+    @ApiOperation("娣诲姞浠櫒鏃朵繚绠′汉涓嬫媺妗嗘暟鎹�")
+    @GetMapping("/get_user")
+    public Result<?> getMapUserInformation() {
+        return Result.success(userService.getUserNameAndId());
+    }
+
+    @ApiOperation("鏍规嵁浠櫒Id鑾峰彇淇℃伅鐢ㄤ簬缂栬緫")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "InstrumentId", value = "鍒嗙被Id", dataTypeClass = Integer.class, required = true)
+    })
+    @GetMapping("/get_instrument")
+    public Result<?> getIdInstrumentInformation(Integer InstrumentId) {
+        Instrument idInstrumentInformation = instrumentService.getIdInstrumentInformation(InstrumentId);
+        return Result.success(idInstrumentInformation);
+    }
+
+    @ApiOperation("鏍规嵁浠櫒Id鏇存柊鏁版嵁")
+    @PutMapping("/update")
+    public Result<?> updateEquipmentPointInformation(@RequestBody UpdateInstrumentDto updateInstrumentDto) throws Exception {
+        Instrument instrument = JackSonUtil.unmarshal(JackSonUtil.marshal(updateInstrumentDto), Instrument.class);
+        Integer isUpdateSuccess = instrumentService.updateEquipmentPointInformation(instrument);
+        if (isUpdateSuccess == 1){
+            return Result.success("鏇存柊銆�" + instrument.getEquipmentName() + "銆戞垚鍔�!");
+        }
+        return Result.fail("浠櫒璁惧缂栧彿閲嶅锛屾洿鏂般��" + instrument.getEquipmentName() + "銆戝け璐�! ");
+    }
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java
index 6b7ceb6..658b589 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java
@@ -1,9 +1,24 @@
 package com.yuanchu.limslaboratory.controller;
 
+import com.yuanchu.limslaboratory.pojo.EquipmentPoint;
+import com.yuanchu.limslaboratory.pojo.MetricalInformation;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateEquipmentPointDto;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateMetricalInformationDto;
+import com.yuanchu.limslaboratory.service.MetricalInformationService;
+import com.yuanchu.limslaboratory.service.UserService;
+import com.yuanchu.limslaboratory.utils.JackSonUtil;
+import com.yuanchu.limslaboratory.utils.RedisUtil;
+import com.yuanchu.limslaboratory.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,8 +28,63 @@
  * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
  * @since 2023-07-20
  */
+@Api(tags = "瀹為獙瀹�-->璁惧鍙拌处-->4銆佽閲忎俊鎭�")
 @RestController
 @RequestMapping("/metrical-information")
 public class MetricalInformationController {
 
+    @Autowired
+    private MetricalInformationService metricalInformationService;
+
+    @Autowired
+    private UserService userService;
+
+    @ApiOperation("娣诲姞璁¢噺淇℃伅")
+    @PostMapping("/add")
+    public Result<?> addMetricalInformation(MetricalInformation metricalInformation,
+                                            @RequestPart(value = "file", required = false) MultipartFile file) {
+        Integer isInsertSuccess = metricalInformationService.addEquipmentPointInformation(metricalInformation, file);
+        if (isInsertSuccess == 1){
+            return Result.success("娣诲姞銆�"+ metricalInformation.getMeasurementUnit() +"銆戞垚鍔燂紒");
+        }
+        return Result.fail("娣诲姞銆�"+ metricalInformation.getMeasurementUnit() +"銆戝け璐ワ紒璁惧鐮佺偣缂栫爜閲嶅锛�");
+    }
+
+    @ApiOperation("鏌ヨ鎵�鏈夎閲忎俊鎭暟鎹�")
+    @GetMapping("/list")
+    public Result<?> getListMetricalInformation() {
+        List<Map<String, Object>> list = metricalInformationService.getListEquipmentPointInformation();
+        return Result.success(list);
+    }
+
+    @ApiOperation("鏍规嵁璁¢噺淇℃伅Id鍒犻櫎鏁版嵁")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "metricalInformationId", value = "璁¢噺淇℃伅Id", dataTypeClass = Integer.class, required = true)
+    })
+    @DeleteMapping("/delete")
+    public Result<?> deleteMetricalInformation(Integer metricalInformationId) {
+        Integer isDeleteSuccess = metricalInformationService.deleteMetricalInformation(metricalInformationId);
+        if (isDeleteSuccess == 1){
+            return Result.success("鍒犻櫎鎴愬姛锛�");
+        }
+        return Result.fail("鍒犻櫎澶辫触锛�");
+    }
+
+    @ApiOperation("鏍规嵁璁¢噺淇℃伅Id鏇存柊鏁版嵁")
+    @PutMapping("/update")
+    public Result<?> updateMetricalInformation(UpdateMetricalInformationDto updateMetricalInformationDto,
+                                                     @RequestPart(value = "file", required = false) MultipartFile file) throws Exception {
+        MetricalInformation metricalInformation = JackSonUtil.unmarshal(JackSonUtil.marshal(updateMetricalInformationDto), MetricalInformation.class);
+        Integer isUpdateSuccess = metricalInformationService.updateMetricalInformation(metricalInformation, file);
+        if (isUpdateSuccess == 1){
+            return Result.success("鏇存柊鎴愬姛锛�");
+        }
+        return Result.fail("鏇存柊澶辫触锛�");
+    }
+
+    @ApiOperation("娣诲姞璁¢噺淇℃伅鏃惰礋璐d汉涓嬫媺妗嗘暟鎹�")
+    @GetMapping("/get_user")
+    public Result<?> getMapUserInformation() {
+        return Result.success(userService.getUserNameAndId());
+    }
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/Classify.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/Classify.java
deleted file mode 100644
index f2b7f24..0000000
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/Classify.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.yuanchu.limslaboratory.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
-import java.io.Serializable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
- * @since 2023-07-20
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@ApiModel(value="Classify瀵硅薄", description="")
-public class Classify implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "鍒嗙被涓婚敭")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    @ApiModelProperty(value = "鍒嗙被鐖跺悕绉�")
-    private String name;
-
-    @ApiModelProperty(value = "鍒嗙被瀛愬悕绉�")
-    private String sonName;
-
-    @ApiModelProperty(value = "閫昏緫鍒犻櫎")
-    private Integer state;
-
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private LocalDateTime updateTime;
-
-    @ApiModelProperty(value = "涔愯閿�")
-    private Integer version;
-
-
-}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/EquipmentPoint.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/EquipmentPoint.java
deleted file mode 100644
index 88a2b46..0000000
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/EquipmentPoint.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.yuanchu.limslaboratory.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
-import java.io.Serializable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
- * @since 2023-07-20
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@ApiModel(value="EquipmentPoint瀵硅薄", description="")
-public class EquipmentPoint implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "涓婚敭")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    @ApiModelProperty(value = "浠櫒Id 鍏宠仈")
-    private Integer instrumentId;
-
-    @ApiModelProperty(value = "鐢ㄦ埛Id 鍏宠仈")
-    private Integer userId;
-
-    @ApiModelProperty(value = "鐮佺偣缂栧彿")
-    private String equipmentPoint;
-
-    @ApiModelProperty(value = "鐮佺偣鍚嶇О")
-    private String equipmentPointName;
-
-    @ApiModelProperty(value = "鍗曚綅")
-    private String unit;
-
-    @ApiModelProperty(value = "鎻忚堪")
-    private String describe;
-
-    @ApiModelProperty(value = "鍒涘缓鏃ユ湡")
-    private LocalDateTime createTime;
-
-    @ApiModelProperty(value = "鏇存柊鏃ユ湡")
-    private LocalDateTime updateTime;
-
-    @ApiModelProperty(value = "閫昏緫鍒犻櫎")
-    private Integer state;
-
-    @ApiModelProperty(value = "涔愯閿�")
-    private Integer version;
-
-
-}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/Instrument.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/Instrument.java
deleted file mode 100644
index 2f9f6f9..0000000
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/Instrument.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.yuanchu.limslaboratory.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
-import java.io.Serializable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
- * @since 2023-07-20
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@ApiModel(value="Instrument瀵硅薄", description="")
-public class Instrument implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "涓婚敭")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    @ApiModelProperty(value = "鍒嗙被ID 鍏宠仈")
-    private Integer classifyId;
-
-    @ApiModelProperty(value = "浠櫒璁惧缂栧彿")
-    private String equipmentCode;
-
-    @ApiModelProperty(value = "浠櫒璁惧鍚嶇О")
-    private String equipmentName;
-
-    @ApiModelProperty(value = "榛樿1锛�1锛氳繍琛屻��2锛氭晠闅溿��3锛氭姤淇��4锛氭淇��5锛氬緟鏈�")
-    private Integer condition;
-
-    @ApiModelProperty(value = "瑙勬牸鍨嬪彿")
-    private String specificationsModels;
-
-    @ApiModelProperty(value = "娴嬮噺鑼冨洿")
-    private String measuringRange;
-
-    @ApiModelProperty(value = "璇樊")
-    private String errorRate;
-
-    @ApiModelProperty(value = "鐢熶骇鍘傚")
-    private String manufacturer;
-
-    @ApiModelProperty(value = "鍒拌揣鏃ユ湡")
-    private LocalDateTime arrivalDate;
-
-    @ApiModelProperty(value = "楠屾敹鏃ユ湡")
-    private LocalDateTime acceptanceDate;
-
-    @ApiModelProperty(value = "瀛樻斁鍦�")
-    private String storagePlace;
-
-    @ApiModelProperty(value = "淇濈浜�")
-    private Integer keeper;
-
-    @ApiModelProperty(value = "鏄惁鏀寔鏁伴噰")
-    private Integer whetherDataAcquisition;
-
-    @ApiModelProperty(value = "鏄惁闇�瑕佷华鍣ㄨ澶囪閲忥細濡傛灉闇�瑕佽閲忓懆鏈熷繀濉紱濡傛灉涓嶉渶瑕佽閲忓懆鏈熶笉蹇呭~")
-    private Integer equipmentMeasurement;
-
-    @ApiModelProperty(value = "璁¢噺鎴鏈夋晥鏈�")
-    private LocalDateTime termValidity;
-
-    @ApiModelProperty(value = "鎻忚堪")
-    private String describe;
-
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private LocalDateTime updateTime;
-
-    @ApiModelProperty(value = "閫昏緫鍒犻櫎")
-    private Integer state;
-
-    @ApiModelProperty(value = "涔愯閿�")
-    private Integer version;
-
-
-}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/MetricalInformation.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/MetricalInformation.java
deleted file mode 100644
index 413f938..0000000
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/entity/MetricalInformation.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.yuanchu.limslaboratory.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
-import java.io.Serializable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
- * @since 2023-07-20
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@ApiModel(value="MetricalInformation瀵硅薄", description="")
-public class MetricalInformation implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "涓婚敭")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    @ApiModelProperty(value = "鐢ㄦ埛鍏宠仈Id")
-    private Integer userId;
-
-    @ApiModelProperty(value = "璁¢噺鍗曚綅")
-    private String measurementUnit;
-
-    @ApiModelProperty(value = "寮�濮嬫棩鏈�")
-    private LocalDateTime beginDate;
-
-    @ApiModelProperty(value = "缁撴潫鏃ユ湡")
-    private LocalDateTime endDate;
-
-    @ApiModelProperty(value = "涓嶇‘瀹氬害")
-    private String uncertainty;
-
-    @ApiModelProperty(value = "缁撴灉 1锛氬悎鏍硷紱2锛氱煫姝e悗鍙敤锛�3锛氫笉鍚堟牸")
-    private Integer result;
-
-    @ApiModelProperty(value = "鎬ц兘鎸囨爣")
-    private String performanceIndex;
-
-    @ApiModelProperty(value = "澶囨敞")
-    private String remarks;
-
-    @ApiModelProperty(value = "鏂囦欢璺緞")
-    private String filePath;
-
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    private LocalDateTime createTime;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private LocalDateTime updateTime;
-
-    @ApiModelProperty(value = "閫昏緫鍒犻櫎")
-    private Integer state;
-
-    @ApiModelProperty(value = "涔愯閿�")
-    private Integer version;
-
-
-}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/ClassifyMapper.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/ClassifyMapper.java
index 44ca9c2..4d2856c 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/ClassifyMapper.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/ClassifyMapper.java
@@ -1,6 +1,6 @@
 package com.yuanchu.limslaboratory.mapper;
 
-import com.yuanchu.limslaboratory.entity.Classify;
+import com.yuanchu.limslaboratory.pojo.Classify;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/EquipmentPointMapper.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/EquipmentPointMapper.java
index f84a489..3dd46b8 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/EquipmentPointMapper.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/EquipmentPointMapper.java
@@ -1,7 +1,13 @@
 package com.yuanchu.limslaboratory.mapper;
 
-import com.yuanchu.limslaboratory.entity.EquipmentPoint;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.limslaboratory.pojo.EquipmentPoint;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -13,4 +19,5 @@
  */
 public interface EquipmentPointMapper extends BaseMapper<EquipmentPoint> {
 
+    List<Map<String, Object>> getListEquipmentPointInformation();
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/InstrumentMapper.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/InstrumentMapper.java
index 9c784a7..64b717a 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/InstrumentMapper.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/InstrumentMapper.java
@@ -1,7 +1,12 @@
 package com.yuanchu.limslaboratory.mapper;
 
-import com.yuanchu.limslaboratory.entity.Instrument;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.limslaboratory.pojo.Instrument;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -13,4 +18,5 @@
  */
 public interface InstrumentMapper extends BaseMapper<Instrument> {
 
+    IPage<Map<String, Object>> getListInstrumentInformation(Integer conditions,Boolean whetherWhether, String numberOrNameOrSpecifications, Integer classifyId, Page<Objects> page);
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java
index a10d744..987c803 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java
@@ -1,7 +1,10 @@
 package com.yuanchu.limslaboratory.mapper;
 
-import com.yuanchu.limslaboratory.entity.MetricalInformation;
+import com.yuanchu.limslaboratory.pojo.MetricalInformation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +16,5 @@
  */
 public interface MetricalInformationMapper extends BaseMapper<MetricalInformation> {
 
+    List<Map<String, Object>> getListEquipmentPointInformation();
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Classify.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Classify.java
new file mode 100644
index 0000000..8bb4eb1
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Classify.java
@@ -0,0 +1,57 @@
+package com.yuanchu.limslaboratory.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="Classify瀵硅薄", description="")
+public class Classify implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "鍒嗙被涓婚敭", hidden = true)
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒嗙被鐖跺悕绉�", example = "娓╁害娴嬮噺浠〃")
+    private String fatherName;
+
+    @ApiModelProperty(value = "鍒嗙被瀛愬悕绉�", example = "浣撴俯璁�",required = true)
+    private String sonName;
+
+    @TableLogic(value = "1", delval = "0")
+    @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+    private Integer state;
+
+    @TableField(fill = FieldFill.INSERT)
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "涔愯閿�", hidden = true)
+    private Integer version;
+
+
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/EquipmentPoint.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/EquipmentPoint.java
new file mode 100644
index 0000000..0d9a4f5
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/EquipmentPoint.java
@@ -0,0 +1,66 @@
+package com.yuanchu.limslaboratory.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="EquipmentPoint瀵硅薄", description="")
+public class EquipmentPoint implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "涓婚敭", hidden = true)
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "浠櫒Id 鍏宠仈", example = "1", required = true)
+    private Integer instrumentId;
+
+    @ApiModelProperty(value = "鐢ㄦ埛Id 鍏宠仈", hidden = true)
+    private Integer userId;
+
+    @ApiModelProperty(value = "鐮佺偣缂栧彿", example = "Area-1", required = true)
+    private String equipmentPoint;
+
+    @ApiModelProperty(value = "鐮佺偣鍚嶇О", example = "瀵间綋灞忚斀锛堝鍘氶潰绉級", required = true)
+    private String equipmentPointName;
+
+    @ApiModelProperty(value = "鍗曚綅", example = "mm", required = true)
+    private String unit;
+
+    @ApiModelProperty(value = "鎻忚堪", example = "鐤簡锛屽仛涓嶄簡")
+    private String descriptiveness;
+
+    @TableLogic(value = "1", delval = "0")
+    @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+    private Integer state;
+
+    @TableField(fill = FieldFill.INSERT)
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+    private Date createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+    private Date updateTime;
+
+    @ApiModelProperty(value = "涔愯閿�", hidden = true)
+    private Integer version;
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Instrument.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Instrument.java
new file mode 100644
index 0000000..0b581ec
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Instrument.java
@@ -0,0 +1,103 @@
+package com.yuanchu.limslaboratory.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="Instrument瀵硅薄", description="")
+public class Instrument implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "涓婚敭", hidden = true)
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒嗙被ID 鍏宠仈", example = "1", required = true)
+    private Integer classifyId;
+
+    @ApiModelProperty(value = "淇濈浜猴細鐢ㄦ埛琛ㄥ叧鑱擨d", example = "9", required = true)
+    private Integer userId;
+
+    @ApiModelProperty(value = "浠櫒璁惧缂栧彿", example = "JSTC-W1-00001", required = true)
+    private String equipmentCode;
+
+    @ApiModelProperty(value = "浠櫒璁惧鍚嶇О", example = "鏁板瓧鐢垫ˉ", required = true)
+    private String equipmentName;
+
+    @ApiModelProperty(value = "榛樿1锛�1锛氳繍琛屻��2锛氭晠闅溿��3锛氭姤淇��4锛氭淇��5锛氬緟鏈�", example = "1", required = true)
+    private Integer conditions;
+
+    @ApiModelProperty(value = "瑙勬牸鍨嬪彿", example = "WCDMS-1", required = true)
+    private String specificationsModels;
+
+    @ApiModelProperty(value = "娴嬮噺鑼冨洿", example = "12姣背")
+    private String measuringRange;
+
+    @ApiModelProperty(value = "璇樊", example = "0.000001寰背")
+    private String errorRate;
+
+    @ApiModelProperty(value = "鐢熶骇鍘傚", example = "姹熻嫃榈烽洀")
+    private String manufacturer;
+
+    @ApiModelProperty(value = "鍒拌揣鏃ユ湡", example = "2001-07-06", dataType = "date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date arrivalDate;
+
+    @ApiModelProperty(value = "楠屾敹鏃ユ湡", example = "2060-07-06", dataType = "date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date acceptanceDate;
+
+    @ApiModelProperty(value = "瀛樻斁鍦�", example = "鍦扮悆浜氭床涓浗姹熻嫃鍗楅��")
+    private String storagePlace;
+
+    @ApiModelProperty(value = "鏄惁鏀寔鏁伴噰锛�1锛氭敮鎸侊紱0锛氫笉鏀寔", example = "1")
+    private Integer whetherDataAcquisition;
+
+    @ApiModelProperty(value = "鏄惁闇�瑕佷华鍣ㄨ澶囪閲忥細濡傛灉闇�瑕佽閲忓懆鏈熷繀濉紱濡傛灉涓嶉渶瑕佽閲忓懆鏈熶笉蹇呭~.1锛氶渶瑕侊紱0锛氫笉闇�瑕�", example = "0")
+    private Integer equipmentMeasurement;
+
+    @ApiModelProperty(value = "璁¢噺鎴鏈夋晥鏈燂細涓巈quipmentMeasurement鐩稿叧鑱�", example = "12")
+    private Integer termValidity;
+
+    @ApiModelProperty(value = "鎻忚堪", example = "鐤媯鏄熸湡浜旓紒锛侊紒")
+    private String descriptiveness;
+
+    @JsonIgnore
+    @TableLogic(value = "1", delval = "0")
+    @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+    private Integer state;
+
+    @JsonIgnore
+    @TableField(fill = FieldFill.INSERT)
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+    private Date createTime;
+
+    @JsonIgnore
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+    private Date updateTime;
+
+    @JsonIgnore
+    @ApiModelProperty(value = "涔愯閿�", hidden = true)
+    private Integer version;
+
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInformation.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInformation.java
new file mode 100644
index 0000000..660d10d
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInformation.java
@@ -0,0 +1,81 @@
+package com.yuanchu.limslaboratory.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2023-07-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="MetricalInformation瀵硅薄", description="")
+public class MetricalInformation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "涓婚敭", hidden = true)
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鍏宠仈Id", example = "7", required = true)
+    private Integer userId;
+
+    @ApiModelProperty(value = "璁¢噺鍗曚綅", example = "GB", required = true)
+    private String measurementUnit;
+
+    @ApiModelProperty(value = "寮�濮嬫棩鏈�", example = "2023-07-06", required = true, dataType = "date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME)
+    private Date beginDate;
+
+    @ApiModelProperty(value = "缁撴潫鏃ユ湡", example = "2026-07-06", required = true, dataType = "date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME)
+    private Date endDate;
+
+    @ApiModelProperty(value = "涓嶇‘瀹氬害", example = "0.3%", required = true)
+    private String uncertainty;
+
+    @ApiModelProperty(value = "缁撴灉: 1锛氬悎鏍硷紱2锛氱煫姝e悗鍙敤锛�3锛氫笉鍚堟牸", example = "1", required = true)
+    private Integer result;
+
+    @ApiModelProperty(value = "鎬ц兘鎸囨爣", example = "10086")
+    private String performanceIndex;
+
+    @ApiModelProperty(value = "澶囨敞", example = "10086.com")
+    private String remarks;
+
+    @ApiModelProperty(value = "鏂囦欢璺緞", hidden = true)
+    private String filePath;
+
+    @TableLogic(value = "1", delval = "0")
+    @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
+    private Integer state;
+
+    @TableField(fill = FieldFill.INSERT)
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿", hidden = true)
+    private Date createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @ApiModelProperty(value = "鏇存柊鏃堕棿", hidden = true)
+    private Date updateTime;
+
+    @ApiModelProperty(value = "涔愯閿�", hidden = true)
+    private Integer version;
+
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateClassifyDto.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateClassifyDto.java
new file mode 100644
index 0000000..3a672de
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateClassifyDto.java
@@ -0,0 +1,20 @@
+package com.yuanchu.limslaboratory.pojo.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="UpdateClassifyDto瀵硅薄", description="")
+public class UpdateClassifyDto {
+    @ApiModelProperty(value = "鍒嗙被涓婚敭", example = "1", required = true)
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒嗙被鐖跺悕绉�", example = "娓╁害娴嬮噺浠〃")
+    private String fatherName;
+
+    @ApiModelProperty(value = "鍒嗙被瀛愬悕绉�", example = "浣撴俯璁�",required = true)
+    private String sonName;
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateEquipmentPointDto.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateEquipmentPointDto.java
new file mode 100644
index 0000000..61069dd
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateEquipmentPointDto.java
@@ -0,0 +1,34 @@
+package com.yuanchu.limslaboratory.pojo.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="UpdateEquipmentPointDto瀵硅薄", description="")
+public class UpdateEquipmentPointDto {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "涓婚敭", example = "1", required = true)
+    private Integer id;
+
+    @ApiModelProperty(value = "浠櫒Id 鍏宠仈", example = "1", required = true)
+    private Integer instrumentId;
+
+    @ApiModelProperty(value = "鐮佺偣缂栧彿", example = "Area-1", required = true)
+    private String equipmentPoint;
+
+    @ApiModelProperty(value = "鐮佺偣鍚嶇О", example = "瀵间綋灞忚斀锛堝鍘氶潰绉級", required = true)
+    private String equipmentPointName;
+
+    @ApiModelProperty(value = "鍗曚綅", example = "mm", required = true)
+    private String unit;
+
+    @ApiModelProperty(value = "鎻忚堪", example = "鐤簡锛屽仛涓嶄簡")
+    private String descriptiveness;
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateInstrumentDto.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateInstrumentDto.java
new file mode 100644
index 0000000..675cb7a
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateInstrumentDto.java
@@ -0,0 +1,70 @@
+package com.yuanchu.limslaboratory.pojo.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="UpdateInstrumentDto瀵硅薄", description="")
+public class UpdateInstrumentDto {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "璁¢噺淇℃伅涓婚敭",example = "1", required = true)
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒嗙被ID 鍏宠仈", example = "1", required = true)
+    private Integer classifyId;
+
+    @ApiModelProperty(value = "淇濈浜猴細鐢ㄦ埛琛ㄥ叧鑱擨d", example = "9", required = true)
+    private Integer userId;
+
+    @ApiModelProperty(value = "浠櫒璁惧缂栧彿", example = "JSTC-W1-00001", required = true)
+    private String equipmentCode;
+
+    @ApiModelProperty(value = "浠櫒璁惧鍚嶇О", example = "鏁板瓧鐢垫ˉ", required = true)
+    private String equipmentName;
+
+    @ApiModelProperty(value = "榛樿1锛�1锛氳繍琛屻��2锛氭晠闅溿��3锛氭姤淇��4锛氭淇��5锛氬緟鏈�", example = "1", required = true)
+    private Integer conditions;
+
+    @ApiModelProperty(value = "瑙勬牸鍨嬪彿", example = "WCDMS-1", required = true)
+    private String specificationsModels;
+
+    @ApiModelProperty(value = "娴嬮噺鑼冨洿", example = "12姣背")
+    private String measuringRange;
+
+    @ApiModelProperty(value = "璇樊", example = "0.000001寰背")
+    private String errorRate;
+
+    @ApiModelProperty(value = "鐢熶骇鍘傚", example = "姹熻嫃榈烽洀")
+    private String manufacturer;
+
+    @ApiModelProperty(value = "鍒拌揣鏃ユ湡", example = "2001-07-06", dataType = "date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date arrivalDate;
+
+    @ApiModelProperty(value = "楠屾敹鏃ユ湡", example = "2060-07-06", dataType = "date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date acceptanceDate;
+
+    @ApiModelProperty(value = "瀛樻斁鍦�", example = "鍦扮悆浜氭床涓浗姹熻嫃鍗楅��")
+    private String storagePlace;
+
+    @ApiModelProperty(value = "鏄惁鏀寔鏁伴噰锛�1锛氭敮鎸侊紱0锛氫笉鏀寔", example = "1")
+    private Integer whetherDataAcquisition;
+
+    @ApiModelProperty(value = "鏄惁闇�瑕佷华鍣ㄨ澶囪閲忥細濡傛灉闇�瑕佽閲忓懆鏈熷繀濉紱濡傛灉涓嶉渶瑕佽閲忓懆鏈熶笉蹇呭~.1锛氶渶瑕侊紱0锛氫笉闇�瑕�", example = "0")
+    private Integer equipmentMeasurement;
+
+    @ApiModelProperty(value = "璁¢噺鎴鏈夋晥鏈燂細涓巈quipmentMeasurement鐩稿叧鑱�", example = "12")
+    private Integer termValidity;
+
+    @ApiModelProperty(value = "鎻忚堪", example = "鐤媯鏄熸湡浜旓紒锛侊紒")
+    private String descriptiveness;
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateMetricalInformationDto.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateMetricalInformationDto.java
new file mode 100644
index 0000000..f209cd1
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateMetricalInformationDto.java
@@ -0,0 +1,53 @@
+package com.yuanchu.limslaboratory.pojo.dto;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="UpdateMetricalInformationDto瀵硅薄", description="")
+public class UpdateMetricalInformationDto {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鍏宠仈Id", example = "7", required = true)
+    private Integer userId;
+
+    @ApiModelProperty(value = "璁¢噺鍗曚綅", example = "GB", required = true)
+    private String measurementUnit;
+
+    @ApiModelProperty(value = "寮�濮嬫棩鏈�", example = "2023-07-06", required = true, dataType = "date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME)
+    private Date beginDate;
+
+    @ApiModelProperty(value = "缁撴潫鏃ユ湡", example = "2026-07-06", required = true, dataType = "date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME)
+    private Date endDate;
+
+    @ApiModelProperty(value = "涓嶇‘瀹氬害", example = "0.3%", required = true)
+    private String uncertainty;
+
+    @ApiModelProperty(value = "缁撴灉: 1锛氬悎鏍硷紱2锛氱煫姝e悗鍙敤锛�3锛氫笉鍚堟牸", example = "1", required = true)
+    private Integer result;
+
+    @ApiModelProperty(value = "鎬ц兘鎸囨爣", example = "10086")
+    private String performanceIndex;
+
+    @ApiModelProperty(value = "澶囨敞", example = "10086.com")
+    private String remarks;
+
+    @ApiModelProperty(value = "鏂囦欢璺緞", hidden = true)
+    private String filePath;
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/ClassifyService.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/ClassifyService.java
index 7b1577d..a297357 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/ClassifyService.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/ClassifyService.java
@@ -1,7 +1,10 @@
 package com.yuanchu.limslaboratory.service;
 
-import com.yuanchu.limslaboratory.entity.Classify;
+import com.yuanchu.limslaboratory.pojo.Classify;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +16,11 @@
  */
 public interface ClassifyService extends IService<Classify> {
 
+    Integer addClassifyInformation(Classify classify);
+
+    List<Map<String, Object>> getListClassifyInformation(String classifyName);
+
+    Boolean deleteClassifyInformation(String classifyId);
+
+    Boolean updateClassifyInformation(Classify classify);
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/EquipmentPointService.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/EquipmentPointService.java
index 493ae64..ba3c510 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/EquipmentPointService.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/EquipmentPointService.java
@@ -1,7 +1,13 @@
 package com.yuanchu.limslaboratory.service;
 
-import com.yuanchu.limslaboratory.entity.EquipmentPoint;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.limslaboratory.pojo.EquipmentPoint;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -13,4 +19,11 @@
  */
 public interface EquipmentPointService extends IService<EquipmentPoint> {
 
+    Integer addEquipmentPointInformation(EquipmentPoint equipmentPoint);
+
+    List<Map<String, Object>> getListEquipmentPointInformation();
+
+    Integer deleteEquipmentPointInformation(Integer equipmentPointId);
+
+    Integer updateEquipmentPointInformation(EquipmentPoint equipmentPoint);
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/InstrumentService.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/InstrumentService.java
index b120270..9d492b5 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/InstrumentService.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/InstrumentService.java
@@ -1,7 +1,12 @@
 package com.yuanchu.limslaboratory.service;
 
-import com.yuanchu.limslaboratory.entity.Instrument;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.limslaboratory.pojo.Instrument;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -13,4 +18,19 @@
  */
 public interface InstrumentService extends IService<Instrument> {
 
+    Integer addInstrumentInformation(Instrument instrument);
+
+    Boolean deleteInstrumentInformation(String instrumentId);
+
+    IPage<Map<String, Object>> getListInstrumentInformation(Integer conditions, Boolean whetherWhether, String numberOrNameOrSpecifications,
+                                                            Integer classifyId, Page<Objects> page);
+
+    /**
+     * 鏇存柊浠櫒鏁版嵁鐨勬椂鍊欓渶瑕佽幏鍙栨墍鏈夋暟鎹�
+     * @param instrumentId
+     * @return
+     */
+    Instrument getIdInstrumentInformation(Integer instrumentId);
+
+    Integer updateEquipmentPointInformation(Instrument instrument);
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MetricalInformationService.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MetricalInformationService.java
index 3b74442..8d7d919 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MetricalInformationService.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MetricalInformationService.java
@@ -1,7 +1,11 @@
 package com.yuanchu.limslaboratory.service;
 
-import com.yuanchu.limslaboratory.entity.MetricalInformation;
+import com.yuanchu.limslaboratory.pojo.MetricalInformation;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +17,11 @@
  */
 public interface MetricalInformationService extends IService<MetricalInformation> {
 
+    Integer addEquipmentPointInformation(MetricalInformation metricalInformation, MultipartFile file);
+
+    List<Map<String, Object>> getListEquipmentPointInformation();
+
+    Integer deleteMetricalInformation(Integer metricalInformationId);
+
+    Integer updateMetricalInformation(MetricalInformation metricalInformation, MultipartFile file);
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ClassifyServiceImpl.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ClassifyServiceImpl.java
index 0f03757..f7882e9 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ClassifyServiceImpl.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ClassifyServiceImpl.java
@@ -1,10 +1,17 @@
 package com.yuanchu.limslaboratory.service.impl;
 
-import com.yuanchu.limslaboratory.entity.Classify;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.yuanchu.limslaboratory.pojo.Classify;
 import com.yuanchu.limslaboratory.mapper.ClassifyMapper;
 import com.yuanchu.limslaboratory.service.ClassifyService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -17,4 +24,75 @@
 @Service
 public class ClassifyServiceImpl extends ServiceImpl<ClassifyMapper, Classify> implements ClassifyService {
 
+    @Resource
+    private ClassifyMapper classifyMapper;
+
+    @Override
+    public Integer addClassifyInformation(Classify classify) {
+        if (ObjectUtils.isEmpty(classify.getFatherName())){
+            classify.setFatherName(classify.getSonName());
+            classify.setSonName(null);
+            LambdaQueryWrapper<Classify> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(Classify::getFatherName, classify.getFatherName());
+            wrapper.isNull(Classify::getSonName);
+            wrapper.eq(Classify::getState, 1);
+            Classify classify1 = classifyMapper.selectOne(wrapper);
+            if (ObjectUtils.isEmpty(classify1)){
+                return classifyMapper.insert(classify);
+            }
+            return 2;
+        }
+        LambdaQueryWrapper<Classify> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Classify::getFatherName, classify.getFatherName());
+        wrapper.eq(Classify::getSonName, classify.getSonName());
+        wrapper.eq(Classify::getState, 1);
+        Classify classify1 = classifyMapper.selectOne(wrapper);
+        if (ObjectUtils.isEmpty(classify1)){
+            return classifyMapper.insert(classify);
+        } else {
+            return 3;
+        }
+    }
+
+    @Override
+    public List<Map<String, Object>> getListClassifyInformation(String classifyName) {
+        LambdaQueryWrapper<Classify> wrapper = new LambdaQueryWrapper<>();
+        if (!ObjectUtils.isEmpty(classifyName)){
+            wrapper.like(Classify::getFatherName, classifyName);
+        }
+        wrapper.groupBy(Classify::getFatherName);
+        wrapper.select(Classify::getId, Classify::getFatherName);
+        List<Map<String, Object>> maps = classifyMapper.selectMaps(wrapper);
+        for (Map<String, Object> map : maps){
+            LambdaQueryWrapper<Classify> wrapper1 = new LambdaQueryWrapper<>();
+            wrapper1.eq(Classify::getFatherName, map.get("father_name"));
+            wrapper1.isNotNull(Classify::getSonName);
+            wrapper1.select(Classify::getId, Classify::getSonName);
+            List<Map<String, Object>> maps1 = classifyMapper.selectMaps(wrapper1);
+            if (!ObjectUtils.isEmpty(maps1)){
+                map.put("children", maps1);
+                map.remove("id");
+            } else {
+                map.put("children", null);
+            }
+        }
+        return maps;
+    }
+
+    @Override
+    public Boolean deleteClassifyInformation(String classifyId) {
+        LambdaUpdateWrapper<Classify> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(Classify::getId, classifyId);
+        wrapper.set(Classify::getState, 0);
+        int isDeleteSuccess = classifyMapper.update(new Classify(), wrapper);
+        return isDeleteSuccess > 0;
+    }
+
+    @Override
+    public Boolean updateClassifyInformation(Classify classify) {
+        LambdaUpdateWrapper<Classify> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(Classify::getId, classify.getId());
+        int isUpdateClassifySuccess = classifyMapper.update(classify, updateWrapper);
+        return isUpdateClassifySuccess > 0;
+    }
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/EquipmentPointServiceImpl.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/EquipmentPointServiceImpl.java
index d05430d..c0ba3ff 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/EquipmentPointServiceImpl.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/EquipmentPointServiceImpl.java
@@ -1,10 +1,21 @@
 package com.yuanchu.limslaboratory.service.impl;
 
-import com.yuanchu.limslaboratory.entity.EquipmentPoint;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.limslaboratory.pojo.EquipmentPoint;
 import com.yuanchu.limslaboratory.mapper.EquipmentPointMapper;
+import com.yuanchu.limslaboratory.pojo.Instrument;
 import com.yuanchu.limslaboratory.service.EquipmentPointService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -17,4 +28,47 @@
 @Service
 public class EquipmentPointServiceImpl extends ServiceImpl<EquipmentPointMapper, EquipmentPoint> implements EquipmentPointService {
 
+    @Resource
+    private EquipmentPointMapper equipmentPointMapper;
+
+    @Override
+    public Integer addEquipmentPointInformation(EquipmentPoint equipmentPoint) {
+        LambdaQueryWrapper<EquipmentPoint> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(EquipmentPoint::getEquipmentPoint, equipmentPoint.getEquipmentPoint());
+        wrapper.eq(EquipmentPoint::getState, 1);
+        wrapper.select(EquipmentPoint::getEquipmentPoint);
+        EquipmentPoint equipmentPoint1 = equipmentPointMapper.selectOne(wrapper);
+        if (ObjectUtils.isEmpty(equipmentPoint1)){
+            return equipmentPointMapper.insert(equipmentPoint);
+        }
+        return 0;
+    }
+
+    @Override
+    public List<Map<String, Object>> getListEquipmentPointInformation() {
+        return equipmentPointMapper.getListEquipmentPointInformation();
+    }
+
+    @Override
+    public Integer deleteEquipmentPointInformation(Integer equipmentPointId) {
+        LambdaUpdateWrapper<EquipmentPoint> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(EquipmentPoint::getId, equipmentPointId);
+        updateWrapper.set(EquipmentPoint::getState, 0);
+        return equipmentPointMapper.update(new EquipmentPoint(), updateWrapper);
+    }
+
+    @Override
+    public Integer updateEquipmentPointInformation(EquipmentPoint equipmentPoint) {
+        LambdaQueryWrapper<EquipmentPoint> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(EquipmentPoint::getEquipmentPoint, equipmentPoint.getEquipmentPoint());
+        wrapper.eq(EquipmentPoint::getState, 1);
+        wrapper.select(EquipmentPoint::getId, EquipmentPoint::getId);
+        EquipmentPoint equipmentPoint1 = equipmentPointMapper.selectOne(wrapper);
+        if (ObjectUtils.isEmpty(equipmentPoint1)){
+            return equipmentPointMapper.updateById(equipmentPoint);
+        } else if (equipmentPoint.getId().equals(equipmentPoint1.getId())){
+            return equipmentPointMapper.updateById(equipmentPoint);
+        }
+        return 0;
+    }
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InstrumentServiceImpl.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InstrumentServiceImpl.java
index 367bd37..fc776d2 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InstrumentServiceImpl.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InstrumentServiceImpl.java
@@ -1,10 +1,20 @@
 package com.yuanchu.limslaboratory.service.impl;
 
-import com.yuanchu.limslaboratory.entity.Instrument;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.limslaboratory.pojo.Instrument;
 import com.yuanchu.limslaboratory.mapper.InstrumentMapper;
 import com.yuanchu.limslaboratory.service.InstrumentService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.limslaboratory.utils.MyUtil;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import javax.annotation.Resource;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -17,4 +27,56 @@
 @Service
 public class InstrumentServiceImpl extends ServiceImpl<InstrumentMapper, Instrument> implements InstrumentService {
 
+    @Resource
+    private InstrumentMapper instrumentMapper;
+
+    @Override
+    public Integer addInstrumentInformation(Instrument instrument) {
+        LambdaQueryWrapper<Instrument> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Instrument::getEquipmentCode, instrument.getEquipmentCode());
+        wrapper.eq(Instrument::getState, 1);
+        wrapper.select(Instrument::getEquipmentCode);
+        Instrument instrument1 = instrumentMapper.selectOne(wrapper);
+        if (ObjectUtils.isEmpty(instrument1)){
+            return instrumentMapper.insert(instrument);
+        }
+        return 0;
+    }
+
+    @Override
+    public Boolean deleteInstrumentInformation(String instrumentId) {
+        LambdaUpdateWrapper<Instrument> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(Instrument::getId, instrumentId);
+        updateWrapper.set(Instrument::getState, 0);
+        int isUpdateSuccess = instrumentMapper.update(new Instrument(), updateWrapper);
+        return isUpdateSuccess > 0;
+    }
+
+    @Override
+    public IPage<Map<String, Object>> getListInstrumentInformation(Integer conditions, Boolean whetherWhether, String numberOrNameOrSpecifications,
+                                                                   Integer classifyId, Page<Objects> page) {
+        return instrumentMapper.getListInstrumentInformation(conditions, whetherWhether, numberOrNameOrSpecifications, classifyId, page);
+    }
+
+    @Override
+    public Instrument getIdInstrumentInformation(Integer instrumentId) {
+        LambdaQueryWrapper<Instrument> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Instrument::getId, instrumentId);
+        return instrumentMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public Integer updateEquipmentPointInformation(Instrument instrument) {
+        LambdaQueryWrapper<Instrument> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Instrument::getEquipmentCode, instrument.getEquipmentCode());
+        wrapper.eq(Instrument::getState, 1);
+        wrapper.select(Instrument::getEquipmentCode, Instrument::getId);
+        Instrument instrument1 = instrumentMapper.selectOne(wrapper);
+        if (ObjectUtils.isEmpty(instrument1)){
+            return instrumentMapper.updateById(instrument);
+        } else if (instrument.getId().equals(instrument1.getId())){
+            return instrumentMapper.updateById(instrument);
+        }
+        return 0;
+    }
 }
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MetricalInformationServiceImpl.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MetricalInformationServiceImpl.java
index 267662c..a2ad0d9 100644
--- a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MetricalInformationServiceImpl.java
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MetricalInformationServiceImpl.java
@@ -1,10 +1,20 @@
 package com.yuanchu.limslaboratory.service.impl;
 
-import com.yuanchu.limslaboratory.entity.MetricalInformation;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.yuanchu.limslaboratory.pojo.MetricalInformation;
 import com.yuanchu.limslaboratory.mapper.MetricalInformationMapper;
 import com.yuanchu.limslaboratory.service.MetricalInformationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yuanchu.limslaboratory.utils.FileSaveUtil;
+import com.yuanchu.limslaboratory.utils.MyUtil;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -17,4 +27,44 @@
 @Service
 public class MetricalInformationServiceImpl extends ServiceImpl<MetricalInformationMapper, MetricalInformation> implements MetricalInformationService {
 
+    @Resource
+    private MetricalInformationMapper metricalInformationMapper;
+
+    @Override
+    public Integer addEquipmentPointInformation(MetricalInformation metricalInformation, MultipartFile file) {
+        if (!ObjectUtils.isEmpty(file)){
+            String fileName = FileSaveUtil.StoreFile(file);
+            metricalInformation.setFilePath(fileName);
+        }
+        return metricalInformationMapper.insert(metricalInformation);
+    }
+
+    @Override
+    public List<Map<String, Object>> getListEquipmentPointInformation() {
+        return metricalInformationMapper.getListEquipmentPointInformation();
+    }
+
+    @Override
+    public Integer deleteMetricalInformation(Integer metricalInformationId) {
+        LambdaUpdateWrapper<MetricalInformation> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(MetricalInformation::getId, metricalInformationId);
+        updateWrapper.set(MetricalInformation::getState, 0);
+        return metricalInformationMapper.update(new MetricalInformation(), updateWrapper);
+    }
+
+    @Override
+    public Integer updateMetricalInformation(MetricalInformation metricalInformation, MultipartFile file) {
+        if (!ObjectUtils.isEmpty(file)){
+            String fileName = FileSaveUtil.StoreFile(file);
+            metricalInformation.setFilePath(fileName);
+            LambdaQueryWrapper<MetricalInformation> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(MetricalInformation::getId, metricalInformation.getId());
+            wrapper.select(MetricalInformation::getFilePath);
+            MetricalInformation metricalInformation1 = metricalInformationMapper.selectOne(wrapper);
+            if (!ObjectUtils.isEmpty(metricalInformation1.getFilePath())){
+                FileSaveUtil.DeleteFile(metricalInformation1.getFilePath());
+            }
+        }
+        return metricalInformationMapper.updateById(metricalInformation);
+    }
 }
diff --git a/laboratory-server/src/main/resources/mapper/EquipmentPointMapper.xml b/laboratory-server/src/main/resources/mapper/EquipmentPointMapper.xml
index 80c2839..427d44c 100644
--- a/laboratory-server/src/main/resources/mapper/EquipmentPointMapper.xml
+++ b/laboratory-server/src/main/resources/mapper/EquipmentPointMapper.xml
@@ -2,4 +2,9 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yuanchu.limslaboratory.mapper.EquipmentPointMapper">
 
+    <select id="getListEquipmentPointInformation" resultType="map">
+        SELECT e.`id`, e.`equipment_point` equipmentPoint, e.`equipment_point_name` equipmentPointName, e.`unit`,u.`name`, DATE_FORMAT(e.`update_time`, '%Y-%m-%d') updateTime, e.`descriptiveness`
+        FROM equipment_point e, `user` u
+        WHERE e.`user_id` = u.`id`
+    </select>
 </mapper>
diff --git a/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml b/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml
index c66d06b..ccf1794 100644
--- a/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml
+++ b/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml
@@ -2,4 +2,21 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yuanchu.limslaboratory.mapper.InstrumentMapper">
 
+    <select id="getListInstrumentInformation" resultType="map">
+        SELECT i.`id`, i.`equipment_code`, i.`equipment_name`, i.`specifications_models`, u.`name`,
+               DATE_FORMAT(DATE_ADD(i.`create_time`, INTERVAL i.`term_validity` MONTH), '%Y-%m-%d') termValidity, i.`conditions`, i.`storage_place`
+        FROM instrument i, `user` u
+        WHERE i.`state` = 1
+          AND i.`classify_id` = #{classifyId}
+        <if test="conditions != null">
+            AND i.`conditions` = #{conditions}
+        </if>
+        <if test="numberOrNameOrSpecifications != null and numberOrNameOrSpecifications != ''">
+            AND CONCAT(i.`equipment_code`, i.`equipment_name`, i.`specifications_models`) LIKE CONCAT('%',#{numberOrNameOrSpecifications},'%')
+        </if>
+        <if test="whetherWhether == true">
+            AND DATE_FORMAT(DATE_ADD(i.`create_time`, INTERVAL i.`term_validity` MONTH), '%Y-%m-%d') <![CDATA[<]]> NOW()
+        </if>
+        AND i.`user_id` = u.`id`
+    </select>
 </mapper>
diff --git a/laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml b/laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml
index d338ba4..3f74553 100644
--- a/laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml
+++ b/laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml
@@ -2,4 +2,11 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yuanchu.limslaboratory.mapper.MetricalInformationMapper">
 
+    <select id="getListEquipmentPointInformation" resultType="map">
+        SELECT m.`id`, u.`name`, m.`measurement_unit`, DATE_FORMAT(m.`begin_date`, '%Y-%m-%d') beginDate, DATE_FORMAT(m.`end_date`, '%Y-%m-%d') endDate,
+               m.`uncertainty`, m.`result`, m.`performance_index`, m.`remarks`, m.`file_path`, DATE_FORMAT(m.`create_time`, '%Y-%m-%d') createDate
+        FROM metrical_information m, `user` u
+        WHERE m.`user_id` = u.`id`
+          AND m.`state` = 1
+    </select>
 </mapper>
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/MaterialController.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/MaterialController.java
index 6e39015..5469759 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/MaterialController.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/MaterialController.java
@@ -2,6 +2,7 @@
 
 
 import com.yuanchu.limslaboratory.pojo.Material;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateMaterialInformation;
 import com.yuanchu.limslaboratory.service.MaterialService;
 import com.yuanchu.limslaboratory.utils.JackSonUtil;
 import com.yuanchu.limslaboratory.utils.RedisUtil;
@@ -24,7 +25,7 @@
  * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
  * @since 2023-07-17
  */
-@Api(tags = "鏍囧噯搴�-->瑙勬牸-->鏌ョ湅-->鐖�->鐗╂枡")
+@Api(tags = "鏍囧噯搴�-->4銆佽鏍�-->鏌ョ湅-->鐖舵ā鍧�")
 @RestController
 @RequestMapping("/material")
 public class MaterialController {
@@ -32,7 +33,7 @@
     @Autowired
     private MaterialService materialService;
 
-    @ApiOperation("鐗╂枡搴�-->娣诲姞鐗╂枡")
+    @ApiOperation("娣诲姞鐗╂枡")
     @PostMapping("/add")
     public Result<?> addMaterialInformation(@RequestBody Material material) {
         Integer isMaterialSuccess = materialService.addMaterialInformation(material);
@@ -42,7 +43,7 @@
         return Result.fail("娣诲姞鐗╂枡銆�"+ material.getName() +"銆戝け璐ワ紒");
     }
 
-    @ApiOperation("鐗╂枡搴�-->鏍规嵁瑙勬牸ID鏌ヨ鎵�鏈夌墿鏂�")
+    @ApiOperation("鏍规嵁瑙勬牸ID鏌ヨ鎵�鏈夌墿鏂�")
     @GetMapping("/list")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(value = "瑙勬牸ID", name = "specificationsId", dataTypeClass = String.class)
@@ -52,17 +53,17 @@
         return Result.success(listMaterialInformation);
     }
 
-    @ApiOperation("鐗╂枡搴�-->鏍规嵁瑙勬牸ID鏌ヨ鐗╂枡璇︽儏")
+    @ApiOperation("鏍规嵁鐗╂枡ID鏌ヨ鐗╂枡璇︽儏")
     @GetMapping("/list_id")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(value = "鐗╂枡ID", name = "materialId", dataTypeClass = String.class)
     })
-    public Result<?> getListIdMaterialInformation(String materialId) {
+    public Result<?> getListIdMaterialInformation(String materialId) throws Exception {
         Material listIdMaterialInformation = materialService.ListIdMaterialInformation(materialId);
         return Result.success(listIdMaterialInformation);
     }
 
-    @ApiOperation("鐗╂枡搴�-->鏍规嵁鐗╂枡ID鍒犻櫎鐗╂枡")
+    @ApiOperation("鏍规嵁鐗╂枡ID鍒犻櫎鐗╂枡")
     @DeleteMapping("/delete")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(value = "鐗╂枡ID", name = "materialId", dataTypeClass = String.class)
@@ -75,9 +76,10 @@
         return Result.fail("鍒犻櫎澶辫触锛�");
     }
 
-    @ApiOperation("鐗╂枡搴�-->淇敼鐗╂枡")
+    @ApiOperation("淇敼鐗╂枡")
     @PutMapping("/update")
-    public Result<?> updateMaterialInformation(@RequestBody Material material) {
+    public Result<?> updateMaterialInformation(@RequestBody UpdateMaterialInformation updateMaterialInformation) throws Exception {
+        Material material = JackSonUtil.unmarshal(JackSonUtil.marshal(updateMaterialInformation), Material.class);
         Integer isUpdateMaterialSuccess = materialService.updateMaterialInformation(material);
         if (isUpdateMaterialSuccess == 1) {
             return Result.success("淇敼鐗╂枡銆�"+ material.getName() +"銆戞垚鍔燂紒");
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductController.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductController.java
index ae95e8a..65e8dac 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductController.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductController.java
@@ -21,7 +21,7 @@
  * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
  * @since 2023-07-17
  */
-@Api(tags = "鏍囧噯搴�-->瑙勬牸-->鏌ョ湅-->鐖�-->瀛�")
+@Api(tags = "鏍囧噯搴�-->5銆佽鏍�-->鏌ョ湅-->瀛愭ā鍧�")
 @RestController
 @RequestMapping("/product")
 public class ProductController {
@@ -29,7 +29,7 @@
     @Autowired
     private ProductService productService;
 
-    @ApiOperation("娴嬭瘯鏍囧噯妯″潡-->娣诲姞娴嬭瘯鏍囧噯")
+    @ApiOperation("娣诲姞娴嬭瘯鏍囧噯")
     @PostMapping("/add")
     public Result<?> addProductInformation(@RequestHeader("X-Token") String token, @RequestBody Product product) throws Exception {
         Object userMessage = RedisUtil.get(token);
@@ -46,7 +46,7 @@
         return Result.fail("娣诲姞鐗╂枡銆�"+ product.getName() +"銆戝け璐ワ紒");
     }
 
-    @ApiOperation("鐗╂枡搴�-->鏍规嵁鐗╂枡ID鏌ヨ鎵�鏈夋祴璇曟爣鍑�")
+    @ApiOperation("鏍规嵁鐗╂枡ID鏌ヨ鎵�鏈夋祴璇曟爣鍑�")
     @GetMapping("/list")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(value = "鐗╂枡ID", name = "materialId", dataTypeClass = String.class)
@@ -56,7 +56,7 @@
         return Result.success(listMaterialInformation);
     }
 
-    @ApiOperation("鐗╂枡搴�-->鏍规嵁娴嬭瘯鏍囧噯ID鏌ヨ鍩烘湰淇℃伅")
+    @ApiOperation("鏍规嵁娴嬭瘯鏍囧噯ID鏌ヨ鍩烘湰淇℃伅")
     @GetMapping("/productId")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(value = "娴嬭瘯鏍囧噯ID", name = "productId", dataTypeClass = String.class)
@@ -66,7 +66,7 @@
         return Result.success(productInformation);
     }
 
-    @ApiOperation("鐗╂枡搴�-->鍒犻櫎娴嬭瘯鏍囧噯妯″潡鏁版嵁")
+    @ApiOperation("鍒犻櫎娴嬭瘯鏍囧噯妯″潡鏁版嵁")
     @DeleteMapping("/delete")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(value = "娴嬭瘯鏍囧噯ID", name = "productId", dataTypeClass = String.class)
@@ -79,7 +79,7 @@
         return Result.fail("鍒犻櫎澶辫触锛�");
     }
 
-    @ApiOperation("鐗╂枡搴�-->鏍规嵁娴嬭瘯鏍囧噯Id淇敼鏁版嵁")
+    @ApiOperation("鏍规嵁娴嬭瘯鏍囧噯Id淇敼鏁版嵁")
     @PutMapping("/update")
     public Result<?> updateMaterialInformation(@RequestBody Product product) {
         Integer isUpdateMaterialSuccess = productService.updateMaterialInformation(product);
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SerialNumberController.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SerialNumberController.java
index 6fd9faa..1c91dff 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SerialNumberController.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SerialNumberController.java
@@ -28,7 +28,7 @@
  * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
  * @since 2023-07-11
  */
-@Api(tags = "鏍囧噯搴�-->鍨嬪彿")
+@Api(tags = "鏍囧噯搴�-->2銆佸瀷鍙�")
 @RestController
 @RequestMapping("/serial-number")
 public class SerialNumberController {
@@ -36,7 +36,7 @@
     @Autowired
     private SerialNumberService serialNumberService;
 
-    @ApiOperation("鏍囧噯搴�-->娣诲姞鍨嬪彿")
+    @ApiOperation("娣诲姞鍨嬪彿")
     @PostMapping("/add")
     public Result<?> addSerialNumberInformation(@RequestHeader("X-Token") String token,@RequestBody SerialNumber serialNumber) throws Exception {
         Object object = RedisUtil.get(token);
@@ -49,7 +49,7 @@
         return Result.fail("娣诲姞銆�"+ serialNumber.getName() +"銆戝け璐ワ紒");
     }
 
-    @ApiOperation("鏍囧噯搴�-->鐐瑰嚮渚ц竟鏍忔爣鍑嗭紝鍒嗛〉鏌ヨ鎵�鏈夊瀷鍙�")
+    @ApiOperation("鐐瑰嚮渚ц竟鏍忔爣鍑嗭紝鍒嗛〉鏌ヨ鎵�鏈夊瀷鍙�")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(value = "鍨嬪彿/鍨嬪彿鍚嶇О", name = "IdOrNameOfSerialNumber", dataTypeClass = String.class),
             @ApiImplicitParam(value = "鏍囧噯鍙稩d", name = "standardsId", dataTypeClass = String.class, required = true),
@@ -65,7 +65,7 @@
         return Result.success(map);
     }
 
-    @ApiOperation("鏍囧噯搴�-->鏍规嵁Id淇敼鍨嬪彿鍙傛暟")
+    @ApiOperation("鏍规嵁Id淇敼鍨嬪彿")
     @PutMapping("/update")
     public Result<?> updateSerialNumberInformation(@RequestHeader("X-Token") String token, @RequestBody SerialNumber serialNumber) throws Exception {
         Object object = RedisUtil.get(token);
@@ -78,7 +78,7 @@
         return Result.fail("鏇存柊澶辫触锛�");
     }
 
-    @ApiOperation("鏍囧噯搴�-->鏍规嵁Id鍒犻櫎鍨嬪彿")
+    @ApiOperation("鏍规嵁Id鍒犻櫎鍨嬪彿")
     @DeleteMapping("/delete")
     public Result<?> deleteSerialNumberInformation(String serialNumberId) {
         Integer isDeleteSerialNumberSuccess = serialNumberService.deleteSerialNumberInformation(serialNumberId);
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SpecificationsController.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SpecificationsController.java
index 25f5465..6b7ff99 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SpecificationsController.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SpecificationsController.java
@@ -6,11 +6,10 @@
 import com.yuanchu.limslaboratory.pojo.Specifications;
 import com.yuanchu.limslaboratory.service.SpecificationsService;
 import com.yuanchu.limslaboratory.utils.JackSonUtil;
-import com.yuanchu.limslaboratory.utils.MyUtil;
 import com.yuanchu.limslaboratory.utils.RedisUtil;
 import com.yuanchu.limslaboratory.vo.Result;
-import com.yuanchu.limslaboratory.vo.UpdateSpeStateSpecifications;
-import com.yuanchu.limslaboratory.vo.UpdateSpecificationsInformation;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateSpeStateSpecificationsDto;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateSpecificationsInformationDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -31,7 +30,7 @@
  * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
  * @since 2023-07-11
  */
-@Api(tags = "鏍囧噯搴�-->鍨嬪彿-->浜у搧瑙勬牸")
+@Api(tags = "鏍囧噯搴�-->3銆佸瀷鍙�-->浜у搧瑙勬牸")
 @RestController
 @RequestMapping("/specifications")
 public class SpecificationsController {
@@ -39,7 +38,7 @@
     @Autowired
     private SpecificationsService specificationsService;
 
-    @ApiOperation("鏍囧噯搴�-->浜у搧瑙勬牸")
+    @ApiOperation("娣诲姞浜у搧瑙勬牸")
     @PostMapping("/add")
     public Result<?> addSpecificationsInformation(@RequestHeader("X-Token") String token,@RequestBody Specifications specifications) throws Exception {
         Object object = RedisUtil.get(token);
@@ -52,7 +51,7 @@
         return Result.fail("娣诲姞銆�"+ specifications.getName() +"銆戝け璐ワ紒");
     }
 
-    @ApiOperation("鏍囧噯搴�-->鏍规嵁鍨嬪彿鏌ヨ浜у搧瑙勬牸")
+    @ApiOperation("鏍规嵁鍨嬪彿鏌ヨ浜у搧瑙勬牸")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "pageNo", value = "璧峰椤�", dataTypeClass = Integer.class, required = true),
             @ApiImplicitParam(name = "pageSize", value = "姣忎竴椤垫暟閲�", dataTypeClass = Integer.class, required = true),
@@ -71,16 +70,16 @@
         return Result.success(map);
     }
 
-    @ApiOperation("鏍囧噯搴�-->浜у搧瑙勬牸-->缂栬緫")
+    @ApiOperation("缂栬緫浜у搧瑙勬牸")
     @PutMapping("/update")
-    public Result<?> updateSpecificationsInformation(@RequestHeader("X-Token") String token, @RequestBody UpdateSpecificationsInformation updateSpecificationsInformation) throws Exception {
+    public Result<?> updateSpecificationsInformation(@RequestHeader("X-Token") String token, @RequestBody UpdateSpecificationsInformationDto updateSpecificationsInformationDto) throws Exception {
         Object object = RedisUtil.get(token);
         if (ObjectUtils.isEmpty(object)){
             return Result.fail("瀵逛笉璧凤紝璇锋惡甯oken!");
         }
         Map<String, Object> unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(object), Map.class);
-        updateSpecificationsInformation.setUserId((Integer) unmarshal.get("id"));
-        Specifications specifications = JackSonUtil.unmarshal(JackSonUtil.marshal(updateSpecificationsInformation), Specifications.class);
+        updateSpecificationsInformationDto.setUserId((Integer) unmarshal.get("id"));
+        Specifications specifications = JackSonUtil.unmarshal(JackSonUtil.marshal(updateSpecificationsInformationDto), Specifications.class);
         Integer isStandardsSuccess = specificationsService.updateSpecificationsInformation(specifications);
         if (isStandardsSuccess == 1) {
             return Result.success("鏇存柊銆�"+ specifications.getName() +"銆戞垚鍔燂紒");
@@ -88,7 +87,7 @@
         return Result.fail("鏇存柊銆�"+ specifications.getName() +"銆戝け璐ワ紒");
     }
 
-    @ApiOperation("鏍囧噯搴�-->浜у搧瑙勬牸-->鍒犻櫎")
+    @ApiOperation("鍒犻櫎浜у搧瑙勬牸")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "specificationsId", value = "瑙勬牸Id", dataTypeClass = Integer.class, required = true)
     })
@@ -101,10 +100,10 @@
         return Result.fail("鍒犻櫎澶辫触锛�");
     }
 
-    @ApiOperation("鏍囧噯搴�-->浜у搧瑙勬牸-->鏇存柊瑙勬牸鐘舵��")
+    @ApiOperation("鏇存柊瑙勬牸鐘舵��")
     @PutMapping("/update_spe_state")
-    public Result<?> updateSpeStateSpecifications(@RequestBody UpdateSpeStateSpecifications updateSpeStateSpecifications) {
-        Integer isStandardsSuccess = specificationsService.updateSpeStateSpecifications(updateSpeStateSpecifications);
+    public Result<?> updateSpeStateSpecifications(@RequestBody UpdateSpeStateSpecificationsDto updateSpeStateSpecificationsDto) {
+        Integer isStandardsSuccess = specificationsService.updateSpeStateSpecifications(updateSpeStateSpecificationsDto);
         if (isStandardsSuccess == 1) {
             return Result.success("鎿嶄綔鎴愬姛锛�");
         }
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/StandardsController.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/StandardsController.java
index e101634..0190a3d 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/StandardsController.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/controller/StandardsController.java
@@ -31,7 +31,7 @@
  * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
  * @since 2023-07-11
  */
-@Api(tags = "鏍囧噯搴�-->猸愨瓙猸�")
+@Api(tags = "鏍囧噯搴�-->1銆佲瓙猸愨瓙")
 @RestController
 @RequestMapping("/standards")
 public class StandardsController {
@@ -39,7 +39,7 @@
     @Autowired
     private StandardsService standardsService;
 
-    @ApiOperation("鏍囧噯搴�-->娣诲姞鏍囧噯")
+    @ApiOperation("娣诲姞鏍囧噯")
     @PostMapping("/add")
     public Result<?> addStandardsInformation(@RequestHeader("X-Token") String token, @RequestBody Standards standards) throws Exception {
         Object object = RedisUtil.get(token);
@@ -52,14 +52,14 @@
         return Result.fail("娣诲姞銆�"+ standards.getName() +"銆戝け璐ワ紒");
     }
 
-    @ApiOperation("鏍囧噯搴�-->渚ц竟鏍忔煡璇㈡墍鏈夋爣鍑嗘暟鎹�")
+    @ApiOperation("渚ц竟鏍忔煡璇㈡墍鏈夋爣鍑嗘暟鎹�")
     @GetMapping("/list")
     public Result<?> listStandardsInformation(){
         List<Map<String, Object>> list = standardsService.listStandardsInformation();
         return Result.success(list);
     }
 
-    @ApiOperation("鏍囧噯搴�-->鐐瑰嚮鍏ㄩ儴锛氬垎椤垫煡璇㈡墍鏈夋爣鍑嗘暟鎹�")
+    @ApiOperation("鐐瑰嚮鍏ㄩ儴锛氬垎椤垫煡璇㈡墍鏈夋爣鍑嗘暟鎹�")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "pageNo", value = "璧峰椤�", dataTypeClass = Integer.class, required = true),
             @ApiImplicitParam(name = "pageSize", value = "姣忎竴椤垫暟閲�", dataTypeClass = Integer.class, required = true),
@@ -74,7 +74,7 @@
         return Result.success(map);
     }
 
-    @ApiOperation("鏍囧噯搴�-->鏍规嵁Id淇敼鍙傛暟")
+    @ApiOperation("鏍规嵁Id淇敼鍙傛暟")
     @PutMapping("/update")
     public Result<?> updateStandardsInformation(@RequestHeader("X-Token") String token, @RequestBody Standards standards) throws Exception {
         Object object = RedisUtil.get(token);
@@ -87,7 +87,7 @@
         return Result.fail("鏇存柊澶辫触锛�");
     }
 
-    @ApiOperation("鏍囧噯搴�-->鏍规嵁ID鍒犻櫎鏁版嵁")
+    @ApiOperation("鏍规嵁ID鍒犻櫎鏁版嵁")
     @DeleteMapping("/delete")
     public Result<?> deleteStandardsInformation(String standardsId) {
         Integer isDeleteSuccess = standardsService.deleteStandardsInformation(standardsId);
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Material.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Material.java
index 6044690..4472d52 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Material.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Material.java
@@ -10,6 +10,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -68,6 +69,5 @@
 
     @ApiModelProperty(value = "鍏宠仈 瑙勬牸id", example = "1", required = true)
     private Integer specificationsId;
-
 
 }
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateMaterialInformation.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateMaterialInformation.java
new file mode 100644
index 0000000..7a97a12
--- /dev/null
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateMaterialInformation.java
@@ -0,0 +1,33 @@
+package com.yuanchu.limslaboratory.pojo.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="鏍囧噯搴�-->瑙勬牸鍨嬪彿-->鐗╂枡鏇存柊", description="鐢ㄤ簬瀵硅鏍肩殑鏇存柊")
+public class UpdateMaterialInformation {
+
+    @ApiModelProperty(value = "鐗╂枡id", example = "152453211563212", required = true)
+    private String id;
+
+    @ApiModelProperty(value = "鐗╂枡鍚嶇О", example = "鐭冲ご", required = true)
+    private String name;
+
+    @ApiModelProperty(value = "渚涘簲鍟�", example = "鐧惧害", required = true)
+    private String supplier;
+
+    @ApiModelProperty(value = "鐗╂枡瀛樻斁鍦�", example = "浠撳簱涓�锛屼簩鍙锋灦", required = true)
+    private String location;
+
+    @ApiModelProperty(value = "鐗╂枡鏁伴噺", example = "200", required = true)
+    private Integer num;
+
+    @ApiModelProperty(value = "鎵规", example = "1", required = true)
+    private String batch;
+
+    @ApiModelProperty(value = "鐩樺彿", example = "152453211563212", required = true)
+    private String reelNumber;
+}
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/vo/UpdateSpeStateSpecifications.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateSpeStateSpecificationsDto.java
similarity index 85%
rename from standard-server/src/main/java/com/yuanchu/limslaboratory/vo/UpdateSpeStateSpecifications.java
rename to standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateSpeStateSpecificationsDto.java
index 23ec903..468cb7f 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/vo/UpdateSpeStateSpecifications.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateSpeStateSpecificationsDto.java
@@ -1,4 +1,4 @@
-package com.yuanchu.limslaboratory.vo;
+package com.yuanchu.limslaboratory.pojo.dto;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -8,7 +8,7 @@
 @Data
 @EqualsAndHashCode(callSuper = false)
 @ApiModel(value="鏍囧噯搴�-->瑙勬牸鍨嬪彿-->鐢ㄤ簬瀵硅鏍肩姸鎬佺殑淇敼", description="鐢ㄤ簬瀵硅鏍肩姸鎬佺殑淇敼")
-public class UpdateSpeStateSpecifications {
+public class UpdateSpeStateSpecificationsDto {
 
     @ApiModelProperty(value = "瑙勬牸id", example = "2", required = true)
     private Integer id;
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/vo/UpdateSpecificationsInformation.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateSpecificationsInformationDto.java
similarity index 93%
rename from standard-server/src/main/java/com/yuanchu/limslaboratory/vo/UpdateSpecificationsInformation.java
rename to standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateSpecificationsInformationDto.java
index db45b73..8a186dc 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/vo/UpdateSpecificationsInformation.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/UpdateSpecificationsInformationDto.java
@@ -1,4 +1,4 @@
-package com.yuanchu.limslaboratory.vo;
+package com.yuanchu.limslaboratory.pojo.dto;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -8,7 +8,7 @@
 @Data
 @EqualsAndHashCode(callSuper = false)
 @ApiModel(value="鏍囧噯搴�-->瑙勬牸鍨嬪彿-->缂栬緫瀵硅薄", description="鐢ㄤ簬瀵硅鏍肩殑鏇存柊")
-public class UpdateSpecificationsInformation {
+public class UpdateSpecificationsInformationDto {
 
     @ApiModelProperty(value = "瑙勬牸id", example = "2", required = true)
     private Integer id;
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/MaterialService.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/MaterialService.java
index 984d4ac..b0e93cb 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/MaterialService.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/MaterialService.java
@@ -2,6 +2,7 @@
 
 import com.yuanchu.limslaboratory.pojo.Material;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateMaterialInformation;
 
 import java.util.List;
 import java.util.Map;
@@ -54,5 +55,5 @@
      * @param materialId
      * @return
      */
-    Material ListIdMaterialInformation(String materialId);
+    Material ListIdMaterialInformation(String materialId) throws Exception;
 }
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/SpecificationsService.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/SpecificationsService.java
index 538b400..81adab5 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/SpecificationsService.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/SpecificationsService.java
@@ -2,13 +2,11 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.yuanchu.limslaboratory.mapper.SpecificationsMapper;
 import com.yuanchu.limslaboratory.pojo.Specifications;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.yuanchu.limslaboratory.vo.UpdateSpeStateSpecifications;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateSpeStateSpecificationsDto;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -41,5 +39,5 @@
 
     List<Integer> SerialNumberIdDeleteSpecifications(List<String> deleteSerialNumberId);
 
-    Integer updateSpeStateSpecifications(UpdateSpeStateSpecifications updateSpeStateSpecifications);
+    Integer updateSpeStateSpecifications(UpdateSpeStateSpecificationsDto updateSpeStateSpecificationsDto);
 }
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java
index ce8ba0b..a7839fe 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java
@@ -5,9 +5,11 @@
 import com.yuanchu.limslaboratory.pojo.Material;
 import com.yuanchu.limslaboratory.mapper.MaterialMapper;
 import com.yuanchu.limslaboratory.pojo.Specifications;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateMaterialInformation;
 import com.yuanchu.limslaboratory.service.MaterialService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yuanchu.limslaboratory.service.ProductService;
+import com.yuanchu.limslaboratory.utils.JackSonUtil;
 import com.yuanchu.limslaboratory.utils.MyUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java
index 6a9bf6d..3ff92cb 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java
@@ -4,13 +4,11 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.yuanchu.limslaboratory.pojo.SerialNumber;
 import com.yuanchu.limslaboratory.pojo.Specifications;
 import com.yuanchu.limslaboratory.mapper.SpecificationsMapper;
 import com.yuanchu.limslaboratory.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.yuanchu.limslaboratory.vo.UpdateSpeStateSpecifications;
-import io.swagger.models.auth.In;
+import com.yuanchu.limslaboratory.pojo.dto.UpdateSpeStateSpecificationsDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
@@ -119,10 +117,10 @@
     }
 
     @Override
-    public Integer updateSpeStateSpecifications(UpdateSpeStateSpecifications updateSpeStateSpecifications) {
+    public Integer updateSpeStateSpecifications(UpdateSpeStateSpecificationsDto updateSpeStateSpecificationsDto) {
         LambdaUpdateWrapper<Specifications> updateWrapper = new LambdaUpdateWrapper<>();
-        updateWrapper.eq(Specifications::getId, updateSpeStateSpecifications.getId());
-        updateWrapper.set(Specifications::getSpe_state, updateSpeStateSpecifications.getSpe_state());
+        updateWrapper.eq(Specifications::getId, updateSpeStateSpecificationsDto.getId());
+        updateWrapper.set(Specifications::getSpe_state, updateSpeStateSpecificationsDto.getSpe_state());
         return specificationsMapper.update(new Specifications(), updateWrapper);
     }
 }
diff --git a/standard-server/src/main/resources/mapper/SpecificationsMapper.xml b/standard-server/src/main/resources/mapper/SpecificationsMapper.xml
index 0942946..0d0c394 100644
--- a/standard-server/src/main/resources/mapper/SpecificationsMapper.xml
+++ b/standard-server/src/main/resources/mapper/SpecificationsMapper.xml
@@ -13,7 +13,8 @@
     </select>
 
     <select id="selectSNameSNName" resultType="Map">
-        select m.num,m.supplier,m.name m_name,m.location,m.batch,m.reel_number,concat(s.name,'/',sn.name) ss_name,s.voltage_level,s.cross_section,s.number_of_cores,s.instruct from material m,specifications s,serial_number sn
+        select m.num,m.supplier,m.name m_name,m.location,m.batch,m.reel_number,concat(s.name,'/',sn.name) ss_name,s.voltage_level,s.cross_section,s.number_of_cores,s.instruct
+        from material m,specifications s,serial_number sn
         where m.specifications_id = s.id
         and s.serial_id = sn.id
         and m.id = #{materialId}
diff --git a/sys/src/main/java/com/yuanchu/limslaboratory/CodeGenerator.java b/sys/src/main/java/com/yuanchu/limslaboratory/CodeGenerator.java
index 62440cc..683fb69 100644
--- a/sys/src/main/java/com/yuanchu/limslaboratory/CodeGenerator.java
+++ b/sys/src/main/java/com/yuanchu/limslaboratory/CodeGenerator.java
@@ -39,7 +39,8 @@
                 .setOpen(false) // 鏄惁鎵撳紑
                 .setSwagger2(true) //瀹炰綋灞炴�� Swagger2 娉ㄨВ
                 .setServiceName("%sService") // 璁剧疆serviceName鐨勫悕绉板幓澶у啓I
-                .setFileOverride(Override);// 鏄惁瑕嗙洊宸茬敓鎴愭枃浠�
+                .setFileOverride(Override)
+                .setEntityName("pojo");// 鏄惁瑕嗙洊宸茬敓鎴愭枃浠�
         mpg.setGlobalConfig(gc);
 
         // 鏁版嵁婧愰厤缃� 鏁版嵁搴撳悕 璐﹀彿瀵嗙爜
diff --git a/sys/src/main/resources/application-dev.yml b/sys/src/main/resources/application-dev.yml
index 35f3bd4..7dc4eaa 100644
--- a/sys/src/main/resources/application-dev.yml
+++ b/sys/src/main/resources/application-dev.yml
@@ -19,6 +19,8 @@
 # 鐓х墖瀛樺偍璺緞+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
 file:
   path: E:/webapp/images
+  # 涓婁紶鏂囦欢鍏佽鐨勬墿灞曞悕
+  allowed: png,jpg,jpeg,gif
 
 # 榈烽洀绠$悊绯荤粺瀵嗛挜
 login:
diff --git a/sys/src/main/resources/application-prod.yml b/sys/src/main/resources/application-prod.yml
index d401c15..fda93ce 100644
--- a/sys/src/main/resources/application-prod.yml
+++ b/sys/src/main/resources/application-prod.yml
@@ -19,6 +19,8 @@
 # 鐓х墖璺緞+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
 file:
   path: /javaWork/LIMS/images
+  # 涓婁紶鏂囦欢鍏佽鐨勬墿灞曞悕
+  allowed: png,jpg,jpeg,gif
 
 # 榈烽洀缃戠粶IP鎴栬�呭煙鍚�+++++++++++++++++++++++++++杩愮淮闇�瑕侀厤缃�+++++++++++++++++++++++++++
 customer:
diff --git a/sys/src/main/resources/application.yml b/sys/src/main/resources/application.yml
index bad7621..cc247aa 100644
--- a/sys/src/main/resources/application.yml
+++ b/sys/src/main/resources/application.yml
@@ -1,6 +1,11 @@
 server:
   port: 1234
+
 spring:
+  servlet:
+    multipart:
+      max-file-size: 20MB # 鍗曚釜鏂囦欢澶у皬
+      max-request-size: 1024MB # 涓�娆¤姹傛枃浠舵�诲ぇ灏�
   profiles:
     active: dev
 
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java b/user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java
index 8f57ac8..ac8d757 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java
@@ -7,12 +7,9 @@
 import com.yuanchu.limslaboratory.vo.NewPersonnelVo;
 import com.yuanchu.limslaboratory.vo.PagePersonnelVo;
 import com.yuanchu.limslaboratory.vo.UpdatePersonnelVo;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.io.Serializable;
-
+import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 
 /**
  * <p>
@@ -73,4 +70,9 @@
      * @return
      */
     String selectByUserId(Integer userId);
+
+    /**
+     * 鑾峰彇鎵�鏈夌敤鎴风殑鍚嶇О涓嶪d
+     */
+    List<Map<String, Object>> getUserNameAndId();
 }
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java b/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java
index 0a38be0..899c9cf 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java
@@ -18,6 +18,7 @@
 
 import javax.annotation.Resource;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -74,6 +75,13 @@
     }
 
     @Override
+    public List<Map<String, Object>> getUserNameAndId() {
+        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
+        wrapper.select(User::getId, User::getName);
+        return userMapper.selectMaps(wrapper);
+    }
+
+    @Override
     public Map<String, String> selectUserByUserId(int userId) {
         return userMapper.selectUserByUserId(userId);
     }

--
Gitblit v1.9.3