|
@@ -3,68 +3,42 @@ package com.gyee.frame.service.monitor;
|
|
|
|
|
|
import com.gyee.frame.common.spring.Constant;
|
|
|
import com.gyee.frame.common.spring.InitialRunner;
|
|
|
-import com.gyee.frame.model.auto.WindTurbineTestingPointAi;
|
|
|
-import com.gyee.frame.model.auto.Windturbine;
|
|
|
+import com.gyee.frame.model.auto.*;
|
|
|
import com.gyee.frame.model.custom.MatrixVo;
|
|
|
import com.gyee.frame.model.custom.PointData;
|
|
|
import com.gyee.frame.model.enumeration.Messagetype;
|
|
|
import com.gyee.frame.netty.websocket.WebSocketServer;
|
|
|
import com.gyee.frame.netty.websocket.util.SocketToolService;
|
|
|
+import com.gyee.frame.service.ProjectService;
|
|
|
+import com.gyee.frame.service.WindpowerstationService;
|
|
|
import com.gyee.frame.util.IRealTimeDataBaseUtil;
|
|
|
import com.gyee.frame.util.RealTimeDataBaseFactory;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
+import java.util.concurrent.CopyOnWriteArraySet;
|
|
|
|
|
|
@Service
|
|
|
public class MonitorService extends SocketToolService {
|
|
|
|
|
|
+ @Resource
|
|
|
+ private WindpowerstationService windpowerstationService;
|
|
|
+ @Resource
|
|
|
+ private ProjectService projectService;
|
|
|
+
|
|
|
private int decimal_digit = 2;
|
|
|
private IRealTimeDataBaseUtil mongodb = RealTimeDataBaseFactory.createRealTimeDataBase();
|
|
|
|
|
|
- private void setMatrixValue(List<MatrixVo> vos, Map<String, Map<String, WindTurbineTestingPointAi>> wtpAimap, Windturbine wt) {
|
|
|
- MatrixVo vo = new MatrixVo();
|
|
|
- StringBuilder sb = new StringBuilder();
|
|
|
- vo.setId(wt.getCode());
|
|
|
- try {
|
|
|
- //风机状态
|
|
|
- PointData fjzt_real = mongodb.getRealData(wtpAimap.get(wt.getId()).get(Constant.FJZT).getId());
|
|
|
- sb.append("00");
|
|
|
- int fjzt = new BigDecimal(fjzt_real.getPointValueInDouble()).setScale(decimal_digit, RoundingMode.HALF_EVEN).intValue();
|
|
|
- vo.setIcon(String.valueOf(sb.append(fjzt)));
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- System.out.println(e.getMessage());
|
|
|
- }
|
|
|
|
|
|
- try {
|
|
|
- //功率
|
|
|
- PointData power_real = mongodb.getRealData(wtpAimap.get(wt.getId()).get(Constant.TPOINT_WT_FJGL).getId());
|
|
|
- double power = new BigDecimal(power_real.getPointValueInDouble()).setScale(decimal_digit, RoundingMode.HALF_EVEN).doubleValue();
|
|
|
- vo.setPower(power);
|
|
|
- } catch (Exception e) {
|
|
|
- System.out.println(e.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- //风速
|
|
|
- PointData speed_real = mongodb.getRealData(wtpAimap.get(wt.getId()).get(Constant.TPOINT_WT_FJSSFS).getId());
|
|
|
- double speed = new BigDecimal(speed_real.getPointValueInDouble()).setScale(decimal_digit, RoundingMode.HALF_EVEN).doubleValue();
|
|
|
- vo.setSpeed(speed);
|
|
|
- } catch (Exception e) {
|
|
|
- System.out.println(e.getMessage());
|
|
|
- }
|
|
|
- vos.add(vo);
|
|
|
- }
|
|
|
|
|
|
public void monitor_target_matrixMonitor() throws Exception {
|
|
|
|
|
|
- List<MatrixVo> vos = new ArrayList<>();
|
|
|
+
|
|
|
Map<String, Map<String, WindTurbineTestingPointAi>> wtpAimap = InitialRunner.wtpAimap;
|
|
|
String pageNumber = "pageNumber_4";
|
|
|
String functionNumber = "functionNumber_2";
|
|
@@ -72,11 +46,61 @@ public class MonitorService extends SocketToolService {
|
|
|
sb.append(pageNumber).append("_").append(functionNumber);
|
|
|
|
|
|
String jobkey = String.valueOf(sb);
|
|
|
- Map<String, Set<String>> keyidMap = WebSocketServer.keyidMap;
|
|
|
- if (keyidMap.containsKey(jobkey)) {
|
|
|
- Set<String> set = keyidMap.get(jobkey);
|
|
|
+ Map<String, CopyOnWriteArraySet<String>> keyidMap = WebSocketServer.keyidMap;
|
|
|
+
|
|
|
+
|
|
|
+ if(WebSocketServer.keyidMap.isEmpty())
|
|
|
+ {
|
|
|
+ WindpowerstationExample windpowerstationExample=new WindpowerstationExample();
|
|
|
+ windpowerstationExample.setOrderByClause("ordernum ASC");
|
|
|
+ windpowerstationExample.createCriteria().getAllCriteria();
|
|
|
+ List<Windpowerstation> wpls= windpowerstationService.selectByExample(windpowerstationExample);
|
|
|
+
|
|
|
+ ProjectExample projectExample=new ProjectExample();
|
|
|
+ projectExample.setOrderByClause("ordernum ASC");
|
|
|
+ projectExample.createCriteria().getAllCriteria();
|
|
|
+ List<Project> pjls= projectService.selectByExample(projectExample);
|
|
|
+
|
|
|
+ CopyOnWriteArraySet<String> set=new CopyOnWriteArraySet<String>();
|
|
|
+ for(Windpowerstation wp: wpls)
|
|
|
+ {
|
|
|
+ StringBuilder sb2 = new StringBuilder();
|
|
|
+ sb2.append("wp_").append(wp.getId());
|
|
|
+ set.add(String.valueOf(sb2));
|
|
|
+ }
|
|
|
+
|
|
|
+ for(Project pj: pjls)
|
|
|
+ {
|
|
|
+ StringBuilder sb2 = new StringBuilder();
|
|
|
+ sb2.append("pj_").append(pj.getId());
|
|
|
+ set.add(String.valueOf(sb2));
|
|
|
+ }
|
|
|
+ keyidMap.put(jobkey,set);
|
|
|
+ }
|
|
|
+
|
|
|
+// CopyOnWriteArraySet<String> set=new CopyOnWriteArraySet<String>();
|
|
|
+// set.add("wp_CL_FDC");
|
|
|
+// set.add("wp_DX_FDC");
|
|
|
+// set.add("wp_KB_FDC");
|
|
|
+//
|
|
|
+// set.add("pj_CL01_GC");
|
|
|
+// set.add("pj_CL02_GC");
|
|
|
+// set.add("pj_DX01_GC");
|
|
|
+// set.add("pj_KB01_GC");
|
|
|
+// set.add("pj_KB02_GC");
|
|
|
+// set.add("pj_KB03_GC");
|
|
|
+// set.add("pj_KB04_GC");
|
|
|
+//
|
|
|
+// keyidMap.put(jobkey,set);
|
|
|
+
|
|
|
+ if(keyidMap.containsKey(jobkey))
|
|
|
+ {
|
|
|
+ CopyOnWriteArraySet<String> set=keyidMap.get(jobkey);
|
|
|
+
|
|
|
for (String str : set) {
|
|
|
|
|
|
+ List<MatrixVo> vos = new ArrayList<>();
|
|
|
+
|
|
|
if (str.equals("all")) {
|
|
|
continue;
|
|
|
}
|
|
@@ -88,9 +112,9 @@ public class MonitorService extends SocketToolService {
|
|
|
if (InitialRunner.wp_wtmap.containsKey(keyid)) {
|
|
|
List<Windturbine> ls = InitialRunner.wp_wtmap.get(keyid);
|
|
|
if (null != ls && !ls.isEmpty()) {
|
|
|
- for (Windturbine wt : ls) {
|
|
|
- setMatrixValue(vos, wtpAimap, wt);
|
|
|
- }
|
|
|
+
|
|
|
+ setMatrixValue(wtpAimap, vos, ls);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -99,9 +123,7 @@ public class MonitorService extends SocketToolService {
|
|
|
if (InitialRunner.pj_wtmap.containsKey(keyid)) {
|
|
|
List<Windturbine> ls = InitialRunner.pj_wtmap.get(keyid);
|
|
|
if (null != ls && !ls.isEmpty()) {
|
|
|
- for (Windturbine wt : ls) {
|
|
|
- setMatrixValue(vos, wtpAimap, wt);
|
|
|
- }
|
|
|
+ setMatrixValue(wtpAimap, vos, ls);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -109,18 +131,62 @@ public class MonitorService extends SocketToolService {
|
|
|
if (InitialRunner.ln_wtmap.containsKey(keyid)) {
|
|
|
List<Windturbine> ls = InitialRunner.ln_wtmap.get(keyid);
|
|
|
if (null != ls && !ls.isEmpty()) {
|
|
|
- for (Windturbine wt : ls) {
|
|
|
- setMatrixValue(vos, wtpAimap, wt);
|
|
|
- }
|
|
|
+ setMatrixValue(wtpAimap, vos, ls);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- this.pushToWeb("pageNumber_4", "functionNumber_2", keyid, vos, Messagetype.MESSAGE);
|
|
|
+ this.pushToWeb("pageNumber_4", "functionNumber_2", str, vos, Messagetype.MESSAGE);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setMatrixValue(Map<String, Map<String, WindTurbineTestingPointAi>> wtpAimap, List<MatrixVo> vos, List<Windturbine> ls) throws Exception {
|
|
|
+ List<String> fjztls=new ArrayList<>();
|
|
|
+ List<String> glls=new ArrayList<>();
|
|
|
+ List<String> fsls=new ArrayList<>();
|
|
|
+ for (Windturbine wt : ls) {
|
|
|
+
|
|
|
+ if(wtpAimap.containsKey(wt.getId()))
|
|
|
+ {
|
|
|
+ fjztls.add(wtpAimap.get(wt.getId()).get(Constant.FJZT).getId());
|
|
|
+ glls.add(wtpAimap.get(wt.getId()).get(Constant.TPOINT_WT_FJGL).getId());
|
|
|
+ fsls.add(wtpAimap.get(wt.getId()).get(Constant.TPOINT_WT_FJSSFS).getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ List<PointData> fjztvaluels=mongodb.getRealData(fjztls);
|
|
|
+ List<PointData> glvaluels=mongodb.getRealData(glls);
|
|
|
+ List<PointData> fsvaluels=mongodb.getRealData(fsls);
|
|
|
+
|
|
|
+ if(null !=fjztvaluels && null !=glvaluels && null !=fsvaluels && glvaluels.size()==fjztvaluels.size() && fsvaluels.size()==ls.size() && fjztvaluels.size()==ls.size())
|
|
|
+ {
|
|
|
+ for ( int i=0;i<ls.size();i++) {
|
|
|
+
|
|
|
+ Windturbine wt=ls.get(i);
|
|
|
+ MatrixVo vo = new MatrixVo();
|
|
|
+ StringBuilder sbs = new StringBuilder();
|
|
|
+ vo.setId(wt.getCode());
|
|
|
+ //风机状态
|
|
|
+ PointData fjzt_real =fjztvaluels.get(i);
|
|
|
+ sbs.append("00");
|
|
|
+ int fjzt = new BigDecimal(fjzt_real.getPointValueInDouble()).setScale(decimal_digit, RoundingMode.HALF_EVEN).intValue();
|
|
|
+ vo.setIcon(String.valueOf(sbs.append(fjzt)));
|
|
|
+ //功率
|
|
|
+ PointData power_real = glvaluels.get(i);
|
|
|
+ double power = new BigDecimal(power_real.getPointValueInDouble()).setScale(decimal_digit, RoundingMode.HALF_EVEN).doubleValue();
|
|
|
+ vo.setPower(String.valueOf(power));
|
|
|
+
|
|
|
+ //风速
|
|
|
+ PointData speed_real =fsvaluels.get(i);
|
|
|
+ double speed = new BigDecimal(speed_real.getPointValueInDouble()).setScale(decimal_digit, RoundingMode.HALF_EVEN).doubleValue();
|
|
|
+ vo.setSpeed(String.valueOf(speed));
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|