523096025 пре 2 година
родитељ
комит
6a589afcea
22 измењених фајлова са 1110 додато и 457 уклоњено
  1. 27 2
      huimv-farm-device/huimv-farm-eco/pom.xml
  2. 3 0
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/HuimvECOApplication.java
  3. 2 0
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/entity/BaseRoom.java
  4. 0 2
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/entity/BaseWarningInfo.java
  5. 19 0
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/entity/HumAndTemDto.java
  6. 12 0
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/entity/SysFodder.java
  7. 40 0
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/mq/Hello1Consumer.java
  8. 228 0
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/mq/HelloConsumer.java
  9. 24 0
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/mq/Test.java
  10. 36 21
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/FBoxSignalRConnection.java
  11. 207 204
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/Main.java
  12. 143 0
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/SaveData.java
  13. 75 0
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/SendTimer.java
  14. 1 0
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/fbox/ConsoleLogger.java
  15. 12 0
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/fbox/models/BoxStateChanged.java
  16. 5 39
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/timer/SendTime.java
  17. 243 186
      huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/timer/SgdTimer.java
  18. 26 1
      huimv-farm-device/huimv-farm-eco/src/main/resources/application-dev.yml
  19. 1 1
      huimv-farm-device/huimv-farm-eco/src/main/resources/application-prod.yml
  20. 1 0
      huimv-farm-device/huimv-farm-eco/src/main/resources/application-prod2.yml
  21. 2 1
      huimv-farm-device/huimv-farm-eco/src/main/resources/application.properties
  22. 3 0
      huimv-farm-device/huimv-farm-netip/src/main/java/com/huimv/huimvfarmnetip/task/ScheduledService.java

+ 27 - 2
huimv-farm-device/huimv-farm-eco/pom.xml

@@ -14,6 +14,10 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-amqp</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
             <version>3.4.2</version>
@@ -28,11 +32,11 @@
             <artifactId>mybatis-plus-generator</artifactId>
             <version>3.2.0</version>
         </dependency>
-        <dependency>
+      <!--  <dependency>
             <groupId>com.huimv</groupId>
             <artifactId>huimv-common</artifactId>
             <version>0.0.1-SNAPSHOT</version>
-        </dependency>
+        </dependency>-->
         <dependency>
             <groupId>com.google.code.gson</groupId>
             <artifactId>gson</artifactId>
@@ -60,6 +64,7 @@
         </dependency>
 
 
+
         <dependency>
             <groupId>com.zhenzikj</groupId>
             <artifactId>zhenzisms</artifactId>
@@ -69,6 +74,26 @@
             <groupId>org.springframework.data</groupId>
             <artifactId>spring-data-jpa</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.4</version>
+            <scope>compile</scope>
+        </dependency>
         <!-- JPA -->
     </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

+ 3 - 0
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/HuimvECOApplication.java

@@ -6,6 +6,8 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.client.RestTemplate;
 
 /**
@@ -17,6 +19,7 @@ import org.springframework.web.client.RestTemplate;
  * @Create : 2020-12-25
  **/
 @SpringBootApplication
