From 10c23bd4369b1657a077a20e57d514632690ab52 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期三, 23 八月 2023 18:04:12 +0800
Subject: [PATCH] 实验室管理=》角色管理

---
 inspection-server/src/main/resources/mapper/ReportMapper.xml                                                        |    1 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ReportVo.java                                    |    2 
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java                                           |   36 +++++++++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Role.java                                           |   26 ++++++
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/NonConformanceReviewServiceImpl.java        |    6 
 inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java |   12 ++-
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java                     |   33 ++++++++
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ImInfo.java                                         |    2 
 inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml                                   |   24 ++---
 inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/MapHandlerDto.java                              |    7 +
 laboratory-server/src/main/resources/mapper/MenuMapper.xml                                                          |   10 ++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java                 |   43 ++++++++++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java                          |   11 ++
 laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java                                   |   19 ++++
 14 files changed, 210 insertions(+), 22 deletions(-)

diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/MapHandlerDto.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/MapHandlerDto.java
index 03c894f..d8a01e6 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/MapHandlerDto.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/Dto/MapHandlerDto.java
@@ -19,4 +19,11 @@
         Map map= JsonUtil.jsonToPojo(JsonUtil.jsonToString(o),Map.class);
         return String.valueOf(map.get("supplier"));
     }
+
+    public static  String comparingByCode(Object o){
+        Map map= JsonUtil.jsonToPojo(JsonUtil.jsonToString(o),Map.class);
+        return String.valueOf(map.get("code"));
+    }
+
+
 }
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ImInfo.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ImInfo.java
index 18819a8..b74e7d2 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ImInfo.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/ImInfo.java
@@ -19,7 +19,7 @@
 
     private String imName;
 
-    private String iCode;
+    private String imCode;
 
     private Integer inspectionStatus;
 
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ReportVo.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ReportVo.java
index 478437d..d49897a 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ReportVo.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/vo/ReportVo.java
@@ -43,7 +43,7 @@
 
     @ApiModelProperty(value = "瀹℃壒浜�")
     @JsonSerialize
-    private Integer approver;
+    private String approver;
 
     @ApiModelProperty(value = "瀹℃牳鏃堕棿", hidden = true)
     @JsonFormat(pattern = "yyyy-MM-dd ", timezone = "GMT+8")
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/NonConformanceReviewServiceImpl.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/NonConformanceReviewServiceImpl.java
index 97d000f..9744fa9 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/NonConformanceReviewServiceImpl.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/NonConformanceReviewServiceImpl.java
@@ -26,13 +26,13 @@
     public NonConformanceReviewVo getNonConformanceReviewVo(NonConformingFeedbackDto nonConformingFeedbackDto) {
         QueryWrapper<NonConformanceReview>queryWrapper= new QueryWrapper<>();
         if (StringUtils.hasText(nonConformingFeedbackDto.getMaterialCode())){
-            queryWrapper.lambda().and(a->a.eq(NonConformanceReview::getMaterialCode,nonConformingFeedbackDto.getMaterialCode()));
+            queryWrapper.lambda().and(a->a.like(NonConformanceReview::getMaterialCode,nonConformingFeedbackDto.getMaterialCode()));
         }
         if (StringUtils.hasText(nonConformingFeedbackDto.getMaterialName())){
-            queryWrapper.lambda().and(a->a.eq(NonConformanceReview::getMaterialName,nonConformingFeedbackDto.getMaterialName()));
+            queryWrapper.lambda().and(a->a.like(NonConformanceReview::getMaterialName,nonConformingFeedbackDto.getMaterialName()));
         }
         if (StringUtils.hasText(nonConformingFeedbackDto.getInspectionCode())){
-            queryWrapper.lambda().and(a->a.eq(NonConformanceReview::getInspectionCode,nonConformingFeedbackDto.getInspectionCode()));
+            queryWrapper.lambda().and(a->a.like(NonConformanceReview::getInspectionCode,nonConformingFeedbackDto.getInspectionCode()));
         }
         Page<NonConformanceReview> page = new Page<>(nonConformingFeedbackDto.getCurrentPage(), nonConformingFeedbackDto.getPageNum(), true);
         IPage<NonConformanceReview> iPage = mapper.selectPage(page, queryWrapper);
diff --git a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java
index 4daef1c..83e1b27 100644
--- a/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java
+++ b/inspection-server/src/main/java/com/yuanchu/limslaboratory/service/impl/QualificationRateStatisticsServiceImpl.java
@@ -168,8 +168,8 @@
             return allMap;
         }
         imInfos.forEach(l->{
-            NameList.add(l.getICode()+"-"+l.getImName());
-            projectByCodeAndNameDtos.add(new SelectProjectByCodeAndNameDto(l.getICode(),l.getImName()));
+            NameList.add(l.getImCode()+"-"+l.getImName());
+            projectByCodeAndNameDtos.add(new SelectProjectByCodeAndNameDto(l.getImCode(),l.getImName()));
         });
         List<ImInfo> imInfosAll = qualificationRateStatisticsMapper.selectProjection(projectByCodeAndNameDtos,dto);
         int total = imInfosAll.size();
