package com.moral.api.service.impl; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper; 
 | 
import com.moral.api.entity.Device; 
 | 
import com.moral.api.entity.MonitorPoint; 
 | 
import com.moral.api.entity.ServicesScopeDevice; 
 | 
import com.moral.api.mapper.DeviceMapper; 
 | 
import com.moral.api.mapper.MonitorPointMapper; 
 | 
import com.moral.api.mapper.ServicesScopeDeviceMapper; 
 | 
import com.moral.api.service.ServicesScopeDeviceService; 
 | 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
 | 
import com.moral.constant.Constants; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
/** 
 | 
 * <p> 
 | 
 *  服务实现类 
 | 
 * </p> 
 | 
 * 
 | 
 * @author moral 
 | 
 * @since 2022-01-17 
 | 
 */ 
 | 
@Service 
 | 
public class ServicesScopeDeviceServiceImpl extends ServiceImpl<ServicesScopeDeviceMapper, ServicesScopeDevice> implements ServicesScopeDeviceService { 
 | 
  
 | 
    @Autowired 
 | 
    private ServicesScopeDeviceMapper servicesScopeDeviceMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private DeviceMapper deviceMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private MonitorPointMapper monitorPointMapper; 
 | 
  
 | 
    @Override 
 | 
    public List<Map<String, Object>> getDevicesAndMonitorPoint(Map<String, Object> map) { 
 | 
        int servicesScopeId = Integer.parseInt(map.get("servicesScopeId").toString()); 
 | 
        QueryWrapper<ServicesScopeDevice> servicesScopeDeviceQueryWrapper = new QueryWrapper<>(); 
 | 
        servicesScopeDeviceQueryWrapper.eq("is_delete",Constants.NOT_DELETE); 
 | 
        servicesScopeDeviceQueryWrapper.eq("services_scope_id",servicesScopeId); 
 | 
        List<ServicesScopeDevice> servicesScopeDevices = servicesScopeDeviceMapper.selectList(servicesScopeDeviceQueryWrapper); 
 | 
        if (servicesScopeDevices.size() == 0){ 
 | 
            return null; 
 | 
        } 
 | 
        List<Integer> deviceIds = servicesScopeDevices.stream().map(p -> p.getDeviceId()).collect(Collectors.toList()); 
 | 
        QueryWrapper<Device> deviceQueryWrapper = new QueryWrapper<>(); 
 | 
        deviceQueryWrapper.eq("is_delete",Constants.NOT_DELETE); 
 | 
        deviceQueryWrapper.in("id",deviceIds); 
 | 
        List<Device> devices = deviceMapper.selectList(deviceQueryWrapper); 
 | 
        if (devices.size() == 0){ 
 | 
            return null; 
 | 
        } 
 | 
        List<Integer> monitorPointIds = devices.stream().map(p -> p.getMonitorPointId()).collect(Collectors.toList()); 
 | 
        QueryWrapper<MonitorPoint> monitorPointQueryWrapper = new QueryWrapper<>(); 
 | 
        monitorPointQueryWrapper.eq("is_delete",Constants.NOT_DELETE); 
 | 
        monitorPointQueryWrapper.in("id",monitorPointIds); 
 | 
        List<MonitorPoint> monitorPointList = monitorPointMapper.selectList(monitorPointQueryWrapper); 
 | 
        if (monitorPointList.size() == 0){ 
 | 
            return null; 
 | 
        } 
 | 
        List resultList = new ArrayList(); 
 | 
        for (MonitorPoint monitorPoint:monitorPointList) { 
 | 
            Map monitorPointMap = JSON.parseObject(JSON.toJSONString(monitorPoint), Map.class); 
 | 
            List deviceList = new ArrayList(); 
 | 
            for (Device device:devices) { 
 | 
                if (device.getMonitorPointId().equals(monitorPoint.getId())){ 
 | 
                    deviceList.add(device); 
 | 
                } 
 | 
            } 
 | 
            monitorPointMap.put("devices",deviceList); 
 | 
            resultList.add(monitorPointMap); 
 | 
        } 
 | 
        return resultList; 
 | 
    } 
 | 
} 
 |