|
@@ -20,6 +20,7 @@ public class DataPieceDiagramBox {
|
|
|
|
|
|
private Map<String,List<Float>> pieceMap=new HashMap<String,List<Float>>(12);
|
|
private Map<String,List<Float>> pieceMap=new HashMap<String,List<Float>>(12);
|
|
|
|
|
|
|
|
+ private List<Float> fullDisps=null; //完整位移序列
|
|
|
|
|
|
public DataPieceDiagramBox(String channelSerial) {
|
|
public DataPieceDiagramBox(String channelSerial) {
|
|
this.channelSerial=channelSerial;
|
|
this.channelSerial=channelSerial;
|
|
@@ -27,71 +28,78 @@ public class DataPieceDiagramBox {
|
|
|
|
|
|
|
|
|
|
public DiagramPO put(String pieceName,List<Float> pieceDatas) {
|
|
public DiagramPO put(String pieceName,List<Float> pieceDatas) {
|
|
|
|
+
|
|
pieceMap.put(pieceName, pieceDatas);
|
|
pieceMap.put(pieceName, pieceDatas);
|
|
- if(pieceName.startsWith("chartload")) {
|
|
|
|
- return assembleDiagramLoad();
|
|
|
|
|
|
+
|
|
|
|
+ DiagramPO diagramPO=null;
|
|
|
|
+
|
|
|
|
+ if(pieceName.startsWith((ZLOpdProtCMDEnum.DIAGRAM_DISP_3.getParamCodes())[0])) {
|
|
|
|
+ assembleDisp((ZLOpdProtCMDEnum.DIAGRAM_DISP_1.getParamCodes())[0],
|
|
|
|
+ (ZLOpdProtCMDEnum.DIAGRAM_DISP_2.getParamCodes())[0],
|
|
|
|
+ (ZLOpdProtCMDEnum.DIAGRAM_DISP_3.getParamCodes())[0]);
|
|
}
|
|
}
|
|
- if(pieceName.startsWith("chartcurr")) {
|
|
|
|
- return assembleDiagramCurr();
|
|
|
|
|
|
+ else if(pieceName.startsWith((ZLOpdProtCMDEnum.DIAGRAM_LOAD_3.getParamCodes())[0])) {
|
|
|
|
+ diagramPO = assembleDiagram(DiagramPO.DIAGRAM_LOAD_CODE,
|
|
|
|
+ (ZLOpdProtCMDEnum.DIAGRAM_LOAD_1.getParamCodes())[0],
|
|
|
|
+ (ZLOpdProtCMDEnum.DIAGRAM_LOAD_2.getParamCodes())[0],
|
|
|
|
+ (ZLOpdProtCMDEnum.DIAGRAM_LOAD_3.getParamCodes())[0]); //与指令ZLOpdProtCMDEnum中配置的参数名一致
|
|
}
|
|
}
|
|
- if(pieceName.startsWith("chartpower")) {
|
|
|
|
- return assembleDiagramPower();
|
|
|
|
|
|
+ else if(pieceName.startsWith((ZLOpdProtCMDEnum.DIAGRAM_CURR_3.getParamCodes())[0])) {
|
|
|
|
+ diagramPO = assembleDiagram(DiagramPO.DIAGRAM_CURR_CODE,
|
|
|
|
+ (ZLOpdProtCMDEnum.DIAGRAM_CURR_1.getParamCodes())[0],
|
|
|
|
+ (ZLOpdProtCMDEnum.DIAGRAM_CURR_2.getParamCodes())[0],
|
|
|
|
+ (ZLOpdProtCMDEnum.DIAGRAM_CURR_3.getParamCodes())[0]);
|
|
|
|
+ }
|
|
|
|
+ else if(pieceName.startsWith((ZLOpdProtCMDEnum.DIAGRAM_POWER_3.getParamCodes())[0])) {
|
|
|
|
+ diagramPO = assembleDiagram(DiagramPO.DIAGRAM_POWER_CODE,
|
|
|
|
+ (ZLOpdProtCMDEnum.DIAGRAM_POWER_1.getParamCodes())[0],
|
|
|
|
+ (ZLOpdProtCMDEnum.DIAGRAM_POWER_2.getParamCodes())[0],
|
|
|
|
+ (ZLOpdProtCMDEnum.DIAGRAM_POWER_3.getParamCodes())[0]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //如果是功率图则清空位移数据(采用全部清除方式)
|
|
|
|
+ if(diagramPO!=null && DiagramPO.DIAGRAM_POWER_CODE.equals(diagramPO.getParamCode())) {
|
|
|
|
+ pieceMap.clear();
|
|
|
|
+ fullDisps=null;
|
|
}
|
|
}
|
|
- return null;
|
|
|
|
|
|
+
|
|
|
|
+ return diagramPO;
|
|
}
|
|
}
|
|
|
|
|
|
- public DiagramPO assembleDiagramLoad() {
|
|
|
|
- return assembleDiagram(DiagramPO.DIAGRAM_LOAD_CODE,
|
|
|
|
- (ZLOpdProtCMDEnum.DIAGRAM_LOAD_1.getParamCodes())[0],
|
|
|
|
- (ZLOpdProtCMDEnum.DIAGRAM_LOAD_2.getParamCodes())[0],
|
|
|
|
- (ZLOpdProtCMDEnum.DIAGRAM_LOAD_3.getParamCodes())[0]); //与指令ZLOpdProtCMDEnum中配置的参数名一致
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 位移序列组装
|
|
|
|
+ */
|
|
|
|
+ public void assembleDisp(String dispkey1,String dispkey2,String dispkey3) {
|
|
|
|
+
|
|
|
|
+ boolean isReady=pieceMap.get(dispkey1)!=null&&pieceMap.get(dispkey2)!=null&&pieceMap.get(dispkey3)!=null;
|
|
|
|
+ if(isReady) {
|
|
|
|
+ fullDisps=pieceMap.get(dispkey1);
|
|
|
|
+ fullDisps.addAll(pieceMap.get(dispkey2));
|
|
|
|
+ fullDisps.addAll(pieceMap.get(dispkey3));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
- public DiagramPO assembleDiagramCurr() {
|
|
|
|
- return assembleDiagram(DiagramPO.DIAGRAM_CURR_CODE,
|
|
|
|
- (ZLOpdProtCMDEnum.DIAGRAM_CURR_1.getParamCodes())[0],
|
|
|
|
- (ZLOpdProtCMDEnum.DIAGRAM_CURR_2.getParamCodes())[0],
|
|
|
|
- (ZLOpdProtCMDEnum.DIAGRAM_CURR_3.getParamCodes())[0]);
|
|
|
|
- }
|
|
|
|
|
|
|
|
- public DiagramPO assembleDiagramPower() {
|
|
|
|
- return assembleDiagram(DiagramPO.DIAGRAM_POWER_CODE,
|
|
|
|
- (ZLOpdProtCMDEnum.DIAGRAM_POWER_1.getParamCodes())[0],
|
|
|
|
- (ZLOpdProtCMDEnum.DIAGRAM_POWER_2.getParamCodes())[0],
|
|
|
|
- (ZLOpdProtCMDEnum.DIAGRAM_POWER_3.getParamCodes())[0]);
|
|
|
|
- }
|
|
|
|
|
|
|
|
public DiagramPO assembleDiagram(String diagramCode,String othkey1,String othkey2,String othkey3) {
|
|
public DiagramPO assembleDiagram(String diagramCode,String othkey1,String othkey2,String othkey3) {
|
|
|
|
|
|
- String dispCode1=(ZLOpdProtCMDEnum.DIAGRAM_DISP_1.getParamCodes())[0],
|
|
|
|
- dispCode2=(ZLOpdProtCMDEnum.DIAGRAM_DISP_2.getParamCodes())[0],
|
|
|
|
- dispCode3=(ZLOpdProtCMDEnum.DIAGRAM_DISP_3.getParamCodes())[0];
|
|
|
|
-
|
|
|
|
- boolean dispOk=pieceMap.get(dispCode1)!=null&&pieceMap.get(dispCode2)!=null&&pieceMap.get(dispCode3)!=null;
|
|
|
|
- boolean othOk=pieceMap.get(othkey1)!=null&&pieceMap.get(othkey2)!=null&&pieceMap.get(othkey3)!=null;
|
|
|
|
-
|
|
|
|
- if(!dispOk||!othOk) {
|
|
|
|
|
|
+ if(this.fullDisps==null) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
- List<Float> disps=pieceMap.get(dispCode1);
|
|
|
|
- disps.addAll(pieceMap.get(dispCode2));
|
|
|
|
- disps.addAll(pieceMap.get(dispCode3));
|
|
|
|
|
|
+ boolean isReady=pieceMap.get(othkey1)!=null&&pieceMap.get(othkey2)!=null&&pieceMap.get(othkey3)!=null;
|
|
|
|
+ if(!isReady) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
|
|
List<Float> oths=pieceMap.get(othkey1);
|
|
List<Float> oths=pieceMap.get(othkey1);
|
|
oths.addAll(pieceMap.get(othkey2));
|
|
oths.addAll(pieceMap.get(othkey2));
|
|
oths.addAll(pieceMap.get(othkey3));
|
|
oths.addAll(pieceMap.get(othkey3));
|
|
-
|
|
|
|
clearPiece(othkey1,othkey2,othkey3); //组装功图后,清除原数据,避免轮询检测发现还有数据又进行功图的组装
|
|
clearPiece(othkey1,othkey2,othkey3); //组装功图后,清除原数据,避免轮询检测发现还有数据又进行功图的组装
|
|
|
|
|
|
- DiagramPO po = new DiagramPO(channelSerial,diagramCode,disps,oths);
|
|
|
|
-
|
|
|
|
- //如果是功率则清空位移数据
|
|
|
|
- if(DiagramPO.DIAGRAM_POWER_CODE.equalsIgnoreCase(diagramCode)) {
|
|
|
|
- clearPiece(dispCode1,dispCode2,dispCode3);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return po;
|
|
|
|
|
|
+ return new DiagramPO(channelSerial,diagramCode,this.fullDisps,oths);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|