package com.moral.task;
|
|
import com.moral.service.DeviceAdjustValueService;
|
import com.moral.service.DeviceAdjustValueTimingService;
|
import com.moral.util.AlarmUtils_2;
|
import com.moral.util.LengthOfTimeUtils;
|
import com.xxl.job.core.biz.model.ReturnT;
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
import com.xxl.job.core.log.XxlJobLogger;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
@Component
|
public class DeviceAdjustValueTimingTask {
|
private static transient Logger logger = LoggerFactory.getLogger(DeviceAdjustValueTimingTask.class);
|
|
@Resource
|
private DeviceAdjustValueTimingService deviceAdjustValueTimingService;
|
|
@Resource
|
private DeviceAdjustValueService deviceAdjustValueService;
|
|
@XxlJob("DeviceAdjustValueTiming")
|
public ReturnT DeviceAdjustValueTiming(String params) {
|
//获取当前时间和五分钟前的时间
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
LocalDateTime time = LocalDateTime.now();
|
String endTime = df.format(time);
|
// 当前时间 -5分钟
|
String startTime = df.format(time.minusMinutes(5));
|
|
try {
|
//从device_adjust_value表中查询时间段内需要变更的设备列表
|
int startTimeSeconds = LengthOfTimeUtils.Seconds(startTime);
|
int endTimeSeconds = LengthOfTimeUtils.Seconds(endTime);
|
//创建list,接收要变更校准值公式的设备列表
|
List<Map<String, Object>> deviceAdjusTimingList = new ArrayList();
|
//判断开始时间和结束时间是否处于同一天
|
if (startTimeSeconds>86100&&endTimeSeconds<300){
|
List<Map<String, Object>> dayBeforeList = deviceAdjustValueTimingService.selectDataBySecondSolt(startTimeSeconds,86400);
|
List<Map<String, Object>> dayNextList = deviceAdjustValueTimingService.selectDataBySecondSolt(0,endTimeSeconds);
|
deviceAdjusTimingList.addAll(dayBeforeList);
|
deviceAdjusTimingList.addAll(dayNextList);
|
}else {
|
List<Map<String, Object>> list = deviceAdjustValueTimingService.selectDataBySecondSolt(startTimeSeconds,endTimeSeconds);
|
deviceAdjusTimingList.addAll(list);
|
}
|
//判断deviceAdjustimingList集合是否为空
|
if (deviceAdjusTimingList.isEmpty()){
|
ReturnT returnT = new ReturnT(500, "没有需要更新的设备!");
|
return returnT;
|
}else {
|
//遍历deviceAdjustimingList集合,根据集合中的设备对device_adjust_value表中的数据进行替换
|
for (Map<String, Object> deviceAdjustimingMap:deviceAdjusTimingList) {
|
int device_id = Integer.parseInt(deviceAdjustimingMap.get("device_id").toString());
|
String value = deviceAdjustimingMap.get("value").toString();
|
//通过device_id查询device_adjust_value是否存在这台设备
|
List<Map<String, Object>> deviceAdjustValueList = deviceAdjustValueService.getDataByDevice_id(device_id);
|
//判断表里原来是否有这台设备的信息,没有的话需要插入
|
if (deviceAdjustValueList.isEmpty()){
|
deviceAdjustValueService.insertData(device_id,value,endTime);
|
}else {
|
deviceAdjustValueService.updateValueByDeviceID(device_id,value);
|
}
|
ReturnT returnT = new ReturnT(500, "校准值变更成功!");
|
return returnT;
|
}
|
}
|
}catch (Exception e){
|
XxlJobLogger.log("DeviceAdjustValueTimingException:" + e.getMessage());
|
logger.error(e.getMessage());
|
e.printStackTrace();
|
}
|
ReturnT returnT = new ReturnT(500, "校准值变更失败!");
|
return returnT;
|
}
|
|
}
|