From 730443b70de88d328ffa275f51f69280fda979e4 Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期三, 30 八月 2023 12:59:50 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 inspection-server/src/main/resources/mapper/RawMaterialMapper.xml                                            |    3 
 inspection-server/src/main/resources/mapper/LinkDetectionMapper.xml                                          |    3 
 user-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java                                  |    2 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/LinkDetection.java                           |    2 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/InstrumentMapper.java                      |    2 
 framework/src/main/java/com/yuanchu/limslaboratory/enums/MenuEnums.java                                      |   91 +++++++
 inspection-server/src/main/resources/mapper/InspectionMapper.xml                                             |    2 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/LinkBasicInformationMapper.java            |    5 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkBasicInformationServiceImpl.java |   45 +++
 framework/src/main/java/com/yuanchu/limslaboratory/utils/MyClassUtil.java                                    |   62 +++++
 sys/src/main/java/com/yuanchu/limslaboratory/aop/AuthRequestAspect.java                                      |    2 
 user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java                    |    9 
 framework/src/main/java/com/yuanchu/limslaboratory/enums/InterfaceType.java                                  |   46 +++
 framework/src/main/java/com/yuanchu/limslaboratory/annotation/AuthHandler.java                               |   23 +
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/LinkBasicInformationService.java          |    8 
 user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java                |    6 
 user-server/src/main/resources/mapper/MenuMapper.xml                                                         |   11 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkDetectionController.java           |   17 
 user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java                            |    4 
 user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/MapHandlerRoleDto.java                         |   18 +
 inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java              |   25 ++
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/InspectionService.java                    |    8 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/InspectionServiceImpl.java           |   14 +
 sys/src/main/resources/application-dev.yml                                                                   |    2 
 user-server/src/main/resources/mapper/UserMapper.xml                                                         |    1 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/LinkDetectionMapper.java                   |    1 
 user-server/src/main/resources/mapper/RoleManangeMapper.xml                                                  |   12 +
 laboratory-server/src/main/resources/mapper/InstrumentMapper.xml                                             |    3 
 standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/SpecificationsMapper.java                    |    2 
 inspection-server/src/main/resources/mapper/LinkBasicInformationMapper.xml                                   |   74 +++++
 user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java                       |    3 
 sys/src/main/java/com/yuanchu/limslaboratory/commandLineRunner/ResolutionRequestsCommandLineRunner.java      |  114 +++++++++
 laboratory-server/src/main/resources/mapper/ClassifyMapper.xml                                               |    3 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkBasicInformationController.java    |   21 +
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkDetectionServiceImpl.java        |    1 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/LinkBasicInformation.java                    |    4 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LinkBasicInformationVo.java               |   25 ++
 37 files changed, 642 insertions(+), 32 deletions(-)

diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/annotation/AuthHandler.java b/framework/src/main/java/com/yuanchu/limslaboratory/annotation/AuthHandler.java
index 086b681..54e2dc6 100644
--- a/framework/src/main/java/com/yuanchu/limslaboratory/annotation/AuthHandler.java
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/annotation/AuthHandler.java
@@ -1,28 +1,35 @@
 package com.yuanchu.limslaboratory.annotation;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+import com.yuanchu.limslaboratory.enums.InterfaceType;
+import com.yuanchu.limslaboratory.enums.MenuEnums;
+
+import java.lang.annotation.*;
 
 /**
  * @author 寮犲
  */
 @Target({ElementType.METHOD, ElementType.TYPE})
 @Retention(RetentionPolicy.RUNTIME)
