Parcourir la source

Merge branch 'dev' of http://192.168.1.43:3000/v2/zd-parents into dev

chaiyunlong il y a 2 ans
Parent
commit
789c91448b
21 fichiers modifiés avec 267 ajouts et 105 suppressions
  1. 1 1
      release/2023-03-31 发版说明.md
  2. 10 1
      release/sql/db_sql_v2.3.sql
  3. 1 0
      zd-api/zd-algorithm-api/src/main/java/com/zd/algorithm/api/face/feign/RemoteFaceService.java
  4. 1 1
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteDutyService.java
  5. 1 1
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteDutyFailback.java
  6. 22 19
      zd-modules/zd-base/src/main/java/com/zd/base/app/controller/LabBoardApi.java
  7. 20 5
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSecurityApplyController.java
  8. 18 3
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpCardInfoController.java
  9. 1 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSecurityApplyMapper.java
  10. 10 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectMapper.java
  11. 1 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSecurityApplyService.java
  12. 10 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectService.java
  13. 1 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSecurityApplyServiceImpl.java
  14. 12 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectServiceImpl.java
  15. 3 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpCardInfoServiceImpl.java
  16. 20 6
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSecurityApplyMapper.xml
  17. 7 2
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabStudentsInfoMapper.xml
  18. 3 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectMapper.xml
  19. 22 19
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpCardInfoMapper.xml
  20. 1 1
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysUserServiceImpl.java
  21. 102 43
      zd-modules/zd-modules-system/src/main/resources/mapper/system/SysDeptMapper.xml

+ 1 - 1
release/2023-03-31 发版说明.md

@@ -19,5 +19,5 @@
 4,新增定时排风、预案实现更新
 1) 设置预案,新增电话/短信配置,预案自动关闭时长配置;
 2) 预警灯、喇叭等归类执行动作;
-
+3) 预案报警通知方式、自动关闭时间设置。执行动作喇叭硬件执行配置。
 ![img.png](img/v3.3.1_20230320.png)

+ 10 - 1
release/sql/db_sql_v2.3.sql

@@ -23,4 +23,13 @@ ALTER TABLE lab_algorithm ADD update_time datetime DEFAULT NULL COMMENT '更新
 /*     添加时间:2023-3-10                 ****/
 /************************************************/
 ALTER TABLE apk_upload ADD file_data varchar(255) DEFAULT NULL COMMENT '文件信息';
-ALTER TABLE apk_upload ADD apk_info varchar(800) DEFAULT NULL COMMENT '信息说明';
+ALTER TABLE apk_upload ADD apk_info varchar(800) DEFAULT NULL COMMENT '信息说明';
+
+/************************************************/
+/*     更新表: lab_risk_plan_level    ****/
+/*     字段: alarm_type、risk_auto_off  ****/
+/*     添加人:hzw                    ****/
+/*     添加时间:2023-3-31                 ****/
+/************************************************/
+ALTER TABLE lab_risk_plan_level ADD alarm_type varchar(255) DEFAULT NULL COMMENT '报警类型(1电话 2短信)';
+ALTER TABLE lab_risk_plan_level ADD risk_auto_off int(11) DEFAULT NULL COMMENT '预案自动关闭时长(秒)';

+ 1 - 0
zd-api/zd-algorithm-api/src/main/java/com/zd/algorithm/api/face/feign/RemoteFaceService.java

@@ -8,6 +8,7 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestPart;
 import org.springframework.web.multipart.MultipartFile;
 

+ 1 - 1
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteDutyService.java

