package com.moral.api.service.impl; 
 | 
  
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.moral.api.entity.HistorySecondUav; 
 | 
import com.moral.api.entity.Sensor; 
 | 
import com.moral.api.entity.SpecialDevice; 
 | 
import com.moral.api.mapper.HistorySecondUavMapper; 
 | 
import com.moral.api.service.DeviceService; 
 | 
import com.moral.api.service.HistorySecondUavService; 
 | 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
 | 
import com.moral.api.service.SpecialDeviceService; 
 | 
import com.moral.constant.Constants; 
 | 
import com.moral.constant.RedisConstants; 
 | 
import com.moral.util.DateUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.data.redis.core.RedisTemplate; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
/** 
 | 
 * <p> 
 | 
 * 无人机秒数据表 服务实现类 
 | 
 * </p> 
 | 
 * 
 | 
 * @author moral 
 | 
 * @since 2021-09-02 
 | 
 */ 
 | 
@Service 
 | 
public class HistorySecondUavServiceImpl extends ServiceImpl<HistorySecondUavMapper, HistorySecondUav> implements HistorySecondUavService { 
 | 
  
 | 
    @Autowired 
 | 
    private HistorySecondUavMapper historySecondUavMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private SpecialDeviceService specialDeviceService; 
 | 
  
 | 
    @Autowired 
 | 
    private RedisTemplate redisTemplate; 
 | 
  
 | 
    @Override 
 | 
    public void insertHistorySecond(Map<String, Object> data) { 
 | 
        Date batchTime = DateUtils.getDate((String) data.remove(Constants.SENSOR_CODE_SPECIAL_BATCH), DateUtils.yyyyMMddHHmmss_EN); 
 | 
        Date time = DateUtils.getDate((String) data.get("DataTime"), DateUtils.yyyyMMddHHmmss_EN); 
 | 
        String mac = data.get("mac").toString(); 
 | 
  
 | 
        //根据mac从redis中获取因子 
 | 
        SpecialDevice specialDevice = (SpecialDevice) redisTemplate.opsForHash().get(RedisConstants.SPECIAL_DEVICE_INFO, mac); 
 | 
        List<Sensor> sensors = specialDevice.getVersion().getSensors(); 
 | 
        //过滤因子 
 | 
        data = data.entrySet().stream() 
 | 
                .filter(m -> { 
 | 
                    boolean flag = false; 
 | 
                    String key = m.getKey(); 
 | 
                    if (!"mac".equals(key) && !"DataTime".equals(key)) { 
 | 
                        for (Sensor sensor : sensors) { 
 | 
                            if (sensor.getCode().equals(key)) { 
 | 
                                flag = true; 
 | 
                                break; 
 | 
                            } 
 | 
                        } 
 | 
                        return flag; 
 | 
                    } 
 | 
                    return true; 
 | 
                }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); 
 | 
  
 | 
        //数据校准 
 | 
        data = specialDeviceService.adjustSpecialDeviceData(data); 
 | 
  
 | 
        HistorySecondUav historySecondUav = new HistorySecondUav(); 
 | 
        historySecondUav.setMac(mac); 
 | 
        historySecondUav.setTime(time); 
 | 
        historySecondUav.setValue(JSONObject.toJSONString(data)); 
 | 
        historySecondUav.setOrganizationId(specialDevice.getOrganizationId()); 
 | 
        historySecondUav.setBatch(batchTime); 
 | 
        historySecondUavMapper.insert(historySecondUav); 
 | 
    } 
 | 
} 
 |