+@Documented
 public @interface AuthHandler {
 
     /**
      * 鎺ュ彛绫诲瀷
      * @return
      */
-    int type() default 0;
-
+    InterfaceType type() default InterfaceType.NUll;
 
     /**
-     * 鎺ュ彛鍚�
+     * 鑿滃崟id
      * @return
      */
-    String name() default "";
+    MenuEnums menuId() default MenuEnums.NUll;
+
+    /**
+     * 鏄惁闇�瑕佹坊鍔犳暟鎹簱
+     * @return
+     */
+    boolean isAdd() default false;
+
 
 }
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/enums/InterfaceType.java b/framework/src/main/java/com/yuanchu/limslaboratory/enums/InterfaceType.java
new file mode 100644
index 0000000..609128b
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/enums/InterfaceType.java
@@ -0,0 +1,46 @@
+package com.yuanchu.limslaboratory.enums;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/30
+ */
+public enum InterfaceType {
+
+    /**
+     * 鎺ュ彛绫诲瀷
+     */
+    SELECT("select",0),
+    ADD("add",1),
+    UPDATE("update",2),
+    DELETE("delete",3),
+    NUll();
+
+
+    private String type;
+
+    private Integer num;
+
+    public String getType() {
+        return type;
+    }
+
+    InterfaceType() {
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public  Integer getNum() {
+        return this.num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    InterfaceType(String type, Integer num) {
+        this.type = type;
+        this.num = num;
+    }
+}
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/enums/MenuEnums.java b/framework/src/main/java/com/yuanchu/limslaboratory/enums/MenuEnums.java
new file mode 100644
index 0000000..acc0a79
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/enums/MenuEnums.java
@@ -0,0 +1,91 @@
+package com.yuanchu.limslaboratory.enums;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/29
+ */
+public enum MenuEnums {
+    /**
+     * 绌烘牸鍖哄垎鍔熻兘妯″潡
+     */
+    standardLibrary("鏍囧噯搴�",1),
+    index("鏍囧噯搴�",38),
+
+    inspectionManagement("鎶ユ绠$悊",2),
+    commissionInspection("濮旀墭妫�楠�",3),
+    reportForInspection("鍘熸潗鏂欐姤妫�",4),
+
+    experiment("璇曢獙绠$悊",5),
+    inspectionApplication("鏂板妫�楠�",6),
+    planAssignments("妫�楠岃鍒�",7),
+    checkTheReport("妫�楠屾姤鍛�",8),
+    reportAuditing("鎶ュ憡瀹℃牳",9),
+    nonConformanceReview("涓嶅悎鏍煎搧鍙嶉",10),
+    nonConformingFeedback("涓嶅悎鏍煎搧璇勫",11),
+    passRateStatistics("鍚堟牸鐜囩粺璁�",12),
+
+    laboratory("瀹為獙瀹ょ鐞�",13),
+    ledger("璁惧鍙拌处",14),
+    measure("璁¢噺绠$悊",15),
+    gather("璁惧閲囬泦",16),
+    personnel("浜哄憳绠$悊",17),
+    org("缁勭粐鏋舵瀯",36),
+    role("瑙掕壊绠$悊",37),
+
+    laboratoryManage("瀹為獙瀹ょ鐞�",18),
+    CNAS("CNS绠$悊",19),
+    reviewAnnualPlan("瀹℃牳骞村害璁″垝",20),
+    nonConformanceManage("涓嶇鍚堥」绠$悊",21),
+    nonConformanceStatistics("涓嶇鍚堥」缁熻",22),
+    satisfactionSurveys("婊℃剰搴﹁皟鏌�",23),
+
+    chart("鏅鸿兘鍥捐〃",24),
+    center("瀹為獙涓績",25),
+    spc("SPC鎺у埗鍥�",26),
+    shota("姝eお鍒嗗竷鍥�",27),
+    work("宸ヤ綔缁熻",28),
+
+    message("娑堟伅浠e姙",29),
+    mymessage("鎴戠殑娑堟伅",30),
+    toDo("鎴戠殑浠e姙",31),
+
+    personal("涓汉绠$悊",32),
+    myInformation("鎴戠殑淇℃伅",33),
+
+    baseData("鍩虹鏁版嵁",34),
+    basicDataMessage("鍩虹鏁版嵁",35),
+
+    home("涓婚〉",39),
+
+    /**
+     * 绌�
+     */
+    NUll();
+    MenuEnums() {
+    }
+
+    private String name;
+
+    private Integer id;
+
+    MenuEnums(String name, Integer id) {
+        this.name = name;
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+}
diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/utils/MyClassUtil.java b/framework/src/main/java/com/yuanchu/limslaboratory/utils/MyClassUtil.java
new file mode 100644
index 0000000..976a27a
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/utils/MyClassUtil.java
@@ -0,0 +1,62 @@
+package com.yuanchu.limslaboratory.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.core.io.support.ResourcePatternResolver;
+import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
+import org.springframework.core.type.classreading.MetadataReader;
+import org.springframework.core.type.classreading.MetadataReaderFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ClassUtils;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.io.File;
+import java.net.JarURLConnection;
+import java.net.URL;
+
+/**
+ * @author 寮犲
+ */
+@Component
+@Slf4j
+public class MyClassUtil {
+
+    private final static String RESOURCE_PATTERN = "/**/*.class";
+
+    /**
+     * 閫氳繃鍖呭悕鑾峰彇椤圭洰鍖呬笅鎵�鏈夌被
+     *
+     * @param BASE_PACKAGE 鍖呭悕
+     * @return
+     */
+    public static List<Class<?>> getClassList(String BASE_PACKAGE) {
+        List<Class<?>> classes = new ArrayList<>();
+        //spring宸ュ叿绫伙紝鍙互鑾峰彇鎸囧畾璺緞涓嬬殑鍏ㄩ儴绫�
+        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
+        try {
+            String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +
+                    ClassUtils.convertClassNameToResourcePath(BASE_PACKAGE) + RESOURCE_PATTERN;
+            Resource[] resources = resourcePatternResolver.getResources(pattern);
+            //MetadataReader 鐨勫伐鍘傜被
+            MetadataReaderFactory readerfactory = new CachingMetadataReaderFactory(resourcePatternResolver);
+            for (Resource resource : resources) {
+                //鐢ㄤ簬璇诲彇绫讳俊鎭�
+                MetadataReader reader = readerfactory.getMetadataReader(resource);
+                //鎵弿鍒扮殑class
+                String classname = reader.getClassMetadata().getClassName();
+                log.info("classname={}", classname);
+                Class<?> clazz = Class.forName(classname);
+                classes.add(clazz);
+            }
+        } catch (Exception e) {
+            log.error("鑾峰彇class寮傚父:", e);
+        }
+        return classes;
+    }
+}
\ No newline at end of file
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java
index 7d0ee78..48f32c0 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java
@@ -7,6 +7,7 @@
 
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.yuanchu.limslaboratory.annotation.AuthHandler;
+import com.yuanchu.limslaboratory.mapper.InstrumentMapper;
 import com.yuanchu.limslaboratory.mapper.UserMapper;
 import com.yuanchu.limslaboratory.pojo.Inspection;
 import com.yuanchu.limslaboratory.pojo.Report;
@@ -50,6 +51,9 @@
 
     @Resource
     UserMapper userMapper;
+
+    @Resource
+    private  InstrumentMapper instrumentMapper;
 
     @ApiOperation(value = "鏌ヨ妫�楠岀敵璇峰崟鍒楄〃")
     @ApiImplicitParams(value = {
@@ -117,7 +121,8 @@
 
     @ApiOperation(value = "鏂板妫�楠屽崟")
     @PostMapping("/addInspect")
-    public Result addInspect(@RequestHeader("token") String token, @Validated @RequestBody InspectionVo inspectionVo) throws Exception {
+    @AuthHandler
+    public Result addInspect(@RequestHeader("X-Token") String token, @Validated @RequestBody InspectionVo inspectionVo) throws Exception {
         Object object = RedisUtil.get(token);
         Map<String, Object> unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(object), Map.class);
         return Result.success(inspectionService.addInspect((Integer) unmarshal.get("id"), inspectionVo));
@@ -128,15 +133,22 @@
             @ApiImplicitParam(name = "id", value = "妫�楠屽崟id", dataTypeClass = Integer.class, required = true)
     })
     @GetMapping("/selectInspectsListById")
+    @AuthHandler
     public Result selectInspectsListById(Integer id) {
         return Result.success(inspectionService.selectInspectsListById(id));
     }
 
     @ApiOperation(value = "閫夋嫨妫�楠岄」鐩殑璐d换浜�")
     @GetMapping("/selectUser")
+    @AuthHandler
     public Result selectUser() {
         return Result.success(userMapper.selectUser());
     }
+
+    @ApiOperation(value = "閫夋嫨妫�楠岃澶�")
+    @GetMapping("/selectEquipment")
+    @AuthHandler
+    public Result selectEquipment(){return Result.success(instrumentMapper.getInstrument());}
 
     @ApiOperation(value = "淇濆瓨妫�楠岄」鐩矗浠讳汉")
     @ApiImplicitParams(value = {
@@ -144,8 +156,16 @@
             @ApiImplicitParam(name = "userProId", value = "璐d换浜篿d", dataTypeClass = Integer.class, required = true)
     })
     @GetMapping("/chooseUseProId")
+    @AuthHandler
     public Result chooseUseProId(Integer id, Integer userProId) {
         return Result.success(inspectionService.chooseUseProId(id, userProId));
+    }
+
+    @ApiOperation("淇濆瓨璁惧id")
+    @GetMapping("/chooseEquipment")
+    @AuthHandler
+    public Result chooseEquipment(Integer id,Integer equipmentId){
+        return Result.success(inspectionService.chooseEquipment(id, equipmentId));
     }
 
     @ApiOperation(value = "浣滃簾妫�楠屽崟")
@@ -153,10 +173,13 @@
             @ApiImplicitParam(name = "id", value = "妫�楠屽崟id", dataTypeClass = Integer.class, required = true)
     })
     @PostMapping("/delInspect")
+    @AuthHandler
     public Result delInspect(Integer id) {
         return Result.success(inspectionService.delInspect(id));
     }
 
 
+
+
 }
 
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkBasicInformationController.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkBasicInformationController.java
index 76edbcc..bb5a18a 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkBasicInformationController.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkBasicInformationController.java
@@ -2,8 +2,12 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.limslaboratory.annotation.AuthHandler;
+import com.yuanchu.limslaboratory.enums.InterfaceType;
+import com.yuanchu.limslaboratory.enums.MenuEnums;
+import com.yuanchu.limslaboratory.pojo.LinkBasicInformation;
 import com.yuanchu.limslaboratory.service.LinkBasicInformationService;
 import com.yuanchu.limslaboratory.utils.MyUtil;
 import com.yuanchu.limslaboratory.utils.RedisUtil;
@@ -69,4 +73,21 @@
         return Result.success(map);
     }
 
