|
|
@@ -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.device.client.core.manage.SmsbDeviceService;
|
|
|
import com.inspur.device.client.core.manage.SmsbUsersDeviceAttentionService;
|
|
|
import com.inspur.device.client.core.relation.DeviceAllocateService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -51,6 +52,8 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
|
|
|
private DeviceAllocateService deviceAllocateService;
|
|
|
@DubboReference
|
|
|
private SmsbUsersDeviceAttentionService attentionService;
|
|
|
+ @DubboReference
|
|
|
+ private SmsbDeviceService deviceService;
|
|
|
|
|
|
@Override
|
|
|
public Response addDepartment(String userId , SmsbDepartmentAdd smsbDepartmentAdd) {
|
|
|
@@ -134,20 +137,21 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Response queryDepartmentList(String tenant) {
|
|
|
- List<SmsbDepartmentDO> departmentList = super.list(new LambdaQueryWrapper<>(SmsbDepartmentDO.class)
|
|
|
- .eq(SmsbDepartmentDO::getIsDel , 0)
|
|
|
- .eq(SmsbDepartmentDO::getTenant, tenant)
|
|
|
- .isNull(SmsbDepartmentDO::getParentId));
|
|
|
+ public List<SmsbDepartmentCO> queryDepartmentList(String tenant , String org) {
|
|
|
+ LambdaQueryWrapper<SmsbDepartmentDO> queryWrapper = new LambdaQueryWrapper<>(SmsbDepartmentDO.class)
|
|
|
+ .eq(SmsbDepartmentDO::getIsDel, 0)
|
|
|
+ .eq(SmsbDepartmentDO::getTenant, tenant);
|
|
|
+ queryWrapper = StringUtils.isNotEmpty(org) ? queryWrapper.eq(SmsbDepartmentDO::getPath , org)
|
|
|
+ : queryWrapper.isNull(SmsbDepartmentDO::getParentId);
|
|
|
List<SmsbDepartmentCO> departmentTree = Lists.newArrayList();
|
|
|
- departmentList.forEach(department -> {
|
|
|
+ super.list(queryWrapper).forEach(department -> {
|
|
|
SmsbDepartmentCO smsbDepartmentCO = new SmsbDepartmentCO();
|
|
|
BeanUtils.copyProperties(department, smsbDepartmentCO);
|
|
|
smsbDepartmentCO.setChildren(this.getChilde(department.getId()));
|
|
|
departmentTree.add(smsbDepartmentCO);
|
|
|
});
|
|
|
log.info("tree num is :{}", departmentTree.size());
|
|
|
- return SingleResponse.of(departmentTree);
|
|
|
+ return departmentTree;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -312,7 +316,7 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
|
|
|
SmsbSimpleUserCO simpleUser = userService.getOneByUserId(userId);
|
|
|
if(Objects.isNull(simpleUser)){return SingleResponse.of(new SmsbDepartmentCO());}
|
|
|
if(Objects.isNull(simpleUser.getDepartmentId()) && Objects.isNull(simpleUser.getPath())){
|
|
|
- return this.queryDepartmentList(simpleUser.getTenant());
|
|
|
+ return SingleResponse.of(this.queryDepartmentList(simpleUser.getTenant() ,null));
|
|
|
}
|
|
|
log.info("部门id:{}",simpleUser.getDepartmentId());
|
|
|
SmsbDepartmentDO department = super.getById(simpleUser.getDepartmentId());
|
|
|
@@ -323,4 +327,58 @@ public class SmsbDepartmentServiceImpl extends ServiceImpl<SmsbDepartmentMapper
|
|
|
}
|
|
|
return SingleResponse.of(smsbDepartmentCO);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public DeviceDepartmentDto listDepartmentDevice(DeviceDepartmentCmd departmentCmd) {
|
|
|
+ // 1. 获取对应部门树
|
|
|
+ SmsbDepartmentCO department = this.queryDepartment(departmentCmd.getTenant() , departmentCmd.getOrg());
|
|
|
+ DeviceDepartmentDto deviceDepartmentDto = new DeviceDepartmentDto();
|
|
|
+ // 2. 获取部门-List<设备id> map
|
|
|
+ if(Objects.nonNull(department)){
|
|
|
+ BeanUtils.copyProperties(department , deviceDepartmentDto);
|
|
|
+ if(StringUtils.isEmpty(departmentCmd.getOrg()) && department.getId() == null){
|
|
|
+ // 根节点为租户,该租户下未被分配的设备
|
|
|
+ deviceDepartmentDto.setDevices(deviceService.ListDeviceUnbound(departmentCmd.getTenant()));
|
|
|
+ }else {
|
|
|
+ // 根节点为部门
|
|
|
+ deviceDepartmentDto.setDevices(deviceService.ListDeviceBind(department.getPath()));
|
|
|
+ }
|
|
|
+ // todo 递归子项
|
|
|
+ deviceDepartmentDto.setChildren(chaildRecurrenceHandle(department.getChildren()));
|
|
|
+ }
|
|
|
+ // 3. 组装设备信息并返回
|
|
|
+ return deviceDepartmentDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<DeviceDepartmentDto> chaildRecurrenceHandle(List<SmsbDepartmentCO> children){
|
|
|
+ List<DeviceDepartmentDto> childrenList = Lists.newArrayList();
|
|
|
+ if(!CollectionUtils.isEmpty(children)){
|
|
|
+ children.forEach(child->{
|
|
|
+ DeviceDepartmentDto deviceDepartmentDto = new DeviceDepartmentDto();
|
|
|
+ BeanUtils.copyProperties(child , deviceDepartmentDto);
|
|
|
+ deviceDepartmentDto.setDevices(deviceService.ListDeviceBind(child.getPath()));
|
|
|
+ deviceDepartmentDto.setDevices(chaildRecurrenceHandle(child.getChildren()));
|
|
|
+ childrenList.add(deviceDepartmentDto);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return childrenList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private SmsbDepartmentCO queryDepartment(String tenant , String org){
|
|
|
+ SmsbDepartmentCO departmentCO = new SmsbDepartmentCO();
|
|
|
+ departmentCO.setTenant(tenant);
|
|
|
+ if(StringUtils.isEmpty(org)){
|
|
|
+ departmentCO.setChildren(queryDepartmentList(tenant , null));
|
|
|
+ }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)){BeanUtils.copyProperties(smsbDepartmentDO , departmentCO);}
|
|
|
+ departmentCO.setChildren(queryDepartmentList(tenant , org));
|
|
|
+ }
|
|
|
+ return departmentCO;
|
|
|
+ }
|
|
|
}
|