Jelajahi Sumber

生物防控人员2

523096025 2 bulan lalu
induk
melakukan
1e163662a3
54 mengubah file dengan 2252 tambahan dan 352 penghapusan
  1. TEMPAT SAMPAH
      huimv-admin/lib/reader.jar
  2. 5 0
      huimv-admin/pom.xml
  3. 176 0
      huimv-admin/src/main/java/com/huimv/admin/common/utils/SnowflakeDistributeId.java
  4. 1 6
      huimv-admin/src/main/java/com/huimv/admin/config/InterceptorConfig.java
  5. 1 1
      huimv-admin/src/main/java/com/huimv/admin/controller/CameraHKVSSync.java
  6. 162 0
      huimv-admin/src/main/java/com/huimv/admin/controller/YiDongApi.java
  7. 8 0
      huimv-admin/src/main/java/com/huimv/admin/controller/feedVo/VedioData.java
  8. 9 0
      huimv-admin/src/main/java/com/huimv/admin/controller/feedVo/YiDong.java
  9. 8 0
      huimv-admin/src/main/java/com/huimv/admin/controller/feedVo/YiDongData.java
  10. 9 0
      huimv-admin/src/main/java/com/huimv/admin/controller/feedVo/YiDongVdeio.java
  11. 82 0
      huimv-admin/src/main/java/com/huimv/admin/reader/App.java
  12. 34 0
      huimv-admin/src/main/java/com/huimv/admin/reader/DestroyEpc.java
  13. 70 0
      huimv-admin/src/main/java/com/huimv/admin/reader/GpiInOut.java
  14. 25 0
      huimv-admin/src/main/java/com/huimv/admin/reader/Lock6b.java
  15. 28 0
      huimv-admin/src/main/java/com/huimv/admin/reader/Lock6bGet.java
  16. 49 0
      huimv-admin/src/main/java/com/huimv/admin/reader/LockEpc.java
  17. 34 0
      huimv-admin/src/main/java/com/huimv/admin/reader/LockGb.java
  18. 49 0
      huimv-admin/src/main/java/com/huimv/admin/reader/PcUtils.java
  19. 61 0
      huimv-admin/src/main/java/com/huimv/admin/reader/Read6b.java
  20. 74 0
      huimv-admin/src/main/java/com/huimv/admin/reader/Read6bFilter.java
  21. 60 0
      huimv-admin/src/main/java/com/huimv/admin/reader/ReadEpc.java
  22. 92 0
      huimv-admin/src/main/java/com/huimv/admin/reader/ReadEpcFilter.java
  23. 76 0
      huimv-admin/src/main/java/com/huimv/admin/reader/ReadGJb.java
  24. 60 0
      huimv-admin/src/main/java/com/huimv/admin/reader/ReadGb.java
  25. 84 0
      huimv-admin/src/main/java/com/huimv/admin/reader/ReadGbFilter.java
  26. 39 0
      huimv-admin/src/main/java/com/huimv/admin/reader/ReadTL.java
  27. 23 0
      huimv-admin/src/main/java/com/huimv/admin/reader/SetBeep.java
  28. 37 0
      huimv-admin/src/main/java/com/huimv/admin/reader/SetGpo.java
  29. 36 0
      huimv-admin/src/main/java/com/huimv/admin/reader/SetPower.java
  30. 36 0
      huimv-admin/src/main/java/com/huimv/admin/reader/SubscribeGpiTrigger.java
  31. 29 0
      huimv-admin/src/main/java/com/huimv/admin/reader/TcpClient.java
  32. 63 0
      huimv-admin/src/main/java/com/huimv/admin/reader/TcpServer.java
  33. 29 0
      huimv-admin/src/main/java/com/huimv/admin/reader/Write6bUserData.java
  34. 35 0
      huimv-admin/src/main/java/com/huimv/admin/reader/WriteEpc.java
  35. 38 0
      huimv-admin/src/main/java/com/huimv/admin/reader/WriteEpcFilter.java
  36. 27 0
      huimv-admin/src/main/java/com/huimv/admin/reader/WriteEpcReserveData.java
  37. 39 0
      huimv-admin/src/main/java/com/huimv/admin/reader/WriteEpcUserData.java
  38. 38 0
      huimv-admin/src/main/java/com/huimv/admin/reader/WriteGJbEpc.java
  39. 39 0
      huimv-admin/src/main/java/com/huimv/admin/reader/WriteGJbUserData.java
  40. 28 0
      huimv-admin/src/main/java/com/huimv/admin/reader/WriteGbEpc.java
  41. 38 0
      huimv-admin/src/main/java/com/huimv/admin/reader/WriteGbFilter.java
  42. 39 0
      huimv-admin/src/main/java/com/huimv/admin/reader/WriteGbSafe.java
  43. 29 0
      huimv-admin/src/main/java/com/huimv/admin/reader/WriteGbUserData.java
  44. 296 296
      huimv-admin/src/main/java/com/huimv/admin/timer/FeedTimer.java
  45. 2 1
      huimv-admin/src/main/java/com/huimv/admin/timer/GasTimer.java
  46. 2 2
      huimv-admin/src/main/java/com/huimv/admin/timer/ProtTimer.java
  47. 5 5
      huimv-admin/src/main/java/com/huimv/admin/timer/ShenChanTimer.java
  48. TEMPAT SAMPAH
      huimv-admin/src/main/resources/15586885_huatong.ifarmcloud.com.jks
  49. 2 2
      huimv-admin/src/main/resources/application-prod.yml
  50. 28 28
      huimv-receive/src/main/java/com/huimv/receive/ReceiveApplication.java
  51. 6 1
      huimv-receive/src/main/java/com/huimv/receive/controller/LoginController.java
  52. 1 1
      huimv-receive/src/main/java/com/huimv/receive/service/impl/LoginServiceImpl.java
  53. 9 7
      huimv-receive/src/main/resources/application-dev.yml
  54. 2 2
      huimv-receive/src/main/resources/application.properties

TEMPAT SAMPAH
huimv-admin/lib/reader.jar


+ 5 - 0
huimv-admin/pom.xml

@@ -17,6 +17,11 @@
     <artifactId>huimv-admin</artifactId>
     <dependencies>
         <dependency>
+            <groupId>com.gg.reader</groupId>
+            <artifactId>greader-api</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>

+ 176 - 0
huimv-admin/src/main/java/com/huimv/admin/common/utils/SnowflakeDistributeId.java

@@ -0,0 +1,176 @@
+package com.huimv.admin.common.utils;
+
+public class SnowflakeDistributeId {
+
+
+    // ==============================Fields===========================================
+    /**
+     * 开始时间截 (2015-01-01)
+     */
+    private final long twepoch = 1420041600000L;
+
+    /**
+     * 机器id所占的位数
+     */
+    private final long workerIdBits = 5L;
+
+    /**
+     * 数据标识id所占的位数
+     */
+    private final long datacenterIdBits = 5L;
+
+    /**
+     * 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数)
+     */
+    private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
+
+    /**
+     * 支持的最大数据标识id,结果是31
+     */
+    private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits);
+
+    /**
+     * 序列在id中占的位数
+     */
+    private final long sequenceBits = 12L;
+
+    /**
+     * 机器ID向左移12位
+     */
+    private final long workerIdShift = sequenceBits;
+
+    /**
+     * 数据标识id向左移17位(12+5)
+     */
+    private final long datacenterIdShift = sequenceBits + workerIdBits;
+
+    /**
+     * 时间截向左移22位(5+5+12)
+     */
+    private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
+
+    /**
+     * 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095)
+     */
+    private final long sequenceMask = -1L ^ (-1L << sequenceBits);
+
+    /**
+     * 工作机器ID(0~31)
+     */
+    private long workerId;
+
+    /**
+     * 数据中心ID(0~31)
+     */
+    private long datacenterId;
+
+    /**
+     * 毫秒内序列(0~4095)
+     */
+    private long sequence = 0L;
+
+    /**
+     * 上次生成ID的时间截
+     */
+    private long lastTimestamp = -1L;
+
+    //==============================Constructors=====================================
+
+    /**
+     * 构造函数
+     *
+     * @param workerId     工作ID (0~31)
+     * @param datacenterId 数据中心ID (0~31)
+     */
+    public SnowflakeDistributeId(long workerId, long datacenterId) {
+        if (workerId > maxWorkerId || workerId < 0) {
+            throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
+        }
+        if (datacenterId > maxDatacenterId || datacenterId < 0) {
+            throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", maxDatacenterId));
+        }
+        this.workerId = workerId;
+        this.datacenterId = datacenterId;
+    }
+
+    // ==============================Methods==========================================
+
+    /**
+     * 获得下一个ID (该方法是线程安全的)
+     *
+     * @return SnowflakeId
+     */
+    public synchronized long nextId() {
+        long timestamp = timeGen();
+
+        //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
+        if (timestamp < lastTimestamp) {
+            throw new RuntimeException(
+                    String.format("Clock moved backwards.  Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
+        }
+
+        //如果是同一时间生成的,则进行毫秒内序列
+        if (lastTimestamp == timestamp) {
+            sequence = (sequence + 1) & sequenceMask;
+            //毫秒内序列溢出
+            if (sequence == 0) {
+                //阻塞到下一个毫秒,获得新的时间戳
+                timestamp = tilNextMillis(lastTimestamp);
+            }
+        }
+        //时间戳改变,毫秒内序列重置
+        else {
+            sequence = 0L;
+        }
+
+        //上次生成ID的时间截
+        lastTimestamp = timestamp;
+
+        //移位并通过或运算拼到一起组成64位的ID
+        return ((timestamp - twepoch) << timestampLeftShift) //
+                | (datacenterId << datacenterIdShift) //
+                | (workerId << workerIdShift) //
+                | sequence;
+    }
+
+    /**
+     * 阻塞到下一个毫秒,直到获得新的时间戳
+     *
+     * @param lastTimestamp 上次生成ID的时间截
+     * @return 当前时间戳
+     */
+    protected long tilNextMillis(long lastTimestamp) {
+        long timestamp = timeGen();
+        while (timestamp <= lastTimestamp) {
+            timestamp = timeGen();
+        }
+        return timestamp;
+    }
+
+    /**
+     * 返回以毫秒为单位的当前时间
+     *
+     * @return 当前时间(毫秒)
+     */
+    protected long timeGen() {
+        return System.currentTimeMillis();
+    }
+
+    public static void main(String[] args) {
+//        SnowflakeDistributeId idWorker = new SnowflakeDistributeId(0, 0);
+//        for (int i = 0; i < 1; i++) {
+//            long id = idWorker.nextId();
+////      System.out.println(Long.toBinaryString(id));
+//            System.out.println(id);
+//        }
+        for (int i = 0; i < 10; i++) {
+            for (int i1 = 0; i1 < 10; i1++) {
+                if (i1 ==3){
+                    break;
+                }
+                System.out.println(i + "*--------"+i1);
+            }
+        }
+    }
+
+}

+ 1 - 6
huimv-admin/src/main/java/com/huimv/admin/config/InterceptorConfig.java

@@ -5,12 +5,7 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-/**
- * @Description: 注册验证tocken的拦截器
- * @Author
- * @Date 2021/4/19 20:41
- * @Version V1.0
- */
+
 @Configuration
 public class InterceptorConfig implements WebMvcConfigurer {
     @Bean

+ 1 - 1
huimv-admin/src/main/java/com/huimv/admin/controller/CameraHKVSSync.java

@@ -166,7 +166,7 @@ public class CameraHKVSSync {
             }
         };
         String s = ArtemisHttpUtil.doPostStringArtemis(config, path, body, null, null, "application/json");
-        System.out.println(s);
+        System.out.println("---->"+s);
 
         return s;
     }

