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.util.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
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;
@Override
@Transactional
public void insertHistoryHourly(Map data) {
Map dataAdjust = new HashMap<>(data);
String mac = data.remove("mac").toString();
Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
Integer version = (Integer) data.remove("ver");
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));
//原始数据(未校准)
historyHourlyMapper.insertHistoryHourlyUnAdjust(result);
//数据校准
dataAdjust = deviceService.adjustDeviceData(dataAdjust);
dataAdjust.remove("mac");
dataAdjust.remove("DataTime");
dataAdjust.remove("ver");
int count = historyHourlyMapper.getCountByMacAndTime(mac, DateUtils.dateToDateString(time));
//判断中间表有没有该mac,该小时的数据,有就更新,没有就新增
if (count == 0) {
//小时数据校准后存入小时中间表
result.put("value", JSONObject.toJSONString(dataAdjust));
//新增
historyHourlyMapper.insertHistoryHourlyTransition(result);
} else {
//更新
historyHourlyMapper.updateHistoryTransition(mac, DateUtils.dateToDateString(time));
}
}
}