@@ -136,7 +136,7 @@ public interface RemoteDutyService {
      * @return
      */
     @RequestMapping("/apply/app/securityNumList")
-    ResultData securityNumList(@RequestParam("labId") Long labId);
+    ResultData securityNumList(@RequestParam("labId") Long labId,@RequestParam("cardNum") String cardNum);
 
 
     /**

+ 1 - 1
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteDutyFailback.java

@@ -92,7 +92,7 @@ public class RemoteDutyFailback implements FallbackFactory<RemoteDutyService> {
             }
 
             @Override
-            public ResultData securityNumList(Long labId) {
+            public ResultData securityNumList(Long labId,String cardNum) {
                 return ResultData.fail("电子信息牌获取准入人员的指纹信息列表:" + cause.getMessage());
             }
 

+ 22 - 19
zd-modules/zd-base/src/main/java/com/zd/base/app/controller/LabBoardApi.java

@@ -5,7 +5,6 @@ import com.zd.algorithm.api.face.feign.RemoteFaceService;
 import com.zd.algorithm.api.xxp.feign.RemoteXxpService;
 import com.zd.base.app.domain.board.DutyPersonVo;
 import com.zd.base.app.domain.board.LabXxpSubjectVo;
-import com.zd.common.core.security.TokenService;
 import com.zd.common.core.utils.DateUtils;
 import com.zd.common.core.utils.FileConfigUtils;
 import com.zd.common.core.utils.StringUtils;
@@ -20,8 +19,8 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.rmi.Remote;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -397,7 +396,7 @@ public class LabBoardApi {
     @GetMapping(value = "/getCardIsOpen")
     public ResultData getCardIsOpen(@RequestParam("labId") Long labId,@RequestParam("cardNum") String cardNum) {
         Integer isOpen=0;
-        ResultData resultData=remoteDutyService.securityNumList(labId);
+        ResultData resultData=remoteDutyService.securityNumList(labId,cardNum);
         if(resultData==null && resultData.getCode()!=HttpStatus.SUCCESS){
             return ResultData.fail("未识别到身份信息,请联系管理人员录入卡号信息");
         }
@@ -405,13 +404,7 @@ public class LabBoardApi {
         if(null==resultObj){
             return ResultData.fail("未识别到身份信息,请联系管理人员录入卡号信息");
         }
-        List<Map<String, Object>> cardList= (List<Map<String, Object>>) resultObj;
-        for(Map<String, Object> map:cardList){
-             if(String.valueOf(map.get("cardNum")).equals(cardNum)){
-                 isOpen=1;
-                 break;
-             }
-        }
+        isOpen=1;
         return ResultData.success(isOpen);
     }
 
@@ -424,7 +417,7 @@ public class LabBoardApi {
     @ApiOperation(value = "刷卡验证")
     @GetMapping(value = "/cardValidate")
     public ResultData cardValidate(@RequestParam("labId") Long labId,@RequestParam("cardNum") String cardNum) {
-        ResultData resultData=remoteDutyService.securityNumList(labId);
+        ResultData resultData=remoteDutyService.securityNumList(labId,cardNum);
         if(resultData==null && resultData.getCode()!=HttpStatus.SUCCESS){
             return ResultData.fail("未识别到身份信息,请联系管理人员录入卡号信息");
         }
@@ -432,14 +425,7 @@ public class LabBoardApi {
         if(null==resultObj){
             return ResultData.fail("未识别到身份信息,请联系管理人员录入卡号信息");
         }
-        List<Map<String, Object>> cardList= (List<Map<String, Object>>) resultObj;
-        for(Map<String, Object> map:cardList){
-            System.out.println(String.valueOf(map.get("cardNum")));
-            if(String.valueOf(map.get("cardNum")).equals(cardNum)){
-                return ResultData.success(map);
-            }
-        }
-        return ResultData.fail("未识别到身份信息,请联系管理人员录入卡号信息");
+        return resultData;
     }
 
 
@@ -498,9 +484,26 @@ public class LabBoardApi {
         return remoteDutyService.pwdValidate(cardNum,pwd,subjectId,userId);
     }
 
+    /**
+     * 大海里找鱼
+     * @param faceCompare
+     * @return
+     */
     @ApiOperation(value = "人脸识别")
     @GetMapping(value = "/multiFaceDetection")
     public ResultData multiFaceDetection(@RequestBody FaceCompare faceCompare){
         return remoteFaceService.multiFaceDetection(faceCompare);
     }
+
+
+    /**
+     * 人脸识别获取特征值
+     * @param file
+     * @return
+     */
+    @ApiOperation(value = "人脸识别获取特征值")
+    @PostMapping(value = "/faceFeature")
+    public R<byte[]> faceFeature(@RequestParam("file") MultipartFile file){
+        return remoteFaceService.upload(file);
+    }
 }

+ 20 - 5
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSecurityApplyController.java

