Fixiaobai
2023-08-30 084c0c3ba5600e0b406ea9c7c7c158a527933d4c
修改接口新增方式,
已修改11个文件
已添加2个文件
321 ■■■■ 文件已修改
framework/src/main/java/com/yuanchu/limslaboratory/annotation/AuthHandler.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/enums/InterfaceType.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/enums/MenuEnums.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkDetectionController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/mapper/LinkDetectionMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkBasicInformationServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/resources/mapper/LinkDetectionMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sys/src/main/java/com/yuanchu/limslaboratory/commandLineRunner/ResolutionRequestsCommandLineRunner.java 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/resources/mapper/MenuMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/resources/mapper/RoleManangeMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/annotation/AuthHandler.java
@@ -1,5 +1,8 @@
package com.yuanchu.limslaboratory.annotation;
import com.yuanchu.limslaboratory.enums.InterfaceType;
import com.yuanchu.limslaboratory.enums.MenuEnums;
import java.lang.annotation.*;
/**
@@ -14,19 +17,13 @@
     * æŽ¥å£ç±»åž‹
     * @return
     */
    int type() default 0;
    /**
     * æŽ¥å£å
     * @return
     */
    String name() default "";
    InterfaceType type() default InterfaceType.NUll;
    /**
     * èœå•id
     * @return
     */
    String menuId() default "";
    MenuEnums menuId() default MenuEnums.NUll;
    /**
     * æ˜¯å¦éœ€è¦æ·»åŠ æ•°æ®åº“
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;
    }
}
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("正太分布图",27),
    work("工作统计",28),
    message("消息代办",29),
    mymessage("我的消息",30),
    toDo("我的代办",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;
    }
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/LinkDetectionController.java
@@ -49,6 +49,8 @@
    @Resource
    ProductService productService;
    @ApiOperation("链接-->获取样品名称")
    @GetMapping("/material")
    public Result<?> getMaterialIdAndName(@RequestHeader("link") String link) {
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);
}
inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/LinkBasicInformationServiceImpl.java
@@ -1,7 +1,9 @@
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.pojo.LinkBasicInformation;
import com.yuanchu.limslaboratory.mapper.LinkBasicInformationMapper;
import com.yuanchu.limslaboratory.pojo.LinkDetection;
@@ -12,6 +14,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.*;
@@ -30,11 +33,23 @@
    @Resource
    private LinkBasicInformationMapper linkBasicInformationMapper;
    @Resource
    private LinkDetectionMapper linkDetectionMapper;
    @Autowired
    private LinkDetectionService linkDetectionService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String addLinkBasicInformation(LinkBasicInformation linkBasicInformation) {
        QueryWrapper<LinkBasicInformation> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().select(LinkBasicInformation::getId).eq(LinkBasicInformation::getUid, linkBasicInformation.getUid());
        LinkBasicInformation linkBasicInformation1 = linkBasicInformationMapper.selectOne(queryWrapper);
        Optional.ofNullable(linkBasicInformation.getId()).ifPresent(l->{
            //执行删除
            linkDetectionMapper.deleteByLinkbasic(linkBasicInformation1.getId());
            linkBasicInformationMapper.deleteById(linkBasicInformation1.getId());
        });
        //委托编号
        String code = MyUtil.getTimeSixNumberCode("SL", "SL");
        linkBasicInformation.setEntrustCoding(code);
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>
sys/src/main/java/com/yuanchu/limslaboratory/commandLineRunner/ResolutionRequestsCommandLineRunner.java
@@ -1,6 +1,7 @@
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;
@@ -38,69 +39,77 @@
    @Autowired
    private RoleManageMapper roleManageMapper;
    @Autowired
    private MenuMapper menuMapper;
    @SneakyThrows
    @Override
    public void run(String... args) throws Exception {
        //log.info("容器生成之后执行");
        //List<Class<?>> classList = MyClassUtil.getClassList("com.yuanchu.limslaboratory.controller");
        //List<Map<String, Object>> requestListInfo = new ArrayList<Map<String, Object>>();
        //List<Map<String, Object>> urlList = new ArrayList<Map<String, Object>>();
        //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);
        //        if (method.isAnnotationPresent(AuthHandler.class)) {
        //            //获取类上请求地址
        //            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, Object> map = new HashMap<String, Object>();
        //            map.put("url", builder);
        //            map.put("name", apiInfo);
        //            urlList.add(map);
        //            requestListInfo.add(map);
        //        }
        //    }
        //});
        //requestListInfo.forEach(System.out::println);
        //List<Map<String, Object>> allInterfaces = roleManageMapper.getAllInterfaces();
        //System.out.println(requestListInfo.size());
        //List<Map<String, Object>> mapList = urlList.stream().filter(item -> !allInterfaces.stream()
        //                .map(e -> e).distinct().collect(Collectors.toList())
        //                .contains(item))
        //        .collect(Collectors.toList());
        //System.out.println("=======================");
        //mapList.forEach(System.out::println);
        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("新增接口成功!");
        }else {
            log.info("无需增加新的接口!");
        }
    }
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;
@@ -73,7 +75,7 @@
        return Result.success(roleManagerService.getRoleAndMenuByRole(roleId));
    }
    @AuthHandler(type = 1)
    @AuthHandler(type = InterfaceType.SELECT,menuId = MenuEnums.role,isAdd = true)
    @ApiOperation("测试生成")
    @GetMapping("/test")
    public Result<?> test(Long roleId){
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();
}
user-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java
@@ -40,5 +40,7 @@
    Map<String, Long> hasUrl(String type, String menuId, String roleId);
    List<Map<String, Object>>getAllInterfaces();
    List<Map<String, String>>getAllInterfaces();
    int insertInterfaceList(@Param("interfaceList") List<Map<String, String>>interfaceList);
}
user-server/src/main/resources/mapper/MenuMapper.xml
@@ -7,4 +7,7 @@
        from menu
        where state =1
    </select>
    <select id="getMenuNameAndId" resultType="map">
        select url,id,name from menu where state=1
    </select>
</mapper>
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
@@ -109,7 +117,7 @@
          and ${type} = 1
    </select>
    <select id="getAllInterfaces" resultType="java.util.Map">
        select name,url
        select name, url
        from interface_info
    </select>
    <resultMap id="roleAndMenuById" type="com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto">