Browse Source

hengsheng 增加 上报频率下发操作

jianghouwei 6 years ago
parent
commit
ff99e261f6

+ 32 - 1
src/main/java/com/tidecloud/dataacceptance/service/impl/WatchHenShengServerHandler.java

@@ -15,6 +15,9 @@ import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 恒盛互通成人手表
@@ -26,18 +29,20 @@ public class WatchHenShengServerHandler extends HexBinaryAcceptanceHandlerAdapte
 
 	public static final String name = "WatchHenShengServerHandler";
 	private static final Logger logger = LoggerFactory.getLogger(WatchHenShengServerHandler.class);
+	private static ExecutorService executorService = Executors.newSingleThreadExecutor();
 
 	@Override
 	protected void handle(ByteBuf in, Channel channel) throws Exception {
 		byte[] req = new byte[in.readableBytes()];
 		in.readBytes(req);
-		String msg = new String(req,"UTF-8");
+		String msg = new String(req, "UTF-8");
 		logger.info("传入数据:》》》》》》》》》" + msg);
 		Advice advice = setAdvice(msg);
 		switch (advice.getAdviceType()) {
 			case "INIT": // 初始化
 				String init = "INIT,1";
 				normalReply(advice, channel, init);
+				setUpload(advice, channel);
 				break;
 			case "LK": // 连接
 				Date date = new Date();
@@ -73,6 +78,31 @@ public class WatchHenShengServerHandler extends HexBinaryAcceptanceHandlerAdapte
 		dataByteBufCopy.release();
 	}
 
+	/**
+	 * 设置终端 上报频率
+	 *
+	 * @param advice
+	 * @param channel
+	 */
+	protected void setUpload(Advice advice, Channel channel) {
+		String content = "UPLOAD,1";// 一分钟一次
+		Date loginTime = new Date();
+		executorService.execute(new Runnable() {
+			@Override
+			public void run() {
+				Date currentTime = new Date();
+				try {
+					Long secondsSinceLogin = (currentTime.getTime() - loginTime.getTime()) / 1000;
+					if (secondsSinceLogin < 5L) {
+						TimeUnit.SECONDS.sleep(5 - secondsSinceLogin);
+					}
+					normalReply(advice, channel, content);
+				} catch (InterruptedException e) {
+					logger.error(e.getMessage());
+				}
+			}
+		});
+	}
 
 	/**
 	 * 回复
@@ -104,6 +134,7 @@ public class WatchHenShengServerHandler extends HexBinaryAcceptanceHandlerAdapte
 	public static String numToHex8(int b) {
 		return String.format("%02x", b);//2表示需要两个16进行数
 	}
+
 	//需要使用2字节表示b
 	public static String numToHex16(int b) {
 		return String.format("%04x", b);