SgdTimer.java 31 KB

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