Browse Source

fix: 按设备发布时可选择仅展示下一层级的部门设备信息

sunyue 2 years ago
parent
commit
9c4028d149

+ 18 - 0
smsb-customer-manager-adapter/src/main/java/com/inspur/customer/web/controller/keyclaok/KeycloakDepartmentController.java

@@ -125,4 +125,22 @@ public class KeycloakDepartmentController {
         if(departmentCmd.getActivate() == null){departmentCmd.setActivate(true);}
         return SingleResponse.of(departmentService.listDepartmentDeviceSimple(departmentCmd));
     }
+
+    /**
+     * 仅下一层级部门携带设备信息列表展示
+     *
+     * @param departmentCmd
+     * @return 部门设备列表
+     */
+    @SysLogIgnore
+    @GetMapping("/tenant/department/device/listNextLevel")
+    public Response listDepartmentDeviceWithFlag(DeviceDepartmentCmd departmentCmd){
+        if(departmentCmd.getActivate() == null){departmentCmd.setActivate(true);}
+        if (Boolean.TRUE.equals(departmentCmd.getPartFlag())) {
+            return SingleResponse.of(departmentService.listDepartmentDeviceSimple(departmentCmd));
+        } else {
+            return SingleResponse.of(departmentService.listNextLevelDepartmentDevice(departmentCmd));
+        }
+
+    }
 }

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

@@ -16,6 +16,7 @@ import com.inspur.customer.infrastructure.convertor.SmsbDepartmentConvertor;
 import com.inspur.customer.infrastructure.mapper.org.SmsbDepartmentMapper;
 import com.inspur.customer.infrastructure.object.org.SmsbDepartmentDO;
 import com.inspur.customer.object.org.*;
+import com.inspur.customer.utils.BeanCopyUtils;
 import com.inspur.device.client.core.manage.SmsbDeviceService;
 import com.inspur.device.client.core.manage.SmsbUsersDeviceAttentionService;
 import com.inspur.device.client.core.relation.DeviceAllocateService;
@@ -377,6 +378,46 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
         return deviceDepartmentSimpleDto;
     }
 
+    /**
+     * 仅查询下一层级
+     */
+    @Override
+    public DeviceDepartmentSimpleDto listNextLevelDepartmentDevice(DeviceDepartmentCmd departmentCmd) {
+        DeviceDepartmentSimpleDto departmentCO = new DeviceDepartmentSimpleDto();
+
+        String tenant = departmentCmd.getTenant();
+        String org = departmentCmd.getOrg();
+        departmentCO.setTenant(tenant);
+        //没有部门,则获取该租户下所有部门树;否则仅获取该部门
+        if(StringUtils.isEmpty(org)){
+            //初次查询, 根节点为租户,该租户下未被分配的设备, 和一级部门
+            LambdaQueryWrapper<SmsbDepartmentDO> queryWrapper = new LambdaQueryWrapper<>(SmsbDepartmentDO.class)
+                .eq(SmsbDepartmentDO::getIsDel, 0)
+                .eq(SmsbDepartmentDO::getTenant, tenant)
+                .isNull(SmsbDepartmentDO::getParentId);
+            departmentCO.setDevices(deviceService.ListDeviceUnboundSimple(departmentCmd.getTenant() , departmentCmd.getActivate(), departmentCmd.getOrderFlag()));
+            departmentCO.setChildren(BeanCopyUtils.copyList(this.list(queryWrapper), DeviceDepartmentSimpleDto.class));
+        }else{
+            //查询下属部门和设备
+            SmsbDepartmentDO smsbDepartmentDO = super.getOne(new LambdaQueryWrapper<>(SmsbDepartmentDO.class)
+                .eq(SmsbDepartmentDO::getIsDel, 0)
+                .eq(SmsbDepartmentDO::getTenant, tenant)
+                .eq(SmsbDepartmentDO::getPath, org)
+                .last("LIMIT 1"));
+            if(Objects.nonNull(smsbDepartmentDO)) {
+                //子部门
+                List<SmsbDepartmentDO> childDepartmentList = this.list(new LambdaQueryWrapper<SmsbDepartmentDO>().eq(SmsbDepartmentDO::getIsDel, 0)
+                    .eq(SmsbDepartmentDO::getTenant, tenant)
+                    .eq(SmsbDepartmentDO::getParentId, smsbDepartmentDO.getId()));
+                if (!childDepartmentList.isEmpty()) {
+                    departmentCO.setChildren(BeanCopyUtils.copyList(childDepartmentList, DeviceDepartmentSimpleDto.class));
+                }
+                departmentCO.setDevices(deviceService.ListDeviceBind(smsbDepartmentDO.getPath() , departmentCmd.getActivate()));
+            }
+        }
+        return departmentCO;
+    }
+
     /**
      * 简易参数
      * @param children

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

@@ -129,6 +129,11 @@ public interface SmsbDepartmentService {
      */
     DeviceDepartmentSimpleDto listDepartmentDeviceSimple(DeviceDepartmentCmd departmentCmd);
 
+    /**
+     * 简化获取下一层级设备部门列表
+     */
+    DeviceDepartmentSimpleDto listNextLevelDepartmentDevice(DeviceDepartmentCmd departmentCmd);
+
     /**
      * 冒泡获取上级部门列表
      *

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

@@ -22,4 +22,10 @@ public class DeviceDepartmentCmd extends OperationAuthority {
     private Boolean activate;
 
     private Integer orderFlag;
+
+    /**
+     * 标识为0,只查询下一层级
+     * 标识为1,查询以下所有层级的所有设备
+     */
+    private Boolean partFlag;
 }