|
@@ -0,0 +1,151 @@
|
|
|
+package com.huimv.eartag2.manage2.timer;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.huimv.eartag2.manage2.pojo.EartagData2;
|
|
|
+import com.huimv.eartag2.manage2.pojo.EartagEartagRegister2;
|
|
|
+import com.huimv.eartag2.manage2.service.IEartagData2Service;
|
|
|
+import com.huimv.eartag2.manage2.service.IEartagEartagRegister2Service;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.io.*;
|
|
|
+import java.net.HttpURLConnection;
|
|
|
+import java.net.URL;
|
|
|
+import java.net.URLEncoder;
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
+import java.util.*;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import net.sf.json.JSONObject;
|
|
|
+
|
|
|
+@Component
|
|
|
+public class EartagTimer {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IEartagEartagRegister2Service eartagEartagRegister2Service;
|
|
|
+ @Autowired
|
|
|
+ private IEartagData2Service eartagData2Service;
|
|
|
+
|
|
|
+ public static String API_URL = "http://apis.juhe.cn/simpleWeather/query";
|
|
|
+
|
|
|
+ @Scheduled(cron = "0 0/30 * * * ? ")
|
|
|
+ public void saveEartagData(){
|
|
|
+ List<EartagEartagRegister2> eartagEartagRegister2s = eartagEartagRegister2Service.list(new QueryWrapper<EartagEartagRegister2>().lambda().eq(EartagEartagRegister2::getFarmId, "9000"));
|
|
|
+ List<String> earmarks = eartagEartagRegister2s.stream().map(EartagEartagRegister2::getEarmark).collect(Collectors.toList());
|
|
|
+ Random random = new Random();
|
|
|
+ String envTemp = null;
|
|
|
+ Map<String, Object> params = new HashMap<>();//组合参数
|
|
|
+ params.put("city", "永康");
|
|
|
+ params.put("key", "62d0905e305e75ae8c13c9f2e94516ab");
|
|
|
+ String queryParams = urlencode(params);
|
|
|
+
|
|
|
+ String response = doGet(API_URL, queryParams);
|
|
|
+
|
|
|
+ JSONObject jsonObject = JSONObject.fromObject(response);
|
|
|
+ int error_code = jsonObject.getInt("error_code");
|
|
|
+ if (error_code == 0) {
|
|
|
+ System.out.println("调用接口成功");
|
|
|
+
|
|
|
+ JSONObject result = jsonObject.getJSONObject("result");
|
|
|
+ JSONObject realtime = result.getJSONObject("realtime");
|
|
|
+ envTemp = realtime.getString("temperature");
|
|
|
+ } else {
|
|
|
+ System.out.println("调用接口失败:" + jsonObject.getString("reason"));
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(envTemp)){
|
|
|
+ for (String earmark : earmarks) {
|
|
|
+ float earTamp = 38.0f + random.nextFloat() * (1.5f);
|
|
|
+ String formattedNum = String.format("%.1f", earTamp);
|
|
|
+ long act = random.nextInt(11);
|
|
|
+ EartagData2 eartagData2 = new EartagData2();
|
|
|
+ eartagData2.setEarmark(earmark);
|
|
|
+ eartagData2.setEarTemp1(Float.valueOf(formattedNum));
|
|
|
+ eartagData2.setEnvTemp1(Float.valueOf(envTemp));
|
|
|
+ eartagData2.setAct1(act);
|
|
|
+
|
|
|
+ eartagData2.setAddTime(new Date());
|
|
|
+ eartagData2.setFarmId("9000");
|
|
|
+ eartagData2Service.save(eartagData2);
|
|
|
+ EartagEartagRegister2 eartagRegister2 = eartagEartagRegister2Service.getOne(new QueryWrapper<EartagEartagRegister2>().lambda().eq(EartagEartagRegister2::getEarmark, earmark));
|
|
|
+ eartagRegister2.setEarTemp1(earTamp);
|
|
|
+ eartagRegister2.setAct(act);
|
|
|
+ eartagEartagRegister2Service.updateById(eartagRegister2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static String doGet(String httpUrl, String queryParams) {
|
|
|
+ HttpURLConnection connection = null;
|
|
|
+ InputStream inputStream = null;
|
|
|
+ BufferedReader bufferedReader = null;
|
|
|
+ String result = null;// 返回结果字符串
|
|
|
+ try {
|
|
|
+ // 创建远程url连接对象
|
|
|
+ URL url = new URL(new StringBuffer(httpUrl).append("?").append(queryParams).toString());
|
|
|
+ // 通过远程url连接对象打开一个连接,强转成httpURLConnection类
|
|
|
+ connection = (HttpURLConnection) url.openConnection();
|
|
|
+ // 设置连接方式:get
|
|
|
+ connection.setRequestMethod("GET");
|
|
|
+ // 设置连接主机服务器的超时时间:15000毫秒
|
|
|
+ connection.setConnectTimeout(5000);
|
|
|
+ // 设置读取远程返回的数据时间:60000毫秒
|
|
|
+ connection.setReadTimeout(6000);
|
|
|
+ // 发送请求
|
|
|
+ connection.connect();
|
|
|
+ // 通过connection连接,获取输入流
|
|
|
+ if (connection.getResponseCode() == 200) {
|
|
|
+ inputStream = connection.getInputStream();
|
|
|
+ // 封装输入流,并指定字符集
|
|
|
+ bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
|
|
|
+ // 存放数据
|
|
|
+ StringBuilder sbf = new StringBuilder();
|
|
|
+ String temp;
|
|
|
+ while ((temp = bufferedReader.readLine()) != null) {
|
|
|
+ sbf.append(temp);
|
|
|
+ sbf.append(System.getProperty("line.separator"));
|
|
|
+ }
|
|
|
+ result = sbf.toString();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ // 关闭资源
|
|
|
+ if (null != bufferedReader) {
|
|
|
+ try {
|
|
|
+ bufferedReader.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (null != inputStream) {
|
|
|
+ try {
|
|
|
+ inputStream.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (connection != null) {
|
|
|
+ connection.disconnect();// 关闭远程连接
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static String urlencode(Map<String, ?> data) {
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ for (Map.Entry<String, ?> i : data.entrySet()) {
|
|
|
+ try {
|
|
|
+ sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&");
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String result = sb.toString();
|
|
|
+ result = result.substring(0, result.lastIndexOf("&"));
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+}
|