|
@@ -0,0 +1,720 @@
|
|
|
+package com.huimv.eco.timer;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.huimv.eco.entity.*;
|
|
|
+import com.huimv.eco.service.*;
|
|
|
+import com.huimv.eco.sgd.Global;
|
|
|
+import com.huimv.eco.sgd.entity.Item;
|
|
|
+import com.huimv.eco.sgd.entity.Monitory;
|
|
|
+import com.huimv.eco.sgd.entity.MonitoryGetArgs;
|
|
|
+import com.huimv.eco.sgd.entity.MonitoryValue;
|
|
|
+import com.huimv.eco.sgd.fbox.ConsoleLoggerFactory;
|
|
|
+import com.huimv.eco.sgd.fbox.ServerCaller;
|
|
|
+import com.huimv.eco.sgd.fbox.StaticCredentialProvider;
|
|
|
+import com.huimv.eco.sgd.fbox.TokenManager;
|
|
|
+import com.zhenzi.sms.ZhenziSmsClient;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.text.DecimalFormat;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+@Component
|
|
|
+public class SgdTimer {
|
|
|
+ private static final long SLEEP_TIME = 1000;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IBaseBoxService baseBoxService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IBaseRoomService baseRoomService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysHumidityService humidityService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysTemperatureService temperatureService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysDayWaterService dayWaterService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysMonthWaterService monthWaterService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysFodderService fodderService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysWarningSetService warningSetService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IBaseWarningInfoService warningInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ISysWarningPhoneService warningPhoneService;
|
|
|
+
|
|
|
+ //阈值
|
|
|
+ @Autowired
|
|
|
+ private ISysThresholdService thresholdService;
|
|
|
+
|
|
|
+ private Integer hyFarmId = 1;
|
|
|
+
|
|
|
+ //更新环境数据
|
|
|
+ @Scheduled(cron = "0 0/3 * * * ?")
|
|
|
+// @Scheduled(cron = "0 * * * * ?")
|
|
|
+ private void updateEnv(){
|
|
|
+
|
|
|
+ ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
|
|
|
+ // 指定连接服务器的凭据参数
|
|
|
+ TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
|
|
|
+ ServerCaller apiBaseServer = new ServerCaller(tokenManager, Global.apiBaserUrl, Global.signalrClientId, loggerFactory);
|
|
|
+ Global.apiBaseServer = apiBaseServer;
|
|
|
+ DecimalFormat df = new DecimalFormat("#.00");
|
|
|
+
|
|
|
+ SysThreshold byId = thresholdService.getById(hyFarmId);
|
|
|
+ String maxHum = byId.getMaxHum();
|
|
|
+ String minHum = byId.getMinHum();
|
|
|
+ String maxTem = byId.getMaxTem();
|
|
|
+ String minTem = byId.getMinTem();
|
|
|
+ try {
|
|
|
+ List<BaseBox> boxes = baseBoxService.list();
|
|
|
+ for (BaseBox box : boxes) {
|
|
|
+ String uid = box.getUid();
|
|
|
+ Monitory[] monitories = apiBaseServer.executeGet("/v2/box/" + uid + "/dmon/grouped", Monitory[].class);
|
|
|
+ List names = new ArrayList();
|
|
|
+ for (Monitory monitory : monitories) {
|
|
|
+ for (Item item : monitory.items) {
|
|
|
+ String name = item.name;
|
|
|
+ if (monitory.name.contains("每个房间") && name != null&& name.startsWith("房舍")) {
|
|
|
+ if (name.contains("平均温度") || name.contains("湿度")) {
|
|
|
+ names.add(name);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(names)) {
|
|
|
+ MonitoryValue[] monitoryValues = apiBaseServer.executePost("/v2/box/" +uid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
|
|
|
+ List<SysTemperature> temList = new ArrayList();
|
|
|
+ List<SysHumidity> humList = new ArrayList<>();
|
|
|
+ for (MonitoryValue monitoryValue : monitoryValues) {
|
|
|
+ if (ObjectUtil.isEmpty(monitoryValue)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String name = monitoryValue.getName();
|
|
|
+ String[] split = name.split("-");
|
|
|
+ BaseRoom room = baseRoomService.getOne(new QueryWrapper<BaseRoom>().eq("room_name", split[0]).eq("box_id", uid));
|
|
|
+ Integer roomId = room.getId();
|
|
|
+ if (split[1].contains("温度")){
|
|
|
+ SysTemperature sysTemperature = new SysTemperature();
|
|
|
+ if (ObjectUtil.isNotEmpty(monitoryValue.getValue())){
|
|
|
+ Double value1 = (Double)monitoryValue.getValue();
|
|
|
+ Double value = value1* 0.1;
|
|
|
+ sysTemperature.setId(monitoryValue.getId());
|
|
|
+ sysTemperature.setFarmId(hyFarmId);
|
|
|
+ sysTemperature.setOriginal(value1);
|
|
|
+ sysTemperature.setRoomId(roomId);
|
|
|
+ if (value != 0.0){
|
|
|
+ sysTemperature.setValue(Double.parseDouble(df.format(value)));
|
|
|
+ }else {
|
|
|
+ sysTemperature.setValue(value);
|
|
|
+ }
|
|
|
+ sysTemperature.setCreateTime(monitoryValue.getTimestamp());
|
|
|
+ temList.add(sysTemperature);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (split[1].contains("湿度")){
|
|
|
+ SysHumidity humidity = new SysHumidity();
|
|
|
+ Double value = (Double)monitoryValue.getValue() ;
|
|
|
+ humidity.setId(monitoryValue.getId());
|
|
|
+ humidity.setRoomId(roomId);
|
|
|
+ humidity.setFarmId(hyFarmId);
|
|
|
+ if (ObjectUtil.isNotEmpty(value)){
|
|
|
+ if (value != 0.0){
|
|
|
+ humidity.setValue(Double.parseDouble(df.format(value)));
|
|
|
+ }else{
|
|
|
+ humidity.setValue(value);
|
|
|
+ }
|
|
|
+
|
|
|
+ humidity.setCreateTime(monitoryValue.getTimestamp());
|
|
|
+ humList.add(humidity);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ humidityService.saveBatch(humList);
|
|
|
+ temperatureService.saveBatch(temList);
|
|
|
+
|
|
|
+ humWarning(humList,minHum,maxHum);
|
|
|
+ temWarning(temList,minTem,maxTem);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ System.out.println("更新温湿度信息,更新时间------------->"+ new Date());
|
|
|
+ }
|
|
|
+ //温度报警
|
|
|
+ private void temWarning(List<SysTemperature> temList, String minTem, String maxTem) {
|
|
|
+ QueryWrapper<SysWarningSet> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("content","高温报警");
|
|
|
+ SysWarningSet maxWarning = warningSetService.getOne(wrapper);
|
|
|
+ wrapper.clear();
|
|
|
+ wrapper.eq("content","低温报警");
|
|
|
+ SysWarningSet minWarning = warningSetService.getOne(wrapper);
|
|
|
+
|
|
|
+ Double min = null;
|
|
|
+ Double max = null;
|
|
|
+ try {
|
|
|
+ min = Double.valueOf(minTem);
|
|
|
+ }catch (NumberFormatException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ max = Double.valueOf(maxTem);
|
|
|
+ }catch (NumberFormatException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ for ( SysTemperature temperature : temList) {
|
|
|
+ BaseRoom baseRoom = baseRoomService.getById(temperature.getRoomId());
|
|
|
+ Double value = temperature.getValue();
|
|
|
+ Date now = new Date();
|
|
|
+ if (min != null && value <min) {
|
|
|
+ if (minWarning.getFirstLevel() || minWarning.getSecondLevel() || minWarning.getThirdlyLevel()) {
|
|
|
+ BaseWarningInfo baseWarningInfo = new BaseWarningInfo();
|
|
|
+ baseWarningInfo.setFarmId(hyFarmId);
|
|
|
+ baseWarningInfo.setWarningName("低温报警");
|
|
|
+ baseWarningInfo.setMsg(baseRoom.getAlias() + baseRoom.getRoomName() + "出现低温报警,温度为:" + value);
|
|
|
+ baseWarningInfo.setWarningTime(now);
|
|
|
+ baseWarningInfo.setUploadTime(temperature.getCreateTime());
|
|
|
+ baseWarningInfo.setAlarmType(8);
|
|
|
+
|
|
|
+ if (minWarning.getFirstLevel()) {
|
|
|
+ baseWarningInfo.setLevel(1);
|
|
|
+ baseWarningInfo.setLevelName("一级报警");
|
|
|
+ }
|
|
|
+ if (minWarning.getSecondLevel()) {
|
|
|
+ baseWarningInfo.setLevel(2);
|
|
|
+ baseWarningInfo.setLevelName("二级报警");
|
|
|
+ //这个写短信内容
|
|
|
+ send(baseRoom.getAlias(), baseRoom.getRoomName(), value + "℃");
|
|
|
+ }
|
|
|
+ if (minWarning.getThirdlyLevel()) {
|
|
|
+ baseWarningInfo.setLevel(3);
|
|
|
+ baseWarningInfo.setLevelName("三级报警");
|
|
|
+ //这个写短信内容
|
|
|
+ }
|
|
|
+ warningInfoService.save(baseWarningInfo);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (max != null && value >max){
|
|
|
+ if (maxWarning.getFirstLevel() || maxWarning.getSecondLevel() || maxWarning.getThirdlyLevel()) {
|
|
|
+ BaseWarningInfo baseWarningInfo = new BaseWarningInfo();
|
|
|
+ baseWarningInfo.setFarmId(hyFarmId);
|
|
|
+ baseWarningInfo.setWarningName("高温报警");
|
|
|
+ baseWarningInfo.setMsg(baseRoom.getAlias() + baseRoom.getRoomName() + "出现高温报警,温度为:" + value);
|
|
|
+ baseWarningInfo.setWarningTime(now);
|
|
|
+ baseWarningInfo.setUploadTime(temperature.getCreateTime());
|
|
|
+ baseWarningInfo.setAlarmType(7);
|
|
|
+
|
|
|
+ if (maxWarning.getFirstLevel()) {
|
|
|
+ baseWarningInfo.setLevel(1);
|
|
|
+ baseWarningInfo.setLevelName("一级报警");
|
|
|
+ }
|
|
|
+ if (maxWarning.getSecondLevel()) {
|
|
|
+ baseWarningInfo.setLevel(2);
|
|
|
+ baseWarningInfo.setLevelName("二级报警");
|
|
|
+ //这个写短信内容
|
|
|
+ send(baseRoom.getAlias(), baseRoom.getRoomName(), value + "℃");
|
|
|
+
|
|
|
+ }
|
|
|
+ if (maxWarning.getThirdlyLevel()) {
|
|
|
+ baseWarningInfo.setLevel(3);
|
|
|
+ baseWarningInfo.setLevelName("三级报警");
|
|
|
+ //这个写短信内容
|
|
|
+ }
|
|
|
+ warningInfoService.save(baseWarningInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //湿度报警
|
|
|
+ private void humWarning(List<SysHumidity> humList, String minHum, String maxHum) {
|
|
|
+ QueryWrapper<SysWarningSet> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("content","高湿度报警");
|
|
|
+ SysWarningSet maxWarning = warningSetService.getOne(wrapper);
|
|
|
+ wrapper.clear();
|
|
|
+ wrapper.eq("content","低湿度报警");
|
|
|
+ SysWarningSet minWarning = warningSetService.getOne(wrapper);
|
|
|
+
|
|
|
+ Double min = null;
|
|
|
+ Double max = null;
|
|
|
+ try {
|
|
|
+ min = Double.valueOf(minHum);
|
|
|
+ }catch (NumberFormatException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ max = Double.valueOf(maxHum);
|
|
|
+ }catch (NumberFormatException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ for (SysHumidity humidity : humList) {
|
|
|
+ BaseRoom baseRoom = baseRoomService.getById(humidity.getRoomId());
|
|
|
+ Double value = humidity.getValue();
|
|
|
+ Date now = new Date();
|
|
|
+ if (min != null && value <min){
|
|
|
+ if (minWarning.getFirstLevel() || minWarning.getSecondLevel()|| minWarning.getThirdlyLevel()){
|
|
|
+ BaseWarningInfo baseWarningInfo = new BaseWarningInfo();
|
|
|
+ baseWarningInfo.setFarmId(hyFarmId);
|
|
|
+ baseWarningInfo.setWarningName("低湿度报警");
|
|
|
+ baseWarningInfo.setMsg(baseRoom.getAlias()+baseRoom.getRoomName()+"出现低湿度报警,湿度为:"+value);
|
|
|
+ baseWarningInfo.setWarningTime(now);
|
|
|
+ baseWarningInfo.setUploadTime(humidity.getCreateTime());
|
|
|
+ baseWarningInfo.setAlarmType(10);
|
|
|
+
|
|
|
+ if (minWarning.getFirstLevel()){
|
|
|
+ baseWarningInfo.setLevel(1);
|
|
|
+ baseWarningInfo.setLevelName("一级报警");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (minWarning.getSecondLevel()){
|
|
|
+ baseWarningInfo.setLevel(2);
|
|
|
+ baseWarningInfo.setLevelName("二级报警");
|
|
|
+ //这个写短信内容
|
|
|
+ send( baseRoom.getAlias(),baseRoom.getRoomName(),value+"%");
|
|
|
+ }
|
|
|
+ if (minWarning.getThirdlyLevel()){
|
|
|
+ baseWarningInfo.setLevel(3);
|
|
|
+ baseWarningInfo.setLevelName("三级报警");
|
|
|
+ //这个写短信内容
|
|
|
+ }
|
|
|
+ warningInfoService.save(baseWarningInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ if (max != null && value >max) {
|
|
|
+ if (maxWarning.getFirstLevel() || maxWarning.getSecondLevel() || maxWarning.getThirdlyLevel()) {
|
|
|
+ BaseWarningInfo baseWarningInfo = new BaseWarningInfo();
|
|
|
+ baseWarningInfo.setFarmId(hyFarmId);
|
|
|
+ baseWarningInfo.setWarningName("高湿度报警");
|
|
|
+ baseWarningInfo.setMsg(baseRoom.getAlias() + baseRoom.getRoomName() + "出现高湿度报警,湿度为:" + value);
|
|
|
+ baseWarningInfo.setWarningTime(now);
|
|
|
+ baseWarningInfo.setUploadTime(humidity.getCreateTime());
|
|
|
+ baseWarningInfo.setAlarmType(9);
|
|
|
+ if (maxWarning.getFirstLevel()) {
|
|
|
+
|
|
|
+ baseWarningInfo.setLevel(1);
|
|
|
+ baseWarningInfo.setLevelName("一级报警");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if (maxWarning.getSecondLevel()) {
|
|
|
+ baseWarningInfo.setLevel(2);
|
|
|
+ baseWarningInfo.setLevelName("二级报警");
|
|
|
+ //这个写短信内容
|
|
|
+ send(baseRoom.getAlias(), baseRoom.getRoomName(), value + "%");
|
|
|
+
|
|
|
+ }
|
|
|
+ if (maxWarning.getThirdlyLevel()) {
|
|
|
+ baseWarningInfo.setLevelName("三级报警");
|
|
|
+ baseWarningInfo.setAlarmType(9);
|
|
|
+ //这个写短信内容
|
|
|
+
|
|
|
+ }
|
|
|
+ warningInfoService.save(baseWarningInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新日用水 9
|
|
|
+ @Scheduled(cron = "0 55 8 * * ? ")
|
|
|
+// @Scheduled(cron = "0 * * * * ?")
|
|
|
+ private void updateDayWater(){
|
|
|
+ ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
|
|
|
+ // 指定连接服务器的凭据参数
|
|
|
+ TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
|
|
|
+ ServerCaller apiBaseServer = new ServerCaller(tokenManager, Global.apiBaserUrl, Global.signalrClientId, loggerFactory);
|
|
|
+ Global.apiBaseServer = apiBaseServer;
|
|
|
+ DecimalFormat df = new DecimalFormat("#.00");
|
|
|
+
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ List<BaseBox> boxes = baseBoxService.list();
|
|
|
+ for (BaseBox box : boxes) {
|
|
|
+ String uid = box.getUid();
|
|
|
+ Monitory[] monitories = apiBaseServer.executeGet("/v2/box/" + uid + "/dmon/grouped", Monitory[].class);
|
|
|
+ List names = new ArrayList();
|
|
|
+ if (ObjectUtil.isEmpty(monitories)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (Monitory monitory : monitories) {
|
|
|
+ for (Item item : monitory.items) {
|
|
|
+ String name = item.name;
|
|
|
+ if (monitory.name.contains("每个房间") && name != null&& name.startsWith("房舍")) {
|
|
|
+ if (name.contains("日用水量") ) {
|
|
|
+ names.add(name);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(names)) {
|
|
|
+ MonitoryValue[] monitoryValues = apiBaseServer.executePost("/v2/box/" +uid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
|
|
|
+
|
|
|
+ List<SysDayWater> dayWatersList = new ArrayList();
|
|
|
+ for (MonitoryValue monitoryValue : monitoryValues) {
|
|
|
+ if (ObjectUtil.isEmpty(monitoryValue)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String name = monitoryValue.getName();
|
|
|
+ String[] split = name.split("-");
|
|
|
+ BaseRoom room = baseRoomService.getOne(new QueryWrapper<BaseRoom>().eq("room_name", split[0]).eq("box_id", uid));
|
|
|
+ Integer roomId = room.getId();
|
|
|
+
|
|
|
+ SysDayWater dayWater = new SysDayWater();
|
|
|
+ Double value = (Double)monitoryValue.getValue();
|
|
|
+
|
|
|
+ dayWater.setId(monitoryValue.getId());
|
|
|
+ dayWater.setRoomId(roomId);
|
|
|
+ dayWater.setFarmId(hyFarmId);
|
|
|
+ if (value == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (0.0 != value){
|
|
|
+ String format = df.format(value);
|
|
|
+ if (format.length()==3){
|
|
|
+ dayWater.setValue(0+format);
|
|
|
+ }else {
|
|
|
+ dayWater.setValue(format);
|
|
|
+ }
|
|
|
+
|
|
|
+ }else {
|
|
|
+ dayWater.setValue(value+"");
|
|
|
+ }
|
|
|
+ dayWater.setCreateTime(monitoryValue.getTimestamp());
|
|
|
+ dayWatersList.add(dayWater);
|
|
|
+ }
|
|
|
+ dayWaterService.saveBatch(dayWatersList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ System.out.println("更新日用水信息,更新时间------------->"+ new Date());
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新两个小时用水数据
|
|
|
+ @Scheduled(cron = "0 59 0,2,4,6,8,10,12,14,16,18,20,22 * * ? ")
|
|
|
+// @Scheduled(cron = "0 0/2 * * * ?")
|
|
|
+ private void updateMonthWater(){
|
|
|
+ ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
|
|
|
+ // 指定连接服务器的凭据参数
|
|
|
+ TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
|
|
|
+ ServerCaller apiBaseServer = new ServerCaller(tokenManager, Global.apiBaserUrl, Global.signalrClientId, loggerFactory);
|
|
|
+ Global.apiBaseServer = apiBaseServer;
|
|
|
+ DecimalFormat df = new DecimalFormat("#.00");
|
|
|
+
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ List<BaseBox> boxes = baseBoxService.list();
|
|
|
+ for (BaseBox box : boxes) {
|
|
|
+ String uid = box.getUid();
|
|
|
+ Monitory[] monitories = apiBaseServer.executeGet("/v2/box/" + uid + "/dmon/grouped", Monitory[].class);
|
|
|
+ List names = new ArrayList();
|
|
|
+ for (Monitory monitory : monitories) {
|
|
|
+ for (Item item : monitory.items) {
|
|
|
+ String name = item.name;
|
|
|
+ if (monitory.name.contains("每个房间") && name != null&& name.startsWith("房舍")) {
|
|
|
+ if (name.contains("日用水量") ) {
|
|
|
+ names.add(name);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(names)) {
|
|
|
+ MonitoryValue[] monitoryValues = apiBaseServer.executePost("/v2/box/" +uid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
|
|
|
+ List<SysMonthWater> dayWatersList = new ArrayList();
|
|
|
+ for (MonitoryValue monitoryValue : monitoryValues) {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (ObjectUtil.isEmpty(monitoryValue)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String name = monitoryValue.getName();
|
|
|
+ String[] split = name.split("-");
|
|
|
+ BaseRoom room = baseRoomService.getOne(new QueryWrapper<BaseRoom>().eq("room_name", split[0]).eq("box_id", uid));
|
|
|
+ Integer roomId = room.getId();
|
|
|
+ SysMonthWater oldWater = monthWaterService.getOne(
|
|
|
+ new QueryWrapper<SysMonthWater>()
|
|
|
+ .eq("room_id", roomId)
|
|
|
+ .eq("farm_id",hyFarmId)
|
|
|
+ .orderByDesc("month_water_id")
|
|
|
+ .last("LIMIT 1"));
|
|
|
+
|
|
|
+ SysMonthWater monthWater = new SysMonthWater();
|
|
|
+ monthWater.setFarmId(hyFarmId);
|
|
|
+ Double newValue = (Double)monitoryValue.getValue();
|
|
|
+ Double add ;
|
|
|
+ if (ObjectUtil.isEmpty(oldWater)){
|
|
|
+ if (newValue == null){
|
|
|
+ add = 0.0;
|
|
|
+ }else {
|
|
|
+ add = newValue;
|
|
|
+ }
|
|
|
+
|
|
|
+ }else {
|
|
|
+ Double oldValue = Double.parseDouble(oldWater.getValue());
|
|
|
+ if (newValue >= oldValue){
|
|
|
+ add = newValue -oldValue;
|
|
|
+ }else {
|
|
|
+ add = newValue;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (add != 0.0){
|
|
|
+ String format = df.format(add);
|
|
|
+ if (format.length()==3){
|
|
|
+ monthWater.setIncreaseValue(0+format);
|
|
|
+ }else {
|
|
|
+ monthWater.setIncreaseValue(format);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ monthWater.setIncreaseValue(add+"");
|
|
|
+ }
|
|
|
+
|
|
|
+ monthWater.setId(monitoryValue.getId());
|
|
|
+ monthWater.setRoomId(roomId);
|
|
|
+ if (newValue != 0.0){
|
|
|
+ String format = df.format(newValue);
|
|
|
+ if (format.length()==3){
|
|
|
+ monthWater.setValue(0+format);
|
|
|
+ }else {
|
|
|
+ monthWater.setValue(format);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ monthWater.setValue(newValue+"");
|
|
|
+ }
|
|
|
+ monthWater.setCreateTime(monitoryValue.getTimestamp());
|
|
|
+ dayWatersList.add(monthWater);
|
|
|
+
|
|
|
+ }
|
|
|
+ monthWaterService.saveBatch(dayWatersList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ System.out.println("更新月用水信息,更新时间------------->"+ new Date());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //更新料控
|
|
|
+ @Scheduled(cron = "0 0/6 * * * ? ")
|
|
|
+// @Scheduled(cron = "0 0/5 * * * ?")
|
|
|
+ private void updateFodder() throws IOException {
|
|
|
+ ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
|
|
|
+ // 指定连接服务器的凭据参数
|
|
|
+ TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
|
|
|
+ ServerCaller apiBaseServer = new ServerCaller(tokenManager, Global.apiBaserUrl, Global.signalrClientId, loggerFactory);
|
|
|
+ Global.apiBaseServer = apiBaseServer;
|
|
|
+
|
|
|
+ List names = new ArrayList();
|
|
|
+ String oneUid = "-1277226674647203111";
|
|
|
+ String twoUid = "-1277176930335980834";
|
|
|
+ String threeUid = "-1277075358654397725";
|
|
|
+ names.add("累计重量");
|
|
|
+
|
|
|
+ MonitoryValue[] monitoryValues = apiBaseServer.executePost("/v2/box/" + oneUid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
|
|
|
+
|
|
|
+ MonitoryValue monitoryValue = monitoryValues[0];
|
|
|
+ Double value = (Double)monitoryValue.getValue();
|
|
|
+ SysFodder oneFodder = fodderService.getOne(new QueryWrapper<SysFodder>().eq("floor_id", 1).last("ORDER BY fodder_id DESC limit 1"));
|
|
|
+ Double oldVale = oneFodder.getValue();
|
|
|
+ if (oldVale < value){
|
|
|
+ oneFodder.setValue(value);
|
|
|
+ fodderService.updateById(oneFodder);
|
|
|
+ }else if (value < oldVale){
|
|
|
+ SysFodder fodder = new SysFodder();
|
|
|
+ fodder.setValue(value);
|
|
|
+ fodder.setCreateTime(monitoryValue.getTimestamp());
|
|
|
+ fodder.setFloorId(1);
|
|
|
+ fodder.setId(monitoryValue.getId());
|
|
|
+ fodder.setFarmId(hyFarmId);
|
|
|
+ fodderService.save(fodder);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ MonitoryValue[] twoMonitoryValues = apiBaseServer.executePost("/v2/box/" + twoUid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
|
|
|
+ MonitoryValue twoMonitoryValue = twoMonitoryValues[0];
|
|
|
+ Double twoValue = (Double)twoMonitoryValue.getValue();
|
|
|
+ SysFodder twoFodder = fodderService.getOne(new QueryWrapper<SysFodder>().eq("floor_id", 2).last("ORDER BY fodder_id DESC limit 1"));
|
|
|
+ Double twoOldVale = twoFodder.getValue();
|
|
|
+ if (twoOldVale < twoValue){
|
|
|
+ twoFodder.setValue(twoValue);
|
|
|
+ fodderService.updateById(twoFodder);
|
|
|
+// System.out.println("二号楼更新------------>"+twoFodder);
|
|
|
+ }else if (twoValue < twoOldVale){
|
|
|
+ SysFodder fodder = new SysFodder();
|
|
|
+ fodder.setValue(twoValue);
|
|
|
+ fodder.setCreateTime(twoMonitoryValue.getTimestamp());
|
|
|
+ fodder.setFloorId(2);
|
|
|
+ fodder.setId(twoMonitoryValue.getId());
|
|
|
+ fodder.setFarmId(hyFarmId);
|
|
|
+ fodderService.save(fodder);
|
|
|
+// System.out.println("二号楼新增------------>"+twoMonitoryValue);
|
|
|
+ }else {
|
|
|
+// System.out.println("二号楼舍弃------------>"+twoMonitoryValue);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ MonitoryValue[] threeMonitoryValues = apiBaseServer.executePost("/v2/box/" + threeUid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
|
|
|
+ MonitoryValue threeMonitoryValue = threeMonitoryValues[0];
|
|
|
+ Double threeValue = (Double)threeMonitoryValue.getValue();
|
|
|
+ SysFodder threeFodder = fodderService.getOne(new QueryWrapper<SysFodder>().eq("floor_id", 3).last("ORDER BY fodder_id DESC limit 1"));
|
|
|
+ Double threeOldVale = threeFodder.getValue();
|
|
|
+ if (threeOldVale < threeValue){
|
|
|
+ threeFodder.setValue(threeValue);
|
|
|
+ fodderService.updateById(threeFodder);
|
|
|
+// System.out.println("三号楼更新------------>"+threeFodder);
|
|
|
+ }else if (threeValue < threeOldVale){
|
|
|
+ SysFodder fodder = new SysFodder();
|
|
|
+ fodder.setValue(threeValue);
|
|
|
+ fodder.setCreateTime(threeMonitoryValue.getTimestamp());
|
|
|
+ fodder.setFloorId(3);
|
|
|
+ fodder.setId(threeMonitoryValue.getId());
|
|
|
+ fodder.setFarmId(hyFarmId);
|
|
|
+ fodderService.save(fodder);
|
|
|
+ }else {
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ System.out.println("更新料塔信息,更新时间------------->" + new Date());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public void send(String alias, String roomName, String value) {
|
|
|
+
|
|
|
+
|
|
|
+ ZhenziSmsClient client = new ZhenziSmsClient("https://sms_developer.zhenzikj.com",
|
|
|
+ "109928", "2684d129-1946-43fc-9074-93cee1687eb7");
|
|
|
+ Map<String, Object> params = new HashMap<String, Object>();
|
|
|
+ //从数据库查询
|
|
|
+ SysWarningPhone one = warningPhoneService.getOne(new QueryWrapper<SysWarningPhone>().eq("farm_id", hyFarmId).eq("level", 2));
|
|
|
+ String[] split = one.getPhone().split(",");
|
|
|
+ for (String phone : split) {
|
|
|
+ params.put("number",phone);
|
|
|
+ params.put("templateId", "7445");
|
|
|
+
|
|
|
+ String[] templateParams = new String[3];
|
|
|
+ templateParams[0] = alias;
|
|
|
+ templateParams[1] = roomName;
|
|
|
+
|
|
|
+ templateParams[2] = value;
|
|
|
+ params.put("templateParams", templateParams);
|
|
|
+ try {
|
|
|
+ System.out.println(client.send(params));
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /* //更新盒子,房间信息
|
|
|
+ @Scheduled(cron = "0 0 0 1/7 * ?")
|
|
|
+// @Scheduled(cron = "0 0/6 * * * ?")
|
|
|
+ private void updateBox(){
|
|
|
+
|
|
|
+ ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
|
|
|
+ // 指定连接服务器的凭据参数
|
|
|
+ TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
|
|
|
+ ServerCaller appServer = new ServerCaller(tokenManager, Global.appServerApiUrl, Global.signalrClientId, loggerFactory);
|
|
|
+ ServerCaller apiBaseServer = new ServerCaller(tokenManager, Global.apiBaserUrl, Global.signalrClientId, loggerFactory);
|
|
|
+ Global.appServer = appServer;
|
|
|
+ Global.apiBaseServer = apiBaseServer;
|
|
|
+ try {
|
|
|
+ BoxGroup[] boxGroups = appServer.executeGet("api/client/box/grouped", BoxGroup[].class);
|
|
|
+ List<BaseBox> boxs = new ArrayList<>();
|
|
|
+ List<BaseRoom> rooms = new ArrayList<>();
|
|
|
+ for (BoxGroup group : boxGroups) {
|
|
|
+ //盒子
|
|
|
+ for (BoxReg boxReg : group.boxRegs) {
|
|
|
+ String alias = boxReg.alias;
|
|
|
+ if (alias.endsWith("层环控系统")) {
|
|
|
+ if (alias.startsWith("海盐青莲1号楼")){
|
|
|
+ boxs.add( new BaseBox(boxReg.boxUid,alias,1));
|
|
|
+ }
|
|
|
+ if (alias.startsWith("海盐青莲2号楼")){
|
|
|
+ boxs.add( new BaseBox(boxReg.boxUid,alias,2));
|
|
|
+ }
|
|
|
+ if (alias.startsWith("海盐青莲3号楼")){
|
|
|
+ boxs.add( new BaseBox(boxReg.boxUid,alias,3));
|
|
|
+ }
|
|
|
+ for (int i= 1 ;i <= 6 ;i++){
|
|
|
+ BaseRoom baseRoom = new BaseRoom();
|
|
|
+ baseRoom.setBoxId(boxReg.boxUid);
|
|
|
+ baseRoom.setRoomName("房舍"+i);
|
|
|
+ baseRoom.setAlias(alias.substring(4,9));
|
|
|
+ rooms.add(baseRoom);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ baseBoxService.remove(null);
|
|
|
+ baseBoxService.saveBatch(boxs);
|
|
|
+
|
|
|
+ baseRoomService.remove(null);
|
|
|
+ baseRoomService.saveBatch(rooms);
|
|
|
+ System.out.println("更新房舍信息,更新时间------------->"+ new Date());
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }*/
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|