SgdTimer.java 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777
  1. /*
  2. package com.huimv.eco.timer;
  3. import cn.hutool.core.date.DateTime;
  4. import cn.hutool.core.date.DateUtil;
  5. import cn.hutool.core.util.ObjectUtil;
  6. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  7. import com.huimv.eco.entity.*;
  8. import com.huimv.eco.service.*;
  9. import com.huimv.eco.sgd.Global;
  10. import com.huimv.eco.sgd.entity.Item;
  11. import com.huimv.eco.sgd.entity.Monitory;
  12. import com.huimv.eco.sgd.entity.MonitoryGetArgs;
  13. import com.huimv.eco.sgd.entity.MonitoryValue;
  14. import com.huimv.eco.sgd.fbox.ConsoleLoggerFactory;
  15. import com.huimv.eco.sgd.fbox.ServerCaller;
  16. import com.huimv.eco.sgd.fbox.StaticCredentialProvider;
  17. import com.huimv.eco.sgd.fbox.TokenManager;
  18. import com.zhenzi.sms.ZhenziSmsClient;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.scheduling.annotation.Scheduled;
  21. import org.springframework.stereotype.Component;
  22. import org.springframework.web.client.RestTemplate;
  23. import java.io.IOException;
  24. import java.text.DecimalFormat;
  25. import java.util.*;
  26. @Component
  27. public class SgdTimer {
  28. private static final long SLEEP_TIME = 1000;
  29. @Autowired
  30. private IBaseBoxService baseBoxService;
  31. @Autowired
  32. private IBaseRoomService baseRoomService;
  33. @Autowired
  34. private ISysHumidityService humidityService;
  35. @Autowired
  36. private ISysTemperatureService temperatureService;
  37. @Autowired
  38. private ISysDayWaterService dayWaterService;
  39. @Autowired
  40. private ISysMonthWaterService monthWaterService;
  41. @Autowired
  42. private ISysFodderService fodderService;
  43. @Autowired
  44. private ISysWarningSetService warningSetService;
  45. @Autowired
  46. private IBaseWarningInfoService warningInfoService;
  47. @Autowired
  48. private ISysWarningPhoneService warningPhoneService;
  49. //阈值
  50. @Autowired
  51. private ISysThresholdService thresholdService;
  52. @Autowired
  53. private RestTemplate restTemplate;
  54. private Integer hyFarmId = 1;
  55. String url = "http://120.27.234.126:8010/receiver/receiver/eco/save";
  56. //更新环境数据
  57. // @Scheduled(cron = "0 0/3 * * * ?")
  58. //// @Scheduled(cron = "0 * * * * ?")
  59. // private void updateEnv(){
  60. //
  61. // ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
  62. // // 指定连接服务器的凭据参数
  63. // TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
  64. // ServerCaller apiBaseServer = new ServerCaller(tokenManager, Global.apiBaserUrl, Global.signalrClientId, loggerFactory);
  65. // Global.apiBaseServer = apiBaseServer;
  66. // DecimalFormat df = new DecimalFormat("#.00");
  67. //
  68. // SysThreshold byId = thresholdService.getById(hyFarmId);
  69. // String maxHum = byId.getMaxHum();
  70. // String minHum = byId.getMinHum();
  71. // String maxTem = byId.getMaxTem();
  72. // String minTem = byId.getMinTem();
  73. // try {
  74. // List<BaseBox> boxes = baseBoxService.list();
  75. // for (BaseBox box : boxes) {
  76. // String uid = box.getUid();
  77. // Monitory[] monitories = apiBaseServer.executeGet("/v2/box/" + uid + "/dmon/grouped", Monitory[].class);
  78. // List names = new ArrayList();
  79. // for (Monitory monitory : monitories) {
  80. // for (Item item : monitory.items) {
  81. // String name = item.name;
  82. // if (monitory.name.contains("房间状态") && name != null&& name.startsWith("房舍")) {
  83. // if (name.contains("平均温度") || name.contains("湿度")) {
  84. // names.add(name);
  85. // }
  86. // }
  87. // }
  88. // }
  89. //
  90. //
  91. // if (ObjectUtil.isNotEmpty(names)) {
  92. // String str = apiBaseServer.executePost("/v2/box/" +uid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), String.class);
  93. // System.out.println(str);
  94. // MonitoryValue[] monitoryValues = apiBaseServer.executePost("/v2/box/" +uid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
  95. // List<SysTemperature> temList = new ArrayList();
  96. // List<SysHumidity> humList = new ArrayList<>();
  97. // for (MonitoryValue monitoryValue : monitoryValues) {
  98. // if (ObjectUtil.isEmpty(monitoryValue)){
  99. // continue;
  100. // }
  101. // String name = monitoryValue.getName();
  102. // String[] split = name.split("-");
  103. // BaseRoom room = baseRoomService.getOne(new QueryWrapper<BaseRoom>().eq("room_name", split[0]).eq("box_id", uid));
  104. // Integer roomId = room.getId();
  105. // if (split[1].contains("温度")){
  106. // SysTemperature sysTemperature = new SysTemperature();
  107. // if (ObjectUtil.isNotEmpty(monitoryValue.getValue())){
  108. // Double value1 = (Double)monitoryValue.getValue();
  109. // Double value = value1* 0.1;
  110. // sysTemperature.setId(monitoryValue.getId());
  111. // sysTemperature.setFarmId(hyFarmId);
  112. // sysTemperature.setOriginal(value1);
  113. // sysTemperature.setRoomId(roomId);
  114. // if (value != 0.0){
  115. // sysTemperature.setValue(Double.parseDouble(df.format(value)));
  116. // }else {
  117. // sysTemperature.setValue(value);
  118. // }
  119. // sysTemperature.setCreateTime(monitoryValue.getTimestamp());
  120. // temList.add(sysTemperature);
  121. // }
  122. //
  123. // }
  124. // if (split[1].contains("湿度")){
  125. // SysHumidity humidity = new SysHumidity();
  126. // Double value = (Double)monitoryValue.getValue() ;
  127. // humidity.setId(monitoryValue.getId());
  128. // humidity.setRoomId(roomId);
  129. // humidity.setFarmId(hyFarmId);
  130. // if (ObjectUtil.isNotEmpty(value)){
  131. // if (value != 0.0){
  132. // humidity.setValue(Double.parseDouble(df.format(value)));
  133. // }else{
  134. // humidity.setValue(value);
  135. // }
  136. //
  137. // humidity.setCreateTime(monitoryValue.getTimestamp());
  138. // humList.add(humidity);
  139. // }
  140. //
  141. // }
  142. //
  143. // }
  144. // humidityService.saveBatch(humList);
  145. // temperatureService.saveBatch(temList);
  146. //
  147. // humWarning(humList,minHum,maxHum);
  148. // temWarning(temList,minTem,maxTem);
  149. //
  150. // }
  151. // }
  152. //
  153. // } catch (IOException e) {
  154. // e.printStackTrace();
  155. // }
  156. // System.out.println("更新温湿度信息,更新时间------------->"+ new Date());
  157. // }
  158. //温度报警
  159. private void temWarning(List<SysTemperature> temList, String minTem, String maxTem) {
  160. QueryWrapper<SysWarningSet> wrapper = new QueryWrapper<>();
  161. wrapper.eq("content","高温报警");
  162. SysWarningSet maxWarning = warningSetService.getOne(wrapper);
  163. wrapper.clear();
  164. wrapper.eq("content","低温报警");
  165. SysWarningSet minWarning = warningSetService.getOne(wrapper);
  166. Double min = null;
  167. Double max = null;
  168. try {
  169. min = Double.valueOf(minTem);
  170. }catch (NumberFormatException e) {
  171. e.printStackTrace();
  172. }
  173. try {
  174. max = Double.valueOf(maxTem);
  175. }catch (NumberFormatException e) {
  176. e.printStackTrace();
  177. }
  178. for ( SysTemperature temperature : temList) {
  179. BaseRoom baseRoom = baseRoomService.getById(temperature.getRoomId());
  180. Double value = temperature.getValue();
  181. Date now = new Date();
  182. if (min != null && value <min) {
  183. if (minWarning.getFirstLevel() || minWarning.getSecondLevel() || minWarning.getThirdlyLevel()) {
  184. BaseWarningInfo baseWarningInfo = new BaseWarningInfo();
  185. baseWarningInfo.setFarmId(hyFarmId);
  186. baseWarningInfo.setWarningName("低温报警");
  187. baseWarningInfo.setMsg(baseRoom.getAlias() + baseRoom.getRoomName() + "出现低温报警,温度为:" + value);
  188. baseWarningInfo.setWarningTime(now);
  189. baseWarningInfo.setUploadTime(temperature.getCreateTime());
  190. baseWarningInfo.setAlarmType(8);
  191. if (minWarning.getFirstLevel()) {
  192. baseWarningInfo.setLevel(1);
  193. baseWarningInfo.setLevelName("一级报警");
  194. }
  195. if (minWarning.getSecondLevel()) {
  196. baseWarningInfo.setLevel(2);
  197. baseWarningInfo.setLevelName("二级报警");
  198. //这个写短信内容
  199. send(baseRoom.getAlias(), baseRoom.getRoomName(), value + "℃");
  200. }
  201. if (minWarning.getThirdlyLevel()) {
  202. baseWarningInfo.setLevel(3);
  203. baseWarningInfo.setLevelName("三级报警");
  204. //这个写短信内容
  205. }
  206. warningInfoService.save(baseWarningInfo);
  207. }
  208. }
  209. if (max != null && value >max){
  210. if (maxWarning.getFirstLevel() || maxWarning.getSecondLevel() || maxWarning.getThirdlyLevel()) {
  211. BaseWarningInfo baseWarningInfo = new BaseWarningInfo();
  212. baseWarningInfo.setFarmId(hyFarmId);
  213. baseWarningInfo.setWarningName("高温报警");
  214. baseWarningInfo.setMsg(baseRoom.getAlias() + baseRoom.getRoomName() + "出现高温报警,温度为:" + value);
  215. baseWarningInfo.setWarningTime(now);
  216. baseWarningInfo.setUploadTime(temperature.getCreateTime());
  217. baseWarningInfo.setAlarmType(7);
  218. if (maxWarning.getFirstLevel()) {
  219. baseWarningInfo.setLevel(1);
  220. baseWarningInfo.setLevelName("一级报警");
  221. }
  222. if (maxWarning.getSecondLevel()) {
  223. baseWarningInfo.setLevel(2);
  224. baseWarningInfo.setLevelName("二级报警");
  225. //这个写短信内容
  226. send(baseRoom.getAlias(), baseRoom.getRoomName(), value + "℃");
  227. }
  228. if (maxWarning.getThirdlyLevel()) {
  229. baseWarningInfo.setLevel(3);
  230. baseWarningInfo.setLevelName("三级报警");
  231. //这个写短信内容
  232. }
  233. warningInfoService.save(baseWarningInfo);
  234. }
  235. }
  236. }
  237. }
  238. //湿度报警
  239. private void humWarning(List<SysHumidity> humList, String minHum, String maxHum) {
  240. QueryWrapper<SysWarningSet> wrapper = new QueryWrapper<>();
  241. wrapper.eq("content","高湿度报警");
  242. SysWarningSet maxWarning = warningSetService.getOne(wrapper);
  243. wrapper.clear();
  244. wrapper.eq("content","低湿度报警");
  245. SysWarningSet minWarning = warningSetService.getOne(wrapper);
  246. Double min = null;
  247. Double max = null;
  248. try {
  249. min = Double.valueOf(minHum);
  250. }catch (NumberFormatException e) {
  251. e.printStackTrace();
  252. }
  253. try {
  254. max = Double.valueOf(maxHum);
  255. }catch (NumberFormatException e) {
  256. e.printStackTrace();
  257. }
  258. for (SysHumidity humidity : humList) {
  259. BaseRoom baseRoom = baseRoomService.getById(humidity.getRoomId());
  260. Double value = humidity.getValue();
  261. Date now = new Date();
  262. if (min != null && value <min){
  263. if (minWarning.getFirstLevel() || minWarning.getSecondLevel()|| minWarning.getThirdlyLevel()){
  264. BaseWarningInfo baseWarningInfo = new BaseWarningInfo();
  265. baseWarningInfo.setFarmId(hyFarmId);
  266. baseWarningInfo.setWarningName("低湿度报警");
  267. baseWarningInfo.setMsg(baseRoom.getAlias()+baseRoom.getRoomName()+"出现低湿度报警,湿度为:"+value);
  268. baseWarningInfo.setWarningTime(now);
  269. baseWarningInfo.setUploadTime(humidity.getCreateTime());
  270. baseWarningInfo.setAlarmType(10);
  271. if (minWarning.getFirstLevel()){
  272. baseWarningInfo.setLevel(1);
  273. baseWarningInfo.setLevelName("一级报警");
  274. }
  275. if (minWarning.getSecondLevel()){
  276. baseWarningInfo.setLevel(2);
  277. baseWarningInfo.setLevelName("二级报警");
  278. //这个写短信内容
  279. send( baseRoom.getAlias(),baseRoom.getRoomName(),value+"%");
  280. }
  281. if (minWarning.getThirdlyLevel()){
  282. baseWarningInfo.setLevel(3);
  283. baseWarningInfo.setLevelName("三级报警");
  284. //这个写短信内容
  285. }
  286. warningInfoService.save(baseWarningInfo);
  287. }
  288. }
  289. if (max != null && value >max) {
  290. if (maxWarning.getFirstLevel() || maxWarning.getSecondLevel() || maxWarning.getThirdlyLevel()) {
  291. BaseWarningInfo baseWarningInfo = new BaseWarningInfo();
  292. baseWarningInfo.setFarmId(hyFarmId);
  293. baseWarningInfo.setWarningName("高湿度报警");
  294. baseWarningInfo.setMsg(baseRoom.getAlias() + baseRoom.getRoomName() + "出现高湿度报警,湿度为:" + value);
  295. baseWarningInfo.setWarningTime(now);
  296. baseWarningInfo.setUploadTime(humidity.getCreateTime());
  297. baseWarningInfo.setAlarmType(9);
  298. if (maxWarning.getFirstLevel()) {
  299. baseWarningInfo.setLevel(1);
  300. baseWarningInfo.setLevelName("一级报警");
  301. }
  302. if (maxWarning.getSecondLevel()) {
  303. baseWarningInfo.setLevel(2);
  304. baseWarningInfo.setLevelName("二级报警");
  305. //这个写短信内容
  306. send(baseRoom.getAlias(), baseRoom.getRoomName(), value + "%");
  307. }
  308. if (maxWarning.getThirdlyLevel()) {
  309. baseWarningInfo.setLevelName("三级报警");
  310. baseWarningInfo.setAlarmType(9);
  311. //这个写短信内容
  312. }
  313. warningInfoService.save(baseWarningInfo);
  314. }
  315. }
  316. }
  317. }
  318. //更新日用水 9
  319. @Scheduled(cron = "0 55 8 * * ? ")
  320. // @Scheduled(cron = "0 * * * * ?")
  321. private void updateDayWater(){
  322. ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
  323. // 指定连接服务器的凭据参数
  324. TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
  325. ServerCaller apiBaseServer = new ServerCaller(tokenManager, Global.apiBaserUrl, Global.signalrClientId, loggerFactory);
  326. Global.apiBaseServer = apiBaseServer;
  327. DecimalFormat df = new DecimalFormat("#.00");
  328. try {
  329. List<BaseBox> boxes = baseBoxService.list();
  330. for (BaseBox box : boxes) {
  331. String uid = box.getUid();
  332. Monitory[] monitories = apiBaseServer.executeGet("/v2/box/" + uid + "/dmon/grouped", Monitory[].class);
  333. List names = new ArrayList();
  334. if (ObjectUtil.isEmpty(monitories)){
  335. continue;
  336. }
  337. for (Monitory monitory : monitories) {
  338. for (Item item : monitory.items) {
  339. String name = item.name;
  340. if (monitory.name.contains("房间状态") && name != null&& name.startsWith("房舍")) {
  341. if (name.contains("日用水量") ) {
  342. names.add(name);
  343. }
  344. }
  345. }
  346. }
  347. if (ObjectUtil.isNotEmpty(names)) {
  348. MonitoryValue[] monitoryValues = apiBaseServer.executePost("/v2/box/" +uid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
  349. List<SysDayWater> dayWatersList = new ArrayList();
  350. for (MonitoryValue monitoryValue : monitoryValues) {
  351. if (ObjectUtil.isEmpty(monitoryValue)){
  352. continue;
  353. }
  354. String name = monitoryValue.getName();
  355. String[] split = name.split("-");
  356. BaseRoom room = baseRoomService.getOne(new QueryWrapper<BaseRoom>().eq("room_name", split[0]).eq("box_id", uid));
  357. Integer roomId = room.getId();
  358. SysDayWater dayWater = new SysDayWater();
  359. Double value = (Double)monitoryValue.getValue();
  360. dayWater.setId(monitoryValue.getId());
  361. dayWater.setRoomId(roomId);
  362. dayWater.setFarmId(hyFarmId);
  363. if (value == null){
  364. continue;
  365. }
  366. if (0.0 != value){
  367. String format = df.format(value);
  368. if (format.length()==3){
  369. dayWater.setValue(0+format);
  370. }else {
  371. dayWater.setValue(format);
  372. }
  373. }else {
  374. dayWater.setValue(value+"");
  375. }
  376. dayWater.setCreateTime(monitoryValue.getTimestamp());
  377. dayWatersList.add(dayWater);
  378. }
  379. dayWaterService.saveBatch(dayWatersList);
  380. HumAndTemDto humAndTemDto = new HumAndTemDto();
  381. humAndTemDto.setDayWaters(dayWatersList);
  382. humAndTemDto.setType(0);
  383. String s = restTemplate.postForObject(url, humAndTemDto, String.class);
  384. System.out.println(s);
  385. }
  386. }
  387. } catch (IOException e) {
  388. e.printStackTrace();
  389. }
  390. System.out.println("更新日用水信息,更新时间------------->"+ new Date());
  391. }
  392. //更新两个小时用水数据
  393. @Scheduled(cron = "0 59 0,2,4,6,8,10,12,14,16,18,20,22 * * ? ")
  394. // @Scheduled(cron = "0 0/2 * * * ?")
  395. private void updateMonthWater(){
  396. ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
  397. // 指定连接服务器的凭据参数
  398. TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
  399. ServerCaller apiBaseServer = new ServerCaller(tokenManager, Global.apiBaserUrl, Global.signalrClientId, loggerFactory);
  400. Global.apiBaseServer = apiBaseServer;
  401. DecimalFormat df = new DecimalFormat("#.00");
  402. try {
  403. List<BaseBox> boxes = baseBoxService.list();
  404. for (BaseBox box : boxes) {
  405. String uid = box.getUid();
  406. Monitory[] monitories = apiBaseServer.executeGet("/v2/box/" + uid + "/dmon/grouped", Monitory[].class);
  407. List names = new ArrayList();
  408. for (Monitory monitory : monitories) {
  409. for (Item item : monitory.items) {
  410. String name = item.name;
  411. if (monitory.name.contains("房间状态") && name != null&& name.startsWith("房舍")) {
  412. if (name.contains("日用水量") ) {
  413. names.add(name);
  414. }
  415. }
  416. }
  417. }
  418. if (ObjectUtil.isNotEmpty(names)) {
  419. MonitoryValue[] monitoryValues = apiBaseServer.executePost("/v2/box/" +uid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
  420. List<SysMonthWater> dayWatersList = new ArrayList();
  421. for (MonitoryValue monitoryValue : monitoryValues) {
  422. if (ObjectUtil.isEmpty(monitoryValue)){
  423. continue;
  424. }
  425. String name = monitoryValue.getName();
  426. String[] split = name.split("-");
  427. BaseRoom room = baseRoomService.getOne(new QueryWrapper<BaseRoom>().eq("room_name", split[0]).eq("box_id", uid));
  428. Integer roomId = room.getId();
  429. SysMonthWater oldWater = monthWaterService.getOne(
  430. new QueryWrapper<SysMonthWater>()
  431. .eq("room_id", roomId)
  432. .eq("farm_id",hyFarmId)
  433. .orderByDesc("month_water_id")
  434. .last("LIMIT 1"));
  435. SysMonthWater monthWater = new SysMonthWater();
  436. monthWater.setFarmId(hyFarmId);
  437. Double newValue = (Double)monitoryValue.getValue();
  438. Double add ;
  439. if (newValue == null){
  440. newValue=0.0;
  441. }
  442. if (ObjectUtil.isEmpty(oldWater)){
  443. if (newValue == null){
  444. add = 0.0;
  445. }else {
  446. add = newValue;
  447. }
  448. }else {
  449. Double oldValue = Double.parseDouble(oldWater.getValue());
  450. if (newValue >= oldValue){
  451. add = newValue -oldValue;
  452. }else {
  453. add = newValue;
  454. }
  455. }
  456. if (add != 0.0){
  457. String format = df.format(add);
  458. if (format.length()==3){
  459. monthWater.setIncreaseValue(0+format);
  460. }else {
  461. monthWater.setIncreaseValue(format);
  462. }
  463. }else {
  464. monthWater.setIncreaseValue(add+"");
  465. }
  466. monthWater.setId(monitoryValue.getId());
  467. monthWater.setRoomId(roomId);
  468. if (newValue ==null){
  469. newValue = 0.0;
  470. }
  471. if (newValue != 0.0){
  472. String format = df.format(newValue);
  473. if (format.length()==3){
  474. monthWater.setValue(0+format);
  475. }else {
  476. monthWater.setValue(format);
  477. }
  478. }else {
  479. monthWater.setValue(newValue+"");
  480. }
  481. monthWater.setCreateTime(monitoryValue.getTimestamp());
  482. dayWatersList.add(monthWater);
  483. }
  484. monthWaterService.saveBatch(dayWatersList);
  485. HumAndTemDto humAndTemDto = new HumAndTemDto();
  486. humAndTemDto.setMonthWaters(dayWatersList);
  487. humAndTemDto.setType(0);
  488. String s = restTemplate.postForObject(url, humAndTemDto, String.class);
  489. System.out.println(s);
  490. }
  491. }
  492. } catch (IOException e) {
  493. e.printStackTrace();
  494. }
  495. System.out.println("更新月用水信息,更新时间------------->"+ new Date());
  496. }
  497. //更新料控
  498. // @Scheduled(cron = "0 0/6 * * * ? ")
  499. // @Scheduled(cron = "0 * * * * ?")
  500. // private void updateFodder() throws IOException {
  501. // ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
  502. // // 指定连接服务器的凭据参数
  503. // TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
  504. // ServerCaller apiBaseServer = new ServerCaller(tokenManager, Global.apiBaserUrl, Global.signalrClientId, loggerFactory);
  505. // Global.apiBaseServer = apiBaseServer;
  506. //
  507. // List names = new ArrayList();
  508. // String oneUid = "-1277226674647203111";
  509. // String twoUid = "-1277176930335980834";
  510. // String threeUid = "-1277075358654397725";
  511. // names.add("累计重量");
  512. //
  513. // MonitoryValue[] monitoryValues = apiBaseServer.executePost("/v2/box/" + oneUid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
  514. // for (MonitoryValue monitoryValue : monitoryValues) {
  515. //
  516. // System.out.println(monitoryValue);
  517. // }
  518. // MonitoryValue monitoryValue = monitoryValues[0];
  519. // Double value = (Double)monitoryValue.getValue();
  520. // SysFodder oneFodder = fodderService.getOne(new QueryWrapper<SysFodder>().eq("floor_id", 1).last("ORDER BY fodder_id DESC limit 1"));
  521. // Double oldVale = oneFodder.getValue();
  522. //
  523. // if (oldVale < value){
  524. // oneFodder.setValue(value);
  525. // oneFodder.setUpdateTime(new Date());
  526. // fodderService.updateById(oneFodder);
  527. // }else if (value < oldVale){
  528. // SysFodder fodder = new SysFodder();
  529. // fodder.setValue(value);
  530. // fodder.setCreateTime(monitoryValue.getTimestamp());
  531. // fodder.setFloorId(1);
  532. // fodder.setId(monitoryValue.getId());
  533. // fodder.setFarmId(hyFarmId);
  534. // fodder.setUpdateTime(new Date());
  535. //
  536. // fodderService.save(fodder);
  537. //
  538. // }
  539. //
  540. //
  541. //
  542. // MonitoryValue[] twoMonitoryValues = apiBaseServer.executePost("/v2/box/" + twoUid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
  543. // for (MonitoryValue twoMonitoryValue : twoMonitoryValues) {
  544. // System.out.println(twoMonitoryValue);
  545. // }
  546. // MonitoryValue twoMonitoryValue = twoMonitoryValues[0];
  547. // Double twoValue = (Double)twoMonitoryValue.getValue();
  548. // SysFodder twoFodder = fodderService.getOne(new QueryWrapper<SysFodder>().eq("floor_id", 2).last("ORDER BY fodder_id DESC limit 1"));
  549. // Double twoOldVale = twoFodder.getValue();
  550. // if (twoOldVale < twoValue){
  551. // twoFodder.setValue(twoValue);
  552. // twoFodder.setUpdateTime(new Date());
  553. // fodderService.updateById(twoFodder);
  554. //// System.out.println("二号楼更新------------>"+twoFodder);
  555. // }else if (twoValue < twoOldVale){
  556. // SysFodder fodder = new SysFodder();
  557. // fodder.setValue(twoValue);
  558. // fodder.setCreateTime(twoMonitoryValue.getTimestamp());
  559. // fodder.setFloorId(2);
  560. // fodder.setId(twoMonitoryValue.getId());
  561. // fodder.setFarmId(hyFarmId);
  562. // fodder.setUpdateTime(new Date());
  563. // fodderService.save(fodder);
  564. //// System.out.println("二号楼新增------------>"+twoMonitoryValue);
  565. // }else {
  566. //// System.out.println("二号楼舍弃------------>"+twoMonitoryValue);
  567. // }
  568. //
  569. //
  570. // MonitoryValue[] threeMonitoryValues = apiBaseServer.executePost("/v2/box/" + threeUid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
  571. // for (MonitoryValue threeMonitoryValue : threeMonitoryValues) {
  572. //
  573. // System.out.println(threeMonitoryValue);
  574. // }
  575. // MonitoryValue threeMonitoryValue = threeMonitoryValues[0];
  576. // Double threeValue = (Double)threeMonitoryValue.getValue();
  577. // SysFodder threeFodder = fodderService.getOne(new QueryWrapper<SysFodder>().eq("floor_id", 3).last("ORDER BY fodder_id DESC limit 1"));
  578. // Double threeOldVale = threeFodder.getValue();
  579. //
  580. // if (threeOldVale < threeValue){
  581. // threeFodder.setValue(threeValue);
  582. // threeFodder.setUpdateTime(new Date());
  583. // fodderService.updateById(threeFodder);
  584. // System.out.println(threeFodder);
  585. //
  586. //// System.out.println("三号楼更新------------>"+threeFodder);
  587. // }else if (threeValue < threeOldVale){
  588. // SysFodder fodder = new SysFodder();
  589. // fodder.setValue(threeValue);
  590. // fodder.setCreateTime(threeMonitoryValue.getTimestamp());
  591. // fodder.setFloorId(3);
  592. // fodder.setId(threeMonitoryValue.getId());
  593. // fodder.setFarmId(hyFarmId);
  594. // fodder.setUpdateTime(new Date());
  595. // fodderService.save(fodder);
  596. //
  597. // }
  598. //
  599. //
  600. // System.out.println("更新料塔信息,更新时间------------->" + new Date());
  601. //
  602. // }
  603. public void send(String alias, String roomName, String value) {
  604. ZhenziSmsClient client = new ZhenziSmsClient("https://sms_developer.zhenzikj.com",
  605. "109928", "2684d129-1946-43fc-9074-93cee1687eb7");
  606. Map<String, Object> params = new HashMap<String, Object>();
  607. //从数据库查询
  608. SysWarningPhone one = warningPhoneService.getOne(new QueryWrapper<SysWarningPhone>().eq("farm_id", hyFarmId).eq("level", 2));
  609. String[] split = one.getPhone().split(",");
  610. for (String phone : split) {
  611. params.put("number",phone);
  612. params.put("templateId", "7445");
  613. String[] templateParams = new String[3];
  614. templateParams[0] = alias;
  615. templateParams[1] = roomName;
  616. templateParams[2] = value;
  617. params.put("templateParams", templateParams);
  618. try {
  619. System.out.println(client.send(params));
  620. } catch (Exception e) {
  621. e.printStackTrace();
  622. }
  623. }
  624. }
  625. */
  626. /* //更新盒子,房间信息
  627. @Scheduled(cron = "0 0 0 1/7 * ?")
  628. // @Scheduled(cron = "0 0/6 * * * ?")
  629. private void updateBox(){
  630. ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
  631. // 指定连接服务器的凭据参数
  632. TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
  633. ServerCaller appServer = new ServerCaller(tokenManager, Global.appServerApiUrl, Global.signalrClientId, loggerFactory);
  634. ServerCaller apiBaseServer = new ServerCaller(tokenManager, Global.apiBaserUrl, Global.signalrClientId, loggerFactory);
  635. Global.appServer = appServer;
  636. Global.apiBaseServer = apiBaseServer;
  637. try {
  638. BoxGroup[] boxGroups = appServer.executeGet("api/client/box/grouped", BoxGroup[].class);
  639. List<BaseBox> boxs = new ArrayList<>();
  640. List<BaseRoom> rooms = new ArrayList<>();
  641. for (BoxGroup group : boxGroups) {
  642. //盒子
  643. for (BoxReg boxReg : group.boxRegs) {
  644. String alias = boxReg.alias;
  645. if (alias.endsWith("层环控系统")) {
  646. if (alias.startsWith("海盐青莲1号楼")){
  647. boxs.add( new BaseBox(boxReg.boxUid,alias,1));
  648. }
  649. if (alias.startsWith("海盐青莲2号楼")){
  650. boxs.add( new BaseBox(boxReg.boxUid,alias,2));
  651. }
  652. if (alias.startsWith("海盐青莲3号楼")){
  653. boxs.add( new BaseBox(boxReg.boxUid,alias,3));
  654. }
  655. for (int i= 1 ;i <= 6 ;i++){
  656. BaseRoom baseRoom = new BaseRoom();
  657. baseRoom.setBoxId(boxReg.boxUid);
  658. baseRoom.setRoomName("房舍"+i);
  659. baseRoom.setAlias(alias.substring(4,9));
  660. rooms.add(baseRoom);
  661. }
  662. }
  663. }
  664. }
  665. baseBoxService.remove(null);
  666. baseBoxService.saveBatch(boxs);
  667. baseRoomService.remove(null);
  668. baseRoomService.saveBatch(rooms);
  669. System.out.println("更新房舍信息,更新时间------------->"+ new Date());
  670. } catch (IOException e) {
  671. e.printStackTrace();
  672. }
  673. }*//*
  674. }
  675. */