@@ -827,17 +827,32 @@ public class LabSecurityApplyController extends BaseController
      * @return
      */
     @RequestMapping("/app/securityNumList")
-    public ResultData securityNumList(Long labId)
+    public ResultData securityNumList(Long labId,String cardNum)
     {
-        List<Map<String,Object>> mapList=new ArrayList<>();
         List<Map<String,Object>> list = labSecurityApplyService.selectSecurityCardList(labId);
         for(Map<String,Object> map:list){
             if(StringUtils.isNotNull(map.get("cardNum"))){
                 String decryptCard=DESUtils.decrypt(String.valueOf(map.get("cardNum")));
-                map.put("cardNum",decryptCard);
-                mapList.add(map);
+                System.out.println("decryptCard:"+decryptCard);
+                if(cardNum.equals(decryptCard)){
+                    String userType=String.valueOf(map.get("userType"));
+                    Long userId=Long.parseLong(String.valueOf(map.get("userId")));
+                    String isWhite=String.valueOf(map.get("isWhite"));
+                    //如果是学生 或者白名单的老师 进二类页面
+                    if(userType.equals("22") || (userType.equals("11") && isWhite.equals("0"))){
+                        map.put("pageType",2);
+                    }
+                    int num=iLabSubjectService.isAdminOrSafeUser(labId,userId);
+                    //一类首页对应身份为白名单老师、实验室负责人、安全责任人
+                    if(num>0 || (userType.equals("11") && isWhite.equals("1"))){
+                        map.put("pageType",1);
+                    }
+                    map.remove("cardNum");
+                    map.remove("isWhite");
+                    return ResultData.success(map);
+                }
             }
         }
-        return ResultData.success(mapList);
+        return ResultData.success();
     }
 }

+ 18 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabXxpCardInfoController.java

@@ -8,6 +8,7 @@ import com.zd.common.core.utils.ExcelUtil;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.laboratory.domain.XxpCardInfo;
 import com.zd.laboratory.service.ILabSecurityApplyService;
+import com.zd.laboratory.service.ILabSubjectService;
 import com.zd.laboratory.service.IXxpCardInfoService;
 import com.zd.model.domain.ResultData;
 import com.zd.model.domain.per.PerFun;
@@ -37,6 +38,8 @@ public class LabXxpCardInfoController extends BaseController {
     private IXxpCardInfoService xxpCardInfoService;
     @Autowired
     private ILabSecurityApplyService iLabSecurityApplyService;
+    @Autowired
+    private ILabSubjectService iLabSubjectService;
 
     @Autowired
     private TokenService tokenService;
@@ -196,15 +199,27 @@ public class LabXxpCardInfoController extends BaseController {
      */
     @RequestMapping("/pwdValidate")
     public ResultData pwdValidate(String cardNum, String pwd,Long subjectId, Long userId) {
-        List<Map<String,Object>> mapList=iLabSecurityApplyService.selectCountLabSecurityUserId(subjectId,userId);
-        if(mapList.size()==0){
+        Map<String,Object> map=iLabSecurityApplyService.selectCountLabSecurityUserId(subjectId,userId);
+        if(null==map){
             return ResultData.fail("未获得实验室准入资格;");
         }
         int count = xxpCardInfoService.selectPwdCountByPwd(cardNum, pwd);
         if (count == 0) {
             return ResultData.fail("密码输入错误,请重新输入;");
         }
-        return ResultData.success(mapList.get(0));
+        String userType=String.valueOf(map.get("userType"));
+        String isWhite=String.valueOf(map.get("isWhite"));
+        //如果是学生 或者白名单的老师 进二类页面
+        if(userType.equals("22") || (userType.equals("11") && isWhite.equals("0"))){
+            map.put("pageType",2);
+        }
+        int num=iLabSubjectService.isAdminOrSafeUser(subjectId,userId);
+        //一类首页对应身份为白名单老师、实验室负责人、安全责任人
+        if(num>0 || (userType.equals("11") && isWhite.equals("1"))){
+            map.put("pageType",1);
+        }
+        map.remove("isWhite");
+        return ResultData.success(map);
     }
 
 }

+ 1 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSecurityApplyMapper.java

@@ -170,5 +170,5 @@ public interface LabSecurityApplyMapper
      * @param userId 用户的id
      * @return 安全准入申请
      */
-    List<Map<String, Object>> selectCountLabSecurityUserId(@Param("subjectId") Long subjectId,@Param("userId") Long userId);
+    Map<String, Object> selectCountLabSecurityUserId(@Param("subjectId") Long subjectId,@Param("userId") Long userId);
 }

+ 10 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSubjectMapper.java

@@ -327,4 +327,14 @@ public interface LabSubjectMapper {
      * @return
      */
     LabSubject selectLabSubjectByNum(String number);
+
+
+    /**
+     * 根据实验室id用户id查询是否是实验室管理员和安全管理员
+     * @param subjectId
+     * @param userId
+     * @return
+     */
+    Integer isAdminOrSafeUser(@Param("subjectId") Long subjectId,@Param("userId") Long userId);
+
 }

+ 1 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSecurityApplyService.java

@@ -199,5 +199,5 @@ public interface ILabSecurityApplyService
      * @param userId 用户的id
      * @return 安全准入申请
      */
-    List<Map<String,Object>> selectCountLabSecurityUserId(Long subjectId, Long userId);
+    Map<String,Object> selectCountLabSecurityUserId(Long subjectId, Long userId);
 }

