package cn.besteam.modules.medical.service.impl; import cn.besteam.common.constant.DepartmentEnum; import cn.besteam.modules.medical.biz.MonitorDeviceApiNewService; import cn.besteam.modules.medical.entity.MwMonitorDevice; import cn.besteam.modules.medical.mapper.MwMonitorDeviceMapper; import cn.besteam.modules.medical.service.IMwMonitorDeviceService; import cn.besteam.modules.medical.vo.MwMonitorDeviceVO; import cn.besteam.modules.shiro.authc.util.EnvUtils; import cn.besteam.modules.system.entity.SysDepartment; import cn.besteam.modules.system.service.ISysDepartmentService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; /** * @Description: 监控设备 * @author: besteam * @date: 2020-07-14 * @version: V1.0 */ @Service public class MwMonitorDeviceServiceImpl extends ServiceImpl implements IMwMonitorDeviceService { @Autowired private ISysDepartmentService sysDepartmentService; @Autowired private MonitorDeviceApiNewService monitorDeviceApiNewService; @Override public IPage queryPageList(Integer pageNo, Integer pageSize, Integer departmentId, String devIdno) { Page pageParam = new Page<>(pageNo, pageSize); // SysDepartment myDepartment = sysDepartmentService.getMyDepartment(EnvUtils.getUser().getId()); if (myDepartment.getOrgType().equals(DepartmentEnum.OrgTypeEnum.OFFICE.getType()) || myDepartment.getOrgType().equals(DepartmentEnum.OrgTypeEnum.DEPARTMENT.getType())) { return pageParam; } if (departmentId != null) { SysDepartment sysDepartment = sysDepartmentService.getById(departmentId); if (sysDepartment == null) { return pageParam; } myDepartment = sysDepartment; } //获取视频服务器中的在线设备列表 List deviceList=monitorDeviceApiNewService.getDeviceList(); List sysDepartmentList = sysDepartmentService.list(new QueryWrapper().lambda().likeRight(SysDepartment::getTreeCode, myDepartment.getTreeCode())); if (CollectionUtils.isNotEmpty(sysDepartmentList)) { IPage resultPage = baseMapper.queryPageList(pageParam, sysDepartmentList.stream().map(SysDepartment::getId).collect(Collectors.toList()), devIdno); for (MwMonitorDeviceVO vo : resultPage.getRecords()) { //设置每个设备状态 vo.setStateName("离线"); for(String deviceID:deviceList){ if(deviceID.equals(vo.getDevIdno())){ vo.setStateName("在线"); break; } } vo.setDepartmentIdList(sysDepartmentService.getParentIdList(vo.getHospitalId())); } return resultPage; } return pageParam; } }