File diff ditekan karena terlalu besar
+ 162 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/YiDongApi.java


+ 8 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/feedVo/VedioData.java

@@ -0,0 +1,8 @@
+package com.huimv.admin.controller.feedVo;
+
+import lombok.Data;
+
+@Data
+public class VedioData {
+    private  String url;
+}

+ 9 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/feedVo/YiDong.java

@@ -0,0 +1,9 @@
+package com.huimv.admin.controller.feedVo;
+
+import lombok.Data;
+
+@Data
+public class YiDong {
+    private String resultCode;
+    private YiDongData data;
+}

+ 8 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/feedVo/YiDongData.java

@@ -0,0 +1,8 @@
+package com.huimv.admin.controller.feedVo;
+
+import lombok.Data;
+
+@Data
+public class YiDongData {
+    private String token;
+}

+ 9 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/feedVo/YiDongVdeio.java

@@ -0,0 +1,9 @@
+package com.huimv.admin.controller.feedVo;
+
+import lombok.Data;
+
+@Data
+public class YiDongVdeio {
+    private String resultCode;
+    private VedioData data;
+}

+ 82 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/App.java

@@ -0,0 +1,82 @@
+package com.huimv.admin.reader;
+
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.dal.HandlerTagEpcLog;
+import com.gg.reader.api.dal.HandlerTagEpcOver;
+import com.gg.reader.api.protocol.gx.*;
+
+public class App {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+//        if (client.openTcp("192.168.1.168:8160", 0))
+        if (client.openSerial("COM7:115200", 2000)) {
+            // 订阅标签上报事件
+            client.onTagEpcLog = new HandlerTagEpcLog() {
+                @Override
+                public void log(String readName, LogBaseEpcInfo logBaseEpcInfo) {
+                    // 回调内部如有阻塞,会影响API正常使用
+                    // 标签回调数量较多,请将标签数据先缓存起来再作业务处理
+                    if (null != logBaseEpcInfo && 0 == logBaseEpcInfo.getResult()) {
+                        System.out.println(logBaseEpcInfo);
+                    }
+                }
+            };
+            client.onTagEpcOver = new HandlerTagEpcOver() {
+                @Override
+                public void log(String readName, LogBaseEpcOver logBaseEpcOver) {
+                    if (null != logBaseEpcOver) {
+                        System.out.println("Epc log over.");
+                    }
+                }
+            };
+            // 停止指令,空闲态
+            MsgBaseStop msgBaseStop = new MsgBaseStop();
+            client.sendSynMsg(msgBaseStop);
+            if (0 == msgBaseStop.getRtCode()) {
+                System.out.println("Stop successful.");
+            } else {
+                System.out.println("Stop error.");
+            }
+
+
+
+            // 1个天线读卡(解开注释即两个天线读卡), 读取EPC数据区以及TID数据区
+            MsgBaseInventoryEpc msgBaseInventoryEpc = new MsgBaseInventoryEpc();
+            msgBaseInventoryEpc.setAntennaEnable(EnumG.AntennaNo_1 /*| EnumG.AntennaNo_2*/ );
+            msgBaseInventoryEpc.setInventoryMode(EnumG.InventoryMode_Inventory);
+
+            //ParamEpcReadTid tid = new ParamEpcReadTid();
+            //tid.setMode(EnumG.ParamTidMode_Auto);
+            //tid.setLen(6);
+            //msgBaseInventoryEpc.setReadTid(tid);
+
+            client.sendSynMsg(msgBaseInventoryEpc);
+            if (0 == msgBaseInventoryEpc.getRtCode()) {
+                System.out.println("Inventory epc successful.");
+            } else {
+                System.out.println("Inventory epc error.");
+            }
+
+            try {
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+            // 停止读卡,空闲态
+            client.sendSynMsg(msgBaseStop);
+            if (0 == msgBaseStop.getRtCode()) {
+                System.out.println("Stop successful.");
+            } else {
+                System.out.println("Stop error.");
+            }
+
+			System.out.println("Close the connection");
+            client.close();
+
+        } else {
+            System.out.println("Connect failure.");
+        }
+    }
+
+}

+ 34 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/DestroyEpc.java

@@ -0,0 +1,34 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseDestroyEpc;
+import com.gg.reader.api.protocol.gx.ParamEpcFilter;
+
+public class DestroyEpc {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+
+            MsgBaseDestroyEpc msg = new MsgBaseDestroyEpc();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            msg.setHexPassword("87654321");//保留区前4个字节 销毁密码
+
+            //匹配 可选参数
+            String tid = "E280110520007B05A8C208A9";
+            ParamEpcFilter filter = new ParamEpcFilter();
+            filter.setArea(EnumG.ParamFilterArea_TID);
+            filter.setHexData(tid);
+            filter.setBitStart(0);
+            filter.setBitLength(tid.length() * 4);
+            msg.setFilter(filter);
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Destroy success");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 70 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/GpiInOut.java

@@ -0,0 +1,70 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.dal.HandlerGpiOver;
+import com.gg.reader.api.dal.HandlerGpiStart;
+import com.gg.reader.api.protocol.gx.LogAppGpiOver;
+import com.gg.reader.api.protocol.gx.LogAppGpiStart;
+
+public class GpiInOut {
+
+	static long inTime = 0;//进触发时间
+	static long outTime = 0;//出触发时间
+	static long interval = 2000;//ms 间隔时间
+	static int inCount = 0;//进计数
+	static int outCount = 0;//出计数
+
+	public static void main(String[] args) {
+		GClient client = new GClient();
+		if (client.openSerial("COM7:115200", 2000)) {
+			subscribeHandler(client);
+			// 执行触发GPI动作 即可收到上报
+		}
+	}
+
+	// 订阅gpi触发上报
+	private static void subscribeHandler(GClient client) {
+		client.onGpiStart = new HandlerGpiStart() {
+			public void log(String s, LogAppGpiStart logAppGpiStart) {
+				// 索引从0开始
+				if (null != logAppGpiStart) {
+					//可自行切换任意配置好的gpi触发索引   0-1为进  1-0为出
+					if (logAppGpiStart.getGpiPort() == 0) {
+						inTime = logAppGpiStart.getSystemTime().getTime();
+						// 出
+						if (outTime != 0) {
+							if (inTime - outTime <= interval) {
+								outCount++;
+								System.out.println("---------出--"+outCount+"---------");
+								inTime = 0;
+								outTime = 0;
+							}
+						}
+					}
+
+					if (logAppGpiStart.getGpiPort() == 1) {
+						outTime = logAppGpiStart.getSystemTime().getTime();
+						// 进
+						if (inTime != 0) {
+							if (outTime - inTime <= interval) {
+								inCount++;
+								System.out.println("---------进--"+inCount+"---------");
+								inTime = 0;
+								outTime = 0;
+							}
+						}
+					}
+				}
+			}
+		};
+
+		client.onGpiOver = new HandlerGpiOver() {
+			public void log(String s, LogAppGpiOver logAppGpiOver) {
+				if (null != logAppGpiOver) {
+					System.out.println(logAppGpiOver);
+				}
+			}
+		};
+	}
+
+}

+ 25 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/Lock6b.java

@@ -0,0 +1,25 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.*;
+
+public class Lock6b {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+
+            MsgBaseLock6b msg = new MsgBaseLock6b();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            String tid = "E0040000B6B3E808";
+            msg.setHexMatchTid(tid);
+            msg.setLockIndex(9);//byte  从0开始
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Lock successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 28 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/Lock6bGet.java

@@ -0,0 +1,28 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseLock6bGet;
+
+public class Lock6bGet {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            MsgBaseLock6bGet msg = new MsgBaseLock6bGet();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            String tid = "E0040000B6B3E808";
+            msg.setHexMatchTid(tid);
+            //查询第9个字节锁定状态
+            msg.setLockIndex(9);//byte 从0开始
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Query success");
+                if (msg.getLockState() == 1) {
+                    System.out.println("已锁定");
+                } else {
+                    System.out.println("未锁定");
+                }
+            }
+        }
+    }
+}

+ 49 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/LockEpc.java

