ソースを参照

完善数据解析后的组装、入库处理

chenwen 1 年間 前
コミット
316d30c83b

+ 4 - 4
src/main/java/com/hb/proj/gather/business/DataAssembler.java

@@ -25,20 +25,20 @@ public class DataAssembler extends Thread{
 	
 	private static Map<String,DataPieceSingleBox> singlePkgs=new HashMap<String,DataPieceSingleBox>(100);
 	
-	public  static void putPieceData(String channelSerial,Map<String,Float> pieceData) {
+	public  static SingleCombPO putPieceData(String channelSerial,Map<String,Float> pieceData) {
 		logger.info("接收单值片段数据:{},{}",channelSerial,pieceData);
 		if(!singlePkgs.containsKey(channelSerial)) {
 			singlePkgs.put(channelSerial, new DataPieceSingleBox(channelSerial));
 		}
-		singlePkgs.get(channelSerial).putAll(pieceData);
+		return singlePkgs.get(channelSerial).putAll(pieceData);
 	}
 	
-	public  static void putPieceData(String channelSerial,String pieceName,List<Float> pieceDatas) {
+	public  static DiagramPO putPieceData(String channelSerial,String pieceName,List<Float> pieceDatas) {
 		logger.info("接收功图片段数据:{},{}",channelSerial,pieceName);
 		if(!diagramPkgs.containsKey(channelSerial)) {
 			diagramPkgs.put(channelSerial, new DataPieceDiagramBox(channelSerial));
 		}
-		diagramPkgs.get(channelSerial).put(pieceName,pieceDatas);
+		return diagramPkgs.get(channelSerial).put(pieceName,pieceDatas);
 	}
 
 	@Override

+ 11 - 1
src/main/java/com/hb/proj/gather/business/DataPieceDiagramBox.java

@@ -26,8 +26,18 @@ public class DataPieceDiagramBox {
 	
 	private Map<String,List<Float>>  pieceMap=new HashMap<String,List<Float>>(12);
 	
-	public void put(String pieceName,List<Float> pieceDatas) {
+	public DiagramPO put(String pieceName,List<Float> pieceDatas) {
 		pieceMap.put(pieceName, pieceDatas);
+		if(pieceName.startsWith("chartload")) {
+			return assembleDiagramLoad();
+		}
+		if(pieceName.startsWith("chartcurr")) {
+			return assembleDiagramCurr();
+		}
+		if(pieceName.startsWith("chartpower")) {
+			return assembleDiagramPower();
+		}
+		return null;
 	}
 	
 	public DiagramPO  assembleDiagramLoad() {

+ 7 - 4
src/main/java/com/hb/proj/gather/business/DataPieceSingleBox.java

@@ -25,13 +25,16 @@ public class DataPieceSingleBox {
 		this.channelSerial=channelSerial;
 	}
 	
-	public void putAll(Map<String,Float> gatherPiece) {
+	/**
+	 * 加入片段数据时就进行是否ready判断
+	 * @param gatherPiece
+	 * @return
+	 */
+	public SingleCombPO putAll(Map<String,Float> gatherPiece) {
 		pieceMap.putAll(gatherPiece);
+		return assemble();
 	}
 	
-	public void put(String pieceName,Float val) {
-		pieceMap.put(pieceName, val);
-	}
 	
 	
 	public SingleCombPO  assemble() {

+ 13 - 2
src/main/java/com/hb/proj/gather/protocol/GatherRespParser.java

@@ -9,6 +9,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.hb.proj.gather.business.DataAssembler;
+import com.hb.proj.gather.business.DataTransRepSingleTask;
+import com.hb.proj.gather.business.DataTransRepTask;
+import com.hb.proj.gather.business.GatherTaskExecutor;
+import com.hb.proj.gather.model.DiagramPO;
+import com.hb.proj.gather.model.SingleCombPO;
 
 import io.netty.buffer.ByteBuf;
 
@@ -28,11 +33,17 @@ public class GatherRespParser {
 		ZLOpdProtCMDEnum  cmdEum=ZLOpdProtCMDEnum.valueOf(cmd);
 		if(cmdEum.getItemBytCount()==4) {
 			 Map<String,Float> dataMap=parseFloat(byteBuf,startIndex,dataLen,cmdEum.getParamCodes());
-			 DataAssembler.putPieceData(serial, dataMap);
+			 SingleCombPO po=DataAssembler.putPieceData(serial, dataMap);
+			 if(po!=null) {
+				 GatherTaskExecutor.execute(new DataTransRepSingleTask(po)); 
+			 }
 		}
 		else if(cmdEum.getItemBytCount()==2) { //默认为功图数据解析
 			 List<Float> datas=parseShort2Float(byteBuf,startIndex,dataLen);
-			 DataAssembler.putPieceData(serial,(cmdEum.getParamCodes())[0], datas);
+			 DiagramPO po=DataAssembler.putPieceData(serial,(cmdEum.getParamCodes())[0], datas);
+			 if(po!=null) {
+				 GatherTaskExecutor.execute(new DataTransRepTask(po)); 
+			 }
 		}
 	}
 			

+ 1 - 3
src/main/java/com/hb/proj/gather/server/NettyGatherRunner.java

@@ -8,8 +8,6 @@ import org.springframework.boot.ApplicationRunner;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 
-import com.hb.proj.gather.business.DataAssembler;
-
 @Component
 @Order(1)
 public class NettyGatherRunner implements ApplicationRunner {
@@ -24,7 +22,7 @@ public class NettyGatherRunner implements ApplicationRunner {
 		
 		new Thread(()-> {
 			
-			(new DataAssembler()).start();
+			//(new DataAssembler()).start();
 			nettyGatherServer.start(9610);
 			
 		}).start();

+ 1 - 2
src/main/java/com/hb/proj/gather/server/NettyGatherServer.java

@@ -4,7 +4,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
-import com.hb.proj.gather.business.DataAssembler;
 import com.hb.proj.gather.business.GatherTaskExecutor;
 
 import io.netty.bootstrap.ServerBootstrap;
@@ -72,6 +71,6 @@ public class NettyGatherServer {
         
         GatherTaskExecutor.shutdown();
         
-        DataAssembler.stopRun();
+        //DataAssembler.stopRun();
     }
 }