autosprout/AutoSprout-quartz/src/main/java/com/ruoyi/quartz/task/IotLogTask.java

73 lines
2.4 KiB
Java
Raw Normal View History

package com.ruoyi.quartz.task;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.constant.IotConstants;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.common.utils.onenet.Token;
import com.ruoyi.device.domain.AsWateringRecord;
import com.ruoyi.device.mapper.AsWateringRecordMapper;
import com.ruoyi.quartz.domain.Data;
import com.ruoyi.quartz.domain.DataPointRes;
import com.ruoyi.quartz.domain.Datastream;
import lombok.SneakyThrows;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
* 定时获取浇花器日志
*
* @author qiuzhenzhao
*/
@Component("logTask")
public class IotLogTask {
private static final Logger logger = LoggerFactory.getLogger(IotLogTask.class);
@Value(value = "${watering.iotUrl}")
private String iotUrl;
@Value(value = "${watering.productId}")
private String productId;
@Resource
private AsWateringRecordMapper asWateringRecordMapper;
@SneakyThrows
public void getDeviceLog() {
logger.info("定时任务--获取浇花器日志");
/**1.请求url获取到浇花器日志*/
// String deviceName = asDevice.getMac();//mac地址就是产品名称
String param = "device_name=" + "4827E2945C54" + "&product_id=" + productId;
String sendUrl = iotUrl+ IotConstants.ADDS_HISTORY_DATAPOINTS + "?"+param;
String token = Token.getToken();
logger.info("IOT获取到Authorization:【{}】",token);
String result = HttpUtils.sendPostWithToken(sendUrl, "command", token);
/**2.处理返回的参数*/
// JSONObject paramsObj = JSON.parseObject(result);
DataPointRes dataPointRes = JSONObject.parseObject(result, DataPointRes.class);
Data data = dataPointRes.getData();
List<Datastream> datastreams = data.getDatastreams();
// String code = paramsObj.getString("code");
// String msg = paramsObj.getString("msg");
/**3.将DatapointValue对象转成*/
asWateringRecordMapper.insertAsWateringRecord(AsWateringRecord.builder()
.userName("")
.deviceId(1L)
// .waterTime()
.build());
/**3.根据最新时间保存数据*/
}
}