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