@@ -0,0 +1,49 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.*;
+
+public class LockEpc {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            //先写入密码
+            MsgBaseWriteEpc writeEpc = new MsgBaseWriteEpc();
+            writeEpc.setAntennaEnable(EnumG.AntennaNo_1);
+            writeEpc.setArea(EnumG.WriteArea_Reserved);//写保留区
+            writeEpc.setStart(2);//word  前4个字节代表销毁密码 后4个字节代表访问密码
+            String pas = "1234";
+            writeEpc.setHexWriteData(pas);
+            client.sendSynMsg(writeEpc);
+            if (0x00 == writeEpc.getRtCode()) {
+                System.out.println("Write successful." + "pas-->12340000");
+            } else {
+                System.out.println(writeEpc.getRtMsg());
+            }
+
+            //锁EPC
+            MsgBaseLockEpc msg = new MsgBaseLockEpc();
+            msg.setAntennaEnable(EnumG.AntennaNo_1 | EnumG.AntennaNo_2);
+            msg.setArea(2);//锁EPC区  锁定成功后写epc需要访问密码
+            msg.setMode(EnumG.LockMode_Lock);
+//
+            //匹配可选参数
+            String tid = "E280110520007B05A8C208A8";
+            ParamEpcFilter filter = new ParamEpcFilter();
+            filter.setArea(EnumG.ParamFilterArea_TID);
+            filter.setHexData(tid);
+            filter.setBitStart(0);
+            filter.setBitLength(tid.length() * 4);
+            msg.setFilter(filter);
+
+            msg.setHexPassword("12340000");
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Lock successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 34 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/LockGb.java

@@ -0,0 +1,34 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseLockGb;
+
+public class LockGb {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            MsgBaseLockGb msg = new MsgBaseLockGb();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            msg.setArea(0x10);//锁编码区
+            msg.setLockParam(0x01);//0x00,可读可写。0x01,可读不可写。0x02,不可读可写。0x03,不可读不可写。
+
+            //匹配标签锁
+//            String tid = "E280110520007B05A8C208A8";
+//            ParamEpcFilter filter = new ParamEpcFilter();
+//            filter.setArea(0x00);
+//            filter.setHexData(tid);
+//            filter.setBitStart(0);
+//            filter.setBitLength(tid.length() * 4);
+//            msg.setFilter(filter);
+
+            msg.setHexPassword("12345678");//写入安全区的密码
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Lock successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 49 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/PcUtils.java

@@ -0,0 +1,49 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.utils.BitBuffer;
+import com.gg.reader.api.utils.HexUtils;
+
+public class PcUtils {
+
+    //计算pc值
+    public static String getPc(int pcLen) {
+        int iPc = pcLen << 11;
+        BitBuffer buffer = BitBuffer.allocateDynamic();
+        buffer.put(iPc);
+        buffer.position(16);
+        byte[] bTmp = new byte[2];
+        buffer.get(bTmp);
+        return HexUtils.bytes2HexString(bTmp);
+    }
+
+   public static String getGbPc(int pcLen) {
+        int iPc = pcLen << 8;
+        BitBuffer buffer = BitBuffer.allocateDynamic();
+        buffer.put(iPc);
+        buffer.position(16);
+        byte[] bTmp = new byte[2];
+        buffer.get(bTmp);
+        return HexUtils.bytes2HexString(bTmp);
+    }
+
+    //写入数据不足4位后面补'0' AA00
+    public static String padLeft(String src, int len, char ch) {
+        int diff = len - src.length();
+        if (diff <= 0) {
+            return src;
+        }
+
+        char[] chars = new char[len];
+        System.arraycopy(src.toCharArray(), 0, chars, 0, src.length());
+        for (int i = src.length(); i < len; i++) {
+            chars[i] = ch;
+        }
+        return new String(chars);
+    }
+
+    public static int getValueLen(String data) {
+        data = data.trim();
+        return data.length() % 4 == 0 ? data.length() / 4
+                : (data.length() / 4) + 1;
+    }
+}

+ 61 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/Read6b.java

@@ -0,0 +1,61 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.*;
+import com.gg.reader.api.protocol.gx.*;
+
+public class Read6b {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            subscribeHandler(client);
+
+            MsgBaseInventory6b msgBaseInventory6b = new MsgBaseInventory6b();
+            msgBaseInventory6b.setAntennaEnable(EnumG.AntennaNo_1);
+            msgBaseInventory6b.setArea(EnumG.ReadMode6b_Tid);
+            msgBaseInventory6b.setInventoryMode(EnumG.InventoryMode_Inventory);
+            client.sendSynMsg(msgBaseInventory6b);
+            if (0x00 == msgBaseInventory6b.getRtCode()) {
+                System.out.println("MsgBaseInventory6b[OK].");
+            } else {
+                System.out.println(msgBaseInventory6b.getRtMsg());
+            }
+
+            try {
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+            MsgBaseStop stopMsg = new MsgBaseStop();
+            client.sendSynMsg(stopMsg);
+            if (0x00 == stopMsg.getRtCode()) {
+                System.out.println("MsgBaseStop Success");
+            } else {
+                System.out.println("MsgBaseStop Fail");
+            }
+
+            System.out.println("Close the connection");
+            client.close();
+        }
+    }
+
+
+    //订阅6b标签信息上报
+    private static void subscribeHandler(GClient client) {
+        client.onTag6bLog = new HandlerTag6bLog() {
+            @Override
+            public void log(String s, LogBase6bInfo logBase6bInfo) {
+                if (null != logBase6bInfo && logBase6bInfo.getResult() == 0) {
+                    System.out.println(logBase6bInfo);
+                }
+            }
+        };
+
+        client.onTag6bOver = new HandlerTag6bOver() {
+            @Override
+            public void log(String s, LogBase6bOver logBase6bOver) {
+                System.out.println("HandlerTag6bOver");
+            }
+        };
+    }
+}

+ 74 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/Read6bFilter.java

@@ -0,0 +1,74 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.dal.HandlerTag6bLog;
+import com.gg.reader.api.dal.HandlerTag6bOver;
+import com.gg.reader.api.protocol.gx.*;
+
+public class Read6bFilter {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            subscribeHandler(client);
+
+            MsgBaseInventory6b msg = new MsgBaseInventory6b();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            msg.setArea(EnumG.ReadMode6b_Tid);
+            msg.setInventoryMode(EnumG.InventoryMode_Inventory);
+
+            //读用户区 可选参数
+            Param6bReadUserdata userdata = new Param6bReadUserdata();
+            userdata.setStart(0);
+            userdata.setLen(10);//byte
+            msg.setReadUserdata(userdata);
+
+            //匹配TID 可选参数
+            String tid = "E0040000B6B3E808";
+            msg.setHexMatchTid(tid);
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("MsgBaseInventory6b[OK].");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+
+            try {
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+            MsgBaseStop stopMsg = new MsgBaseStop();
+            client.sendSynMsg(stopMsg);
+            if (0x00 == stopMsg.getRtCode()) {
+                System.out.println("MsgBaseStop Success");
+            } else {
+                System.out.println("MsgBaseStop Fail");
+            }
+
+            System.out.println("Close the connection");
+            client.close();
+
+        }
+    }
+
+    //订阅6b标签信息上报
+    private static void subscribeHandler(GClient client) {
+        client.onTag6bLog = new HandlerTag6bLog() {
+            @Override
+            public void log(String s, LogBase6bInfo logBase6bInfo) {
+                if (null != logBase6bInfo && logBase6bInfo.getResult() == 0) {
+                    System.out.println(logBase6bInfo);
+                }
+            }
+        };
+
+        client.onTag6bOver = new HandlerTag6bOver() {
+            @Override
+            public void log(String s, LogBase6bOver logBase6bOver) {
+                System.out.println("HandlerTag6bOver");
+            }
+        };
+    }
+}

+ 60 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/ReadEpc.java

@@ -0,0 +1,60 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.*;
+import com.gg.reader.api.protocol.gx.*;
+
+public class ReadEpc {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            subscribeHandler(client);
+
+
+            MsgBaseInventoryEpc msgBaseInventoryEpc = new MsgBaseInventoryEpc();
+            msgBaseInventoryEpc.setAntennaEnable(EnumG.AntennaNo_1);
+            msgBaseInventoryEpc.setInventoryMode(EnumG.InventoryMode_Inventory);
+            client.sendSynMsg(msgBaseInventoryEpc);
+            if (0x00 == msgBaseInventoryEpc.getRtCode()) {
+                System.out.println("MsgBaseInventoryEpc[OK].");
+            } else {
+                System.out.println(msgBaseInventoryEpc.getRtMsg());
+            }
+
+            try {
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+            MsgBaseStop stopMsg = new MsgBaseStop();
+            client.sendSynMsg(stopMsg);
+            if (0x00 == stopMsg.getRtCode()) {
+                System.out.println("MsgBaseStop Success");
+            } else {
+                System.out.println("MsgBaseStop Fail");
+            }
+
+            System.out.println("Close the connection");
+            client.close();
+        }
+    }
+
+    //订阅6c标签信息上报
+    private static void subscribeHandler(GClient client) {
+        client.onTagEpcLog = new HandlerTagEpcLog() {
+            @Override
+            public void log(String s, LogBaseEpcInfo logBaseEpcInfo) {
+                if (null != logBaseEpcInfo && logBaseEpcInfo.getResult() == 0) {
+                    System.out.println(logBaseEpcInfo);
+                }
+            }
+        };
+
+        client.onTagEpcOver = new HandlerTagEpcOver() {
+            @Override
+            public void log(String s, LogBaseEpcOver logBaseEpcOver) {
+                System.out.println("HandlerTagEpcOver");
+            }
+        };
+    }
+}

+ 92 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/ReadEpcFilter.java

@@ -0,0 +1,92 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.dal.HandlerTagEpcLog;
+import com.gg.reader.api.dal.HandlerTagEpcOver;
+import com.gg.reader.api.protocol.gx.*;
+
+
+public class ReadEpcFilter {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM9:115200", 2000)) {
+            subscribeHandler(client);
+
+            MsgBaseInventoryEpc msg = new MsgBaseInventoryEpc();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            msg.setInventoryMode(EnumG.InventoryMode_Inventory);
+
+            //匹配TID读 E280110520007993A8F708A8  可选参数
+            ParamEpcFilter filter = new ParamEpcFilter();
+            String tid = "E280110520007993A8F708A8";
+            filter.setArea(EnumG.ParamFilterArea_TID);
+            filter.setBitStart(0);
+            filter.setHexData(tid);
+            filter.setBitLength(tid.length() * 4);
+            msg.setFilter(filter);
+
+            //读TID 默认只读EPC 可选参数
+            ParamEpcReadTid readTid = new ParamEpcReadTid();
+            readTid.setMode(EnumG.ParamTidMode_Auto);
+            readTid.setLen(6);//word
+            msg.setReadTid(readTid);
+
+            //读UserData 可选参数
+            ParamEpcReadUserdata readUserdata = new ParamEpcReadUserdata();
+            readUserdata.setStart(0);
+            readUserdata.setLen(4);//word
+            msg.setReadUserdata(readUserdata);
+
+            //读保留区 可选参数
+            ParamEpcReadReserved readReserved = new ParamEpcReadReserved();
+            readReserved.setStart(0);
+            readReserved.setLen(4);//word
+            msg.setReadReserved(readReserved);
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("MsgBaseInventoryEpc[OK].");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+
+
+            try {
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+            MsgBaseStop stopMsg = new MsgBaseStop();
+            client.sendSynMsg(stopMsg);
+            if (0x00 == stopMsg.getRtCode()) {
+                System.out.println("MsgBaseStop Success");
+            } else {
+                System.out.println("MsgBaseStop Fail");
+            }
+
+            System.out.println("Close the connection");
+            client.close();
+
+        }
+    }
+
+    //订阅6c标签信息上报
+    private static void subscribeHandler(GClient client) {
+        client.onTagEpcLog = new HandlerTagEpcLog() {
+            @Override
+            public void log(String s, LogBaseEpcInfo logBaseEpcInfo) {
+                if (null != logBaseEpcInfo && logBaseEpcInfo.getResult() == 0) {
+                    System.out.println(logBaseEpcInfo);
+                }
+            }
+        };
+
+        client.onTagEpcOver = new HandlerTagEpcOver() {
+            @Override
+            public void log(String s, LogBaseEpcOver logBaseEpcOver) {
+                System.out.println("HandlerTagEpcOver");
+            }
+        };
+    }
+}

+ 76 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/ReadGJb.java

@@ -0,0 +1,76 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.*;
+import com.gg.reader.api.protocol.gx.*;
+
+public class ReadGJb {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            subscribeHandler(client);
+
+            MsgBaseInventoryGJb msg = new MsgBaseInventoryGJb();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);//1号天线
+            msg.setInventoryMode(EnumG.InventoryMode_Inventory);
+
+            //同时读TID
+//            msg.setReadTid(new ParamEpcReadTid(0,6));
+
+            //同时读UserData
+//            msg.setReadUserdata(new ParamEpcReadUserdata(0,2));
+
+            //匹配TID读 E280110520007B05A8C208A8  可选参数
+//            ParamEpcFilter filter = new ParamEpcFilter();
+//            String tid = "E280110520007B05A8C208A8";
+//            filter.setArea(0x00);
+//            filter.setBitStart(0);
+//            filter.setHexData(tid);
+//            filter.setBitLength(tid.length() * 4);
+//            msg.setFilter(filter);
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("MsgBaseInventoryGJb[OK].");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+
+            try {
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+            MsgBaseStop stopMsg = new MsgBaseStop();
+            client.sendSynMsg(stopMsg);
+            if (0x00 == stopMsg.getRtCode()) {
+                System.out.println("MsgBaseStop Success");
+            } else {
+                System.out.println("MsgBaseStop Fail");
+            }
+
+            System.out.println("Close the connection");
+            client.close();
+        }
+    }
+
+    //订阅GJB标签信息上报
+    private static void subscribeHandler(GClient client) {
+        client.onTagGJbLog = new HandlerTagGJbLog() {
+            @Override
+            public void log(String s, LogBaseGJbInfo logBaseGjbInfo) {
+                if (logBaseGjbInfo.getResult() == 0) {
+                    System.out.println(logBaseGjbInfo);
+                }
+            }
+        };
+
+        client.onTagGJbOver = new HandlerTagGJbOver() {
+            @Override
+            public void log(String s, LogBaseGJbOver logBaseGjbOver) {
+                System.out.println("HandlerTagGjbOver");
+            }
+        };
+
+    }
+}

+ 60 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/ReadGb.java

