Browse Source

fix: 适用简易查询方法,规避不必要的数据返回

sunyue 2 years ago
parent
commit
d4caebdc85

+ 20 - 1
smsb-customer-manager-app/src/main/java/com/inspur/customer/service/org/SmsbDepartmentServiceImpl.java

@@ -412,7 +412,7 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
                 if (!childDepartmentList.isEmpty()) {
                     departmentCO.setChildren(BeanCopyUtils.copyList(childDepartmentList, DeviceDepartmentSimpleDto.class));
                 }
-                departmentCO.setDevices(deviceService.ListDeviceBind(smsbDepartmentDO.getPath() , departmentCmd.getActivate()));
+                departmentCO.setDevices(deviceService.ListDeviceBindSimple(smsbDepartmentDO.getPath() , departmentCmd.getActivate(), departmentCmd.getOrderFlag()));
             }
         }
         return departmentCO;
@@ -520,6 +520,25 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
         return map;
     }
 
+    @Override
+    public List<String> getListByParentOrg(List<String> orgList) {
+        List<Long> idList = this.listObjs(new LambdaQueryWrapper<SmsbDepartmentDO>()
+            .in(SmsbDepartmentDO::getPath, orgList)
+            .eq(SmsbDepartmentDO::getIsDel, 0)
+            .select(SmsbDepartmentDO::getId), o -> Long.valueOf(o.toString()));
+        //当前部门id的下一层级
+        List<String> temp = this.listObjs(new LambdaQueryWrapper<SmsbDepartmentDO>()
+            .in(SmsbDepartmentDO::getParentId, idList)
+            .eq(SmsbDepartmentDO::getIsDel, 0).select(SmsbDepartmentDO::getPath), Object::toString);
+        if (temp.isEmpty()) {
+            //全部都是最小部门,不用再细化了
+            return orgList;
+        } else {
+            orgList.addAll(getListByParentOrg(temp));
+            return orgList;
+        }
+    }
+
     /**
      * 获取当前部门及上级部门
      *

+ 5 - 0
smsb-customer-manager-client/src/main/java/com/inspur/customer/client/org/SmsbDepartmentService.java

@@ -149,4 +149,9 @@ public interface SmsbDepartmentService {
      * @return
      */
     Map<String, String> getDepartmentNameByOrg(List<String> paths);
+
+    /**
+     * 获取当前部门及所有子部门,包括多层级嵌套,细化到最小部门
+     */
+    List<String> getListByParentOrg(List<String> orgList);
 }

+ 4 - 2
smsb-customer-manager-client/src/main/java/com/inspur/customer/object/org/DeviceDepartmentCmd.java

@@ -13,6 +13,7 @@ public class DeviceDepartmentCmd extends OperationAuthority {
 
     /**
      * 部门
+     * 查询下一层级信息时,org为要查询的部门path
      */
     private String org;
 
@@ -24,8 +25,9 @@ public class DeviceDepartmentCmd extends OperationAuthority {
     private Integer orderFlag;
 
     /**
-     * 标识为0,只查询下一层级
-     * 标识为1,查询以下所有层级的所有设备
+     *
+     * 标识为true,查询以下所有层级的所有设备
+     * 其余情况均只查询下一层级
      */
     private Boolean partFlag;
 }