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;
/**
*
* 小时表 服务实现类
*
*
* @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 data) {
//用来校准数据
Map dataAdjust = new HashMap<>(data);
//存入数据库对象
Map result = new HashMap<>();
String mac = data.remove("mac").toString();
//根据mac获取型号
Map deviceInfo = (Map) redisTemplate.opsForHash().get(RedisConstants.DEVICE, mac);
Map versionInfo = (Map) deviceInfo.get("version");
Integer version = (Integer) versionInfo.get("id");
Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
String yearAndMonth = DateUtils.dateToDateString(time, 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);
//校准后小时表insert
result.put("timeUnits", yearAndMonth);
result.put("value", JSONObject.toJSONString(dataAdjust));
historyHourlyMapper.insertHistoryHourly(result);
}
}