Эх сурвалжийг харах

fix:异常获取用户规则调整

wangbo 2 жил өмнө
parent
commit
edc066ea9c

+ 6 - 16
smsb-customer-manager-app/src/main/java/com/inspur/customer/service/org/SmsbDepartmentUserServiceImpl.java

@@ -198,23 +198,13 @@ public class SmsbDepartmentUserServiceImpl extends ServiceImpl<SmsbDepartmentUse
         List<String> paths = departmentService.listSuperiorDepartments(org, tenant);
         queryWrapper.eq(SmsbDepartmentUserDO::getTenant, tenant)
             .ne(SmsbDepartmentUserDO::getInformLevel, -1)
-            .eq(SmsbDepartmentUserDO::getEnabled, 1)
-            .between(SmsbDepartmentUserDO::getInformLevel, 1000, 1000 + informLevel)
-            .or(!CollectionUtils.isEmpty(paths), q -> q.ne(SmsbDepartmentUserDO::getInformLevel, -1)
-                .in(SmsbDepartmentUserDO::getPath, paths)
-                .eq(SmsbDepartmentUserDO::getEnabled, 1)
-                .eq(SmsbDepartmentUserDO::getTenant, tenant)
-                .between(SmsbDepartmentUserDO::getInformLevel, 0, informLevel))
-            //部门为空代表设备在根部门
-            .or(CollectionUtils.isEmpty(paths), q -> q.ne(SmsbDepartmentUserDO::getInformLevel, -1)
-                .isNull(SmsbDepartmentUserDO::getPath)
-                .eq(SmsbDepartmentUserDO::getEnabled, 1)
-                .eq(SmsbDepartmentUserDO::getTenant, tenant)
-                .between(SmsbDepartmentUserDO::getInformLevel, 0, informLevel));
-        queryWrapper.or(i->i.eq(SmsbDepartmentUserDO::getInformLevel , 9999)
-            .apply("FIND_IN_SET({0}, REPLACE(REPLACE(inform_type, '[', ''), ']', '')) > 0" , errorId));
+            .eq(SmsbDepartmentUserDO::getEnabled, 1);
+        queryWrapper.and(wrapper->wrapper.isNull(SmsbDepartmentUserDO::getPath).or().in(SmsbDepartmentUserDO::getPath, paths));
+        queryWrapper.and(wrapper -> wrapper.nested(nestedWrapper ->
+                    nestedWrapper.eq(SmsbDepartmentUserDO::getInformLevel, 9999)
+                        .apply("FIND_IN_SET({0}, REPLACE(REPLACE(inform_type, '[', ''), ']', '')) > 0" , errorId)
+                ).or().between(SmsbDepartmentUserDO::getInformLevel, 0, informLevel));
         List<SmsbDepartmentUserDO> list = this.list(queryWrapper);
-
         List<SmsbSimpleUserCO> smsbSimpleUserList = Lists.newArrayListWithCapacity(list.size());
         list.forEach(user -> {
             SmsbSimpleUserCO userCO = new SmsbSimpleUserCO();