@@ -177,7 +177,7 @@
         AtomicInteger i=new AtomicInteger(0);
         NameList.forEach(n->{
             imInfos.stream()
-                    .filter(im-> Objects.equals(n,im.getICode()+"-"+im.getImName()))
+                    .filter(im-> Objects.equals(n,im.getImCode()+"-"+im.getImName()))
                     .forEach(im->{
                         i.set(im.getIprInfos().size());
                     });
@@ -200,7 +200,11 @@
 
     @Override
     public List<Map<String, Object>> getSampleOptions() {
-        return qualificationRateStatisticsMapper.getSampleOptions();
+        List<Map<String, Object>> sampleOptions = qualificationRateStatisticsMapper.getSampleOptions();
+        //鍘婚噸鏍峰搧
+        List<Map<String, Object>> sampleOptionsDistinct = ArrayListUtil.oneObjectsDistinctByProperty(MapHandlerDto::comparingByCode, sampleOptions);
+        sampleOptionsDistinct.forEach(System.out::println);
+        return sampleOptionsDistinct;
     }
 
     public static String getPercent(long x, long y) {
diff --git a/inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml b/inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml
index bb63097..a9a3d21 100644
--- a/inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml
+++ b/inspection-server/src/main/resources/mapper/QualificationRateStatisticsMapper.xml
@@ -11,7 +11,7 @@
         i.end_time endTime
         FROM inspection i
         INNER JOIN inspection_material im ON i.id = im.inspection_id
-        where (i.state = 1 AND i.inspection_status is NOT NULL and im.state=1)
+        where (i.state = 1  and im.state=1)
         <if test="dto.beginDate!=null and dto.endDate!=null">
             DATE_FORMAT( i.end_time, '%Y-%m-%d' ) BETWEEN #{dto.beginDate}
             AND #{dto.endDate}
@@ -27,7 +27,7 @@
             and im.name=#{dto.sample}
         </if>
         <if test="dto.code!=null and dto.code!=''">
-            and i.code=#{dto.code}
+            and im.code=#{dto.code}
         </if>
     </select>
     <select id="selectProjectionsByCondition" resultMap="ImInfoMap">
@@ -40,7 +40,7 @@
         ipr.id iprId,
         ipr.`name` iprName,
         ipr.test_state testState,
-        i.code iCode,
+        im.code imCode,
         i.type type
         FROM
         inspection i,
@@ -70,7 +70,7 @@
             and im.name=#{dto.sample}
         </if>
         <if test="dto.code!=null and dto.code!=''">
-            and i.code=#{dto.code}
+            and im.code=#{dto.code}
         </if>
     </select>
     <select id="selectProjection" resultMap="ImInfoMap">
@@ -86,8 +86,6 @@
         AND  i.state = 1
         AND im.state = 1
         AND ipr.state = 1
-        AND i.inspection_status is NOT NULL
-        AND ipr.test_state is not null
         <if test="dto.beginDate!=null and dto.endDate!=null">
             DATE_FORMAT( i.end_time, '%Y-%m-%d' ) BETWEEN #{dto.beginDate}
             AND #{dto.endDate}
@@ -103,9 +101,9 @@
             and im.name=#{dto.sample}
         </if>
         <if test="dto.code!=null and dto.code!=''">
-            and i.code=#{dto.code}
+            and im.code=#{dto.code}
         </if>
-        and i.code in
+        and im.code in
         <foreach collection="list" item="l" open="(" close=")" separator="," >
             #{l.code}
         </foreach>
@@ -124,7 +122,7 @@
         i.end_time endTime
         FROM inspection i
         INNER JOIN inspection_material im ON i.id = im.inspection_id
-        where (i.state = 1 AND i.inspection_status is NOT NULL and im.state=1)
+        where (i.state = 1 and im.state=1)
         <if test="dto.beginDate!=null and dto.endDate!=null">
             DATE_FORMAT( i.end_time, '%Y-%m-%d' ) BETWEEN #{dto.beginDate}
             AND #{dto.endDate}
@@ -140,7 +138,7 @@
             and im.name=#{dto.sample}
         </if>
         <if test="dto.code!=null and dto.code!=''">
-            and i.code=#{dto.code}
+            and im.code=#{dto.code}
         </if>
     </select>
     <select id="getSampleOptions" resultType="java.util.Map">
@@ -152,17 +150,17 @@
             i.inspection_status inspectionStatus,
             i.start_time startTime,
             i.end_time endTime,
-            i.`code`
+            im.`code` code
         FROM
             inspection i
                 INNER JOIN inspection_material im ON i.id = im.inspection_id
         WHERE
-            ( i.state = 1 AND i.inspection_status IS NOT NULL AND im.state = 1 )
+            ( i.state = 1  AND im.state = 1 )
     </select>
 
     <resultMap id="ImInfoMap" type="com.yuanchu.limslaboratory.pojo.ImInfo">
         <result property="imId" column="imId"/>
-        <result property="iCode" column="iCode"/>
+        <result property="imCode" column="imCode"/>
         <result property="imName" column="imName"/>
         <result property="startTime" column="startTime"/>
         <result property="endTime" column="endTime"/>
diff --git a/inspection-server/src/main/resources/mapper/ReportMapper.xml b/inspection-server/src/main/resources/mapper/ReportMapper.xml
index 63bc801..8c53688 100644
--- a/inspection-server/src/main/resources/mapper/ReportMapper.xml
+++ b/inspection-server/src/main/resources/mapper/ReportMapper.xml
@@ -11,6 +11,7 @@
         im.name materialName,
         r.conclusion ,
         r.status ,
+        r.approver approver,
         check_time,
         u.name
         from lims_laboratory.report r
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
new file mode 100644
index 0000000..d60ec4e
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java
@@ -0,0 +1,33 @@
+package com.yuanchu.limslaboratory.controller;
+
+import com.yuanchu.limslaboratory.service.RoleManagerService;
+import com.yuanchu.limslaboratory.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/23
+ */
+@Api(tags = "瀹為獙瀹�-->3銆佽鑹茬鐞�")
+@RestController
+@RequestMapping("/role-manager")
+public class RoleMangerController {
+
+    @Resource
+    private RoleManagerService roleManagerService;
+
+    @ApiOperation("鑾峰彇鑿滃崟鍔熻兘鏍�")
+    @GetMapping("/getMenusTree")
+    public Result<?>getMenusTree() {
+      return Result.success(roleManagerService.getMenusTree());
+    };
+
+
+
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java
new file mode 100644
index 0000000..56e131d
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MenuMapper.java
@@ -0,0 +1,19 @@
+package com.yuanchu.limslaboratory.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.limslaboratory.pojo.Menu;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/23
+ */
+@Repository
+public interface MenuMapper extends BaseMapper<Menu> {
+
+    List<Menu> getMenuList();
+
+
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java
new file mode 100644
index 0000000..b9cd220
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Menu.java
@@ -0,0 +1,36 @@
+package com.yuanchu.limslaboratory.pojo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/23
+ */
+@Data
+public class Menu implements Serializable {
+
+    /**
+     * id
+     */
+    private Integer value;
+
+    /**
+     * 鑿滃崟鍚�
+     */
+    private String label;
+
+
+    /**
+     * 鐖剁骇id
+     */
+    private Integer parentId;
+
+    /**
+     * 瀛愮骇鑿滃崟淇℃伅
+     */
+    private List<Menu> children;
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Role.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Role.java
new file mode 100644
index 0000000..036a706
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Role.java
@@ -0,0 +1,26 @@
+package com.yuanchu.limslaboratory.pojo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/23
+ */
+@Data
+public class Role implements Serializable {
+
+
+    private Integer id;
+
+    private Integer name;
+
+    private LocalDateTime createTime;
+
+    private LocalDateTime updateTime;
+
+    private Integer state;
+
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java
new file mode 100644
index 0000000..6cb04de
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java
@@ -0,0 +1,11 @@
+package com.yuanchu.limslaboratory.service;
+
+import com.yuanchu.limslaboratory.vo.Result;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/23
+ */
+public interface RoleManagerService {
+    Object getMenusTree();
+}
diff --git a/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
new file mode 100644
index 0000000..38f0db1
--- /dev/null
+++ b/laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java
@@ -0,0 +1,43 @@
+package com.yuanchu.limslaboratory.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.yuanchu.limslaboratory.mapper.MenuMapper;
+import com.yuanchu.limslaboratory.pojo.Menu;
+import com.yuanchu.limslaboratory.service.RoleManagerService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/8/23
+ */
+@Service
+public class RoleManagerServiceImpl implements RoleManagerService {
+
+    @Resource
+    private MenuMapper menuMapper;
+
+    @Override
+    public Object getMenusTree() {
+        List<Menu> menus = menuMapper.getMenuList();
+        return menus.stream()
+                .filter(t -> t.getParentId() == 0)
+                .peek((menu) -> menu.setChildren(this.getEnumChildren(menu, menus)))
+                .collect(Collectors.toList());
+    }
+
+
+    private List<Menu> getEnumChildren(Menu root, List<Menu> all) {
+        return all.stream()
+                .filter(t -> Objects.equals(t.getParentId(), root.getValue()))
+                .peek(g -> {
+                    //鎵惧瓙鑿滃崟
+                    g.setChildren(getEnumChildren(g, all));
+                })
+                .collect(Collectors.toList());
+    }
+
+}
diff --git a/laboratory-server/src/main/resources/mapper/MenuMapper.xml b/laboratory-server/src/main/resources/mapper/MenuMapper.xml
new file mode 100644
index 0000000..586dcb7
--- /dev/null
+++ b/laboratory-server/src/main/resources/mapper/MenuMapper.xml
@@ -0,0 +1,10 @@
+<?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.MenuMapper">
+
+    <select id="getMenuList" resultType="com.yuanchu.limslaboratory.pojo.Menu">
+        select id value,name label,parent_id parentId
+        from menu
+        where state =1
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3