+    @ApiOperation("鏍规嵁id鏌ヨSpecifications琛ㄧ殑Name")
+    @GetMapping("/getSpecificationsName")
+    public Result<?> getSpecificationsName(String id){
+        return Result.success(linkBasicInformationService.getSpecificationsName(id));
+    }
+
+    @ApiOperation("鍒犻櫎")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "id", value = "濮旀墭鏍峰搧id", dataTypeClass = Integer.class, required = true)
+    })
+    @PostMapping("/delLink")
+    @AuthHandler(type = InterfaceType.DELETE,menuId = MenuEnums.commissionInspection,isAdd = true)
+    public Result<?> delLink(Integer id){
+        linkBasicInformationService.delLink(id);
+        return Result.success("鍒犻櫎鎴愬姛!");
+    }
+
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkDetectionController.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkDetectionController.java
index 85cb28e..be91e78 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkDetectionController.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkDetectionController.java
@@ -49,9 +49,10 @@
     @Resource
     ProductService productService;
 
+
+
     @ApiOperation("閾炬帴-->鑾峰彇鏍峰搧鍚嶇О")
     @GetMapping("/material")
-    @AuthHandler
     public Result<?> getMaterialIdAndName(@RequestHeader("link") String link) {
         String redisLink = RedisUtil.get("viewId").toString();
         if (linkBasicInformationService.isIfViewUUID(redisLink)){
@@ -65,7 +66,6 @@
 
     @ApiOperation("閾炬帴-->鑾峰彇瑙勬牸鍨嬪彿")
     @GetMapping("/specification")
-    @AuthHandler
     public Result<?> getSpecificationIdAndName(@RequestHeader("link") String link, String materialId) {
         String redisLink = RedisUtil.get("viewId").toString();
         if (linkBasicInformationService.isIfViewUUID(redisLink)){
@@ -80,7 +80,6 @@
             @ApiImplicitParam(name = "modelId", value = "鍨嬪彿id", dataTypeClass = Integer.class, required = true)
     })
     @GetMapping("/chooseProject")
-    @AuthHandler
     public Result<?> chooseProject(@RequestHeader("link") String link,  Integer modelId) {
         String redisLink = RedisUtil.get("viewId").toString();
         if (linkBasicInformationService.isIfViewUUID(redisLink)){
@@ -93,7 +92,6 @@
 
     @ApiOperation("閾炬帴-->娣诲姞濮旀墭鎶ユ鐢宠鍗�")
     @PostMapping("/addInspection")
-    @AuthHandler
     public Result<?> addLinkBasicInformation(@RequestHeader("link") String link, @RequestBody LinkBasicInformation linkBasicInformation) {
         String redisLink = RedisUtil.get("viewId").toString();
         if (linkBasicInformationService.isIfViewUUID(redisLink)){
@@ -111,22 +109,27 @@
 
     @ApiOperation(value = "鐢熸垚浜岀淮鐮佹墍闇�鐨勫敮涓�鐮�")
     @GetMapping("/getViewUUID")
-    @AuthHandler
     public Result<?> getViewUUID(int day){
         return Result.success("鐢熸垚鎴愬姛",linkBasicInformationService.getViewUUID(day));
     }
 
     @ApiOperation(value = "鏌ヨ浜岀淮鐮佹墍闇�鐨勫敮涓�鐮�")
     @GetMapping("/selectViewUUID")
-    @AuthHandler
     public Result<?> selectViewUUID(){
         return Result.success("鏌ヨ鎴愬姛",linkBasicInformationService.selectViewUUID());
     }
 
     @ApiOperation(value = "妫�楠屽敮涓�鐮佹槸鍚︽湁鏁�")
     @GetMapping("/isIfViewUUID")
-    @AuthHandler
     public Result<?> isIfViewUUID(String viewId){
         return Result.success("鏌ヨ鎴愬姛",linkBasicInformationService.isIfViewUUID(viewId));
     }
+
+
+    @ApiOperation("鑾峰彇鏍峰搧淇℃伅浠ュ強濮旀墭淇℃伅")
+    @GetMapping("/getContractsSampleInfo")
+    public Result<?> getContractsSampleInfo(String viewId){
+        return Result.success(linkBasicInformationService.getContractsSampleInfo(viewId));
+    }
+
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/LinkBasicInformationMapper.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/LinkBasicInformationMapper.java
index dfb1e46..422dae3 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/LinkBasicInformationMapper.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/LinkBasicInformationMapper.java
@@ -5,6 +5,8 @@
 import com.yuanchu.limslaboratory.pojo.LinkBasicInformation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.yuanchu.limslaboratory.pojo.vo.InspectionVo;
+import com.yuanchu.limslaboratory.pojo.vo.LinkBasicInformationVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -28,4 +30,7 @@
     List<Map<String, Object>> selectLinkAll();
 
 
+    LinkBasicInformation getLinkBasicInformation(@Param("uid")String uid);
+
+    int deleteByID(Integer id);
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/LinkDetectionMapper.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/LinkDetectionMapper.java
index 7e6da26..e7a7486 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/LinkDetectionMapper.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/LinkDetectionMapper.java
@@ -14,4 +14,5 @@
  */
 public interface LinkDetectionMapper extends MyBaseMapper<LinkDetection> {
 
+    int deleteByLinkbasic(Integer id);
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/LinkBasicInformation.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/LinkBasicInformation.java
index 5c9f196..483d0e4 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/LinkBasicInformation.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/LinkBasicInformation.java
@@ -65,6 +65,10 @@
     @ApiModelProperty(value = "濮旀墭澶囨敞", example = "濮旀墭澶囨敞YPBH123456789YPBH123456789YPBH123456789")
     private String entrustRemarks;
 
+    @ApiModelProperty(value = "妫�楠屾椂闂�", hidden = true)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date insTime;
+
     @TableLogic(value = "1", delval = "0")
     @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
     private Integer state;
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/LinkDetection.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/LinkDetection.java
index 5345c81..832e4ca 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/LinkDetection.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/LinkDetection.java
@@ -60,7 +60,7 @@
     @ApiModelProperty(value = "LinkBasicInformation瀵硅薄Id", hidden = true)
     private Integer linkBasicId;
 
-    @TableLogic(value = "1", delval = "0")
+
     @ApiModelProperty(value = "閫昏緫鍒犻櫎 姝e父>=1,鍒犻櫎<=0", hidden = true)
     private Integer state;
 
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LinkBasicInformationVo.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LinkBasicInformationVo.java
new file mode 100644
index 0000000..7a81fe4
--- /dev/null
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/LinkBasicInformationVo.java
@@ -0,0 +1,25 @@
+package com.yuanchu.limslaboratory.pojo.vo;
+
+import com.yuanchu.limslaboratory.pojo.LinkBasicInformation;
+import com.yuanchu.limslaboratory.pojo.LinkDetection;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/29
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class LinkBasicInformationVo extends LinkBasicInformation implements Serializable{
+
+    /**
+     *鏍峰搧淇℃伅
+     */
+    private List<LinkDetection> detectionList;
+
+
+}
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 fd58af1..f8236fc 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
@@ -78,6 +78,12 @@
      */
     String chooseUseProId(Integer id, Integer userProId);
 
-
+    /**
+     * 淇濆瓨璁惧
+     * @param id
+     * @param equipmentId
+     * @return
+     */
+    boolean chooseEquipment(Integer id, Integer equipmentId);
 }
 
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/LinkBasicInformationService.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/LinkBasicInformationService.java
index 3a4c2a5..3f81fb4 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/LinkBasicInformationService.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/LinkBasicInformationService.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.limslaboratory.pojo.LinkBasicInformation;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.limslaboratory.pojo.Specifications;
 import com.yuanchu.limslaboratory.pojo.vo.InspectionVo;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -36,4 +37,11 @@
     Map<String, String> selectViewUUID();
 
     boolean isIfViewUUID(String uuid);
+
+    LinkBasicInformation getContractsSampleInfo(String viewId);
+
+    //鏍规嵁濮旀墭鏍峰搧id鍒犻櫎
+    void delLink(Integer id);
+
+    Specifications getSpecificationsName(String id);
 }
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 4f5f9c1..580f029 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
@@ -1,7 +1,9 @@
 package com.yuanchu.limslaboratory.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.Snowflake;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -132,6 +134,7 @@
             RawMaterial rawMaterial = new RawMaterial();
             rawMaterial.setId(inspectionVo.getId());
             rawMaterial.setType(1);
+            rawMaterial.setInspectionDate(DateUtil.date());
             rawMaterial.setSurveyor(userMapper.selectById(id).getName());
             rawMaterialMapper.updateById(rawMaterial);
         }
@@ -286,12 +289,23 @@
         return "淇濆瓨鎴愬姛!";
     }
 
+    @Override
+    public boolean chooseEquipment(Integer id, Integer equipmentId) {
+        UpdateWrapper<InspectionProduct>inspectionProductUpdateWrapper=new UpdateWrapper<>();
+        inspectionProductUpdateWrapper.lambda().set(InspectionProduct::getInstrumentId,equipmentId)
+                .eq(InspectionProduct::getId,id);
+        return inspectionProductMapper.update(null,inspectionProductUpdateWrapper)>0;
+    }
+
     /*鏍规嵁鏍峰搧鍚嶇О,鏍峰搧缂栧彿,鍨嬪彿瑙勬牸鑾峰彇鍨嬪彿id*/
     private Integer getSpecificationId(String name, String mcode, String specification) {
         //鑾峰彇鐗╂枡id
         Material material = materialMapper.selectOne(Wrappers.<Material>query()
                 .eq("name", name)
                 .eq("code", mcode));
+        if (Objects.isNull(material)){
+            return null;
+        }
         //鑾峰彇瑙勬牸鍚嶇О鍜屽瀷鍙峰悕绉�
         String[] split = specification.split("-");
         String stName = split[0];
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkBasicInformationServiceImpl.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkBasicInformationServiceImpl.java
index d7dd0eb..4e216bd 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkBasicInformationServiceImpl.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkBasicInformationServiceImpl.java
@@ -1,9 +1,14 @@
 package com.yuanchu.limslaboratory.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.limslaboratory.mapper.LinkDetectionMapper;
+import com.yuanchu.limslaboratory.mapper.SpecificationsMapper;
 import com.yuanchu.limslaboratory.pojo.LinkBasicInformation;
 import com.yuanchu.limslaboratory.mapper.LinkBasicInformationMapper;
+import com.yuanchu.limslaboratory.pojo.LinkDetection;
+import com.yuanchu.limslaboratory.pojo.Specifications;
 import com.yuanchu.limslaboratory.service.LinkBasicInformationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yuanchu.limslaboratory.service.LinkDetectionService;
@@ -11,6 +16,7 @@
 import com.yuanchu.limslaboratory.utils.RedisUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.*;
@@ -29,11 +35,27 @@
     @Resource
     private LinkBasicInformationMapper linkBasicInformationMapper;
 
+    @Resource
+    private LinkDetectionMapper linkDetectionMapper;
+
     @Autowired
     private LinkDetectionService linkDetectionService;
 
+    @Autowired
+    private SpecificationsMapper specificationsMapperOn;
+
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public String addLinkBasicInformation(LinkBasicInformation linkBasicInformation) {
+        System.out.println(linkBasicInformation.getLinkDetectionList());
+        QueryWrapper<LinkBasicInformation> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().select(LinkBasicInformation::getId).eq(LinkBasicInformation::getUid, linkBasicInformation.getUid());
+        LinkBasicInformation linkBasicInformation1 = linkBasicInformationMapper.selectOne(queryWrapper);
+        Optional.ofNullable(linkBasicInformation1.getId()).ifPresent(l->{
+            //鎵ц鍒犻櫎
+            linkDetectionMapper.deleteByLinkbasic(linkBasicInformation1.getId());
+            linkBasicInformationMapper.deleteByID(linkBasicInformation1.getId());
+        });
         //濮旀墭缂栧彿
         String code = MyUtil.getTimeSixNumberCode("SL", "SL");
         linkBasicInformation.setEntrustCoding(code);
@@ -83,5 +105,28 @@
         return uuid.equals(RedisUtil.get("viewId"));
     }
 
+    @Override
+    public LinkBasicInformation getContractsSampleInfo(String viewId) {
+        return linkBasicInformationMapper.getLinkBasicInformation(viewId);
+    }
+
+    //鏍规嵁濮旀墭鏍峰搧鍒犻櫎
+    @Override
+    public void delLink(Integer id) {
+        LinkDetection linkDetection = new LinkDetection();
+        linkDetection.setId(id);
+        linkDetection.setState(0);
+        linkDetectionService.updateById(linkDetection);
+    }
+
+    @Override
+    public Specifications getSpecificationsName(String id) {
+        QueryWrapper<Specifications>queryWrapper=new QueryWrapper<>();
+        queryWrapper.lambda().select(Specifications::getName)
+                .eq(Specifications::getId,id)
+                .eq(Specifications::getState,1);
+        return specificationsMapperOn.selectOne(queryWrapper);
+    }
+
 
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkDetectionServiceImpl.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkDetectionServiceImpl.java
index e347c34..b73a90f 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkDetectionServiceImpl.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkDetectionServiceImpl.java
@@ -29,6 +29,7 @@
         for (LinkDetection linkDetection:linkDetectionList){
             linkDetection.setInspectionStatus(1);
             linkDetection.setLinkBasicId(id);
+            linkDetection.setState(1);
         }
         linkDetectionMapper.insertBatchSomeColumn(linkDetectionList);
     }
diff --git a/inspection-server/src/main/resources/mapper/InspectionMapper.xml b/inspection-server/src/main/resources/mapper/InspectionMapper.xml
index 711a5fe..275f752 100644
--- a/inspection-server/src/main/resources/mapper/InspectionMapper.xml
+++ b/inspection-server/src/main/resources/mapper/InspectionMapper.xml
@@ -4,7 +4,7 @@
     <select id="selectInspectsList" resultType="map">
         select i.id,
         i.code icode,
-        type,
+        i.type type,
         DATE_FORMAT(`form_time`,'%Y-%m-%d'),
         supplier,
         im.code mcode,
diff --git a/inspection-server/src/main/resources/mapper/LinkBasicInformationMapper.xml b/inspection-server/src/main/resources/mapper/LinkBasicInformationMapper.xml
index 619b044..0896c63 100644
--- a/inspection-server/src/main/resources/mapper/LinkBasicInformationMapper.xml
+++ b/inspection-server/src/main/resources/mapper/LinkBasicInformationMapper.xml
@@ -1,15 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yuanchu.limslaboratory.mapper.LinkBasicInformationMapper">
+    <delete id="deleteByID">
+        delete from link_basic_information where id=#{id}
+    </delete>
     <select id="getLinkBasicPage" resultType="map">
-        SELECT l.`id`, l.`entrust_coding`, l.`entrusted`, d.`samples_number`, d.`sample_name`,
-        d.`specifications_models`,
+        SELECT d.`id`, l.`entrust_coding`, l.`entrusted`, d.`samples_number`, d.`sample_name`,
+        s.name   specifications_models,
         DATE_FORMAT(l.`inspection_time`,'%Y-%m-%d') inspectionTime, DATE_FORMAT(l.`completion_deadline`,'%Y-%m-%d')
         completionDeadline, l.`contacts`,
-        DATE_FORMAT(d.`date_survey`,'%Y-%m-%d') dateSurvey, d.`inspection_status`
-        FROM link_basic_information l, link_detection d
+        DATE_FORMAT(d.`date_survey`,'%Y-%m-%d') dateSurvey, d.`inspection_status`,
+        DATE_FORMAT(l.`ins_time`,'%Y-%m-%d') insTime
+        FROM link_basic_information l, link_detection d,specifications s
         WHERE l.`id` = d.`link_basic_id`
-        AND l.`state` = 1
+        and s.id=d.`specifications_models`
+        AND d.`state` = 1
+        and l.`state` = 1
         <if test="entrustCoding != null and entrustCoding != null">
             AND l.`entrust_coding` like concat('%', #{entrustCoding}, '%')
         </if>
@@ -25,8 +31,8 @@
     </select>
 
     <select id="selectLinkAll" resultType="java.util.Map">
-        SELECT d.id ,
-            DATE_FORMAT(l.`inspection_time`, '%Y-%m-%d') formTime,
+        SELECT d.id,
+               DATE_FORMAT(l.`inspection_time`, '%Y-%m-%d') formTime,
                l.`entrusted`                                supplier,
                d.`sample_number`                            mcode,
                d.`sample_name`                              name,
@@ -42,4 +48,58 @@
           AND l.`state` = 1
           and inspection_status = 1
     </select>
+    <select id="getLinkBasicInformation" resultMap="getLinkBasicInformationMap">
+        SELECT lb.entrust_coding        entrustCoding,
+               lb.contacts              contacts,
+               lb.contact_number        contactNumber,
+               lb.contact_address       contactAddress,
+               lb.completion_deadline   completionDeadline,
+               lb.inspection_time       inspectionTime,
+               lb.sample_delivery_mode  sampleDeliveryMode,
+               lb.sample_delivery_phone sampleDeliveryPhone,
+               lb.report_number         reportNumber,
+               lb.entrust_remarks       entrustRemarks,
+               lb.sample_sender         sampleSender,
+               lb.entrusted             entrusted,
+               lb.uid                   uid,
+               ld.id                    id,
+               ld.sample_number         sampleNumber,
+               ld.sample_name           sampleName,
+               ld.specifications_models specificationsModels,
+               ld.unit                  unit,
+               ld.experiment            experiment,
+               ld.samples_number        samplesNumber,
+               ld.remarks               remarks
+        FROM link_basic_information lb left join
+             link_detection ld
+             on lb.id = ld.link_basic_id
+        where lb.uid = #{uid}
+          and lb.state = 1
+    </select>
+
+    <resultMap id="getLinkBasicInformationMap" type="com.yuanchu.limslaboratory.pojo.LinkBasicInformation">
+        <result property="entrustCoding" column="entrustCoding"/>
+        <result property="contacts" column="contacts"/>
+        <result property="contactNumber" column="contactNumber"/>
+        <result property="contactAddress" column="contactAddress"/>
+        <result property="uid" column="uid"/>
+        <result property="completionDeadline" column="completionDeadline"/>
+        <result property="inspectionTime" column="inspectionTime"/>
+        <result property="sampleDeliveryMode" column="sampleDeliveryMode"/>
+        <result property="sampleDeliveryPhone" column="sampleDeliveryPhone"/>
+        <result property="sampleSender" column="sampleSender"/>
+        <result property="entrustRemarks" column="entrustRemarks"/>
+        <result property="reportNumber" column="reportNumber"/>
+        <result property="entrusted" column="entrusted"/>
+        <collection property="linkDetectionList" ofType="LinkDetection">
+            <result property="id" column="id"/>
+            <result property="sampleNumber" column="sampleNumber"/>
+            <result property="sampleName" column="sampleName"/>
+            <result property="specificationsModels" column="specificationsModels"/>
+            <result property="unit" column="unit"/>
+            <result property="samplesNumber" column="samplesNumber"/>
+            <result property="remarks" column="remarks"/>
+            <result property="experiment" column="experiment"/>
+        </collection>
+    </resultMap>
 </mapper>
diff --git a/inspection-server/src/main/resources/mapper/LinkDetectionMapper.xml b/inspection-server/src/main/resources/mapper/LinkDetectionMapper.xml
index 192de47..bf28846 100644
--- a/inspection-server/src/main/resources/mapper/LinkDetectionMapper.xml
+++ b/inspection-server/src/main/resources/mapper/LinkDetectionMapper.xml
@@ -2,4 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yuanchu.limslaboratory.mapper.LinkDetectionMapper">
 
+    <delete id="deleteByLinkbasic">
+        delete from link_detection where link_basic_id=#{id}
+    </delete>
 </mapper>
diff --git a/inspection-server/src/main/resources/mapper/RawMaterialMapper.xml b/inspection-server/src/main/resources/mapper/RawMaterialMapper.xml
index 7e17cfa..88e512e 100644
--- a/inspection-server/src/main/resources/mapper/RawMaterialMapper.xml
+++ b/inspection-server/src/main/resources/mapper/RawMaterialMapper.xml
@@ -26,11 +26,12 @@
                specifications_models                    specifications,
                unit,
                quantity                                 num,
+               surveyor,
+               type,
                DATE_FORMAT(inspection_date, '%Y-%m-%d') startTime,
                DATE_FORMAT(date_survey, '%Y-%m-%d')     endTime,
                DATE_FORMAT(create_time, '%Y-%m-%d')     formTime
         from lims_laboratory.raw_material
         where state = 1
-          and type = 0
     </select>
 </mapper>
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 dba7af0..affbdc7 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
@@ -25,4 +25,6 @@
 
     //鍒嗛厤-->閫夋嫨璁惧
     List<Map<String, Object>> chooseinstum();
+
+    List<Instrument> getInstrument();
 }
diff --git a/laboratory-server/src/main/resources/mapper/ClassifyMapper.xml b/laboratory-server/src/main/resources/mapper/ClassifyMapper.xml
index c319b0f..f2d97dd 100644
--- a/laboratory-server/src/main/resources/mapper/ClassifyMapper.xml
+++ b/laboratory-server/src/main/resources/mapper/ClassifyMapper.xml
@@ -9,5 +9,8 @@
           <if test="fatherName!=null and fatherName!=''">
               AND father_name = #{fatherName}
           </if>
+        <if test="sonName!=null and sonName!=''">
+            and son_name=#{sonName}
+        </if>
     </select>
 </mapper>
diff --git a/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml b/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml
index ab1509d..3aa5914 100644
--- a/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml
+++ b/laboratory-server/src/main/resources/mapper/InstrumentMapper.xml
@@ -46,4 +46,7 @@
                  left join lims_laboratory.classify c on c.id = instrument.classify_id
         where conditions in(1,5)
     </select>
+    <select id="getInstrument" resultType="com.yuanchu.limslaboratory.pojo.Instrument">
+        select id,equipment_name name from instrument  where 1=1  and state=1 and conditions=5
+    </select>
 </mapper>
diff --git a/standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/SpecificationsMapper.java b/standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/SpecificationsMapper.java
index 27a06a0..2349270 100644
--- a/standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/SpecificationsMapper.java
+++ b/standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/SpecificationsMapper.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.limslaboratory.pojo.Specifications;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
 
 import java.util.Map;
 import java.util.Objects;
@@ -16,6 +17,7 @@
  * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
  * @since 2023-07-11
  */
+@Repository
 public interface SpecificationsMapper extends BaseMapper<Specifications> {
 
     Map<String, Object> selectSNameSNName(int materialId);
diff --git a/sys/src/main/java/com/yuanchu/limslaboratory/aop/AuthRequestAspect.java b/sys/src/main/java/com/yuanchu/limslaboratory/aop/AuthRequestAspect.java
index 4c54f75..3a53c0d 100644
--- a/sys/src/main/java/com/yuanchu/limslaboratory/aop/AuthRequestAspect.java
+++ b/sys/src/main/java/com/yuanchu/limslaboratory/aop/AuthRequestAspect.java
@@ -100,7 +100,7 @@
                 //throw new AuthException("400","鏃犳潈闄�");
             }
         } else {
-            throw new AuthException("401", "鐧婚檰杩囨湡");
+            throw new AuthException("401", "鐧婚檰杩囨湡!");
         }
     }
 
diff --git a/sys/src/main/java/com/yuanchu/limslaboratory/commandLineRunner/ResolutionRequestsCommandLineRunner.java b/sys/src/main/java/com/yuanchu/limslaboratory/commandLineRunner/ResolutionRequestsCommandLineRunner.java
new file mode 100644
index 0000000..5a2b1ef
--- /dev/null
+++ b/sys/src/main/java/com/yuanchu/limslaboratory/commandLineRunner/ResolutionRequestsCommandLineRunner.java
@@ -0,0 +1,114 @@
+package com.yuanchu.limslaboratory.commandLineRunner;
+
+import com.yuanchu.limslaboratory.annotation.AuthHandler;
+import com.yuanchu.limslaboratory.mapper.MenuMapper;
+import com.yuanchu.limslaboratory.mapper.RoleManageMapper;
+import com.yuanchu.limslaboratory.utils.ArrayListUtil;
+import com.yuanchu.limslaboratory.utils.MyClassUtil;
+import com.yuanchu.limslaboratory.utils.SpringUtil;
+import io.swagger.annotations.ApiOperation;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.core.annotation.AnnotationUtils;
+import org.springframework.core.annotation.Order;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.core.io.support.ResourcePatternResolver;
+import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
+import org.springframework.core.type.classreading.MetadataReader;
+import org.springframework.core.type.classreading.MetadataReaderFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.*;
+
+import java.lang.reflect.Method;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/28
+ */
+@Component
+@Order(1)
+@Slf4j
+public class ResolutionRequestsCommandLineRunner implements CommandLineRunner {
+
+    @Autowired
+    private RoleManageMapper roleManageMapper;
+
+    @SneakyThrows
+    @Override
+    public void run(String... args) throws Exception {
+        log.info("瀹瑰櫒鐢熸垚涔嬪悗鎵ц");
+        List<Class<?>> classList = MyClassUtil.getClassList("com.yuanchu.limslaboratory.controller");
+        List<Map<String, String>> requestListInfo = new ArrayList<Map<String, String>>();
+        classList.stream().forEach(c -> {
+            Method[] methods = c.getMethods();
+            //鍘绘帀瀵硅薄鏂规硶
+            List<Method> methodList = Arrays.stream(methods)
+                    .filter(m -> !"notify".equals(m.getName()) && !"getClass".equals(m.getName())
+                            && !"hashCode".equals(m.getName()) && !"toString".equals(m.getName())
+                            && !"equals".equals(m.getName()) && !"wait".equals(m.getName()) && !"notifyAll".equals(m.getName()))
+                    .collect(Collectors.toList());
+
+            for (int i = 0; i < methodList.size(); i++) {
+                Method method = methodList.get(i);
+                boolean annotationPresent = method.isAnnotationPresent(AuthHandler.class);
+                if (annotationPresent&&method.getAnnotation(AuthHandler.class).isAdd()) {
+                    //鑾峰彇绫讳笂璇锋眰鍦板潃
+                    RequestMapping annotation = c.getAnnotation(RequestMapping.class);
+                    StringBuilder builder = new StringBuilder();
+                    String apiInfo = null;
+                    builder.append(annotation.value()[0]);
+                    //鑾峰彇鏂规硶涓婃敞瑙�
+                    if (method.isAnnotationPresent(PostMapping.class)) {
+                        PostMapping post = method.getAnnotation(PostMapping.class);
+                        builder.append(post.value()[0]);
+                    }
+                    if (method.isAnnotationPresent(GetMapping.class)) {
+                        GetMapping get = method.getAnnotation(GetMapping.class);
+                        builder.append(get.value()[0]);
+                    }
+                    if (method.isAnnotationPresent(DeleteMapping.class)) {
+                        DeleteMapping delete = method.getAnnotation(DeleteMapping.class);
+                        builder.append(delete.value()[0]);
+                    }
+                    if (method.isAnnotationPresent(PutMapping.class)) {
+                        PutMapping put = method.getAnnotation(PutMapping.class);
+                        builder.append(put.value()[0]);
+                    }
+                    if (method.isAnnotationPresent(ApiOperation.class)) {
+                        ApiOperation api = method.getAnnotation(ApiOperation.class);
+                        apiInfo = api.value();
+                    }
+                    Map<String, String> map = new HashMap<String, String>();
+                    AuthHandler auth = method.getAnnotation(AuthHandler.class);
+                    map.put("menuId", String.valueOf(auth.menuId().getId()));
+                    map.put("type",String.valueOf(auth.type().getNum()));
+                    map.put("url", builder.toString());
+                    map.put("name", apiInfo);
+                    requestListInfo.add(map);
+                }
+            }
+        });
+        List<Map<String, String>> allInterfaces = roleManageMapper.getAllInterfaces();
+        List<Map<String, String>> differentMaps = requestListInfo.stream()
+                .filter(map1 -> allInterfaces.stream()
+                        .map(map2 -> map2.get("url"))  // 鑾峰彇鎸囧畾閿殑鍊�
+                        .noneMatch(value2 -> value2.equals(map1.get("url")))  // 鏌ユ壘涓嶅悓鐨勫��
+                ).collect(Collectors.toList());
+        if(differentMaps.size()>0){
+
+            int insertInterfaceList = roleManageMapper.insertInterfaceList(differentMaps);
+            if (insertInterfaceList>0) log.info(String.valueOf(differentMaps));log.info("鏂板鎺ュ彛鎴愬姛锛�");
+        }else {
+            log.info("鏃犻渶澧炲姞鏂扮殑鎺ュ彛锛�");
+        }
+
+    }
+
+
+}
diff --git a/sys/src/main/resources/application-dev.yml b/sys/src/main/resources/application-dev.yml
index f2dc523..62f17fc 100644
--- a/sys/src/main/resources/application-dev.yml
+++ b/sys/src/main/resources/application-dev.yml
@@ -75,7 +75,7 @@
     # redis璁块棶瀵嗙爜锛堥粯璁や负绌猴級
     password: null
     # redis杩炴帴瓒呮椂鏃堕棿锛堝崟浣嶆绉掞級
-    timeout: 500
+    timeout: 1000
     # redis杩炴帴姹犻厤缃�
     pool:
       # 鏈�澶у彲鐢ㄨ繛鎺ユ暟锛堥粯璁や负8锛岃礋鏁拌〃绀烘棤闄愶級
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java b/user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
index 2668336..e795ff3 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
@@ -1,6 +1,8 @@
 package com.yuanchu.limslaboratory.controller;
 
 import com.yuanchu.limslaboratory.annotation.AuthHandler;
+import com.yuanchu.limslaboratory.enums.InterfaceType;
+import com.yuanchu.limslaboratory.enums.MenuEnums;
 import com.yuanchu.limslaboratory.pojo.dto.GetAllRoleAndMenuByConditionPageDto;
 import com.yuanchu.limslaboratory.pojo.dto.RoleInfoDto;
 import com.yuanchu.limslaboratory.pojo.dto.UpdateRoleMenuDto;
@@ -72,4 +74,11 @@
     public Result<?> getRoleAndMenuByRole(Long roleId){
         return Result.success(roleManagerService.getRoleAndMenuByRole(roleId));
     }
+
+    @AuthHandler(type = InterfaceType.SELECT,menuId = MenuEnums.role,isAdd = true)
+    @ApiOperation("娴嬭瘯鐢熸垚")
+    @GetMapping("/test")
+    public Result<?> test(Long roleId){
+        return Result.success(null);
+    }
 }
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java b/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java
index 56e131d..d97aff5 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java
@@ -5,6 +5,7 @@
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Author 寮犲
@@ -15,5 +16,6 @@
 
     List<Menu> getMenuList();
 
