package com.moral.api.service.impl; 
 | 
  
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.moral.api.mapper.HistoryHourlyMapper; 
 | 
import com.moral.api.service.DeviceService; 
 | 
import com.moral.api.service.HistoryHourlyService; 
 | 
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 org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import java.util.Date; 
 | 
import java.util.HashMap; 
 | 
import java.util.Map; 
 | 
  
 | 
/** 
 | 
 * <p> 
 | 
 * 小时表 服务实现类 
 | 
 * </p> 
 | 
 * 
 | 
 * @author moral 
 | 
 * @since 2021-06-04 
 | 
 */ 
 | 
@Service 
 | 
public class HistoryHourlyServiceImpl implements HistoryHourlyService { 
 | 
  
 | 
    @Autowired 
 | 
    private HistoryHourlyMapper historyHourlyMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private DeviceService deviceService; 
 | 
  
 | 
    @Autowired 
 | 
    private RedisTemplate redisTemplate; 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void insertHistoryHourly(Map<String, Object> data) { 
 | 
        //用来校准数据 
 | 
        Map<String, Object> dataAdjust = new HashMap<>(data); 
 | 
        //存入数据库对象 
 | 
        Map<String, Object> result = new HashMap<>(); 
 | 
        String mac = data.remove("mac").toString(); 
 | 
        //根据mac获取型号 
 | 
        Map<String, Object> deviceInfo = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DEVICE, mac); 
 | 
        Map<String, Object> versionInfo = (Map<String, Object>) deviceInfo.get("version"); 
 | 
        Integer version = (Integer) versionInfo.get("id"); 
 | 
  
 | 
        Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN); 
 | 
        String yearAndMonth = DateUtils.dateToDateString(DateUtils.addHours(time, -1), DateUtils.yyyyMM_EN); 
 | 
  
 | 
        result.put("mac", mac); 
 | 
        result.put("time", DateUtils.addHours(time, -1)); 
 | 
        result.put("version", version); 
 | 
        result.put("timeUnits", yearAndMonth + "_" + Constants.UN_ADJUST); 
 | 
        result.put("value", JSONObject.toJSONString(data)); 
 | 
        //未校准小时表insert 
 | 
        historyHourlyMapper.insertHistoryHourly(result); 
 | 
  
 | 
        //数据校准 
 | 
        dataAdjust = deviceService.adjustDeviceData(dataAdjust,"2"); 
 | 
  
 | 
        //校准后小时表insert 
 | 
        result.put("timeUnits", yearAndMonth); 
 | 
        result.put("value", JSONObject.toJSONString(dataAdjust)); 
 | 
        historyHourlyMapper.insertHistoryHourly(result); 
 | 
    } 
 | 
} 
 |