package com.huimv.guowei.admin.timer; import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.Header; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.huimv.guowei.admin.entity.EnvData; import com.huimv.guowei.admin.entity.EnvDevice; import com.huimv.guowei.admin.entity.EnvWarningInfo; import com.huimv.guowei.admin.entity.EnvWarningThreshold; import com.huimv.guowei.admin.service.IEnvDataService; import com.huimv.guowei.admin.service.IEnvDeviceService; import com.huimv.guowei.admin.service.IEnvWarningInfoService; import com.huimv.guowei.admin.service.IEnvWarningThresholdService; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.math.BigDecimal; import java.text.ParseException; import java.util.*; @Configuration @EnableScheduling public class NewEnvTimer { @Autowired private IEnvDeviceService envDeviceService; @Autowired private IEnvDataService envDataService; @Autowired private IEnvWarningThresholdService envWarningThresholdService; @Autowired private IEnvWarningInfoService envWarningInfoService; @Scheduled(cron = "0 0/20 * * * ?") //每10分钟执行一次 // @Scheduled(cron = "0 * * * * ?") //每10分钟执行一次 // @Scheduled(cron = "*/5 * * * * ?") //每10秒钟执行一次 public void getDeviceFlowData() throws ParseException { String userId = "-1618620464"; String farmCode = "21"; List farm_id = envDeviceService.list(new QueryWrapper().eq("farm_id", farmCode).eq("device_type",4)); // EnvWarningThreshold envWarningThreshold = envWarningThresholdService.getOne(new QueryWrapper().eq("farm_id", farmCode)); System.out.println("开始"); Date date = new Date(); for (EnvDevice envDevice : farm_id) { String deviceCode = envDevice.getDeviceCode(); if (StringUtils.isNotBlank(deviceCode)) { JSONObject resultJo = JSONObject.parseObject(getDeviceFlowFromRemoteURL(userId, deviceCode)); System.out.println("resultJo >>>>>>>>>>>> =" + resultJo); if (resultJo.getInteger("code") != 1000) { System.out.println("牧场[" + farmCode + "]设备组编号(" + deviceCode + ")调用远程接口返回结果出错."); } else { JSONArray dataJa = resultJo.getJSONArray("data"); JSONObject dataJo = dataJa.getJSONObject(0); JSONArray realTimeDataJa = dataJo.getJSONArray("realTimeData"); JSONObject tempJo = realTimeDataJa.getJSONObject(0); String temp = tempJo.getString("dataValue"); JSONObject humiJo = realTimeDataJa.getJSONObject(1); String humi = humiJo.getString("dataValue"); if (StringUtils.isBlank(humi)) { humi = "0"; } if (StringUtils.isBlank(temp)) { temp = "0"; } EnvData envData = new EnvData(); envData.setUnitId(envDevice.getUnitId()); envData.setEnvTemp(temp); envData.setEnvHum(humi); envData.setFarmId(envDevice.getFarmId()); envData.setCreateTime(date); envData.setDeviceId(envDevice.getDeviceCode()); // saveTemWarning(temp, envWarningThreshold, envDevice); // saveHumWarning(humi, envWarningThreshold, envDevice); envDataService.save(envData); } } } } //获取远程数据 private String getDeviceFlowFromRemoteURL(String userId, String groupId) { String url= "http://www.0531yun.com/app/GetDeviceData"; Map map = new HashMap<>(); map.put("groupId", groupId); HashMap headers = new HashMap<>();//存放请求头 headers.put("userId", userId); //发送get请求并接收响应数据 String body = HttpUtil.createGet(url).addHeaders(headers).form(map).execute().body(); System.out.println(body); return body; } // private void saveTemWarning(String val, EnvWarningThreshold envWarningThreshold, EnvDevice envDevice) { // if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(val)) { // String maxTem; // String minTem; // if (ObjectUtil.isEmpty(envWarningThreshold) || com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(envWarningThreshold.getMaxTem())) { // maxTem = "40"; // } else { // maxTem = envWarningThreshold.getMaxTem(); // } // if (ObjectUtil.isEmpty(envWarningThreshold) || com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(envWarningThreshold.getMinTem())) { // minTem = "0"; // } else { // minTem = envWarningThreshold.getMinTem(); // } // System.out.println("maxTem:" + Double.parseDouble(maxTem) + " minTem:" + Double.parseDouble(minTem) + " val:" + Double.parseDouble(val)); // if (Double.parseDouble(maxTem) < Double.parseDouble(val)) { // EnvWarningInfo envWarningInfo = new EnvWarningInfo(); // envWarningInfo.setBuildLocation(envDevice.getUnitName()); // envWarningInfo.setDate(new Date()); // envWarningInfo.setDeviceId(envDevice.getDeviceCode()); // envWarningInfo.setFarmId(envDevice.getFarmId()); // envWarningInfo.setUnitId(envDevice.getUnitId()); // envWarningInfo.setUnitName(envDevice.getUnitName()); // envWarningInfo.setUserIds(envWarningThreshold.getUserIds()); // envWarningInfo.setWarningContent("当前温度为" + val + "°超过阈值,请及时检查"); // envWarningInfo.setWarningType(1); // envWarningInfoService.save(envWarningInfo); // } // if (Double.parseDouble(minTem) > Double.parseDouble(val)) { // EnvWarningInfo envWarningInfo = new EnvWarningInfo(); // envWarningInfo.setBuildLocation(envDevice.getUnitName()); // envWarningInfo.setDate(new Date()); // envWarningInfo.setDeviceId(envDevice.getDeviceCode()); // envWarningInfo.setFarmId(envDevice.getFarmId()); // envWarningInfo.setUnitId(envDevice.getUnitId()); // envWarningInfo.setUnitName(envDevice.getUnitName()); // envWarningInfo.setUserIds(envWarningThreshold.getUserIds()); // envWarningInfo.setWarningContent("当前温度为" + val + "°低于阈值,请及时检查"); // envWarningInfo.setWarningType(1); // envWarningInfoService.save(envWarningInfo); // } // } // } // // public void saveHumWarning(String val, EnvWarningThreshold envWarningThreshold, EnvDevice envDevice) { // if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(val)) { // String maxHum; // String minHum; // if (ObjectUtil.isEmpty(envWarningThreshold) || com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(envWarningThreshold.getMaxHum())) { // maxHum = "90"; // } else { // maxHum = envWarningThreshold.getMaxHum(); // } // if (ObjectUtil.isEmpty(envWarningThreshold) || com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(envWarningThreshold.getMinHum())) { // minHum = "0"; // } else { // minHum = envWarningThreshold.getMinHum(); // } // if (Double.parseDouble(maxHum) < Double.parseDouble(val)) { // EnvWarningInfo envWarningInfo = new EnvWarningInfo(); // envWarningInfo.setBuildLocation(envDevice.getUnitName()); // envWarningInfo.setDate(new Date()); // envWarningInfo.setDeviceId(envDevice.getDeviceCode()); // envWarningInfo.setFarmId(envDevice.getFarmId()); // envWarningInfo.setUnitId(envDevice.getUnitId()); // envWarningInfo.setUnitName(envDevice.getUnitName()); // envWarningInfo.setUserIds(envWarningThreshold.getUserIds()); // envWarningInfo.setWarningContent("当前湿度为" + val + "%超过阈值,请及时检查"); // envWarningInfo.setWarningType(2); // envWarningInfoService.save(envWarningInfo); // } // if (Double.parseDouble(minHum) > Double.parseDouble(val)) { // EnvWarningInfo envWarningInfo = new EnvWarningInfo(); // envWarningInfo.setBuildLocation(envDevice.getUnitName()); // envWarningInfo.setDate(new Date()); // envWarningInfo.setDeviceId(envDevice.getDeviceCode()); // envWarningInfo.setFarmId(envDevice.getFarmId()); // envWarningInfo.setUnitId(envDevice.getUnitId()); // envWarningInfo.setUnitName(envDevice.getUnitName()); // envWarningInfo.setUserIds(envWarningThreshold.getUserIds()); // envWarningInfo.setWarningContent("当前湿度为" + val + "%低于阈值,请及时检查"); // envWarningInfo.setWarningType(2); // envWarningInfoService.save(envWarningInfo); // } // } // } }