+    List<Map<String, Object>> getMenuNameAndId();
 
 }
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java b/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
index 522c767..25eba82 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
@@ -39,4 +39,8 @@
     Map<String, Object>selctInterFaceType(String url);
 
     Map<String, Long> hasUrl(String type, String menuId, String roleId);
+
+    List<Map<String, String>>getAllInterfaces();
+
+    int insertInterfaceList(@Param("interfaceList") List<Map<String, String>>interfaceList);
 }
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/MapHandlerRoleDto.java b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/MapHandlerRoleDto.java
new file mode 100644
index 0000000..537d60d
--- /dev/null
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/MapHandlerRoleDto.java
@@ -0,0 +1,18 @@
+package com.yuanchu.limslaboratory.pojo.dto;
+
+import com.yuanchu.limslaboratory.utils.JsonUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/28
+ */
+@Component
+public class MapHandlerRoleDto {
+    public static  String comparingBySupplier(Object o){
+        Map map= JsonUtil.jsonToPojo(JsonUtil.jsonToString(o),Map.class);
+        return String.valueOf(map.get("url"));
+    }
+}
diff --git a/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java b/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
index c1c4e18..5a9cd16 100644
--- a/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
+++ b/user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
@@ -19,6 +19,7 @@
 import com.yuanchu.limslaboratory.service.RoleManagerService;
 import com.yuanchu.limslaboratory.utils.JsonUtil;
 import com.yuanchu.limslaboratory.utils.MyUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -32,6 +33,7 @@
  * @Date 2023/8/23
  */
 @Service
