NewEnvTimer.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package com.huimv.guowei.admin.timer;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import cn.hutool.http.Header;
  4. import cn.hutool.http.HttpRequest;
  5. import cn.hutool.http.HttpUtil;
  6. import com.alibaba.fastjson.JSON;
  7. import com.alibaba.fastjson.JSONArray;
  8. import com.alibaba.fastjson.JSONObject;
  9. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  10. import com.huimv.guowei.admin.entity.EnvData;
  11. import com.huimv.guowei.admin.entity.EnvDevice;
  12. import com.huimv.guowei.admin.entity.EnvWarningInfo;
  13. import com.huimv.guowei.admin.entity.EnvWarningThreshold;
  14. import com.huimv.guowei.admin.service.IEnvDataService;
  15. import com.huimv.guowei.admin.service.IEnvDeviceService;
  16. import com.huimv.guowei.admin.service.IEnvWarningInfoService;
  17. import com.huimv.guowei.admin.service.IEnvWarningThresholdService;
  18. import org.apache.commons.lang.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.context.annotation.Configuration;
  21. import org.springframework.http.HttpEntity;
  22. import org.springframework.http.HttpHeaders;
  23. import org.springframework.http.HttpMethod;
  24. import org.springframework.http.ResponseEntity;
  25. import org.springframework.scheduling.annotation.EnableScheduling;
  26. import org.springframework.scheduling.annotation.Scheduled;
  27. import org.springframework.util.LinkedMultiValueMap;
  28. import org.springframework.util.MultiValueMap;
  29. import org.springframework.web.client.RestTemplate;
  30. import java.math.BigDecimal;
  31. import java.text.ParseException;
  32. import java.util.*;
  33. @Configuration
  34. @EnableScheduling
  35. public class NewEnvTimer {
  36. @Autowired
  37. private IEnvDeviceService envDeviceService;
  38. @Autowired
  39. private IEnvDataService envDataService;
  40. @Autowired
  41. private IEnvWarningThresholdService envWarningThresholdService;
  42. @Autowired
  43. private IEnvWarningInfoService envWarningInfoService;
  44. @Scheduled(cron = "0 0/20 * * * ?") //每10分钟执行一次
  45. // @Scheduled(cron = "0 * * * * ?") //每10分钟执行一次
  46. // @Scheduled(cron = "*/5 * * * * ?") //每10秒钟执行一次
  47. public void getDeviceFlowData() throws ParseException {
  48. String userId = "-1618620464";
  49. String farmCode = "21";
  50. List<EnvDevice> farm_id = envDeviceService.list(new QueryWrapper<EnvDevice>().eq("farm_id", farmCode).eq("device_type",4));
  51. // EnvWarningThreshold envWarningThreshold = envWarningThresholdService.getOne(new QueryWrapper<EnvWarningThreshold>().eq("farm_id", farmCode));
  52. System.out.println("开始");
  53. Date date = new Date();
  54. for (EnvDevice envDevice : farm_id) {
  55. String deviceCode = envDevice.getDeviceCode();
  56. if (StringUtils.isNotBlank(deviceCode)) {
  57. JSONObject resultJo = JSONObject.parseObject(getDeviceFlowFromRemoteURL(userId, deviceCode));
  58. System.out.println("resultJo >>>>>>>>>>>> =" + resultJo);
  59. if (resultJo.getInteger("code") != 1000) {
  60. System.out.println("牧场[" + farmCode + "]设备组编号(" + deviceCode + ")调用远程接口返回结果出错.");
  61. } else {
  62. JSONArray dataJa = resultJo.getJSONArray("data");
  63. JSONObject dataJo = dataJa.getJSONObject(0);
  64. JSONArray realTimeDataJa = dataJo.getJSONArray("realTimeData");
  65. JSONObject tempJo = realTimeDataJa.getJSONObject(0);
  66. String temp = tempJo.getString("dataValue");
  67. JSONObject humiJo = realTimeDataJa.getJSONObject(1);
  68. String humi = humiJo.getString("dataValue");
  69. if (StringUtils.isBlank(humi)) {
  70. humi = "0";
  71. }
  72. if (StringUtils.isBlank(temp)) {
  73. temp = "0";
  74. }
  75. EnvData envData = new EnvData();
  76. envData.setUnitId(envDevice.getUnitId());
  77. envData.setEnvTemp(temp);
  78. envData.setEnvHum(humi);
  79. envData.setFarmId(envDevice.getFarmId());
  80. envData.setCreateTime(date);
  81. envData.setDeviceId(envDevice.getDeviceCode());
  82. // saveTemWarning(temp, envWarningThreshold, envDevice);
  83. // saveHumWarning(humi, envWarningThreshold, envDevice);
  84. envDataService.save(envData);
  85. }
  86. }
  87. }
  88. }
  89. //获取远程数据
  90. private String getDeviceFlowFromRemoteURL(String userId, String groupId) {
  91. String url= "http://www.0531yun.com/app/GetDeviceData";
  92. Map<String, Object> map = new HashMap<>();
  93. map.put("groupId", groupId);
  94. HashMap<String, String> headers = new HashMap<>();//存放请求头
  95. headers.put("userId", userId);
  96. //发送get请求并接收响应数据
  97. String body = HttpUtil.createGet(url).addHeaders(headers).form(map).execute().body();
  98. System.out.println(body);
  99. return body;
  100. }
  101. // private void saveTemWarning(String val, EnvWarningThreshold envWarningThreshold, EnvDevice envDevice) {
  102. // if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(val)) {
  103. // String maxTem;
  104. // String minTem;
  105. // if (ObjectUtil.isEmpty(envWarningThreshold) || com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(envWarningThreshold.getMaxTem())) {
  106. // maxTem = "40";
  107. // } else {
  108. // maxTem = envWarningThreshold.getMaxTem();
  109. // }
  110. // if (ObjectUtil.isEmpty(envWarningThreshold) || com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(envWarningThreshold.getMinTem())) {
  111. // minTem = "0";
  112. // } else {
  113. // minTem = envWarningThreshold.getMinTem();
  114. // }
  115. // System.out.println("maxTem:" + Double.parseDouble(maxTem) + " minTem:" + Double.parseDouble(minTem) + " val:" + Double.parseDouble(val));
  116. // if (Double.parseDouble(maxTem) < Double.parseDouble(val)) {
  117. // EnvWarningInfo envWarningInfo = new EnvWarningInfo();
  118. // envWarningInfo.setBuildLocation(envDevice.getUnitName());
  119. // envWarningInfo.setDate(new Date());
  120. // envWarningInfo.setDeviceId(envDevice.getDeviceCode());
  121. // envWarningInfo.setFarmId(envDevice.getFarmId());
  122. // envWarningInfo.setUnitId(envDevice.getUnitId());
  123. // envWarningInfo.setUnitName(envDevice.getUnitName());
  124. // envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
  125. // envWarningInfo.setWarningContent("当前温度为" + val + "°超过阈值,请及时检查");
  126. // envWarningInfo.setWarningType(1);
  127. // envWarningInfoService.save(envWarningInfo);
  128. // }
  129. // if (Double.parseDouble(minTem) > Double.parseDouble(val)) {
  130. // EnvWarningInfo envWarningInfo = new EnvWarningInfo();
  131. // envWarningInfo.setBuildLocation(envDevice.getUnitName());
  132. // envWarningInfo.setDate(new Date());
  133. // envWarningInfo.setDeviceId(envDevice.getDeviceCode());
  134. // envWarningInfo.setFarmId(envDevice.getFarmId());
  135. // envWarningInfo.setUnitId(envDevice.getUnitId());
  136. // envWarningInfo.setUnitName(envDevice.getUnitName());
  137. // envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
  138. // envWarningInfo.setWarningContent("当前温度为" + val + "°低于阈值,请及时检查");
  139. // envWarningInfo.setWarningType(1);
  140. // envWarningInfoService.save(envWarningInfo);
  141. // }
  142. // }
  143. // }
  144. //
  145. // public void saveHumWarning(String val, EnvWarningThreshold envWarningThreshold, EnvDevice envDevice) {
  146. // if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(val)) {
  147. // String maxHum;
  148. // String minHum;
  149. // if (ObjectUtil.isEmpty(envWarningThreshold) || com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(envWarningThreshold.getMaxHum())) {
  150. // maxHum = "90";
  151. // } else {
  152. // maxHum = envWarningThreshold.getMaxHum();
  153. // }
  154. // if (ObjectUtil.isEmpty(envWarningThreshold) || com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(envWarningThreshold.getMinHum())) {
  155. // minHum = "0";
  156. // } else {
  157. // minHum = envWarningThreshold.getMinHum();
  158. // }
  159. // if (Double.parseDouble(maxHum) < Double.parseDouble(val)) {
  160. // EnvWarningInfo envWarningInfo = new EnvWarningInfo();
  161. // envWarningInfo.setBuildLocation(envDevice.getUnitName());
  162. // envWarningInfo.setDate(new Date());
  163. // envWarningInfo.setDeviceId(envDevice.getDeviceCode());
  164. // envWarningInfo.setFarmId(envDevice.getFarmId());
  165. // envWarningInfo.setUnitId(envDevice.getUnitId());
  166. // envWarningInfo.setUnitName(envDevice.getUnitName());
  167. // envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
  168. // envWarningInfo.setWarningContent("当前湿度为" + val + "%超过阈值,请及时检查");
  169. // envWarningInfo.setWarningType(2);
  170. // envWarningInfoService.save(envWarningInfo);
  171. // }
  172. // if (Double.parseDouble(minHum) > Double.parseDouble(val)) {
  173. // EnvWarningInfo envWarningInfo = new EnvWarningInfo();
  174. // envWarningInfo.setBuildLocation(envDevice.getUnitName());
  175. // envWarningInfo.setDate(new Date());
  176. // envWarningInfo.setDeviceId(envDevice.getDeviceCode());
  177. // envWarningInfo.setFarmId(envDevice.getFarmId());
  178. // envWarningInfo.setUnitId(envDevice.getUnitId());
  179. // envWarningInfo.setUnitName(envDevice.getUnitName());
  180. // envWarningInfo.setUserIds(envWarningThreshold.getUserIds());
  181. // envWarningInfo.setWarningContent("当前湿度为" + val + "%低于阈值,请及时检查");
  182. // envWarningInfo.setWarningType(2);
  183. // envWarningInfoService.save(envWarningInfo);
  184. // }
  185. // }
  186. // }
  187. }