123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546 |
- package com.huimv.produce.timer;
- import cn.hutool.core.util.ObjectUtil;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.huimv.common.utils.DataUill;
- import com.huimv.produce.entity.*;
- import com.huimv.produce.service.*;
- import com.huimv.produce.sgd.Global;
- import com.huimv.produce.sgd.entity.Item;
- import com.huimv.produce.sgd.entity.Monitory;
- import com.huimv.produce.sgd.entity.MonitoryGetArgs;
- import com.huimv.produce.sgd.entity.MonitoryValue;
- import com.huimv.produce.sgd.fbox.ConsoleLoggerFactory;
- import com.huimv.produce.sgd.fbox.ServerCaller;
- import com.huimv.produce.sgd.fbox.StaticCredentialProvider;
- import com.huimv.produce.sgd.fbox.TokenManager;
- import com.huimv.produce.sgd.fbox.models.BoxGroup;
- import com.huimv.produce.sgd.fbox.models.BoxReg;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- 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;
- private Integer hyFarmId = 1;
- /* //更新盒子,房间信息
- @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();
- }
- }*/
- //更新环境数据
- @Scheduled(cron = "0 0/30 * * * ?")
- 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");
- 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 value = (Double)monitoryValue.getValue() * 0.1;
- sysTemperature.setId(monitoryValue.getId());
- sysTemperature.setFarmId(hyFarmId);
- 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);
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- System.out.println("更新温湿度信息,更新时间------------->"+ new Date());
- }
- //更新日用水 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/5 * * * ?")
- 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>()
- .ge("create_time", DataUill.getTimesmorning())
- .eq("room_id", roomId)
- .last("ORDER BY create_time 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 = oldValue - newValue + 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/3 * * * ? ")
- // @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);
- // System.out.println("三号楼新增------------>"+threeMonitoryValue);
- }else {
- // System.out.println("三号楼舍弃------------>"+threeMonitoryValue);
- }
- 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());
- // }
- }
|