|
@@ -1,6 +1,5 @@
|
|
package com.huimv.produce.timer;
|
|
package com.huimv.produce.timer;
|
|
|
|
|
|
-
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.huimv.common.utils.DataUill;
|
|
import com.huimv.common.utils.DataUill;
|
|
@@ -17,6 +16,7 @@ import com.huimv.produce.sgd.fbox.StaticCredentialProvider;
|
|
import com.huimv.produce.sgd.fbox.TokenManager;
|
|
import com.huimv.produce.sgd.fbox.TokenManager;
|
|
import com.huimv.produce.sgd.fbox.models.BoxGroup;
|
|
import com.huimv.produce.sgd.fbox.models.BoxGroup;
|
|
import com.huimv.produce.sgd.fbox.models.BoxReg;
|
|
import com.huimv.produce.sgd.fbox.models.BoxReg;
|
|
|
|
+import com.zhenzi.sms.ZhenziSmsClient;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
@@ -51,6 +51,18 @@ public class SgdTimer {
|
|
@Autowired
|
|
@Autowired
|
|
private ISysFodderService fodderService;
|
|
private ISysFodderService fodderService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ISysWarningSetService warningSetService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IBaseWarningInfoService warningInfoService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ISysWarningPhoneService warningPhoneService;
|
|
|
|
+
|
|
|
|
+ //阈值
|
|
|
|
+ @Autowired
|
|
|
|
+ private ISysThresholdService thresholdService;
|
|
|
|
|
|
private Integer hyFarmId = 1;
|
|
private Integer hyFarmId = 1;
|
|
|
|
|
|
@@ -110,6 +122,7 @@ public class SgdTimer {
|
|
|
|
|
|
//更新环境数据
|
|
//更新环境数据
|
|
@Scheduled(cron = "0 0/30 * * * ?")
|
|
@Scheduled(cron = "0 0/30 * * * ?")
|
|
|
|
+// @Scheduled(cron = "0 * * * * ?")
|
|
private void updateEnv(){
|
|
private void updateEnv(){
|
|
|
|
|
|
ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
|
|
ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
|
|
@@ -119,7 +132,11 @@ public class SgdTimer {
|
|
Global.apiBaseServer = apiBaseServer;
|
|
Global.apiBaseServer = apiBaseServer;
|
|
DecimalFormat df = new DecimalFormat("#.00");
|
|
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 {
|
|
try {
|
|
List<BaseBox> boxes = baseBoxService.list();
|
|
List<BaseBox> boxes = baseBoxService.list();
|
|
for (BaseBox box : boxes) {
|
|
for (BaseBox box : boxes) {
|
|
@@ -190,6 +207,8 @@ public class SgdTimer {
|
|
humidityService.saveBatch(humList);
|
|
humidityService.saveBatch(humList);
|
|
temperatureService.saveBatch(temList);
|
|
temperatureService.saveBatch(temList);
|
|
|
|
|
|
|
|
+ humWarning(humList,minHum,maxHum);
|
|
|
|
+ temWarning(temList,minTem,maxTem);
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|
|
@@ -200,6 +219,191 @@ public class SgdTimer {
|
|
}
|
|
}
|
|
System.out.println("更新温湿度信息,更新时间------------->"+ new Date());
|
|
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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -472,9 +676,7 @@ public class SgdTimer {
|
|
fodder.setId(threeMonitoryValue.getId());
|
|
fodder.setId(threeMonitoryValue.getId());
|
|
fodder.setFarmId(hyFarmId);
|
|
fodder.setFarmId(hyFarmId);
|
|
fodderService.save(fodder);
|
|
fodderService.save(fodder);
|
|
-// System.out.println("三号楼新增------------>"+threeMonitoryValue);
|
|
|
|
}else {
|
|
}else {
|
|
-// System.out.println("三号楼舍弃------------>"+threeMonitoryValue);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -482,65 +684,39 @@ public class SgdTimer {
|
|
System.out.println("更新料塔信息,更新时间------------->" + new Date());
|
|
System.out.println("更新料塔信息,更新时间------------->" + new Date());
|
|
|
|
|
|
}
|
|
}
|
|
-// @Scheduled(cron = "0 * * * * ? ")
|
|
|
|
-// private void ss() {
|
|
|
|
-// 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) {
|
|
|
|
-// if (name.contains("房舍")) {
|
|
|
|
-// names.add(name);
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// System.out.println(box+names.toString());
|
|
|
|
-//
|
|
|
|
-// if (ObjectUtil.isNotEmpty(names)) {
|
|
|
|
-// MonitoryValue[] monitoryValues = apiBaseServer.executePost("/v2/box/" +uid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
|
|
|
|
-// for (MonitoryValue monitoryValue : monitoryValues) {
|
|
|
|
-// System.out.println(monitoryValue);
|
|
|
|
-// }
|
|
|
|
-// /* 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();
|
|
|
|
-// System.out.println(roomId);
|
|
|
|
-// System.out.println(monitoryValue);
|
|
|
|
-// }*/
|
|
|
|
-//
|
|
|
|
-// }
|
|
|
|
-//
|
|
|
|
-// }
|
|
|
|
-//
|
|
|
|
-//
|
|
|
|
-//
|
|
|
|
-// } catch (IOException e) {
|
|
|
|
-// e.printStackTrace();
|
|
|
|
-// }
|
|
|
|
-// 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();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|