@@ -0,0 +1,60 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.*;
+import com.gg.reader.api.protocol.gx.*;
+
+public class ReadGb {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            subscribeHandler(client);
+
+            MsgBaseInventoryGb msgBaseInventoryGb = new MsgBaseInventoryGb();
+            msgBaseInventoryGb.setAntennaEnable(EnumG.AntennaNo_1);//1号天线与2号天线读
+            msgBaseInventoryGb.setInventoryMode(EnumG.InventoryMode_Inventory);
+            client.sendSynMsg(msgBaseInventoryGb);
+            if (0x00 == msgBaseInventoryGb.getRtCode()) {
+                System.out.println("MsgBaseInventoryGb[OK].");
+            } else {
+                System.out.println(msgBaseInventoryGb.getRtMsg());
+            }
+
+            try {
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+            MsgBaseStop stopMsg = new MsgBaseStop();
+            client.sendSynMsg(stopMsg);
+            if (0x00 == stopMsg.getRtCode()) {
+                System.out.println("MsgBaseStop Success");
+            } else {
+                System.out.println("MsgBaseStop Fail");
+            }
+
+            System.out.println("Close the connection");
+            client.close();
+        }
+    }
+
+    //订阅GB标签信息上报
+    private static void subscribeHandler(GClient client) {
+        client.onTagGbLog = new HandlerTagGbLog() {
+            @Override
+            public void log(String s, LogBaseGbInfo logBaseGbInfo) {
+                if (null != logBaseGbInfo && logBaseGbInfo.getResult() == 0) {
+                    System.out.println(logBaseGbInfo);
+                }
+            }
+        };
+
+        client.onTagGbOver = new HandlerTagGbOver() {
+            @Override
+            public void log(String s, LogBaseGbOver logBaseGbOver) {
+                System.out.println("HandlerTagGbOver");
+            }
+        };
+
+    }
+}

+ 84 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/ReadGbFilter.java

@@ -0,0 +1,84 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.*;
+import com.gg.reader.api.protocol.gx.*;
+
+public class ReadGbFilter {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            subscribeHandler(client);
+
+            MsgBaseInventoryGb msg = new MsgBaseInventoryGb();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            msg.setInventoryMode(EnumG.InventoryMode_Inventory);
+
+            //匹配TID读 E280110520007B05A8C208A8  可选参数
+//            ParamEpcFilter filter = new ParamEpcFilter();
+//            String tid = "E280110520007B05A8C208A8";
+//            filter.setArea(EnumG.ParamFilterArea_TID);
+//            filter.setBitStart(0);
+//            filter.setHexData(tid);
+//            filter.setBitLength(tid.length() * 4);
+//            msg.setFilter(filter);
+
+            //读TID 默认只读EPC 可选参数
+            ParamEpcReadTid readTid = new ParamEpcReadTid();
+            readTid.setMode(EnumG.ParamTidMode_Auto);
+            readTid.setLen(6);//word
+            msg.setReadTid(readTid);
+
+            //读UserData 可选参数
+            ParamGbReadUserdata readUserdata = new ParamGbReadUserdata();
+            readUserdata.setChildArea(0x30);
+            readUserdata.setStart(4);
+            readUserdata.setLen(6);//word
+            msg.setReadUserdata(readUserdata);
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("MsgBaseInventoryGb[OK].");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+
+            try {
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+            MsgBaseStop stopMsg = new MsgBaseStop();
+            client.sendSynMsg(stopMsg);
+            if (0x00 == stopMsg.getRtCode()) {
+                System.out.println("MsgBaseStop Success");
+            } else {
+                System.out.println("MsgBaseStop Fail");
+            }
+
+            System.out.println("Close the connection");
+            client.close();
+
+        }
+    }
+
+    //订阅GB标签信息上报
+    private static void subscribeHandler(GClient client) {
+        client.onTagGbLog = new HandlerTagGbLog() {
+            @Override
+            public void log(String s, LogBaseGbInfo logBaseGbInfo) {
+                if (null != logBaseGbInfo && logBaseGbInfo.getResult() == 0) {
+                    System.out.println(logBaseGbInfo);
+                }
+            }
+        };
+
+        client.onTagGbOver = new HandlerTagGbOver() {
+            @Override
+            public void log(String s, LogBaseGbOver logBaseGbOver) {
+                System.out.println("HandlerTagGbOver");
+            }
+        };
+
+    }
+}

+ 39 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/ReadTL.java

@@ -0,0 +1,39 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.dal.HandlerTagTLLog;
+import com.gg.reader.api.dal.HandlerTagTLOver;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.LogBaseTLInfo;
+import com.gg.reader.api.protocol.gx.LogBaseTLOver;
+import com.gg.reader.api.protocol.gx.MsgBaseInventoryTL;
+
+public class ReadTL {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            subscribeHandler(client);
+            MsgBaseInventoryTL msg = new MsgBaseInventoryTL();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            msg.setInventoryMode(EnumG.InventoryMode_Inventory);
+            client.sendSynMsg(msg);
+            System.err.println(msg.getRtCode() + "-->" + msg.getRtMsg());
+        }
+    }
+
+    //订阅标签信息上报
+    private static void subscribeHandler(GClient client) {
+        client.onTagTLog = new HandlerTagTLLog() {
+            @Override
+            public void log(String s, LogBaseTLInfo logBaseTLInfo) {
+                System.err.println(logBaseTLInfo);
+            }
+        };
+        client.onTagTLOver = new HandlerTagTLOver() {
+            @Override
+            public void log(String s, LogBaseTLOver logBaseTLOver) {
+
+            }
+        };
+    }
+}

+ 23 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/SetBeep.java

@@ -0,0 +1,23 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.MsgAppSetBeep;
+
+public class SetBeep {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+
+            MsgAppSetBeep msg=new MsgAppSetBeep();
+            msg.setBeepStatus(1);//0-停止 1-响
+            msg.setBeepMode(0);//0-响一次 1-常响
+            client.sendSynMsg(msg);
+            if (msg.getRtCode()==0){
+                System.out.println(msg.getRtMsg());
+            }else {
+                System.err.println(msg.getRtMsg());
+            }
+
+        }
+    }
+}

+ 37 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/SetGpo.java

@@ -0,0 +1,37 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.MsgAppSetGpo;
+
+public class SetGpo {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            //高低电平切换会发出声响
+
+            MsgAppSetGpo msg = new MsgAppSetGpo();
+            msg.setGpo1(1);//gpo1 设置高电平
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Set success");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+            msg.setGpo1(1);//gpo1 设置高电平
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Set success");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+
+        }
+    }
+}

+ 36 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/SetPower.java

@@ -0,0 +1,36 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.MsgBaseGetPower;
+import com.gg.reader.api.protocol.gx.MsgBaseSetPower;
+
+import java.util.Hashtable;
+
+public class SetPower {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+
+            Hashtable<Integer, Integer> powers = new Hashtable<>();
+            powers.put(1, 28);
+            powers.put(2, 29);
+
+            MsgBaseSetPower msg = new MsgBaseSetPower();
+            msg.setDicPower(powers);
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Set success");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+
+            MsgBaseGetPower getPower = new MsgBaseGetPower();
+            client.sendSynMsg(getPower);
+            if (0x00 == getPower.getRtCode()) {
+                System.out.println(getPower);
+            } else {
+                System.out.println(getPower.getRtMsg());
+            }
+        }
+    }
+}

+ 36 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/SubscribeGpiTrigger.java

@@ -0,0 +1,36 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.*;
+import com.gg.reader.api.protocol.gx.*;
+
+public class SubscribeGpiTrigger {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            subscribeHandler(client);
+			//执行触发GPI动作 即可收到上报
+        }
+    }
+
+    //订阅gpi触发上报
+    private static void subscribeHandler(GClient client) {
+        client.onGpiStart = new HandlerGpiStart() {
+            @Override
+            public void log(String s, LogAppGpiStart logAppGpiStart) {
+                //索引从0开始
+                if (null != logAppGpiStart) {
+                    System.out.println(logAppGpiStart);
+                }
+            }
+        };
+
+        client.onGpiOver = new HandlerGpiOver() {
+            @Override
+            public void log(String s, LogAppGpiOver logAppGpiOver) {
+                if (null != logAppGpiOver) {
+                    System.out.println(logAppGpiOver);
+                }
+            }
+        };
+    }
+}

+ 29 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/TcpClient.java

@@ -0,0 +1,29 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.dal.HandlerTcpDisconnected;
+
+
+public class TcpClient {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openTcp("192.168.1.168:8160", 2000)) {
+            System.out.println("连接成功");
+            subscribeHandler(client);
+            client.setSendHeartBeat(true);//设置发送心跳检测tcp连接是否正常  默认关闭
+            System.out.println("------拔掉网线、关闭wifi、通信通道被其它占用15秒之后即可触发断连上报----------");
+        }
+    }
+
+
+    //订阅TCP断开连接上报
+    private static void subscribeHandler(final GClient client) {
+        client.onDisconnected = new HandlerTcpDisconnected() {
+            @Override
+            public void log(String s) {
+                System.out.println("连接" + s + "已断开");
+                client.close();//释放当前连接资源
+            }
+        };
+    }
+}

+ 63 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/TcpServer.java

@@ -0,0 +1,63 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.dal.GServer;
+import com.gg.reader.api.dal.HandlerGClientConnected;
+import com.gg.reader.api.dal.HandlerTcpDisconnected;
+import com.gg.reader.api.protocol.gx.MsgBaseStop;
+
+/**
+ * 处于客户端模式时,tcp连接不可用,若需要使用,请使用串口连接设置为服务器模式
+ */
+public class TcpServer {
+
+
+    public static void main(String[] args) {
+        GServer server = new GServer();
+        // TODO: 首先通过[读写器管理软件]设置设备为客户端模式 ip为上位机ip 端口为所要监听的端口
+        if (server.open(8160)) {
+            subscribeServerHandler(server);
+            System.out.println("开始监听");
+        } else {
+            System.out.println("监听失败");
+        }
+
+    }
+
+
+    //订阅监听上报
+    private static void subscribeServerHandler(GServer server) {
+        server.onGClientConnected = new HandlerGClientConnected() {
+            @Override
+            public void log(GClient gClient, String serialNumber) {
+                System.out.println(gClient.getName() + "---监听成功");
+                gClient.setSendHeartBeat(true);//开启心跳检测Tcp连接状态
+                gClient.setPrint(true);
+                subscribeTcpHandler(gClient);//订阅Tcp断连上报
+
+                testStop(gClient);//测试监听成功的连接是否通信正常
+            }
+        };
+    }
+
+    //订阅TCP断开连接上报
+    private static void subscribeTcpHandler(final GClient client) {
+        client.onDisconnected = new HandlerTcpDisconnected() {
+            @Override
+            public void log(String s) {
+                System.out.println("连接" + s + "已断开");
+                client.close();//释放当前连接资源
+            }
+        };
+    }
+
+    private static void testStop(GClient client) {
+        MsgBaseStop msg = new MsgBaseStop();
+        client.sendSynMsg(msg);
+        if (0x00 == msg.getRtCode()) {
+            System.out.println("Stop success");
+        } else {
+            System.out.println(msg.getRtMsg());
+        }
+    }
+}

+ 29 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/Write6bUserData.java

