| 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); | 
|     } | 
| } |