+ 10 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSubjectService.java

@@ -6,6 +6,7 @@ import com.zd.laboratory.domain.vo.LabClassifiedVo;
 import com.zd.laboratory.domain.vo.LabClasstypeVo;
 import com.zd.laboratory.domain.vo.LabSubjectVO;
 import com.zd.model.entity.TotalByID;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -307,4 +308,13 @@ public interface ILabSubjectService {
      */
     public LabSubject selectLabSubjectByNum(String number);
 
+
+    /**
+     * 根据实验室id用户id查询是否是实验室管理员和安全管理员
+     * @param subjectId
+     * @param userId
+     * @return
+     */
+    Integer isAdminOrSafeUser(Long subjectId,Long userId);
+
 }

+ 1 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSecurityApplyServiceImpl.java

@@ -520,7 +520,7 @@ public class LabSecurityApplyServiceImpl implements ILabSecurityApplyService
      * @return 安全准入申请
      */
     @Override
-    public List<Map<String, Object>> selectCountLabSecurityUserId(Long subjectId, Long userId){
+    public Map<String, Object> selectCountLabSecurityUserId(Long subjectId, Long userId){
         return labSecurityApplyMapper.selectCountLabSecurityUserId(subjectId,userId);
     }
 

+ 12 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectServiceImpl.java

@@ -574,4 +574,16 @@ public class LabSubjectServiceImpl implements ILabSubjectService {
     public LabSubject selectLabSubjectByNum(String number) {
         return labSubjectMapper.selectLabSubjectByNum(number);
     }
+
+
+    /**
+     * 根据实验室id用户id查询是否是实验室管理员和安全管理员
+     * @param subjectId
+     * @param userId
+     * @return
+     */
+    @Override
+    public Integer isAdminOrSafeUser(Long subjectId, Long userId) {
+        return labSubjectMapper.isAdminOrSafeUser(subjectId,userId);
+    }
 }

+ 3 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/XxpCardInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.zd.laboratory.service.impl;
 
+import com.zd.common.core.annotation.DataScope;
 import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.security.TokenService;
 import com.zd.common.core.utils.StringUtils;
@@ -9,6 +10,7 @@ import com.zd.laboratory.domain.XxpUserAuth;
 import com.zd.laboratory.mapper.XxpCardInfoMapper;
 import com.zd.laboratory.mapper.XxpUserAuthMapper;
 import com.zd.laboratory.service.IXxpCardInfoService;
+import com.zd.model.domain.per.PerPrefix;
 import com.zd.model.entity.SysUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -53,6 +55,7 @@ public class XxpCardInfoServiceImpl implements IXxpCardInfoService
      * @return 电子信息牌集合
      */
     @Override
+    @DataScope(deptAlias = "d" , permi = PerPrefix.LABORATORY_CARDINFO)
     public List<XxpCardInfo> selectXxpCardInfoList(XxpCardInfo xxpCardInfo) {
         return xxpCardInfoMapper.selectXxpCardInfoList(xxpCardInfo);
     }

+ 20 - 6
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSecurityApplyMapper.xml

@@ -588,19 +588,33 @@
 
     <!--获取准入人员的手指信息-->
     <select id="selectSecurityFingerList" resultType="java.util.Map">
-            SELECT  finger,user_id userId,user_name userName,user_type userType FROM  xxp_user_auth WHERE user_id IN (SELECT user_id
-                FROM  lab_security_apply AS lab WHERE audit_status=2 AND subject_id=#{subjectId} and valid_end_time <![CDATA[<]]> now())
+            <!--SELECT  finger,user_id userId,user_name userName,user_type userType FROM  xxp_user_auth WHERE user_id IN (SELECT user_id
+                FROM  lab_security_apply AS lab WHERE audit_status=2 AND subject_id=#{subjectId} and valid_end_time <![CDATA[<]]> now())-->
+        SELECT  xxp.finger,xxp.user_id userId,xxp.user_name userName,xxp.user_type userType FROM  xxp_user_auth xxp WHERE (SELECT user_id
+        FROM  lab_security_apply AS lab WHERE audit_status=2 AND subject_id=#{subjectId} AND valid_end_time <![CDATA[<]]> NOW() AND xxp.user_id=lab.user_id)>0
+        UNION
+        SELECT  xxp.finger,xxp.user_id userId,xxp.user_name userName,xxp.user_type userType FROM  xxp_user_auth xxp WHERE (SELECT user_id
+        FROM  lab_whitelist AS lw WHERE  xxp.user_id=lw.user_id)>0
+
     </select>
 
     <!--获取准入人员的卡号信息-->
     <select id="selectSecurityCardList" resultType="java.util.Map">
-            SELECT  card_num_simple cardNum,user_id userId, nick_name userName,user_type userType FROM  sys_user WHERE user_id IN (SELECT user_id
-                FROM  lab_security_apply  WHERE audit_status=2 AND subject_id=#{subjectId} and valid_end_time <![CDATA[<]]> now())
+            <!--SELECT  card_num_simple cardNum,user_id userId, nick_name userName,user_type userType FROM  sys_user WHERE user_id IN (SELECT user_id
+                FROM  lab_security_apply  WHERE audit_status=2 AND subject_id=#{subjectId} and valid_end_time <![CDATA[<]]> now())-->
+        SELECT  card_num_simple cardNum,user_id userId, nick_name userName,user_type userType,0 AS isWhite FROM  sys_user WHERE user_id IN (SELECT user_id
+        FROM  lab_security_apply  WHERE audit_status=2 AND subject_id=#{subjectId} AND valid_end_time <![CDATA[<]]> NOW())
+        UNION
+        SELECT (SELECT card_num_simple FROM sys_user su WHERE su.user_id=lw.user_id) cardNum, user_id userId,user_name userName,(SELECT user_type FROM sys_user su WHERE su.user_id=lw.user_id) AS userType,1 AS isWhite  FROM  lab_whitelist lw
     </select>
 
     <select id="selectCountLabSecurityUserId" resultType="java.util.Map">
-     SELECT user_id userId,user_name userName,user_type userType
-                FROM  lab_security_apply  WHERE audit_status=2 AND subject_id=#{subjectId} and valid_end_time <![CDATA[<]]> now() and user_id=#{userId}
+     <!--SELECT user_id userId,user_name userName,user_type userType
+                FROM  lab_security_apply  WHERE audit_status=2 AND subject_id=#{subjectId} and valid_end_time <![CDATA[<]]> now() and user_id=#{userId}-->
+        SELECT user_id userId,user_name userName,user_type userType,0 AS isWhite
+        FROM  lab_security_apply lsp WHERE (lsp.audit_status=2 AND lsp.subject_id=#{subjectId} AND lsp.valid_end_time <![CDATA[<]]> NOW() AND lsp.user_id=#{userId})
+        UNION
+        SELECT  user_id userId,user_name userName,(SELECT user_type FROM sys_user su WHERE su.user_id=lw.user_id) AS userType,1 AS isWhite  FROM  lab_whitelist lw WHERE lw.user_id=#{userId}
     </select>
 
 </mapper>

+ 7 - 2
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabStudentsInfoMapper.xml

@@ -62,8 +62,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectLabStudentsInfoBySubjectId" resultType="com.zd.system.api.entity.LabStudentsInfo">
-             SELECT  join_students_id,face_feature  FROM  `lab_students_info` WHERE join_students_id  IN ( SELECT user_id
-                FROM  lab_security_apply AS lab WHERE audit_status=2 AND subject_id=#{subjectId} AND valid_end_time >= NOW())
+             <!--SELECT  join_students_id,face_feature  FROM  `lab_students_info` WHERE join_students_id  IN ( SELECT user_id
+                FROM  lab_security_apply AS lab WHERE audit_status=2 AND subject_id=#{subjectId} AND valid_end_time >= NOW())-->
+        SELECT  join_students_id,face_feature  FROM  `lab_students_info` lsi WHERE (SELECT COUNT(*)
+        FROM  lab_security_apply AS lab WHERE audit_status=2 AND subject_id=#{subjectId} AND valid_end_time <![CDATA[<]]> NOW() AND lab.user_id=lsi.user_id )>0
+        UNION
+        SELECT  join_students_id,face_feature  FROM  `lab_students_info` lsi  WHERE (SELECT COUNT(*)
+        FROM  lab_whitelist AS lw WHERE  lsi.user_id=lw.user_id)>0
     </select>
 
     <insert id="insertLabStudentsInfo" parameterType="com.zd.system.api.entity.LabStudentsInfo">

+ 3 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSubjectMapper.xml

@@ -1243,4 +1243,7 @@
     <select id="selectLabSubjectByNum" resultMap="LabSubjectResult">
            SELECT  ls.id,ls.name,ls.dept_id,ls.dept_name  FROM  lab_subject ls INNER JOIN `xxp_card_info` xci ON ls.id=xci.subject_id WHERE ls.is_del=0 AND xci.card_num=#{number}
     </select>
+    <select id="isAdminOrSafeUser" resultType="java.lang.Integer">
+            SELECT  COUNT(*)  FROM  lab_subject WHERE id=#{subjectId} AND (admin_id=#{userId} OR LOCATE(#{userId},safe_user_id)>0)
+    </select>
 </mapper>

+ 22 - 19
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/XxpCardInfoMapper.xml

@@ -27,26 +27,27 @@
     </resultMap>
 
     <sql id="selectXxpCardInfo">
-        select id,
-               card_name,
-               card_num,
-               college,
-               college_id,
-               location,
-               operate,
-               auth_type,
-               auth_pwd,
-               subject_id,
-               subject_name,
-               dept_id,
-               dept_name,
-               is_start,
-               user_id,
-               create_by,
-               create_time,
-               update_by,
-               update_time
+        select t.id,
+               t.card_name,
+               t.card_num,
+               t.college,
+               t.college_id,
+               t.location,
+               t.operate,
+               t.auth_type,
+               t.auth_pwd,
+               t.subject_id,
+               t.subject_name,
+               t.dept_id,
+               t.dept_name,
+               t.is_start,
+               t.user_id,
+               t.create_by,
+               t.create_time,
+               t.update_by,
+               t.update_time
         from xxp_card_info t
+        left join sys_dept d on t.dept_id = d.dept_id
     </sql>
 
     <select id="selectXxpCardInfoList" parameterType="com.zd.laboratory.domain.XxpCardInfo"
@@ -80,6 +81,8 @@
                 or t.subject_name like concat('%', #{searchValue}, '%')
                 )
             </if>
+            <!-- 数据范围过滤 -->
+            ${params.dataScope}
         </where>
     </select>
 

+ 1 - 1
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysUserServiceImpl.java

@@ -1193,8 +1193,8 @@ public class SysUserServiceImpl implements ISysUserService {
      * @return
      */
     @Override
-    @DataScope(deptAlias = "d", userAlias = "u")
     public List<SysUser> selectUserDutyList(SysUser sysUser) {
+        sysUser.setDeptId(tokenService.getLoginUser().getSysUser().getDeptId());
         return userMapper.selectUserDutyList(sysUser);
     }
 

+ 102 - 43
zd-modules/zd-modules-system/src/main/resources/mapper/system/SysDeptMapper.xml

@@ -94,32 +94,32 @@
         order by d.parent_id, d.order_num
     </select>
 
-    <select id="selectDeptById"  resultMap="SysDeptResult">
+    <select id="selectDeptById" resultMap="SysDeptResult">
         <include refid="selectDeptVo"/>
         where dept_id = #{deptId}
     </select>
 
-    <select id="checkDeptExistUser"  resultType="int">
+    <select id="checkDeptExistUser" resultType="int">
         select count(1)
         from sys_user
         where dept_id = #{deptId}
           and del_flag = '0'
     </select>
 
-    <select id="hasChildByDeptId"  resultType="int">
+    <select id="hasChildByDeptId" resultType="int">
         select count(1)
         from sys_dept
         where del_flag = '0'
           and parent_id = #{deptId}
     </select>
 
-    <select id="selectChildrenDeptById"  resultMap="SysDeptResult">
+    <select id="selectChildrenDeptById" resultMap="SysDeptResult">
         select *
         from sys_dept
         where find_in_set(#{deptId}, ancestors)
     </select>
 
-    <select id="selectNormalChildrenDeptById"  resultType="java.lang.Integer">
+    <select id="selectNormalChildrenDeptById" resultType="java.lang.Integer">
         select count(*)
         from sys_dept
         where status = 0
@@ -127,20 +127,31 @@
           and find_in_set(#{deptId}, ancestors)
     </select>
 
-    <select id="selectDownDeptListById"  resultMap="SysDeptResult">
-		SELECT *
-		FROM sys_dept WHERE STATUS = 0 AND del_flag = '0' AND parent_id = #{parentId} order by order_num asc
-	</select>
+    <select id="selectDownDeptListById" resultMap="SysDeptResult">
+        SELECT *
+        FROM sys_dept
+        WHERE STATUS = 0
+          AND del_flag = '0'
+          AND parent_id = #{parentId}
+        order by order_num asc
+    </select>
 
-    <select id="selectMaxNumChildrenDeptById"  resultType="java.lang.Integer">
-		SELECT CASE WHEN MAX(order_num) IS NOT NULL THEN MAX(order_num)+1 ELSE 0 END
-		FROM sys_dept WHERE STATUS = 0 AND del_flag = '0' AND parent_id = #{parentId}
-	</select>
+    <select id="selectMaxNumChildrenDeptById" resultType="java.lang.Integer">
+        SELECT CASE WHEN MAX(order_num) IS NOT NULL THEN MAX(order_num) + 1 ELSE 0 END
+        FROM sys_dept
+        WHERE STATUS = 0
+          AND del_flag = '0'
+          AND parent_id = #{parentId}
+    </select>
 
-    <select id="selectChildrenDeptListById"  resultMap="SysDeptResult">
-		SELECT dt.* FROM sys_dept dt WHERE dt.STATUS = 0 AND dt.del_flag = '0'
-        AND FIND_IN_SET(#{deptId}, dt.ancestors) ORDER BY dt.order_num ASC
-	</select>
+    <select id="selectChildrenDeptListById" resultMap="SysDeptResult">
+        SELECT dt.*
+        FROM sys_dept dt
+        WHERE dt.STATUS = 0
+          AND dt.del_flag = '0'
+          AND FIND_IN_SET(#{deptId}, dt.ancestors)
+        ORDER BY dt.order_num ASC
+    </select>
 
     <select id="checkDeptNameUnique" resultMap="SysDeptResult">
         <include refid="selectDeptVo"/>
@@ -149,7 +160,7 @@
         <if test="delFlag != null and delFlag != ''">
             AND del_flag = #{delFlag}
         </if>
-         limit 1
+        limit 1
     </select>
 
     <select id="getDeptNameUnique" resultMap="SysDeptResult">
@@ -184,21 +195,27 @@
     </select>
 
     <select id="selectLevelByUserId" resultType="java.lang.Integer">
-        select count(1) from sys_dept where dept_id = (select dept_id from sys_user where user_id = #{userId} and user_type = '11' limit 1) and parent_id = 0
+        select count(1)
+        from sys_dept
+        where dept_id = (select dept_id from sys_user where user_id = #{userId} and user_type = '11' limit 1)
+          and parent_id = 0
     </select>
 
     <select id="queryDeptSignByUserId" resultType="java.lang.String">
-        select
-               case when a.dept_sign is not null then a.dept_sign
-                when (select dept_sign from sys_dept where dept_id = a.parent_id and is_lower = 1) is not null
-                    then (select dept_sign from sys_dept where dept_id = a.parent_id and is_lower = 1)
-                else (select dept_sign from sys_dept where dept_id = replace(replace(a.ancestors, concat(',', a.parent_id), ''), '0,', '') and is_lower = 1)
-                end
+        select case
+                   when a.dept_sign is not null then a.dept_sign
+                   when (select dept_sign from sys_dept where dept_id = a.parent_id and is_lower = 1) is not null
+                       then (select dept_sign from sys_dept where dept_id = a.parent_id and is_lower = 1)
+                   else (select dept_sign
+                         from sys_dept
+                         where dept_id = replace(replace(a.ancestors, concat(',', a.parent_id), ''), '0,', '')
+                           and is_lower = 1)
+                   end
         from (
                  select dept_sign, dept_id, parent_id, ancestors
                  from sys_dept
                  where dept_id = (select dept_id from sys_user where user_id = #{userId})
-             )a
+             ) a
     </select>
     <select id="selectDeptListByCollege" resultType="com.zd.model.entity.SysDept">
         <include refid="selectDeptVo"/>
@@ -214,21 +231,63 @@
         order by d.parent_id, d.order_num
     </select>
     <select id="treeDeptSubSel" resultType="com.zd.model.entity.SysDept">
-        select d.* from (
-            select d.dept_id,d.parent_id,
-                  ( select sd.dept_name from sys_dept sd where sd.dept_id=d.parent_id) parent_name,
-                   d.ancestors,d.dept_name,d.del_flag,1 subOrDept,d.dept_id subOrDeptId
-            from sys_dept d
-
-            union all
-
-            select concat(10000,s.id) dept_id,s.build_id parent_id,
-                   (select dept_name from sys_dept sd where sd.dept_id=s.build_id) parent_name,
-                   (select dt.ancestors
-            from sys_dept dt where dt.dept_id = s.build_id) ancestors,s.name dept_name,s.is_del del_flag,2 subOrDept,s.id subOrDeptId
-            from lab_subject s
-        )d
-        where d.del_flag = '0'
+        select
+        case when d.subOrDept=1 then d.dept_id else concat(10000,d.dept_id) END dept_id,
+        d.parent_id,
+        d.parent_name,
+        d.ancestors,
+        d.dept_name,
+        d.del_flag,
+        d.subOrDept
+        FROM
+        (
+        SELECT
+        d.dept_id,
+        d.parent_id,
+        (
+        SELECT
+        sd.dept_name
+        FROM
+        sys_dept sd
+        WHERE
+        sd.dept_id = d.parent_id
+        ) parent_name,
+        d.ancestors,
+        d.dept_name,
+        d.del_flag,
+        1 subOrDept,
+        d.dept_id subOrDeptId
+        FROM
+        sys_dept d
+        UNION ALL
+        SELECT
+        s.dept_id dept_id,
+        s.build_id parent_id,
+        (
+        SELECT
+        dept_name
+        FROM
+        sys_dept sd
+        WHERE
+        sd.dept_id = s.build_id
+        ) parent_name,
+        (
+        SELECT
+        dt.ancestors
+        FROM
+        sys_dept dt
+        WHERE
+        dt.dept_id = s.build_id
+        ) ancestors,
+        s. NAME dept_name,
+        s.is_del del_flag,
+        2 subOrDept,
+        s.id subOrDeptId
+        FROM
+        lab_subject s
+        ) d
+        WHERE
+        d.del_flag = '0'
         <if test="parentId != null and parentId != 0">
             AND d.parent_id = #{parentId}
         </if>
@@ -304,14 +363,14 @@
         </foreach>
     </update>
 
-    <update id="updateDeptStatusNormal" >
+    <update id="updateDeptStatusNormal">
         update sys_dept set status = '0' where dept_id in
         <foreach collection="array" item="deptId" open="(" separator="," close=")">
             #{deptId}
         </foreach>
     </update>
 
-    <delete id="deleteDeptById" >
+    <delete id="deleteDeptById">
         update sys_dept
         set del_flag = '2'
         where dept_id = #{deptId}