+@Slf4j
 public class RoleManagerServiceImpl implements RoleManagerService {
 
     @Resource
@@ -74,6 +76,9 @@
                     ,createTime
             ));
         });
+        if(roleMenuList.size()<1){
+            roleMenuList.add(new RoleMenu(null,nextId,39L,false,false,false,false,createTime));
+        }
         //roleMenuAddList.forEach(System.out::println);
         int i = roleManageMapper.insertBatchRoleMenu(roleMenuList);
         return insert>0&&i>0;
@@ -149,6 +154,7 @@
         String type=null;
         Map<String, Object> stringIntegerMap = roleManageMapper.selctInterFaceType(url);
         if(Objects.isNull(stringIntegerMap)){
+            log.warn("娌℃湁====銆�"+url+"璇锋眰璧勬簮");
             throw new AuthException("403","娌℃湁璇ヨ祫婧�");
         }
         String of = String.valueOf(stringIntegerMap.get("type"));
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 75791a6..ddf91db 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
@@ -94,7 +94,8 @@
     }
 
     @Override
-    public List<Map<String, Object>> getUserNameAndId() {
+    public List<Map<String, Object>>
+    getUserNameAndId() {
         LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
         wrapper.select(User::getId, User::getName).eq(User::getType,1);
         return userMapper.selectMaps(wrapper);
diff --git a/user-server/src/main/resources/mapper/MenuMapper.xml b/user-server/src/main/resources/mapper/MenuMapper.xml
index 1ea9b2d..6d55185 100644
--- a/user-server/src/main/resources/mapper/MenuMapper.xml
+++ b/user-server/src/main/resources/mapper/MenuMapper.xml
@@ -3,8 +3,15 @@
 <mapper namespace="com.yuanchu.limslaboratory.mapper.MenuMapper">
 
     <select id="getMenuList" resultType="com.yuanchu.limslaboratory.pojo.Menu">
-        select id,name,parent_id parentId
+        select id, name, parent_id parentId
         from menu
-        where state =1
+        where state = 1
+          and id != 39
+       and parent_id != 39
+    </select>
+    <select id="getMenuNameAndId" resultType="map">
+        select url, id, name
+        from menu
+        where state = 1
     </select>
 </mapper>
\ No newline at end of file
diff --git a/user-server/src/main/resources/mapper/RoleManangeMapper.xml b/user-server/src/main/resources/mapper/RoleManangeMapper.xml
index f8db203..267f62f 100644
--- a/user-server/src/main/resources/mapper/RoleManangeMapper.xml
+++ b/user-server/src/main/resources/mapper/RoleManangeMapper.xml
@@ -17,6 +17,14 @@
         #{createTime}
         )
     </insert>
+    <insert id="insertInterfaceList">
+        insert
+        interface_info (id,name,url,menu_id,type,state)
+        values
+        <foreach collection="interfaceList" item="m" separator=",">
+            (#{m.id},#{m.name},#{m.url},#{m.menuId},#{m.type},1)
+        </foreach>
+    </insert>
     <update id="updateRoleState">
         UPDATE role
         SET state = 0
@@ -108,6 +116,10 @@
           and menu_id = #{menuId}
           and ${type} = 1
     </select>
+    <select id="getAllInterfaces" resultType="java.util.Map">
+        select name, url
+        from interface_info
+    </select>
     <resultMap id="roleAndMenuById" type="com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto">
         <result property="roleName" column="roleName"/>
         <result property="createTime" column="createTime"/>
diff --git a/user-server/src/main/resources/mapper/UserMapper.xml b/user-server/src/main/resources/mapper/UserMapper.xml
index 6a87908..b89ebd9 100644
--- a/user-server/src/main/resources/mapper/UserMapper.xml
+++ b/user-server/src/main/resources/mapper/UserMapper.xml
@@ -43,5 +43,6 @@
         select id, name
         from lims_laboratory.user
         where job_state!=0
+        and type=1
     </select>
 </mapper>

--
Gitblit v1.9.3