+@EnableScheduling
 @MapperScan("com.huimv.eco.mapper")
 public class HuimvECOApplication {
     public static void main(String[] args) {

+ 2 - 0
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/entity/BaseRoom.java

@@ -31,6 +31,8 @@ public class BaseRoom extends Model {
 
     private String alias;
 
+
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }

+ 0 - 2
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/entity/BaseWarningInfo.java

@@ -38,10 +38,8 @@ public class BaseWarningInfo extends Model {
 
     private String warningName;
 
-    @JsonFormat(pattern = "MM-dd HH:mm:ss" ,timezone = "GMT+8")
     private Date warningTime;
 
-    @JsonFormat(pattern = "MM-dd HH:mm:ss" ,timezone = "GMT+8")
     private Date uploadTime;
 
     private Integer alarmType;

+ 19 - 0
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/entity/HumAndTemDto.java

@@ -1,5 +1,6 @@
 package com.huimv.eco.entity;
 
+import com.huimv.eco.sgd.fbox.models.BoxStateChanged;
 import lombok.Data;
 
 import java.util.List;
@@ -18,6 +19,8 @@ public class HumAndTemDto {
     private List<SysDayWater> dayWaters;
 
     private List<SysMonthWater> monthWaters;
+    private BoxStateChanged stateChange;
+    private Integer type;
 
     public List<SysHumidity> getHumidity() {
         return humidity;
@@ -66,4 +69,20 @@ public class HumAndTemDto {
     public void setMonthWaters(List<SysMonthWater> monthWaters) {
         this.monthWaters = monthWaters;
     }
+
+    public BoxStateChanged getStateChange() {
+        return stateChange;
+    }
+
+    public void setStateChange(BoxStateChanged stateChange) {
+        this.stateChange = stateChange;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
 }

+ 12 - 0
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/entity/SysFodder.java

@@ -39,6 +39,9 @@ public class SysFodder extends Model {
     private Integer farmId;
 
 
+    private Date updateTime;
+
+
 
 
     public String getId() {
@@ -88,4 +91,13 @@ public class SysFodder extends Model {
     public void setFarmId(Integer farmId) {
         this.farmId = farmId;
     }
+
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
 }

+ 40 - 0
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/mq/Hello1Consumer.java

@@ -0,0 +1,40 @@
+//package com.huimv.eco.mq;
+//
+//import cn.hutool.json.JSONUtil;
+//import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+//import com.huimv.eco.entity.BaseRoom;
+//import com.huimv.eco.service.IBaseRoomService;
+//import com.huimv.eco.sgd.fbox.models.BoxStateChanged;
+//import org.springframework.amqp.rabbit.annotation.Queue;
+//import org.springframework.amqp.rabbit.annotation.RabbitHandler;
+//import org.springframework.amqp.rabbit.annotation.RabbitListener;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Component;
+//
+//import java.util.Map;
+//
+//@Component
+////               Declare:声明              队列名               队列持久化 durable:持久耐用  自动删除
+//@RabbitListener(queuesToDeclare = @Queue(value = "hello1",durable = "true",autoDelete = "true"))
+//public class Hello1Consumer {
+//
+//    @Autowired
+//    private IBaseRoomService baseRoomService;
+//
+//    @RabbitHandler
+//    public void HelloConsumer(Map<String, String> map) {
+//
+//        String boxStateChanged = map.get("stateChange");
+//        BoxStateChanged boxStateChanged1 = JSONUtil.toBean(boxStateChanged, BoxStateChanged.class);
+//
+//        UpdateWrapper<BaseRoom> wrapper = new UpdateWrapper<>();
+//        wrapper.eq("box_id",boxStateChanged1.id);
+//        BaseRoom baseRoom = new BaseRoom();
+//        baseRoom.setStatus(boxStateChanged1.state);
+//        baseRoomService.update(baseRoom,wrapper);
+//        System.out.println( boxStateChanged1.state +"-------------->"+boxStateChanged1.id);
+//    }
+//
+//
+//}
+//

+ 228 - 0
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/mq/HelloConsumer.java

@@ -0,0 +1,228 @@
+package com.huimv.eco.mq;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.huimv.eco.entity.*;
+import com.huimv.eco.service.*;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.RabbitHandler;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Component
+//               Declare:声明              队列名               队列持久化 durable:持久耐用  自动删除
+@RabbitListener(queuesToDeclare = @Queue(value = "hello",durable = "true",autoDelete = "true"))
+public class HelloConsumer {
+
+
+    @Autowired
+    private IBaseRoomService baseRoomService;
+
+    @Autowired
+    private ISysHumidityService humidityService;
+
+    @Autowired
+    private ISysTemperatureService temperatureService;
+
+    @Autowired
+    private ISysFodderService fodderService;
+
+
+    @Autowired
+    private ISysMonthWaterService monthWaterService;
+
+    @Autowired
+    private RestTemplate restTemplate;
+    @Autowired
+    private RabbitTemplate rabbitTemplate;
+    String url = "http://120.27.234.126:8010/receiver/receiver/eco/save";
+    /**
+     * Handler:处理者
+     *
+     * @param
+     */
+    @RabbitHandler
+//    @RabbitListener(queues = MQConstant.ZFB_HANDLER_QUEUE)
+    public void HelloConsumer(Map<String, Object> map) {
+//        System.out.println("消费者:"+map);
+
+
+        JsonObject item = new JsonParser().parse((String) map.get("item")).getAsJsonObject();
+        Long Uid = (Long) map.get("Uid");
+        String name = item.get("name").getAsString();
+//        System.out.println(name);
+        if (name.contains("平均温度")) {
+            String[] split = name.split("-");
+            BaseRoom box_id = baseRoomService.getOne(new QueryWrapper<BaseRoom>().eq("room_name", split[0]).eq("box_id", Uid));
+            List<SysTemperature> one = temperatureService.list(new QueryWrapper<SysTemperature>().ge("create_time", DateUtil.offsetMinute(new Date(),-1)).eq("room_id",box_id.getId()));
+            if (ObjectUtil.isEmpty(one)) {
+                SysTemperature sysTemperature = new SysTemperature();
+                sysTemperature.setCreateTime(new Date(item.get("t").getAsLong()));
+                sysTemperature.setRoomId(box_id.getId());
+                sysTemperature.setOriginal(item.get("value").getAsDouble());
+                sysTemperature.setValue(new BigDecimal(item.get("value").getAsDouble() * 0.1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+                sysTemperature.setFarmId(1);
+                sysTemperature.setId(item.get("id").getAsString());
+                temperatureService.save(sysTemperature);
+//                System.out.println(item+"Uid = "+Uid);
+            }
+
+        }
+
+        if (name.contains("湿度")) {
+            String[] split = name.split("-");
+            BaseRoom box_id = baseRoomService.getOne(new QueryWrapper<BaseRoom>().eq("room_name", split[0]).eq("box_id", Uid));
+            List<SysHumidity> one = humidityService.list(new QueryWrapper<SysHumidity>().ge("create_time", DateUtil.offsetMinute(new Date(),-1)).eq("room_id",box_id.getId()));
+            if (ObjectUtil.isEmpty(one)) {
+                SysHumidity sysHumidity = new SysHumidity();
+                sysHumidity.setCreateTime(new Date(item.get("t").getAsLong()));
+                sysHumidity.setRoomId(box_id.getId());
+                sysHumidity.setValue(new BigDecimal(item.get("value").getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+                sysHumidity.setFarmId(1);
+                sysHumidity.setId(item.get("id").getAsString());
+
+                humidityService.save(sysHumidity);
+//                System.out.println(item+"Uid = "+Uid);
+            }
+
+//
+        }
+
+        //String oneUid = "-1277226674647203111";
+        //        String twoUid = "-1277176930335980834";
+        //        String threeUid = "-1277075358654397725";
+        if (name.contains("累计重量")) {
+            System.out.println(name);
+            if (-1277226674647203111L == Uid) {
+
+                saveFodder(item, 1);
+
+            }
+            if (-1277176930335980834L == Uid) {
+                saveFodder(item, 2);
+            }
+            if (-1277075358654397725L == Uid) {
+                saveFodder(item, 3);
+            }
+
+        }
+        List<SysMonthWater> dayWatersList = new ArrayList<>();
+        if (name.contains("日用水量")) {
+
+            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", 1)
+                            .orderByDesc("month_water_id")
+                            .last("LIMIT 1"));
+
+            SysMonthWater monthWater = new SysMonthWater();
+            monthWater.setFarmId(1);
+            Double newValue = new BigDecimal(item.get("value").getAsDouble() * 0.1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+            Double add;
+            if (newValue == null) {
+                newValue = 0.0;
+            }
+            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;
+                }
+
+            }
+
+            DecimalFormat df = new DecimalFormat("#.00");
+            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(item.get("id").getAsString());
+            monthWater.setRoomId(roomId);
+            if (newValue == null) {
+                newValue = 0.0;
+            }
+            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(new Date(item.get("t").getAsLong()));
+            dayWatersList.add(monthWater);
+            monthWaterService.saveBatch(dayWatersList);
+            HumAndTemDto humAndTemDto = new HumAndTemDto();
+
+            humAndTemDto.setMonthWaters(dayWatersList);
+            humAndTemDto.setType(0);
+            restTemplate.postForObject(url, humAndTemDto, String.class);
+        }
+
+//        System.out.println(s);
+
+    }
+    private void saveFodder(JsonObject item, int floorId) {
+//        System.out.println(item+""+floorId);
+        Double value = item.get("value").getAsDouble();
+        SysFodder oneFodder = fodderService.getOne(new QueryWrapper<SysFodder>().eq("floor_id", floorId).last("ORDER BY fodder_id DESC limit 1"));
+        Double oldVale = oneFodder.getValue();
+
+        if (oldVale < value){
+            oneFodder.setValue(value);
+            oneFodder.setId(item.get("id").getAsString());
+            oneFodder.setUpdateTime(new Date());
+            fodderService.updateById(oneFodder);
+        }else if (value < oldVale){
+            SysFodder fodder = new SysFodder();
+            fodder.setValue(value);
+            fodder.setCreateTime(new Date(item.get("t").getAsLong()));
+            fodder.setFloorId(floorId);
+            fodder.setId(item.get("id").getAsString());
+            fodder.setFarmId(1);
+            fodder.setUpdateTime(new Date());
+
+            fodderService.save(fodder);
+
+        }
+
+
+    }
+
+
+}
+

+ 24 - 0
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/mq/Test.java

@@ -0,0 +1,24 @@
+package com.huimv.eco.mq;
+
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/test")
+public class Test {
+    @Autowired
+    private RabbitTemplate rabbitTemplate;
+
+    @PostMapping("/test")
+    public String test(@RequestBody Map<String ,Object> map){
+        rabbitTemplate.convertAndSend("hello",map);
+
+        return "ss";
+
+    }
+
+
+}

+ 36 - 21
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/FBoxSignalRConnection.java

@@ -8,8 +8,11 @@ import com.google.gson.JsonObject;
 import com.huimv.eco.sgd.fbox.Logger;
 import com.huimv.eco.sgd.fbox.LoggerFactory;
 import com.huimv.eco.sgd.fbox.TokenManager;
+import com.huimv.eco.sgd.fbox.models.BoxStateChanged;
 import com.huimv.eco.sgd.fbox.signalr.SignalRConnectionBase;
+import org.springframework.stereotype.Component;
 
+import java.io.IOException;
 import java.net.Proxy;
 import java.text.SimpleDateFormat;
 import java.util.concurrent.ConcurrentHashMap;
@@ -70,10 +73,11 @@ public class FBoxSignalRConnection extends SignalRConnectionBase {
     SimpleDateFormat sdf  = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
     @Override
     protected void onHubProxyCreated(HubProxy hubProxy) {
+        SaveData saveData = new SaveData();
         //signalr实时数据推送事件,接收此事件数据前提条件,开启监控点数据推送控制接口(订阅)
         hubProxy.subscribe("dMonUpdateValue").addReceivedHandler(jsonElements -> {
             Global.threadPool.submit(() -> {
-                //try{
+//                try{
                     this.dmonMsgCounter.increment();
                     //System.out.println("Dmon data received: ");
                     //收到的推送数据
@@ -86,14 +90,18 @@ public class FBoxSignalRConnection extends SignalRConnectionBase {
                         String name = item.get("name").getAsString();
                         String value = item.get("value").getAsString();
                         long time = item.get("t").getAsLong();
-                        this.logger.logInformation(String.format(" %s, %s, %d\n",name,value,time));
+//                        System.out.print(jsonElements[1].getAsJsonArray()+"Uid = "+jsonElements[2].getAsLong());
+//                        this.logger.logInformation(String.format(" %s, %s, %d\n",name,value,time));
                         //监控点正常无status属性
-                        //long statu = item.get("status").getAsLong();
+//                        long statu = item.get("status").getAsLong();
                     };
                     //打印监控点的值集合,集合详细信息请看接口文档http://docs.flexem.net/fbox/zh-cn/tutorials/RealtimeDataPush.html
-                    System.out.printf("%s",jsonElements[1].getAsJsonArray());
-                    //打印boxUid
-                    System.out.printf("%s",jsonElements[2].getAsLong());
+                saveData.savData(jsonElements[1].getAsJsonArray(),jsonElements[2].getAsLong());
+
+
+//                    System.out.printf("%s",jsonElements[1].getAsJsonArray());
+//                    打印boxUid
+//                    System.out.printf("%s",jsonElements[2].getAsLong());
 //                }
 //                catch (Exception e) {
 //                    System.out.printf("%s", e);
@@ -132,20 +140,27 @@ public class FBoxSignalRConnection extends SignalRConnectionBase {
 //        });
 
         // signalr盒子状态变更事件
-//        hubProxy.subscribe("boxConnStateChanged").addReceivedHandler(jsonElements -> {
-//            Global.threadPool.submit(() -> {
-//                System.out.println("Box state changed.");
-//                if (jsonElements.length <= 0)
-//                    return;
-//                BoxStateChanged[] stateChanges = gson.fromJson(jsonElements[0], BoxStateChanged[].class);
-//                this.logger.logInformation(String.format("receive count: %d", stateChanges.length));
-//                for (BoxStateChanged stateChange : stateChanges) {
-//                    // stateChange.id 是盒子列表中BoxReg对象下的box.id,可以根据这个过滤要开的盒子。
-//                    // stateChange.state 为1、2是盒子上线事件。实时数据推送需要开点
+        hubProxy.subscribe("boxConnStateChanged").addReceivedHandler(jsonElements -> {
+            Global.threadPool.submit(() -> {
+                System.out.println("Box state changed.");
+                if (jsonElements.length <= 0)
+                    return;
+                BoxStateChanged[] stateChanges = gson.fromJson(jsonElements[0], BoxStateChanged[].class);
+                this.logger.logInformation(String.format("receive count: %d", stateChanges.length));
+                for (BoxStateChanged stateChange : stateChanges) {
+                    // stateChange.id 是盒子列表中BoxReg对象下的box.id,可以根据这个过滤要开的盒子。
+                    // stateChange.state 为1、2是盒子上线事件。实时数据推送需要开点
+                    try {
+                        saveData.savData(stateChange);
+                    }catch (Exception e){
+                        System.out.println(e);
+                    }
+
 //                    if (stateChange.state == 1 || stateChange.state == 2) {
 //                            try {
 //                                // 盒子每次上线后,均需要开启FBox数据推送控制接口(订阅)
-//                                Global.commServer.executePost("box/" + stateChange.id + "/dmon/start", String.class);
+//                                String s = Global.commServer.executePost("box/" + stateChange.id + "/dmon/start", String.class);
+//                                System.out.println(s);
 //                                // token有效期为两小时。若token过期,demo会自动刷新token。所以返回401后均需要重试接口
 //                                this.logger.logInformation(String.format("Start dmon points on box ok %s\n",stateChange.id));
 //                            } catch (IOException e) {
@@ -153,9 +168,9 @@ public class FBoxSignalRConnection extends SignalRConnectionBase {
 //                                e.printStackTrace();
 //                            }
 //                    }
-//                }
-//
-//            });
-//        });
+                }
+
+            });
+        });
     }
 }

+ 207 - 204
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/Main.java

@@ -1,215 +1,218 @@
-package com.huimv.eco.sgd;
-
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.json.JSONUtil;
-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.huimv.eco.sgd.fbox.models.BoxGroup;
-import com.huimv.eco.sgd.fbox.models.BoxReg;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class Main {
-    private static final long SLEEP_TIME = 1000;
-
-    public static void main(String[] args) throws IOException, InterruptedException {
-        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;
-
-        BoxGroup[] boxGroups = appServer.executeGet("api/client/box/grouped", BoxGroup[].class);
-        // 返回的是 盒子分组-盒子注册项(BoxReg) 的二层结构
-        List<Map> list = new ArrayList();
-        for (BoxGroup group : boxGroups) {
-            //盒子
-            for (BoxReg boxReg : group.boxRegs) {
-                if (boxReg.alias.contains("环控")){
-                    Monitory[] monitories = apiBaseServer.executeGet("/v2/box/" + boxReg.boxUid + "/dmon/grouped", Monitory[].class);
-                    //每个监控点
-                    List<Map> groupnames = new ArrayList();
-                    for (Monitory monitory : monitories) {
-//                        System.out.println("监控点------------->" + monitory.toString());
-                       List names = new ArrayList();
-                        for (Item item : monitory.items) {
-                            String name = item.name;
-                            if ( monitory.name.contains("每个房间") && name != null ) {
-                                if (name.contains("平均温度") || name.contains("湿度") ||name.contains("日用水量") ||name.contains("月用水量")  ) {
-                                    names.add(name);
-                                }
-                            }
-
-                        }
-                                              Map map = new HashMap();
-
-                        if (ObjectUtil.isNotEmpty(names)) {
-                            MonitoryValue[] monitoryValues = apiBaseServer.executePost("/v2/box/" + boxReg.boxUid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
-                            StringBuilder str = new StringBuilder();
-                            for (MonitoryValue monitoryValue : monitoryValues) {
-                                if (ObjectUtil.isNotEmpty(monitory)) {
-                                    str.append(JSONUtil.toJsonStr(monitoryValue));
-                                }
-
-                            }
-                            map.put("monitoryValues", str);
-                            map.put("grpName", monitory.name);
-//                        map.put("names",names);
-                            groupnames.add(map);
-                        }
-                    }
-
-                    if (ObjectUtil.isNotEmpty(groupnames)){
-                        Map map = new HashMap();
-                        map.put("name",boxReg.alias);
-                        map.put("groupnames",groupnames);
-
-                        list.add(map);
-                    }
-                }
-            }
-        }
-
-        for (Map map : list) {
-            System.out.println(map.get("name")+"----->"+map.get("groupnames"));
-        }
-
-
-    }
-
-
-
-
-   /* private static final long SLEEP_TIME = 3000;
-    public static void main(String[] args) {
-
-        ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
-
-        // 指定连接服务器的凭据参数
-        TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
-
-        ServerCaller commServer = new ServerCaller(tokenManager, Global.commServerApiUrl, Global.signalrClientId, loggerFactory);
-        ServerCaller appServer = new ServerCaller(tokenManager, Global.appServerApiUrl, Global.signalrClientId, loggerFactory);
-        ServerCaller hdataServer = new ServerCaller(tokenManager, Global.hdataServerApiUrl, Global.signalrClientId, loggerFactory);
-
-        Global.commServer = commServer;
-        Global.appServer = appServer;
-        Global.hdataServer = hdataServer;
-
-        //建立signalr实例,signalr为单例模式
-        FBoxSignalRConnection fboxSignalR = new FBoxSignalRConnection(Global.commServerSignalRUrl, Global.signalrClientId, tokenManager, Global.proxy, loggerFactory);
-
-        // 连接SignalR推送通道
-        fboxSignalR.start();
-//        fboxSignalR.onHubProxyCreated();
-        // signalr连上后,请看src/main/java/FBoxSignalRConnection.java 接受推送数据的回调类。
-
-        System.out.println("Box list:");
+//package com.huimv.eco.sgd;
+//
+//import cn.hutool.core.util.ObjectUtil;
+//import cn.hutool.json.JSONUtil;
+//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.huimv.eco.sgd.fbox.models.BoxGroup;
+//import com.huimv.eco.sgd.fbox.models.BoxReg;
+//
+//import javax.sound.midi.Soundbank;
+//import java.io.IOException;
+//import java.util.ArrayList;
+//import java.util.HashMap;
+//import java.util.List;
+//import java.util.Map;
+//
+//public class Main {
+////    private static final long SLEEP_TIME = 1000;
+//
+////    public static void main(String[] args) throws IOException, InterruptedException {
+////        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;
+////
+////        BoxGroup[] boxGroups = appServer.executeGet("api/client/box/grouped", BoxGroup[].class);
+////        // 返回的是 盒子分组-盒子注册项(BoxReg) 的二层结构
+////        List<Map> list = new ArrayList();
+////        for (BoxGroup group : boxGroups) {
+////            //盒子
+////            for (BoxReg boxReg : group.boxRegs) {
+////                if (boxReg.alias.contains("环控")){
+////                    Monitory[] monitories = apiBaseServer.executeGet("/v2/box/" + boxReg.boxUid + "/dmon/grouped", Monitory[].class);
+////                    //每个监控点
+////                    List<Map> groupnames = new ArrayList();
+////                    for (Monitory monitory : monitories) {
+//////                        System.out.println("监控点------------->" + monitory.toString());
+////                       List names = new ArrayList();
+////                        for (Item item : monitory.items) {
+////                            String name = item.name;
+////                            if ( monitory.name.contains("每个房间") && name != null ) {
+////                                if (name.contains("平均温度") || name.contains("湿度") ||name.contains("日用水量") ||name.contains("月用水量")  ) {
+////                                    names.add(name);
+////                                }
+////                            }
+////
+////                        }
+////                                              Map map = new HashMap();
+////
+////                        if (ObjectUtil.isNotEmpty(names)) {
+////                            MonitoryValue[] monitoryValues = apiBaseServer.executePost("/v2/box/" + boxReg.boxUid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
+////                            StringBuilder str = new StringBuilder();
+////                            for (MonitoryValue monitoryValue : monitoryValues) {
+////                                if (ObjectUtil.isNotEmpty(monitory)) {
+////                                    str.append(JSONUtil.toJsonStr(monitoryValue));
+////                                }
+////
+////                            }
+////                            map.put("monitoryValues", str);
+////                            map.put("grpName", monitory.name);
+//////                        map.put("names",names);
+////                            groupnames.add(map);
+////                        }
+////                    }
+////
+////                    if (ObjectUtil.isNotEmpty(groupnames)){
+////                        Map map = new HashMap();
+////                        map.put("name",boxReg.alias);
+////                        map.put("groupnames",groupnames);
+////
+////                        list.add(map);
+////                    }
+////
+////                }
+////            }
+////        }
+////
+////        for (Map map : list) {
+////            System.out.println(map.get("name")+"----->"+map.get("groupnames"));
+////        }
+////
+////
+////    }
+//
+//
+//
+//
+//    private static final long SLEEP_TIME = 3000;
+//    public static void main(String[] args) {
+//
+//        ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
+//
+//        // 指定连接服务器的凭据参数
+//        TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
+//
+//        ServerCaller commServer = new ServerCaller(tokenManager, Global.commServerApiUrl, Global.signalrClientId, loggerFactory);
+//        ServerCaller appServer = new ServerCaller(tokenManager, Global.appServerApiUrl, Global.signalrClientId, loggerFactory);
+//        ServerCaller hdataServer = new ServerCaller(tokenManager, Global.hdataServerApiUrl, Global.signalrClientId, loggerFactory);
+//
+//        Global.commServer = commServer;
+//        Global.appServer = appServer;
+//        Global.hdataServer = hdataServer;
+//
+//        //建立signalr实例,signalr为单例模式
+//        FBoxSignalRConnection fboxSignalR = new FBoxSignalRConnection(Global.commServerSignalRUrl, Global.signalrClientId, tokenManager, Global.proxy, loggerFactory);
+//
+//        // 连接SignalR推送通道
+//        fboxSignalR.start();
+////        fboxSignalR.onHubProxyCreated();
+//        // signalr连上后,请看src/main/java/FBoxSignalRConnection.java 接受推送数据的回调类。
+//
+//        System.out.println("Box list:");
+////        try {
+////以下为调接口示例,可忽略,若使用,参数请根据文档填写自己的账号下的参数
+//
+//        // 获取盒子列表接口示例,可忽略
 //        try {
-//以下为调接口示例,可忽略,若使用,参数请根据文档填写自己的账号下的参数
-
-        // 获取盒子列表接口示例,可忽略
-        try {
-            BoxGroup[] boxGroups = Global.appServer.executeGet("api/client/box/grouped", BoxGroup[].class);
-            // 返回的是 盒子分组-盒子注册项(BoxReg) 的二层结构
-//            for (BoxGroup group : boxGroups) {
-//                for (BoxReg boxReg : group.boxRegs) {
-//                    System.out.printf("\t%s\t%s\t%s\n", boxReg.alias, boxReg.box.boxNo, boxReg.box.boxType);
+//            BoxGroup[] boxGroups = Global.appServer.executeGet("api/client/box/grouped", BoxGroup[].class);
+//            // 返回的是 盒子分组-盒子注册项(BoxReg) 的二层结构
+////            for (BoxGroup group : boxGroups) {
+////                for (BoxReg boxReg : group.boxRegs) {
+////                    System.out.printf("\t%s\t%s\t%s\n", boxReg.alias, boxReg.box.boxNo, boxReg.box.boxType);
+////                }
+////            }
+////            commServer.executePost("box/300220120152/dmon/start", Object.class);
+//            for (BoxGroup boxGroup : boxGroups) {
+//                for (BoxReg boxReg : boxGroup.boxRegs) {
+//                    commServer.executePost("box/" + boxReg.boxUid +"/dmon/start", Object.class);
+//                    Thread.sleep(1000);
+//
 //                }
 //            }
-//            commServer.executePost("box/300220120152/dmon/start", Object.class);
-            for (BoxGroup boxGroup : boxGroups) {
-                for (BoxReg boxReg : boxGroup.boxRegs) {
-                    commServer.executePost("box/" + boxReg.boxUid +"/dmon/start", Object.class);
-                    Thread.sleep(1000);
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-//        try {
-//            JsonObject jsonObject = commServer.executePost("dmon/222171502968050130/start", JsonObject.class);
-//        } catch (IOException e) {
-//            System.out.println("调用失败!");
-//            e.printStackTrace();
-//        }
-
-//        try {
-//            commServer.executePost("box/-6025651360718913057/dmon/start", Object.class);
 //        } catch (Exception e) {
-//            System.out.println("500");
 //            e.printStackTrace();
 //        }
-        System.out.println("测试");
-
-
-
+////        try {
+////            JsonObject jsonObject = commServer.executePost("dmon/222171502968050130/start", JsonObject.class);
+////        } catch (IOException e) {
+////            System.out.println("调用失败!");
+////            e.printStackTrace();
+////        }
+//
+////        try {
+////            commServer.executePost("box/-6025651360718913057/dmon/start", Object.class);
+////        } catch (Exception e) {
+////            System.out.println("500");
+////            e.printStackTrace();
+////        }
+//        System.out.println("测试");
+//
+//
+//
 //
 //            // 获取按通道的数据接口示例 (数组第1维是固定两个元素时间和值,第2维是单个通道的所有数据,第3维是请求的每个通道)
-//            Object[][][] result =
-////                    String  result =
-//                    Global.hdataServer.executePost(String.format("v2/hdata/get"),
-//                            new GetByChannelHdataArgs(channelIds, new Date().getTime() - 7 * 86400000, new Date().getTime(), -100, 3),
-////                    String.class);
-//                            Object[][][].class);
-//
-//            System.out.println(result);
-//
-//            SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd");
-//
-//            for (int i = 0; i < result.length; i++) {
-//                Object[][] channel = result[i];
-//                System.out.print("Channel " + channelNames.get(i));
-//                for (Object[] datum : channel) {
-//                    System.out.printf("(%s: %s)", dateFormatter.format(new Date(Math.round((double) datum[0]))), datum[1]);
-//                }
-//                System.out.println();
-//            }
+////            Object[][][] result =
+//////                    String  result =
+////                    Global.hdataServer.executePost(String.format("v2/hdata/get"),
+////                            new GetByChannelHdataArgs(channelIds, new Date().getTime() - 7 * 86400000, new Date().getTime(), -100, 3),
+//////                    String.class);
+////                            Object[][][].class);
+////
+////            System.out.println(result);
+////
+////            SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd");
+////
+////            for (int i = 0; i < result.length; i++) {
+////                Object[][] channel = result[i];
+////                System.out.print("Channel " + channelNames.get(i));
+////                for (Object[] datum : channel) {
+////                    System.out.printf("(%s: %s)", dateFormatter.format(new Date(Math.round((double) datum[0]))), datum[1]);
+////                }
+////                System.out.println();
+////            }
+////
+////            //获取按行的数据接口示例(每行固定有通道个数个数据,如果这行的时间某些通道没有值,则为null)
+////            ByRowHdata result2 =
+//////            String result2 =
+////                    Global.hdataServer.executePost(String.format("v2/hdata/get"),
+////                            new GetByRowHdataArgs(channelIds, new Date().getTime() - 7 * 86400000, new Date().getTime(), -100, 3),
+//////                            String.class);
+////                            ByRowHdata.class);
+//////            System.out.println(result2);
+////
+////            for (ByRowHdataRow row : result2.rows) {
+////                System.out.print(dateFormatter.format(row.getTime()) + ": ");
+////                Object[] c = row.c;
+////                for (int i = 0; i < c.length; i++) {
+////                    Object value = c[i];
+////                    if (i == 0) {
+////                        System.out.printf("%s", value);
+////                    } else {
+////                        System.out.printf(",%s", value);
+////                    }
+////                }
+////                System.out.println();
+////            }
 //
-//            //获取按行的数据接口示例(每行固定有通道个数个数据,如果这行的时间某些通道没有值,则为null)
-//            ByRowHdata result2 =
-////            String result2 =
-//                    Global.hdataServer.executePost(String.format("v2/hdata/get"),
-//                            new GetByRowHdataArgs(channelIds, new Date().getTime() - 7 * 86400000, new Date().getTime(), -100, 3),
-////                            String.class);
-//                            ByRowHdata.class);
-////            System.out.println(result2);
-//
-//            for (ByRowHdataRow row : result2.rows) {
-//                System.out.print(dateFormatter.format(row.getTime()) + ": ");
-//                Object[] c = row.c;
-//                for (int i = 0; i < c.length; i++) {
-//                    Object value = c[i];
-//                    if (i == 0) {
-//                        System.out.printf("%s", value);
-//                    } else {
-//                        System.out.printf(",%s", value);
-//                    }
-//                }
-//                System.out.println();
-//            }
-
-
-//        } catch (IOException e) {
-//            e.printStackTrace();
-//        }
+//
+////        } catch (IOException e) {
+////            e.printStackTrace();
+////        }
+////
+////
+////        Scanner s = new Scanner(System.in);
+////        s.nextLine();
+//    }
 //
 //
-//        Scanner s = new Scanner(System.in);
-//        s.nextLine();
-    }*/
-
-
-}
+//}

+ 143 - 0
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/SaveData.java

@@ -0,0 +1,143 @@
+package com.huimv.eco.sgd;
+
+
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.huimv.eco.entity.*;
+import com.huimv.eco.service.*;
+import com.huimv.eco.sgd.fbox.models.BoxStateChanged;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class SaveData {
+
+//    @Autowired
+//    private IBaseRoomService baseRoomService;
+//
+//    @Autowired
+//    private ISysHumidityService humidityService;
+//
+//    @Autowired
+//    private ISysTemperatureService temperatureService;
+//
+//    @Autowired
+//    private ISysFodderService fodderService;
+
+
+    public void savData(BoxStateChanged stateChange){
+        RestTemplate restTemplate = new RestTemplate();
+
+        HumAndTemDto humAndTemDto = new HumAndTemDto();
+        humAndTemDto.setType(1);
+        humAndTemDto.setStateChange(stateChange);
+
+        restTemplate.postForEntity("http://120.27.234.126:8010/receiver/receiver/eco/save",humAndTemDto,String.class);
+    }
+
+
+    public void savData(JsonArray jsonElements ,Long Uid){
+
+
+        for (JsonElement jsonElement : jsonElements) {
+            JsonObject item = jsonElement.getAsJsonObject();
+            String name = item.get("name").getAsString();
+            String gname = item.get("gname").getAsString();
+            if ("房间状态".equals(gname)){
+                if (name.contains("平均温度")){
+//                    System.out.println(name);
+                    RestTemplate restTemplate = new RestTemplate();
+
+                    Map<String,Object> map = new HashMap();
+                    map.put("item",item.toString());
+                    map.put("Uid",Uid);
+                    restTemplate.postForEntity("http://127.0.0.1:10001/test/test",map,String.class);
+
+
+//                BaseRoom box_id = baseRoomService.getOne(new QueryWrapper<BaseRoom>().eq("box_id", Uid));
+//                SysTemperature sysTemperature = new SysTemperature();
+//                sysTemperature.setCreateTime(new Date(item.get("id").getAsLong()));
+//                sysTemperature.setRoomId(box_id.getId());
+//                sysTemperature.setOriginal(item.get("value").getAsDouble());
+//                sysTemperature.setValue(item.get("value").getAsDouble()*0.1);
+//                sysTemperature.setFarmId(1);
+//                sysTemperature.setId(item.get("id").getAsString());
+//
+//                temperatureService.save(sysTemperature);
+//                System.out.println(jsonElements+"Uid = "+Uid);
+                }
+
+                if (name.contains("日用水量")) {
+//                    System.out.println(name);
+                    RestTemplate restTemplate = new RestTemplate();
+
+                    Map<String, Object> map = new HashMap();
+                    map.put("item", item.toString());
+                    map.put("Uid", Uid);
+                    restTemplate.postForEntity("http://127.0.0.1:10001/test/test", map, String.class);
+                }
+
+                 if (name.contains("湿度")){
+//                     System.out.println(name);
+                    RestTemplate restTemplate = new RestTemplate();
+                    Map<String,Object> map = new HashMap();
+                    map.put("item",item.toString());
+                    map.put("Uid",Uid);
+                    restTemplate.postForEntity("http://127.0.0.1:10001/test/test",map,String.class);
+
+//                BaseRoom box_id = baseRoomService.getOne(new QueryWrapper<BaseRoom>().eq("box_id", Uid));
+//                SysHumidity sysHumidity = new SysHumidity();
+//                sysHumidity.setCreateTime(new Date(item.get("id").getAsLong()));
+//                sysHumidity.setRoomId(box_id.getId());
+//                sysHumidity.setValue(( Math.round(item.get("value").getAsDouble() * 100)*0.01));
+//                sysHumidity.setFarmId(1);
+//                sysHumidity.setId(item.get("id").getAsString());
+//
+//                humidityService.save(sysHumidity);
+//                System.out.println(jsonElements+"Uid = "+Uid);
+                }
+
+                //String oneUid = "-1277226674647203111";
+                //        String twoUid = "-1277176930335980834";
+                //        String threeUid = "-1277075358654397725";
+            }
+            if ("设备状态".equals(gname)){
+                if (name.contains("累计重量")){
+                    if (-1277226674647203111L == Uid){
+
+                        saveFodder(item,1,Uid);
+
+                    }
+                    if (-1277176930335980834L == Uid) {
+                        saveFodder(item,2,Uid);
+                    }
+                    if (-1277075358654397725L == Uid){
+                        saveFodder(item,3,Uid);
+                    }
+
+                }
+            }
+
+        }
+    }
+
+    private void saveFodder(JsonObject item, int floorId,Long Uid) {
+
+        RestTemplate restTemplate = new RestTemplate();
+        Map<String,Object> map = new HashMap();
+        map.put("item",item.toString());
+        map.put("Uid",Uid);
+        restTemplate.postForEntity("http://127.0.0.1:10001/test/test",map,String.class);
+
+    }
+
+}

+ 75 - 0
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/SendTimer.java

@@ -0,0 +1,75 @@
+package com.huimv.eco.sgd;
+
+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.huimv.eco.sgd.fbox.models.BoxGroup;
+import com.huimv.eco.sgd.fbox.models.BoxReg;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.ArrayList;
+import java.util.Collections;
+
+@Component
+public class SendTimer  implements CommandLineRunner {
+
+    private static final long SLEEP_TIME = 3000;
+
+    @Override
+    public void run(String... args) throws Exception {
+        System.out.println("test---------------------------------");
+        ConsoleLoggerFactory loggerFactory = new ConsoleLoggerFactory();
+
+        // 指定连接服务器的凭据参数
+        TokenManager tokenManager = new TokenManager(new StaticCredentialProvider(Global.clientId, Global.clientSecret, Global.username, Global.password), Global.idServerUrl, loggerFactory);
+
+        ServerCaller commServer = new ServerCaller(tokenManager, Global.commServerApiUrl, Global.signalrClientId, loggerFactory);
+        ServerCaller appServer = new ServerCaller(tokenManager, Global.appServerApiUrl, Global.signalrClientId, loggerFactory);
+        ServerCaller hdataServer = new ServerCaller(tokenManager, Global.hdataServerApiUrl, Global.signalrClientId, loggerFactory);
+
+        Global.commServer = commServer;
+        Global.appServer = appServer;
+        Global.hdataServer = hdataServer;
+
+        //建立signalr实例,signalr为单例模式
+        FBoxSignalRConnection fboxSignalR = new FBoxSignalRConnection(Global.commServerSignalRUrl, Global.signalrClientId, tokenManager, Global.proxy, loggerFactory);
+
+        // 连接SignalR推送通道
+        fboxSignalR.start();
+//        fboxSignalR.onHubProxyCreated();
+        // signalr连上后,请看src/main/java/FBoxSignalRConnection.java 接受推送数据的回调类。
+        System.out.println("Box list:");
+//        try {
+//以下为调接口示例,可忽略,若使用,参数请根据文档填写自己的账号下的参数
+
+        // 获取盒子列表接口示例,可忽略
+        try {
+//            BoxGroup[] boxGroups = Global.appServer.executeGet("api/client/box/grouped", BoxGroup[].class);
+//
+//            for (BoxGroup boxGroup : boxGroups) {
+//                for (BoxReg boxReg : boxGroup.boxRegs) {
+//                   commServer.executePost("box/" + boxReg.boxUid + "/dmon/start", Object.class);
+////                    System.out.println(o);
+//
+//                    Thread.sleep(1000);
+//
+//                }
+            ArrayList<Long> boxUids = new ArrayList<>();
+            Collections.addAll(boxUids,-3987994512570974018L,-3988048891151908679L,-3988105265818894156L,-3988200977017601873L,-6025535388011986450L,-6025569468577480215L,-6025600385899560476L,-6025651360718913057L,-7581223551802277610L,-7581256732572122863L,-7581284816289529588L,-7581318515676675833L,-1277226674647203111L,-1277176930335980834L,-1277075358654397725L);
+            for (Long boxUid : boxUids) {
+                commServer.executePost("box/" + boxUid + "/dmon/start", Object.class);
+                Thread.sleep(1000);
+
+            }
+//                FBoxSignalRConnection fBoxSignalRConnection = new FBoxSignalRConnection();
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+}

+ 1 - 0
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/fbox/ConsoleLogger.java

@@ -14,6 +14,7 @@ public class ConsoleLogger implements Logger {
 
     @Override
     public void logInformation(String msg) {
+
         System.out.println(formatter.format(new Date()) + " [Info ][" + name + "] " + msg);
     }
 

+ 12 - 0
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/sgd/fbox/models/BoxStateChanged.java

@@ -1,7 +1,19 @@
 package com.huimv.eco.sgd.fbox.models;
 
+import lombok.Data;
+
+
 public class BoxStateChanged {
     public long id;
     public int state;
     public int net;
+
+    @Override
+    public String toString() {
+        return "{" +
+                "id:" + id +
+                ", state:" + state +
+                ", net:" + net +
+                '}';
+    }
 }

+ 5 - 39
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/timer/SendTime.java

@@ -49,9 +49,10 @@ public class SendTime {
 
 
 
+    //    @Scheduled(cron = "0 * * * * ?")
     @Scheduled(cron = "0 0/30 * * * ?")
-//    @Scheduled(cron = "0 * * * * ?")
     private void sendTime(){
+        System.out.println("test");
 
         DateTime dateTime = DateUtil.offsetMinute(new Date(), -30);
         HumAndTemDto humAndTemDto = new HumAndTemDto();
@@ -69,27 +70,17 @@ public class SendTime {
 
         //料
         QueryWrapper<SysFodder> fodderWrapper = new QueryWrapper<>();
-        fodderWrapper.ge("create_time",dateTime);
+        fodderWrapper.ge("update_time",dateTime);
         List<SysFodder> fodders = fodderService.list(fodderWrapper);
 
-        //月用水
-        QueryWrapper<SysMonthWater> monthWaterWrapper = new QueryWrapper<>();
-        monthWaterWrapper.ge("create_time",dateTime);
-        List<SysMonthWater> monthWaters = monthWaterService.list(monthWaterWrapper);
-
-
-        //月用水
-        QueryWrapper<SysDayWater> dayWaterWrapper = new QueryWrapper<>();
-        dayWaterWrapper.ge("create_time",dateTime);
-        List<SysDayWater> dayWaters = dayWaterService.list(dayWaterWrapper);
 
 
         humAndTemDto.setHumidity(hum);
         humAndTemDto.setTemperature(tem);
         humAndTemDto.setWarningInfos(warningInfos);
         humAndTemDto.setFodders(fodders);
-        humAndTemDto.setMonthWaters(monthWaters);
-        humAndTemDto.setDayWaters(dayWaters);
+        humAndTemDto.setType(0);
+
         String s = restTemplate.postForObject(url, humAndTemDto, String.class);
         System.out.println(s);
 
@@ -97,29 +88,4 @@ public class SendTime {
 
 
 
-    @Scheduled(cron = "0 0 * * * ?")
-//    @Scheduled(cron = "0 * * * * ?")
-    private void sendTime1(){
-
-        DateTime dateTime = DateUtil.offsetHour(new Date(), -1);
-        HumAndTemDto humAndTemDto = new HumAndTemDto();
-
-
-        //月用水
-        QueryWrapper<SysMonthWater> monthWaterWrapper = new QueryWrapper<>();
-        monthWaterWrapper.ge("create_time",dateTime);
-        List<SysMonthWater> monthWaters = monthWaterService.list(monthWaterWrapper);
-
-
-        //月用水
-        QueryWrapper<SysDayWater> dayWaterWrapper = new QueryWrapper<>();
-        dayWaterWrapper.ge("create_time",dateTime);
-        List<SysDayWater> dayWaters = dayWaterService.list(dayWaterWrapper);
-
-        humAndTemDto.setMonthWaters(monthWaters);
-        humAndTemDto.setDayWaters(dayWaters);
-        String s = restTemplate.postForObject(url, humAndTemDto, String.class);
-        System.out.println(s);
-
-    }
 }

+ 243 - 186
huimv-farm-device/huimv-farm-eco/src/main/java/com/huimv/eco/timer/SgdTimer.java

@@ -1,5 +1,8 @@
+/*
 package com.huimv.eco.timer;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.huimv.eco.entity.*;
@@ -17,6 +20,7 @@ import com.zhenzi.sms.ZhenziSmsClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
 
 import java.io.IOException;
 import java.text.DecimalFormat;
@@ -60,109 +64,118 @@ public class SgdTimer {
     @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);
-                        }
+    @Autowired
+    private RestTemplate restTemplate;
 
-                    }
 
-                }
-                humidityService.saveBatch(humList);
-                temperatureService.saveBatch(temList);
+    private Integer hyFarmId = 1;
 
-                humWarning(humList,minHum,maxHum);
-                temWarning(temList,minTem,maxTem);
+    String url = "http://120.27.234.126:8010/receiver/receiver/eco/save";
 
 
-            }
-        }
 
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        System.out.println("更新温湿度信息,更新时间------------->"+ new Date());
-    }
+    //更新环境数据
+//    @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)) {
+//                String str = apiBaseServer.executePost("/v2/box/" +uid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), String.class);
+//                System.out.println(str);
+//                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<>();
@@ -374,7 +387,7 @@ public class SgdTimer {
                 for (Monitory monitory : monitories) {
                     for (Item item : monitory.items) {
                         String name = item.name;
-                        if (monitory.name.contains("每个房间") && name != null&& name.startsWith("房舍")) {
+                        if (monitory.name.contains("房间状态") && name != null&& name.startsWith("房舍")) {
                             if (name.contains("日用水量") ) {
                                 names.add(name);
                             }
@@ -420,6 +433,11 @@ public class SgdTimer {
                         dayWatersList.add(dayWater);
                     }
                     dayWaterService.saveBatch(dayWatersList);
+                    HumAndTemDto humAndTemDto = new HumAndTemDto();
+                    humAndTemDto.setDayWaters(dayWatersList);
+                    humAndTemDto.setType(0);
+                    String s = restTemplate.postForObject(url, humAndTemDto, String.class);
+                    System.out.println(s);
                 }
             }
 
@@ -451,7 +469,7 @@ public class SgdTimer {
                 for (Monitory monitory : monitories) {
                     for (Item item : monitory.items) {
                         String name = item.name;
-                        if (monitory.name.contains("每个房间") && name != null&& name.startsWith("房舍")) {
+                        if (monitory.name.contains("房间状态") && name != null&& name.startsWith("房舍")) {
                             if (name.contains("日用水量") ) {
                                 names.add(name);
                             }
@@ -466,7 +484,6 @@ public class SgdTimer {
                     for (MonitoryValue monitoryValue : monitoryValues) {
 
 
-
                         if (ObjectUtil.isEmpty(monitoryValue)){
                             continue;
                         }
@@ -485,6 +502,9 @@ public class SgdTimer {
                         monthWater.setFarmId(hyFarmId);
                         Double newValue = (Double)monitoryValue.getValue();
                         Double add  ;
+                        if (newValue == null){
+                            newValue=0.0;
+                        }
                         if (ObjectUtil.isEmpty(oldWater)){
                             if (newValue == null){
                                 add = 0.0;
@@ -516,6 +536,9 @@ public class SgdTimer {
 
                         monthWater.setId(monitoryValue.getId());
                         monthWater.setRoomId(roomId);
+                        if (newValue ==null){
+                            newValue  = 0.0;
+                        }
                         if (newValue != 0.0){
                             String format = df.format(newValue);
                             if (format.length()==3){
@@ -528,105 +551,136 @@ public class SgdTimer {
                         }
                         monthWater.setCreateTime(monitoryValue.getTimestamp());
                         dayWatersList.add(monthWater);
-
                     }
                     monthWaterService.saveBatch(dayWatersList);
+                    HumAndTemDto humAndTemDto = new HumAndTemDto();
+
+                    humAndTemDto.setMonthWaters(dayWatersList);
+                    humAndTemDto.setType(0);
+                    String s = restTemplate.postForObject(url, humAndTemDto, String.class);
+                    System.out.println(s);
+
                 }
             }
 
         } 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);
-        }
+        System.out.println("更新月用水信息,更新时间------------->"+ new Date());
 
 
-        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());
 
-    }
+    //更新料控
+//    @Scheduled(cron = "0 0/6 * * * ? ")
+//    @Scheduled(cron = "0 * * * * ?")
+//    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);
+//        for (MonitoryValue monitoryValue : monitoryValues) {
+//
+//            System.out.println(monitoryValue);
+//        }
+//        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);
+//            oneFodder.setUpdateTime(new Date());
+//            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);
+//            fodder.setUpdateTime(new Date());
+//
+//            fodderService.save(fodder);
+//
+//        }
+//
+//
+//
+//        MonitoryValue[] twoMonitoryValues = apiBaseServer.executePost("/v2/box/" + twoUid + "/dmon/value/get", new MonitoryGetArgs(names, null, new ArrayList()), MonitoryValue[].class);
+//        for (MonitoryValue twoMonitoryValue : twoMonitoryValues) {
+//            System.out.println(twoMonitoryValue);
+//        }
+//        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);
+//            twoFodder.setUpdateTime(new Date());
+//            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);
+//            fodder.setUpdateTime(new Date());
+//            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);
+//        for (MonitoryValue threeMonitoryValue : threeMonitoryValues) {
+//
+//            System.out.println(threeMonitoryValue);
+//        }
+//        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);
+//            threeFodder.setUpdateTime(new Date());
+//            fodderService.updateById(threeFodder);
+//            System.out.println(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);
+//            fodder.setUpdateTime(new Date());
+//            fodderService.save(fodder);
+//
+//        }
+//
+//
+//        System.out.println("更新料塔信息,更新时间------------->" + new Date());
+//
+//    }
 
 
 
@@ -660,7 +714,8 @@ public class SgdTimer {
 
     }
 
-     /*  //更新盒子,房间信息
+     */
+/*  //更新盒子,房间信息
     @Scheduled(cron = "0 0 0 1/7 * ?")
 //    @Scheduled(cron = "0 0/6 * * * ?")
     private void updateBox(){
@@ -712,9 +767,11 @@ public class SgdTimer {
             e.printStackTrace();
         }
 
-    }*/
+    }*//*
+
 
 
 }
 
 
+*/

+ 26 - 1
huimv-farm-device/huimv-farm-eco/src/main/resources/application-dev.yml

@@ -6,11 +6,36 @@ spring:
   #------DataSource-----
   datasource:
     url: jdbc:mysql://192.168.1.7:3306/huimv-farm-device?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    url: jdbc:mysql://192.168.1.7:3306/huimv-farm-device?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
     username: root
     password: hm123456
     driver-class-name: com.mysql.cj.jdbc.Driver
-#    driver-class-name: com.mysql.jdbc.Driver
+    hikari:
+      maximum-pool-size: 60
+      data-source-properties:
+        setIdleTimeout: 60000
+        setConnectionTimeout: 60000
+        setValidationTimeout: 3000
+        setLoginTimeout: 5
+        setMaxLifetime: 60000
+  #    driver-class-name: com.mysql.jdbc.Driver
   jpa:
     hibernate:
       ddl-auto: update
     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+
+  redis:
+    host: 122.112.224.199
+    port: 6379
+    password: hm123456
+
+  rabbitmq:
+    host: 121.36.134.218
+    port: 5672
+    username: admin
+    password: admin
+    connection-timeout: 60s
+    listener:
+      direct:
+        acknowledge-mode: none
+    publisher-returns: true

Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
huimv-farm-device/huimv-farm-eco/src/main/resources/application-prod.yml


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
huimv-farm-device/huimv-farm-eco/src/main/resources/application-prod2.yml


+ 2 - 1
huimv-farm-device/huimv-farm-eco/src/main/resources/application.properties

@@ -1,5 +1,6 @@
 spring.profiles.active=dev
 #spring.profiles.active=prod
+#spring.profiles.active=prod2
 
 #时间格式配置
 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
@@ -8,7 +9,7 @@ spring.jackson.time-zone=GMT+8
 # 数据中心数据推送地址
 dataCenter.ipAddr=http://115.238.57.190
 dataCenter.port=:10091
-# 日总称重数据服务
+# 日5总称重数据服务
 dataCenter.service.dayWeight=/receiver/farm/weight/putDayWeight
 # 批次称重数据服务
 dataCenter.service.batchWeight=/receiver/farm/weight/putBatchWeight

+ 3 - 0
huimv-farm-device/huimv-farm-netip/src/main/java/com/huimv/huimvfarmnetip/task/ScheduledService.java

@@ -17,6 +17,7 @@ import java.io.UnsupportedEncodingException;
 import java.text.ParseException;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Scanner;
 
 /**
  * @Project : huimv.shiwan
@@ -69,6 +70,8 @@ public class ScheduledService {
         log.info(dateUtil.getTodayMissionText()+",发送数据>>"+ipJo.toJSONString());
         //发送数据
         _doPostSimple(updateNetIpService, textUtil.encode(ipJo.toJSONString()));
+
+
     }
 
     //发送简单数据