Browse Source

事件列表增加用户相关筛选

459242451@qq.com 3 years ago
parent
commit
854f5d39e8

+ 27 - 8
ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhdd/IncidentController.java

@@ -8,6 +8,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpStatus;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
@@ -52,6 +53,7 @@ import com.ruoyi.zhdd.feign.FeignNoticeInfoService;
 import com.ruoyi.zhdd.service.IIncidentProcessService;
 import com.ruoyi.zhdd.service.IIncidentService;
 import com.ruoyi.zhdd.service.IIncidentTaskService;
+import com.ruoyi.zhdd.service.IIncidentUserService;
 import com.ruoyi.zhdd.service.IPlanFileService;
 import com.ruoyi.zhdd.service.IPlanService;
 import com.ruoyi.zhdd.service.IPlanTaskService;
@@ -73,12 +75,7 @@ import javax.validation.constraints.NotNull;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -106,6 +103,7 @@ public class IncidentController extends BaseController {
     private final IResourceDetailService resourceDetailService;
     private final ISysUserService sysUserService;
     private final ISysDeptService sysDeptService;
+    private final IIncidentUserService incidentUserService;
 
     @Value("${spring.profiles.active}")
     private String env;
@@ -124,6 +122,25 @@ public class IncidentController extends BaseController {
         if (StrUtil.isNotBlank(bo.getStatuss())) {
             bo.setStatuss(bo.getStatuss().replace("-", ""));
         }
+        // 根据当前用户的角色及部门筛选可以查询到的事件
+        LoginUser cacheLoginUser = UserUtil.getCacheLoginUser();
+        // 查询角色如果包含admin的,直接查询全部
+        Set<String> userRole = cacheLoginUser.getUserRole();
+        boolean admin = CollUtil.containsAny(userRole, CollUtil.newHashSet("admin"));
+        if (!admin) {
+            // 查询当前用户和哪些事件相关
+            List<Object> objects = incidentUserService.listObjs(Wrappers.<IncidentUser>lambdaQuery().select(IncidentUser::getIncidentId).eq(IncidentUser::getUserId, cacheLoginUser.getUserId()));
+            if (objects.size() == 0) {
+                TableDataInfo<IncidentVo> rspData = new TableDataInfo<>();
+                rspData.setCode(HttpStatus.HTTP_OK);
+                rspData.setMsg("查询成功");
+                rspData.setRows(Collections.emptyList());
+                rspData.setTotal(0);
+                return rspData;
+            }
+            HashSet<Object> incidentIdSet = CollUtil.newHashSet(objects);
+            bo.setIds(incidentIdSet);
+        }
         return iIncidentService.queryPageList(bo);
     }
 
@@ -518,8 +535,10 @@ public class IncidentController extends BaseController {
     }
 
     public static void main(String[] args) {
-        String a = FileUtil.getAbsolutePath("/profile/upload/2022/03/11/9a583b1a3844d664b06f53a92f8bf9b_8856.jpg");
-        System.out.println(a);
+        Set<String> set = new HashSet<>();
+        set.add("common");
+        set.add("read");
+        System.out.println(CollUtil.containsAny(set, CollUtil.newHashSet("admin", "update")));
     }
 
 }

+ 1 - 1
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java

@@ -75,7 +75,7 @@ public class LoginUser implements UserDetails {
 
     private Boolean suQian = false;
 
-    private String userRole;
+    private Set<String> userRole;
 
     /**
      * 用户信息

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/SecurityInterceptor.java

@@ -92,7 +92,7 @@ public class SecurityInterceptor implements HandlerInterceptor {
                         throw new ServiceException("请联系应急事件处置系统管理员分配权限", 90002);
                     }
                     user = new LoginUser(sysUser.getUserId(), sysUser.getDeptId(), sysUser, permissionService.getMenuPermission(sysUser));
-                    user.setUserRole(roles.iterator().next());
+                    user.setUserRole(roles);
                     setUserAgent(user);
                     user.setSuQian(true);
                     RedisUtils.setCacheObject(userKey, user, 120, TimeUnit.MINUTES);

+ 3 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/domain/bo/IncidentBo.java

@@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode;
 
 import javax.validation.constraints.NotBlank;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 事件基础业务对象 b_incident
@@ -200,4 +201,6 @@ public class IncidentBo extends BaseEntity {
 
     // 忽略说明
     private String ignores;
+
+    private Set<Object> ids;
 }

+ 3 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentServiceImpl.java

@@ -110,6 +110,9 @@ public class IncidentServiceImpl extends ServicePlusImpl<IncidentMapper, Inciden
             lqw.between(Incident::getCreateTime, Timestamp.valueOf(Convert.toStr(params.get("beginTime")) + " 00:00:00"), Timestamp.valueOf(Convert.toStr(params.get("endTime")) + " 23:59:59"));
         }
         lqw.in(bo.getLevels() != null && bo.getLevels().size() > 0, Incident::getLevel, bo.getLevels());
+        if (bo.getIds() != null && bo.getIds().size() > 0) {
+            lqw.in(Incident::getId, bo.getIds());
+        }
         lqw.orderByDesc(Incident::getCreateTime);
         return lqw;
     }