package com.moral.api.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.moral.api.entity.HistoryHourly;
import com.moral.api.mapper.HistoryHourlyMapper;
import com.moral.api.service.DeviceService;
import com.moral.api.service.HistoryHourlyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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 extends ServiceImpl implements HistoryHourlyService {
@Autowired
private HistoryHourlyMapper historyHourlyMapper;
@Autowired
private DeviceService deviceService;
@Autowired
private RedisTemplate redisTemplate;
@Override
@Transactional
public void insertHistoryHourly(Map data) {
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");
Map dataAdjust = new HashMap<>(data);
Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
Map result = new HashMap<>();
result.put("mac", mac);
result.put("time", time);
result.put("version", version);
result.put("timeUnits", Constants.UN_ADJUST);
result.put("value", JSONObject.toJSONString(data));
//未校准小时表insert
historyHourlyMapper.insertHistoryHourly(result);
//数据校准
dataAdjust = deviceService.adjustDeviceData(dataAdjust);
HistoryHourly historyHourly = new HistoryHourly();
historyHourly.setMac(mac);
historyHourly.setTime(time);
historyHourly.setVersion(version);
historyHourly.setValue(JSONObject.toJSONString(dataAdjust));
//校准后小时表insert
historyHourlyMapper.insert(historyHourly);
}
}