@@ -0,0 +1,29 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseWrite6b;
+
+public class Write6bUserData {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+
+            MsgBaseWrite6b msg = new MsgBaseWrite6b();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            msg.setStart(8);//byte 前八个字节为本身TID
+            msg.setHexMatchTid("E0040000F8B3E808");//匹配TID
+
+            String data = "12";
+            int len = PcUtils.getValueLen(data);
+            data = PcUtils.padLeft(data, len * 2, '0');
+            msg.setHexWriteData(data);
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Write successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 35 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/WriteEpc.java

@@ -0,0 +1,35 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseWriteEpc;
+
+public class WriteEpc {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            MsgBaseWriteEpc msg = new MsgBaseWriteEpc();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            //字起始地址 第0个为CRC,不可写
+            msg.setStart(1);//word
+            //写EPC,数据默认为 hex 432
+            msg.setArea(EnumG.WriteArea_Epc);
+            String sWriteHexData = "432"; // 写入数据 (16进制)
+            System.out.println("Write hex " + sWriteHexData);
+
+            int iWordLen = PcUtils.getValueLen(sWriteHexData);
+
+            // PC值为EPC区域的长度标识(前5个bit标记长度),参考文档说明
+            sWriteHexData = PcUtils.getPc(iWordLen) + PcUtils.padLeft(sWriteHexData.toUpperCase(), 4 * iWordLen, '0'); // PC值+数据内容
+            msg.setHexWriteData(sWriteHexData);
+            // 若需要写入带特殊编码数据,请自行进行编码并使用 "BwriteData" 属性。
+            // msg.setBwriteData(HexUtils.hexString2Bytes(sWriteHexData));
+            client.sendSynMsg(msg);
+            if (0 == msg.getRtCode()) {
+                System.out.println("Write successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 38 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/WriteEpcFilter.java

@@ -0,0 +1,38 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseWriteEpc;
+import com.gg.reader.api.protocol.gx.ParamEpcFilter;
+
+public class WriteEpcFilter {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            MsgBaseWriteEpc msg = new MsgBaseWriteEpc();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            msg.setArea(EnumG.WriteArea_Userdata);//写UserData
+            msg.setStart(0);
+            String data = "1234";
+            int len = PcUtils.getValueLen(data);
+            data = PcUtils.padLeft(data, len * 4, '0');
+            msg.setHexWriteData(data);
+
+            //匹配参数
+            String tid = "E280110520007A5CA8AB08A8";
+            ParamEpcFilter filter = new ParamEpcFilter();
+            filter.setArea(EnumG.ParamFilterArea_TID);
+            filter.setHexData(tid);
+            filter.setBitStart(0);
+            filter.setBitLength(tid.length() * 4);
+            msg.setFilter(filter);
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Write successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 27 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/WriteEpcReserveData.java

@@ -0,0 +1,27 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseWriteEpc;
+
+public class WriteEpcReserveData {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+
+            MsgBaseWriteEpc writeEpc = new MsgBaseWriteEpc();
+            writeEpc.setAntennaEnable(EnumG.AntennaNo_1);
+            writeEpc.setArea(EnumG.WriteArea_Reserved);//写保留区
+            //写入访问密码
+            writeEpc.setStart(2);//word  前4个字节代表销毁密码 后4个字节代表访问密码
+            String pas = "12345678";
+            writeEpc.setHexWriteData(pas);
+            client.sendSynMsg(writeEpc);
+            if (0x00 == writeEpc.getRtCode()) {
+                System.out.println("Write successful." + "pas-->12345678");
+            } else {
+                System.out.println(writeEpc.getRtMsg());
+            }
+        }
+    }
+}

+ 39 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/WriteEpcUserData.java

@@ -0,0 +1,39 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseWriteEpc;
+
+public class WriteEpcUserData {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+
+            MsgBaseWriteEpc msg = new MsgBaseWriteEpc();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            //写UserData
+            msg.setArea(EnumG.WriteArea_Userdata);
+            msg.setStart(0);
+            String data = "ABC";
+            int len = PcUtils.getValueLen(data);
+            data = PcUtils.padLeft(data, len * 4, '0');
+            msg.setHexWriteData(data);
+
+//            //匹配参数  匹配TID
+//            String tid = "E280110520007993A8F708A8";
+//            ParamEpcFilter filter = new ParamEpcFilter();
+//            filter.setArea(EnumG.ParamFilterArea_TID);
+//            filter.setHexData(tid);
+//            filter.setBitStart(0);
+//            filter.setBitLength(tid.length() * 4);
+//            msg.setFilter(filter);
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Write successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 38 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/WriteGJbEpc.java

@@ -0,0 +1,38 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseWriteGJb;
+
+public class WriteGJbEpc {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            MsgBaseWriteGJb msg = new MsgBaseWriteGJb();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            msg.setStart(0);
+            //0x01,标签编码区
+            msg.setArea(0x01);
+            String data = "1234AAAA";
+            int len = PcUtils.getValueLen(data);
+            String s = PcUtils.getGbPc(len) + PcUtils.padLeft(data, len * 4, '0');
+            msg.setHexWriteData(s);
+
+            //匹配tid写
+//            String tid = "E280110520007B05A8C208A8";
+//            ParamEpcFilter filter = new ParamEpcFilter();
+//            filter.setArea(0x00);
+//            filter.setHexData(tid);
+//            filter.setBitStart(0);
+//            filter.setBitLength(tid.length() * 4);
+//            msg.setFilter(filter);
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Write successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 39 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/WriteGJbUserData.java

@@ -0,0 +1,39 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseWriteGJb;
+
+public class WriteGJbUserData {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+
+            MsgBaseWriteGJb msg = new MsgBaseWriteGJb();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            msg.setStart(0);
+            //0x03,用户数据区
+            msg.setArea(0x03);
+            String data = "1234AAAA";
+            int len = PcUtils.getValueLen(data);
+            String s = PcUtils.padLeft(data, len * 4, '0');
+            msg.setHexWriteData(s);
+
+            //匹配tid写
+//            String tid = "E280110520007B05A8C208A8";
+//            ParamEpcFilter filter = new ParamEpcFilter();
+//            filter.setArea(0x00);
+//            filter.setHexData(tid);
+//            filter.setBitStart(0);
+//            filter.setBitLength(tid.length() * 4);
+//            msg.setFilter(filter);
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Write successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 28 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/WriteGbEpc.java

@@ -0,0 +1,28 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseWriteGb;
+
+public class WriteGbEpc {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+            MsgBaseWriteGb msg = new MsgBaseWriteGb();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            //0x10:标签编码区 | 0x20:标签安全区 | 0x30~0x3F:用户子区0~15
+            msg.setArea(0x10);
+            msg.setStart(0);//word
+            String data = "AAAA";
+            int len = PcUtils.getValueLen(data);
+            String s = PcUtils.getGbPc(len) + PcUtils.padLeft(data, len * 4, '0');
+            msg.setHexWriteData(s);
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Write successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 38 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/WriteGbFilter.java

@@ -0,0 +1,38 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseWriteGb;
+import com.gg.reader.api.protocol.gx.ParamEpcFilter;
+
+public class WriteGbFilter {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+
+            MsgBaseWriteGb msg = new MsgBaseWriteGb();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            msg.setStart(0);
+            msg.setArea(0x10);
+            String data = "AAAA";
+            int len = PcUtils.getValueLen(data);
+            msg.setHexWriteData(PcUtils.padLeft(data, len * 4, '0'));
+
+            //匹配写
+            String tid = "E280110520007B05A8C208A8";
+            ParamEpcFilter filter = new ParamEpcFilter();
+            filter.setArea(0x00);
+            filter.setHexData(tid);
+            filter.setBitStart(0);
+            filter.setBitLength(tid.length() * 4);
+            msg.setFilter(filter);
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Write successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 39 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/WriteGbSafe.java

@@ -0,0 +1,39 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseWriteGb;
+
+public class WriteGbSafe {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+
+            MsgBaseWriteGb msg = new MsgBaseWriteGb();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            //0x10:标签编码区 | 0x20:标签安全区 | 0x30~0x3F:用户子区0~15
+            msg.setArea(0x20);//安全区
+            msg.setStart(2);//word 0-1灭活口令  2-3锁定口令
+
+            //匹配标签写
+//            String tid = "E280110520007B05A8C208A8";
+//            ParamEpcFilter filter = new ParamEpcFilter();
+//            filter.setArea(0x00);
+//            filter.setHexData(tid);
+//            filter.setBitStart(0);
+//            filter.setBitLength(tid.length() * 4);
+//            msg.setFilter(filter);
+
+
+            String data = "12345678";
+            msg.setHexWriteData(data);
+
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Write successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 29 - 0
huimv-admin/src/main/java/com/huimv/admin/reader/WriteGbUserData.java

@@ -0,0 +1,29 @@
+package com.huimv.admin.reader;
+
+import com.gg.reader.api.dal.GClient;
+import com.gg.reader.api.protocol.gx.EnumG;
+import com.gg.reader.api.protocol.gx.MsgBaseWriteGb;
+
+public class WriteGbUserData {
+    public static void main(String[] args) {
+        GClient client = new GClient();
+        if (client.openSerial("COM7:115200", 2000)) {
+
+            MsgBaseWriteGb msg = new MsgBaseWriteGb();
+            msg.setAntennaEnable(EnumG.AntennaNo_1);
+            //0x10:标签编码区 | 0x20:标签安全区 | 0x30~0x3F:用户子区0~15
+            msg.setArea(0x30);
+            msg.setStart(4);//word
+            String data = "AAAA";
+            int len = PcUtils.getValueLen(data);
+            String s = PcUtils.padLeft(data, len * 4, '0');
+            msg.setHexWriteData(s);
+            client.sendSynMsg(msg);
+            if (0x00 == msg.getRtCode()) {
+                System.out.println("Write successful.");
+            } else {
+                System.out.println(msg.getRtMsg());
+            }
+        }
+    }
+}

+ 296 - 296
huimv-admin/src/main/java/com/huimv/admin/timer/FeedTimer.java

@@ -1,302 +1,302 @@
-package com.huimv.admin.timer;
-
-
-import cn.hutool.core.codec.Base64;
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpUtil;
-import cn.hutool.json.JSONUtil;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.huimv.admin.common.utils.HttpClientSSLUtils;
-import com.huimv.admin.common.utils.NumberUtils;
-import com.huimv.admin.common.utils.Result;
-import com.huimv.admin.entity.*;
-import com.huimv.admin.entity.zengxindto.*;
-import com.huimv.admin.mapper.FeedAreaMapper;
-import com.huimv.admin.mapper.FeedPigMapper;
-import com.huimv.admin.mapper.FeedingDataMapper;
-import com.huimv.admin.mapper.FeedingEnvMapper;
-import com.huimv.admin.service.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.client.RestTemplate;
-
-import java.text.DecimalFormat;
-import java.text.NumberFormat;
-import java.text.SimpleDateFormat;
-import java.time.Duration;
-import java.time.LocalDateTime;
-import java.util.*;
-import java.util.concurrent.ThreadLocalRandom;
-
-@Configuration
-@EnableScheduling
-public class FeedTimer {
-
-    @Autowired
-    private FeedAreaMapper feedAreaMapper;
-    @Autowired
-    private FeedingEnvMapper envMapper;
-    @Autowired
-    private FeedingDataMapper dataMapper;
-    @Autowired
-    private FeedPigMapper pigMapper;
-
-
-    //    @Scheduled(cron = "0 0 */1 * * ? ")
-    @Scheduled(cron = "0 0/59 * * * ? ")
-    @Transactional
-    public void getFeed() throws Exception {
-        QueryWrapper<FeedArea> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("farm_id", 26);
-        List<FeedArea> feedAreas = feedAreaMapper.selectList(queryWrapper);
-//        Date now = new Date(); // 获取当前时间
-//        long oneHour = 1 * 60 * 60 * 1000; // 1小时的毫秒数
-//        Date oneHourAgo = new Date(now.getTime() - oneHour); // 获取1小时前的时间
-//        List<String> time = new ArrayList<>();
-//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//        time.add(sdf.format(oneHourAgo));
-//        time.add(sdf.format(new Date()));
-//        System.out.println("这个是传入的时间数组:" + time);
-        for (FeedArea feedArea : feedAreas) {
-            HashMap<String, String> paramMap = new HashMap<>();
-            JSONObject jsonObject = new JSONObject();
-//            jsonObject.put("pageNum", "1");
-//            jsonObject.put("pageSize", "50");
-//            jsonObject.put("createTime", time);
-            jsonObject.put("fdQrcode", "");
-            jsonObject.put("fenceNum", "");
-            jsonObject.put("gatewayNo", feedArea.getGatewayNo());
-            jsonObject.put("areaId", feedArea.getAreaId());
-            paramMap.put("Content-Type", "application/json;charset=utf-8");
-            paramMap.put("AuthorizationF", getToken());
-            String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/mqtt/pageQryRealtime?pageNum=1&pageSize=50").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
-            JSONObject jsonObject1 = JSONObject.parseObject(post);
-            Map map = (Map) jsonObject1.get("data");
-            List<Map<String, Object>> list = (List) map.get("records");
-            System.out.println("取到了记录:" + list);
-            if (null != list) {
-                for (Map<String, Object> stringMap : list) {
-                    FeedingData data = new FeedingData();
-                    data.setFarmId(26);
-                    data.setUnitName(feedArea.getName());
-                    data.setDeviceCode(stringMap.get("fdQrcode").toString());
-
-                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-                    data.setUploadTime(dateFormat.parse(stringMap.get("createTime").toString()));
-                    data.setBlanking(stringMap.get("zkAlram").toString());
-                    data.setDeviceType(feedArea.getType());
-
-                    QueryWrapper<FeedingEnv> queryWrapper1 = new QueryWrapper<>();
-                    queryWrapper1.eq("device_code", stringMap.get("fdQrcode"));
-                    FeedingEnv env = envMapper.selectOne(queryWrapper1);
-                    if (ObjectUtil.isNotEmpty(env)) {
-                        data.setEartag(env.getEartag());
-                    }
-                    data.setMeals(Integer.parseInt(stringMap.get("dayDeliver").toString()));
-                    Integer intFdWeight = Integer.parseInt(stringMap.get("intFdWeight").toString());
-                    Double feed = Double.valueOf(intFdWeight) / 100;
-                    DecimalFormat def = new DecimalFormat("0.00");
-                    data.setFoodIntake(def.format(feed));
-                    data.setWater(stringMap.get("intDwWeight").toString());
-                    data.setDayNum(stringMap.get("dayOld").toString());
-                    data.setBodySize(stringMap.get("backfat").toString());
-                    dataMapper.insert(data);
-                }
-            }
-
-        }
-    }
-
-    public String getToken() {
-        HashMap<String, String> paramMap = new HashMap<>();
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("username", "ruanzong");
-        jsonObject.put("password", "123456");
-        paramMap.put("Content-Type", "application/json;charset=utf-8");
-        String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/admin/appLogin").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
-        JSONObject jsonObject1 = JSONObject.parseObject(post);
-        Map map = (Map) jsonObject1.get("data");
-        String s = map.get("tokenHead") + " " + map.get("token");
-        return s;
-    }
-
-    public static void main(String[] args) {
-//        Date now = new Date(); // 获取当前时间
-//        long oneHour = 1 * 30 * 1000; // 1小时的毫秒数
-//        Date oneHourAgo = new Date(now.getTime() - oneHour); // 获取1小时前的时间
-//        List<String> time = new ArrayList<>();
-//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//        time.add(sdf.format(oneHourAgo));
-//        time.add(sdf.format(new Date()));
+//package com.huimv.admin.timer;
+//
+//
+//import cn.hutool.core.codec.Base64;
+//import cn.hutool.core.date.DateTime;
+//import cn.hutool.core.date.DateUtil;
+//import cn.hutool.core.io.FileUtil;
+//import cn.hutool.core.util.ObjectUtil;
+//import cn.hutool.http.HttpRequest;
+//import cn.hutool.http.HttpUtil;
+//import cn.hutool.json.JSONUtil;
+//import com.alibaba.fastjson.JSON;
+//import com.alibaba.fastjson.JSONArray;
+//import com.alibaba.fastjson.JSONObject;
+//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+//import com.huimv.admin.common.utils.HttpClientSSLUtils;
+//import com.huimv.admin.common.utils.NumberUtils;
+//import com.huimv.admin.common.utils.Result;
+//import com.huimv.admin.entity.*;
+//import com.huimv.admin.entity.zengxindto.*;
+//import com.huimv.admin.mapper.FeedAreaMapper;
+//import com.huimv.admin.mapper.FeedPigMapper;
+//import com.huimv.admin.mapper.FeedingDataMapper;
+//import com.huimv.admin.mapper.FeedingEnvMapper;
+//import com.huimv.admin.service.*;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.http.HttpEntity;
+//import org.springframework.http.HttpHeaders;
+//import org.springframework.http.HttpMethod;
+//import org.springframework.http.ResponseEntity;
+//import org.springframework.scheduling.annotation.EnableScheduling;
+//import org.springframework.scheduling.annotation.Scheduled;
+//import org.springframework.transaction.annotation.Transactional;
+//import org.springframework.web.client.RestTemplate;
+//
+//import java.text.DecimalFormat;
+//import java.text.NumberFormat;
+//import java.text.SimpleDateFormat;
+//import java.time.Duration;
+//import java.time.LocalDateTime;
+//import java.util.*;
+//import java.util.concurrent.ThreadLocalRandom;
+//
+//@Configuration
+//@EnableScheduling
+//public class FeedTimer {
+//
+//    @Autowired
+//    private FeedAreaMapper feedAreaMapper;
+//    @Autowired
+//    private FeedingEnvMapper envMapper;
+//    @Autowired
+//    private FeedingDataMapper dataMapper;
+//    @Autowired
+//    private FeedPigMapper pigMapper;
+//
+//
+//    //    @Scheduled(cron = "0 0 */1 * * ? ")
+//    @Scheduled(cron = "0 0/59 * * * ? ")
+//    @Transactional
+//    public void getFeed() throws Exception {
+//        QueryWrapper<FeedArea> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.eq("farm_id", 26);
+//        List<FeedArea> feedAreas = feedAreaMapper.selectList(queryWrapper);
+////        Date now = new Date(); // 获取当前时间
+////        long oneHour = 1 * 60 * 60 * 1000; // 1小时的毫秒数
+////        Date oneHourAgo = new Date(now.getTime() - oneHour); // 获取1小时前的时间
+////        List<String> time = new ArrayList<>();
+////        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+////        time.add(sdf.format(oneHourAgo));
+////        time.add(sdf.format(new Date()));
+////        System.out.println("这个是传入的时间数组:" + time);
+//        for (FeedArea feedArea : feedAreas) {
+//            HashMap<String, String> paramMap = new HashMap<>();
+//            JSONObject jsonObject = new JSONObject();
+////            jsonObject.put("pageNum", "1");
+////            jsonObject.put("pageSize", "50");
+////            jsonObject.put("createTime", time);
+//            jsonObject.put("fdQrcode", "");
+//            jsonObject.put("fenceNum", "");
+//            jsonObject.put("gatewayNo", feedArea.getGatewayNo());
+//            jsonObject.put("areaId", feedArea.getAreaId());
+//            paramMap.put("Content-Type", "application/json;charset=utf-8");
+//            paramMap.put("AuthorizationF", getToken());
+//            String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/mqtt/pageQryRealtime?pageNum=1&pageSize=50").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
+//            JSONObject jsonObject1 = JSONObject.parseObject(post);
+//            Map map = (Map) jsonObject1.get("data");
+//            List<Map<String, Object>> list = (List) map.get("records");
+//            System.out.println("取到了记录:" + list);
+//            if (null != list) {
+//                for (Map<String, Object> stringMap : list) {
+//                    FeedingData data = new FeedingData();
+//                    data.setFarmId(26);
+//                    data.setUnitName(feedArea.getName());
+//                    data.setDeviceCode(stringMap.get("fdQrcode").toString());
+//
+//                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+//                    data.setUploadTime(dateFormat.parse(stringMap.get("createTime").toString()));
+//                    data.setBlanking(stringMap.get("zkAlram").toString());
+//                    data.setDeviceType(feedArea.getType());
+//
+//                    QueryWrapper<FeedingEnv> queryWrapper1 = new QueryWrapper<>();
+//                    queryWrapper1.eq("device_code", stringMap.get("fdQrcode"));
+//                    FeedingEnv env = envMapper.selectOne(queryWrapper1);
+//                    if (ObjectUtil.isNotEmpty(env)) {
+//                        data.setEartag(env.getEartag());
+//                    }
+//                    data.setMeals(Integer.parseInt(stringMap.get("dayDeliver").toString()));
+//                    Integer intFdWeight = Integer.parseInt(stringMap.get("intFdWeight").toString());
+//                    Double feed = Double.valueOf(intFdWeight) / 100;
+//                    DecimalFormat def = new DecimalFormat("0.00");
+//                    data.setFoodIntake(def.format(feed));
+//                    data.setWater(stringMap.get("intDwWeight").toString());
+//                    data.setDayNum(stringMap.get("dayOld").toString());
+//                    data.setBodySize(stringMap.get("backfat").toString());
+//                    dataMapper.insert(data);
+//                }
+//            }
+//
+//        }
+//    }
+//
+//    public String getToken() {
 //        HashMap<String, String> paramMap = new HashMap<>();
 //        JSONObject jsonObject = new JSONObject();
-//        jsonObject.put("pageNum", 1);
-//        jsonObject.put("pageSize", 20);
-//        jsonObject.put("createTime", time);
-//        jsonObject.put("areaId","1017517");
+//        jsonObject.put("username", "ruanzong");
+//        jsonObject.put("password", "123456");
 //        paramMap.put("Content-Type", "application/json;charset=utf-8");
-//        paramMap.put("AuthorizationF","Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJoZW5sdSIsImNyZWF0ZWQiOjE2OTUzNjg1OTE4MjEsImV4cCI6MTY5NTQ1NDk5MX0.63A5FNJD714MVLp2cdH9HLyN25lYtAzsXHysXLEp1eR-FfkQZel6FnuoLfkIoFbgaht1OsEN-2ERabw0Lby7Pg");
-//        String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/mqtt/pageQryRealtime").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
+//        String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/admin/appLogin").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
 //        JSONObject jsonObject1 = JSONObject.parseObject(post);
 //        Map map = (Map) jsonObject1.get("data");
-//        System.out.println(map);
-//        List<Map<String, String>> list = (List) map.get("records");
-//        System.out.println(list);
-//        List<String> jsonArray = (ArrayList) map.get("records");
-//        System.out.println(jsonArray);
-    }
-
-
-    //饲养器添加
-    @Scheduled(cron = "0 0/57 * * * ? ")
-    @Transactional
-    public void getFeedEnv() throws Exception {
-        QueryWrapper<FeedArea> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("farm_id", 26);
-        List<FeedArea> feedAreas = feedAreaMapper.selectList(queryWrapper);
-        for (FeedArea feedArea : feedAreas) {
-            HashMap<String, String> paramMap = new HashMap<>();
-            JSONObject jsonObject = new JSONObject();
-            jsonObject.put("pageNum", "1");
-            jsonObject.put("pageSize", "200");
-            jsonObject.put("areaId", feedArea.getAreaId());
-            paramMap.put("Content-Type", "application/json;charset=utf-8");
-            paramMap.put("AuthorizationF", getToken());
-            String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/api/v1/feeder/pageQry?pageNum=1&pageSize=50").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
-            JSONObject jsonObject1 = JSONObject.parseObject(post);
-            Map map = (Map) jsonObject1.get("data");
-            List<Map<String, Object>> list = (List) map.get("records");
-            for (Map<String, Object> stringMap : list) {
-                QueryWrapper<FeedingEnv> queryWrapper1 = new QueryWrapper<>();
-                queryWrapper1.eq("farm_id", 26).eq("device_code", stringMap.get("qrcode"));
-                if (ObjectUtil.isEmpty(envMapper.selectOne(queryWrapper1))) {
-                    FeedingEnv feedingEnv = new FeedingEnv();
-                    feedingEnv.setFarmId(26);
-                    feedingEnv.setUnitName(feedArea.getName());
-                    feedingEnv.setUnitId(Integer.parseInt(feedArea.getUnitId()));
-                    feedingEnv.setDeviceType(feedArea.getType());
-                    feedingEnv.setDeviceCode(stringMap.get("qrcode").toString());
-                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-                    feedingEnv.setLastTime(dateFormat.parse((String) stringMap.get("createTime")));
-                    feedingEnv.setOnlineStatus((Integer) stringMap.get("feedStatus"));
-                    envMapper.insert(feedingEnv);
-                } else {
-                    if (StringUtils.isNotBlank(stringMap.get("earTag").toString())) {
-                        FeedingEnv feedingEnv = envMapper.selectOne(queryWrapper1);
-                        feedingEnv.setEartag(stringMap.get("earTag").toString());
-                        envMapper.updateById(feedingEnv);
-                    }
-                }
-
-            }
-        }
-    }
-
-
-    //猪群数量变动
-    @Scheduled(cron = "0 0 1 * * ? ")
-    @Transactional
-    public void getPigCount() throws Exception {
-        List<FeedingEnv> envs = envMapper.selectList(null);
-        Integer number = 0;
-        String type = "";
-        for (FeedingEnv env : envs) {
-            String url = "http://znsw.zxkj2006.com/feed/api/api/v1/pig/list/" + env.getEartag();
-            Map<String, String> heads = new HashMap<>();
-            heads.put("Authorizationf", getToken());
-            String body = HttpRequest.get(url).addHeaders(heads).execute().body();
-            JSONObject jsonObject1 = JSONObject.parseObject(body);
-            System.out.println("这个是转换为json的" + jsonObject1);
-            List<JSONObject> data = (List<JSONObject>) jsonObject1.get("data");
-            System.out.println(data);
-            if (data.size() > 0) {
-                JSONObject jsonObject = data.get(0);
-                String num = jsonObject.get("litterNum").toString();
-                number = number + Integer.parseInt(num);
-                type = jsonObject.get("pigType").toString();//类型
-            }
-        }
-        List<FeedPig> feedPigs = pigMapper.selectList(null);
-        for (FeedPig feedPig : feedPigs) {
-            if (type.equals(feedPig.getType())) {
-                feedPig.setNumber(number.toString());
-                pigMapper.updateById(feedPig);
-            }
-//            else {
-//                FeedPig pig = new FeedPig();
-//                pig.setType(type);
-//                pig.setNumber(number.toString());
-//                pigMapper.insert(pig);
+//        String s = map.get("tokenHead") + " " + map.get("token");
+//        return s;
+//    }
+//
+//    public static void main(String[] args) {
+////        Date now = new Date(); // 获取当前时间
+////        long oneHour = 1 * 30 * 1000; // 1小时的毫秒数
+////        Date oneHourAgo = new Date(now.getTime() - oneHour); // 获取1小时前的时间
+////        List<String> time = new ArrayList<>();
+////        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+////        time.add(sdf.format(oneHourAgo));
+////        time.add(sdf.format(new Date()));
+////        HashMap<String, String> paramMap = new HashMap<>();
+////        JSONObject jsonObject = new JSONObject();
+////        jsonObject.put("pageNum", 1);
+////        jsonObject.put("pageSize", 20);
+////        jsonObject.put("createTime", time);
+////        jsonObject.put("areaId","1017517");
+////        paramMap.put("Content-Type", "application/json;charset=utf-8");
+////        paramMap.put("AuthorizationF","Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJoZW5sdSIsImNyZWF0ZWQiOjE2OTUzNjg1OTE4MjEsImV4cCI6MTY5NTQ1NDk5MX0.63A5FNJD714MVLp2cdH9HLyN25lYtAzsXHysXLEp1eR-FfkQZel6FnuoLfkIoFbgaht1OsEN-2ERabw0Lby7Pg");
+////        String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/mqtt/pageQryRealtime").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
+////        JSONObject jsonObject1 = JSONObject.parseObject(post);
+////        Map map = (Map) jsonObject1.get("data");
+////        System.out.println(map);
+////        List<Map<String, String>> list = (List) map.get("records");
+////        System.out.println(list);
+////        List<String> jsonArray = (ArrayList) map.get("records");
+////        System.out.println(jsonArray);
+//    }
+//
+//
+//    //饲养器添加
+//    @Scheduled(cron = "0 0/57 * * * ? ")
+//    @Transactional
+//    public void getFeedEnv() throws Exception {
+//        QueryWrapper<FeedArea> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.eq("farm_id", 26);
+//        List<FeedArea> feedAreas = feedAreaMapper.selectList(queryWrapper);
+//        for (FeedArea feedArea : feedAreas) {
+//            HashMap<String, String> paramMap = new HashMap<>();
+//            JSONObject jsonObject = new JSONObject();
+//            jsonObject.put("pageNum", "1");
+//            jsonObject.put("pageSize", "200");
+//            jsonObject.put("areaId", feedArea.getAreaId());
+//            paramMap.put("Content-Type", "application/json;charset=utf-8");
+//            paramMap.put("AuthorizationF", getToken());
+//            String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/api/v1/feeder/pageQry?pageNum=1&pageSize=50").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
+//            JSONObject jsonObject1 = JSONObject.parseObject(post);
+//            Map map = (Map) jsonObject1.get("data");
+//            List<Map<String, Object>> list = (List) map.get("records");
+//            for (Map<String, Object> stringMap : list) {
+//                QueryWrapper<FeedingEnv> queryWrapper1 = new QueryWrapper<>();
+//                queryWrapper1.eq("farm_id", 26).eq("device_code", stringMap.get("qrcode"));
+//                if (ObjectUtil.isEmpty(envMapper.selectOne(queryWrapper1))) {
+//                    FeedingEnv feedingEnv = new FeedingEnv();
+//                    feedingEnv.setFarmId(26);
+//                    feedingEnv.setUnitName(feedArea.getName());
+//                    feedingEnv.setUnitId(Integer.parseInt(feedArea.getUnitId()));
+//                    feedingEnv.setDeviceType(feedArea.getType());
+//                    feedingEnv.setDeviceCode(stringMap.get("qrcode").toString());
+//                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+//                    feedingEnv.setLastTime(dateFormat.parse((String) stringMap.get("createTime")));
+//                    feedingEnv.setOnlineStatus((Integer) stringMap.get("feedStatus"));
+//                    envMapper.insert(feedingEnv);
+//                } else {
+//                    if (StringUtils.isNotBlank(stringMap.get("earTag").toString())) {
+//                        FeedingEnv feedingEnv = envMapper.selectOne(queryWrapper1);
+//                        feedingEnv.setEartag(stringMap.get("earTag").toString());
+//                        envMapper.updateById(feedingEnv);
+//                    }
+//                }
+//
+//            }
+//        }
+//    }
+//
+//
+//    //猪群数量变动
+//    @Scheduled(cron = "0 0 1 * * ? ")
+//    @Transactional
+//    public void getPigCount() throws Exception {
+//        List<FeedingEnv> envs = envMapper.selectList(null);
+//        Integer number = 0;
+//        String type = "";
+//        for (FeedingEnv env : envs) {
+//            String url = "http://znsw.zxkj2006.com/feed/api/api/v1/pig/list/" + env.getEartag();
+//            Map<String, String> heads = new HashMap<>();
+//            heads.put("Authorizationf", getToken());
+//            String body = HttpRequest.get(url).addHeaders(heads).execute().body();
+//            JSONObject jsonObject1 = JSONObject.parseObject(body);
+//            System.out.println("这个是转换为json的" + jsonObject1);
+//            List<JSONObject> data = (List<JSONObject>) jsonObject1.get("data");
+//            System.out.println(data);
+//            if (data.size() > 0) {
+//                JSONObject jsonObject = data.get(0);
+//                String num = jsonObject.get("litterNum").toString();
+//                number = number + Integer.parseInt(num);
+//                type = jsonObject.get("pigType").toString();//类型
+//            }
+//        }
+//        List<FeedPig> feedPigs = pigMapper.selectList(null);
+//        for (FeedPig feedPig : feedPigs) {
+//            if (type.equals(feedPig.getType())) {
+//                feedPig.setNumber(number.toString());
+//                pigMapper.updateById(feedPig);
+//            }
+////            else {
+////                FeedPig pig = new FeedPig();
+////                pig.setType(type);
+////                pig.setNumber(number.toString());
+////                pigMapper.insert(pig);
+////            }
+//        }
+//
+//    }
+//
+//
+//    //饲养器状态修改
+//    @Scheduled(cron = "0 0/5 * * * ? ")
+//    @Transactional
+//    public void getFeedEnvStatus() throws Exception {
+//        QueryWrapper<FeedArea> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.eq("farm_id", 26);
+//        List<FeedArea> feedAreas = feedAreaMapper.selectList(queryWrapper);
+//        for (FeedArea feedArea : feedAreas) {
+//            HashMap<String, String> paramMap = new HashMap<>();
+//            JSONObject jsonObject = new JSONObject();
+//            jsonObject.put("pageNum", "1");
+//            jsonObject.put("pageSize", "20");
+//            jsonObject.put("areaId", feedArea.getAreaId());
+//            paramMap.put("Content-Type", "application/json;charset=utf-8");
+//            paramMap.put("AuthorizationF", getToken());
+//            String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/api/v1/feeder/pageQry?pageNum=1&pageSize=50").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
+//            JSONObject jsonObject1 = JSONObject.parseObject(post);
+//            Map map = (Map) jsonObject1.get("data");
+//            List<Map<String, Object>> list = (List) map.get("records");
+//            for (Map<String, Object> stringMap : list) {
+//                QueryWrapper<FeedingEnv> queryWrapper1 = new QueryWrapper<>();
+//                queryWrapper1.eq("farm_id", 26).eq("device_code", stringMap.get("qrcode"));
+//                if (ObjectUtil.isEmpty(envMapper.selectOne(queryWrapper1))) {
+//                    FeedingEnv feedingEnv = new FeedingEnv();
+//                    feedingEnv.setFarmId(26);
+//                    feedingEnv.setUnitName(feedArea.getName());
+//                    feedingEnv.setUnitId(Integer.parseInt(feedArea.getUnitId()));
+//                    feedingEnv.setDeviceType(feedArea.getType());
+//                    feedingEnv.setDeviceCode(stringMap.get("qrcode").toString());
+//                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+//                    feedingEnv.setLastTime(dateFormat.parse((String) stringMap.get("createTime")));
+//                    feedingEnv.setOnlineStatus((Integer) stringMap.get("feedStatus"));
+//                    envMapper.insert(feedingEnv);
+//                } else {
+//                    if (StringUtils.isNotBlank(stringMap.get("earTag").toString())) {
+//                        FeedingEnv feedingEnv = envMapper.selectOne(queryWrapper1);
+//                        feedingEnv.setEartag(stringMap.get("earTag").toString());
+//                        String status = stringMap.get("swAlram").toString();
+//                        if ("0".equals(status)) {
+//                            feedingEnv.setOnlineStatus(0);
+//                        } else {
+//                            feedingEnv.setOnlineStatus(1);
+//                        }
+//                        envMapper.updateById(feedingEnv);
+//                    }
+//
+//                }
+//
 //            }
-        }
-
-    }
-
-
-    //饲养器状态修改
-    @Scheduled(cron = "0 0/5 * * * ? ")
-    @Transactional
-    public void getFeedEnvStatus() throws Exception {
-        QueryWrapper<FeedArea> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("farm_id", 26);
-        List<FeedArea> feedAreas = feedAreaMapper.selectList(queryWrapper);
-        for (FeedArea feedArea : feedAreas) {
-            HashMap<String, String> paramMap = new HashMap<>();
-            JSONObject jsonObject = new JSONObject();
-            jsonObject.put("pageNum", "1");
-            jsonObject.put("pageSize", "20");
-            jsonObject.put("areaId", feedArea.getAreaId());
-            paramMap.put("Content-Type", "application/json;charset=utf-8");
-            paramMap.put("AuthorizationF", getToken());
-            String post = HttpRequest.post("http://znsw.zxkj2006.com/feed/api/api/v1/feeder/pageQry?pageNum=1&pageSize=50").headerMap(paramMap, false).body(jsonObject.toJSONString()).timeout(30 * 1000).execute().body();
-            JSONObject jsonObject1 = JSONObject.parseObject(post);
-            Map map = (Map) jsonObject1.get("data");
-            List<Map<String, Object>> list = (List) map.get("records");
-            for (Map<String, Object> stringMap : list) {
-                QueryWrapper<FeedingEnv> queryWrapper1 = new QueryWrapper<>();
-                queryWrapper1.eq("farm_id", 26).eq("device_code", stringMap.get("qrcode"));
-                if (ObjectUtil.isEmpty(envMapper.selectOne(queryWrapper1))) {
-                    FeedingEnv feedingEnv = new FeedingEnv();
-                    feedingEnv.setFarmId(26);
-                    feedingEnv.setUnitName(feedArea.getName());
-                    feedingEnv.setUnitId(Integer.parseInt(feedArea.getUnitId()));
-                    feedingEnv.setDeviceType(feedArea.getType());
-                    feedingEnv.setDeviceCode(stringMap.get("qrcode").toString());
-                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-                    feedingEnv.setLastTime(dateFormat.parse((String) stringMap.get("createTime")));
-                    feedingEnv.setOnlineStatus((Integer) stringMap.get("feedStatus"));
-                    envMapper.insert(feedingEnv);
-                } else {
-                    if (StringUtils.isNotBlank(stringMap.get("earTag").toString())) {
-                        FeedingEnv feedingEnv = envMapper.selectOne(queryWrapper1);
-                        feedingEnv.setEartag(stringMap.get("earTag").toString());
-                        String status = stringMap.get("swAlram").toString();
-                        if ("0".equals(status)) {
-                            feedingEnv.setOnlineStatus(0);
-                        } else {
-                            feedingEnv.setOnlineStatus(1);
-                        }
-                        envMapper.updateById(feedingEnv);
-                    }
-
-                }
-
-            }
-        }
-    }
-}
+//        }
+//    }
+//}

+ 2 - 1
huimv-admin/src/main/java/com/huimv/admin/timer/GasTimer.java

@@ -27,7 +27,8 @@ public class GasTimer {
     @Autowired
     private GasThresholdMapper thresholdMapper;
 
-    @Scheduled(cron = "0 0 */1 * * ? ")
+//    @Scheduled(cron = "0 0 */1 * * ? ")
+    @Scheduled(cron = "0 */1 * * * ? ")
 //    @Scheduled(cron = "0 0/2 * * * ? ")
     private void getShenChan() throws Exception {
 

+ 2 - 2
huimv-admin/src/main/java/com/huimv/admin/timer/ProtTimer.java

@@ -27,8 +27,8 @@ public class ProtTimer {
     private ProtWarningInfoMapper warningInfoMapper;
 
     //    环保数据
-    @Scheduled(cron = "0 0 */1 * * ? ")
-//    @Scheduled(cron = "0 0/2 * * * ? ")
+//    @Scheduled(cron = "0 0 */1 * * ? ")
+    @Scheduled(cron = "0 0/2 * * * ? ")
     private void getShenChan() throws Exception {
 
 

+ 5 - 5
huimv-admin/src/main/java/com/huimv/admin/timer/ShenChanTimer.java

@@ -32,8 +32,8 @@ import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 
-//@RestController
-//@RequestMapping("/test")
+@RestController
+@RequestMapping("/test")
 @Configuration
 @EnableScheduling
 public class ShenChanTimer {
@@ -55,10 +55,10 @@ public class ShenChanTimer {
     private IProdWarningInfoService prodWarningInfoService;
 
 //有个问题 正康的视频咋也看不了
-
+//
 //     @Scheduled(cron = "0 * * * * ? ")
-    @Scheduled(cron = "1 0 * * * ?")
-//    @GetMapping("/test")
+//    @Scheduled(cron = "1 0 * * * ?")
+    @GetMapping("/test")
     @Transactional
     public void getShenChan() throws Exception {
         StockLoginDto stockLoginDto = login();

TEMPAT SAMPAH
huimv-admin/src/main/resources/15586885_huatong.ifarmcloud.com.jks


+ 2 - 2
huimv-admin/src/main/resources/application-prod.yml

@@ -1,9 +1,9 @@
 server:
   port: 8011
   ssl:
-    key-store: classpath:14272001_huatong.ifarmcloud.com.jks
+    key-store: classpath:15586885_huatong.ifarmcloud.com.jks
     key-store-type: jks
-    key-store-password: rgweqv2s
+    key-store-password: grydngbo
 
 spring:
   application:

+ 28 - 28
huimv-receive/src/main/java/com/huimv/receive/ReceiveApplication.java

@@ -18,32 +18,32 @@ public class ReceiveApplication {
         SpringApplication.run(ReceiveApplication.class, args);
     }
 
-    @Bean
-    public TomcatServletWebServerFactory servletContainer() {
-        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
-            @Override
-            protected void postProcessContext(Context context) {
-                SecurityConstraint constraint = new SecurityConstraint();
-                constraint.setUserConstraint("CONFIDENTIAL");
-                SecurityCollection collection = new SecurityCollection();
-                collection.addPattern("/*");
-                constraint.addCollection(collection);
-                context.addConstraint(constraint);
-            }
-        };
-        tomcat.addAdditionalTomcatConnectors(httpConnector());
-        return tomcat;
-    }
-
-    @Bean
-    public Connector httpConnector() {
-        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
-        connector.setScheme("http");
-        //Connector监听的http的默认端口号
-        connector.setPort(8014);
-        connector.setSecure(false);
-        //监听到http的端口号后转向到的https的端口号,也就是项目配置的port
-        connector.setRedirectPort(8015);
-        return connector;
-    }
+//    @Bean
+//    public TomcatServletWebServerFactory servletContainer() {
+//        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
+//            @Override
+//            protected void postProcessContext(Context context) {
+//                SecurityConstraint constraint = new SecurityConstraint();
+//                constraint.setUserConstraint("CONFIDENTIAL");
+//                SecurityCollection collection = new SecurityCollection();
+//                collection.addPattern("/*");
+//                constraint.addCollection(collection);
+//                context.addConstraint(constraint);
+//            }
+//        };
+//        tomcat.addAdditionalTomcatConnectors(httpConnector());
+//        return tomcat;
+//    }
+//
+//    @Bean
+//    public Connector httpConnector() {
+//        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
+//        connector.setScheme("http");
+//        //Connector监听的http的默认端口号
+//        connector.setPort(8014);
+//        connector.setSecure(false);
+//        //监听到http的端口号后转向到的https的端口号,也就是项目配置的port
+//        connector.setRedirectPort(8015);
+//        return connector;
+//    }
 }

+ 6 - 1
huimv-receive/src/main/java/com/huimv/receive/controller/LoginController.java

@@ -196,7 +196,12 @@ public class LoginController {
             accessToken.setCreated(new Date());
             accessToken.setAccountName(accountName);
             accessToken.setFarmId(accountEntity.getFarmIds());
-            String token = TokenSign.sign(accountName, id, accountEntity.getLastFarmId().toString(), accountEntity.getWorkLocationType().toString(),accountEntity.getType());
+            Integer lastFarmId1 = accountEntity.getLastFarmId();
+            if (ObjectUtil.isEmpty(lastFarmId1)){
+                lastFarmId1 = accountEntity.getFarmId();
+            }
+
+            String token = TokenSign.sign(accountName, id,lastFarmId1.toString() , accountEntity.getWorkLocationType(),accountEntity.getType());
             accessToken.setToken(token);
 
             accessToken.setId(id);

+ 1 - 1
huimv-receive/src/main/java/com/huimv/receive/service/impl/LoginServiceImpl.java

@@ -40,7 +40,7 @@ public class LoginServiceImpl implements ILoginService {
         if (accountMultilevel.getAccountStatus() == 0){
             return new Result(10002, "账号未启用.", false);
         }
-       ;
+
         accountMultilevel.setJobName( baseJobMapper.selectById(accountMultilevel.getType()).getJobName());
         return new Result(ResultCode.SUCCESS,accountMultilevel);
     }

+ 9 - 7
huimv-receive/src/main/resources/application-dev.yml

@@ -1,9 +1,9 @@
 server:
   port: 8015
-  ssl:
-    key-store: classpath:10767421_huatong.ifarmcloud.com.jks
-    key-store-type: jks
-    key-store-password: sjp124g3
+#  ssl:
+#    key-store: classpath:10767421_huatong.ifarmcloud.com.jks
+#    key-store-type: jks
+#    key-store-password: sjp124g3
 
 spring:
   application:
@@ -11,9 +11,11 @@ spring:
 
 
   datasource:
-    url: jdbc:mysql://192.168.1.7:3306/huimv-huatong?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    url: jdbc:mysql://192.168.1.7:3306/huimv-huatong?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+#    url: jdbc:mysql://127.0.0.1:3306/huimv-huatong-test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://192.168.1.254:3306/huimv-huatong-test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&serverTimezone=Asia/Shanghai
     username: root
-    password: hm123456
+    password: 123456
     driver-class-name: com.mysql.cj.jdbc.Driver
 
   #配置rabbitMq 服务器
@@ -44,7 +46,7 @@ mybatis-plus:
 img:
   url: https://img.ifarmcloud.com/images/
   basePath: /home/huimv/img/
-  ip: 139.9.167.178
+  ip: 119.3.44.183
   user:  huimv
   password: "!hm123@1"
   port: 22

+ 2 - 2
huimv-receive/src/main/resources/application.properties

@@ -1,5 +1,5 @@
-#spring.profiles.active=dev
-spring.profiles.active=prod
+spring.profiles.active=dev
+#spring.profiles.active=prod
 #spring.profiles.active=test2
 #¿ªÆô½¡¿µ¼à¿Ø
 management.endpoints.web.exposure.include=*