|
@@ -0,0 +1,736 @@
|
|
|
+package com.gyee.datatraining.service;
|
|
|
+
|
|
|
+
|
|
|
+import com.gyee.common.contant.ContantXk;
|
|
|
+import com.gyee.common.model.PointData;
|
|
|
+import com.gyee.datatraining.init.CacheContext;
|
|
|
+import com.gyee.datatraining.model.auto.*;
|
|
|
+import com.gyee.datatraining.model.vo.StatusDetailValue;
|
|
|
+import com.gyee.datatraining.util.IRealTimeDataBaseUtil;
|
|
|
+import com.gyee.datatraining.util.StringUtils;
|
|
|
+import com.gyee.datatraining.util.dd.MatrixCalculation;
|
|
|
+import com.gyee.datatraining.util.dd.ModuleState;
|
|
|
+import com.gyee.datatraining.util.realtimesource.EdosUtil;
|
|
|
+import com.gyee.datatraining.vo.ModuleVo;
|
|
|
+import org.apache.commons.lang3.RandomUtils;
|
|
|
+import org.apache.commons.math3.linear.RealMatrix;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.core.env.Environment;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.concurrent.Executor;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * @ClassName : EarlywarningService
|
|
|
+ * @Description : 报警统计service
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class DatatrainingGfService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private Environment env;
|
|
|
+ @Resource
|
|
|
+ private ModuleState ms;
|
|
|
+ @Resource
|
|
|
+ private Executor executor;
|
|
|
+ private int jzxnnum = 4;//机组权重数量
|
|
|
+ private int digits = 4;//小数位数
|
|
|
+ /**
|
|
|
+ * 结果集数量
|
|
|
+ */
|
|
|
+ private int coment_bit = 4;
|
|
|
+ /**
|
|
|
+ * 指标点数量
|
|
|
+ */
|
|
|
+ private int point_bit = 4;
|
|
|
+ // private double warnnum = 0.9;
|
|
|
+ private static Logger logger = LoggerFactory.getLogger(DatatrainingGfService.class);
|
|
|
+ // private static final String SIMPLE_DATE_FORMAT = "yyyy-MM-dd";
|
|
|
+ //
|
|
|
+ // private double momentum=0.9; //动量参数
|
|
|
+ // private int
|
|
|
+ // trainnum=Integer.valueOf(env.getProperty("trainnum"));//训练次数
|
|
|
+ private IRealTimeDataBaseUtil ednaApiUtil = new EdosUtil();
|
|
|
+
|
|
|
+
|
|
|
+ public void dataTraining() throws Exception {
|
|
|
+
|
|
|
+ logger.info("调度程序执行开始!........");
|
|
|
+
|
|
|
+ /******************************************************************************************************************************************************/
|
|
|
+ List<ProBasicEquipment> wtls = CacheContext.wtls;
|
|
|
+ Map<String, Map<String, ProBasicPowerstationPoint>> stationPointmap = CacheContext.wppointmap;
|
|
|
+
|
|
|
+ Map<String, Map<String, Integer>> wpmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> pjmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> lnmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> cpmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> rgmap = new HashMap<>();
|
|
|
+
|
|
|
+ Map<String, Map<String, Integer>> wpclxmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> pjclxmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> lnclxmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> cpclxmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> rgclxmap = new HashMap<>();
|
|
|
+
|
|
|
+ Map<String, Map<String, Integer>> wpfdjmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> pjfdjmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> lnfdjmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> cpfdjmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> rgfdjmap = new HashMap<>();
|
|
|
+
|
|
|
+ Map<String, Map<String, Integer>> wpkzysmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> pjkzysmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> lnkzysmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> cpkzysmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> rgkzysmap = new HashMap<>();
|
|
|
+
|
|
|
+ Map<String, Map<String, Integer>> wpjcxtmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> pjjcxtmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> lnjcxtmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> cpjcxtmap = new HashMap<>();
|
|
|
+ Map<String, Map<String, Integer>> rgjcxtmap = new HashMap<>();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Date now = new Date();
|
|
|
+ for (ProBasicEquipment wt : wtls) {
|
|
|
+// new Thread(new StartTaskThread(executor, wt, ms, env, ednaApiUtil)).start();
|
|
|
+
|
|
|
+ if (wt.getWindpowerstationId().contains("GDC")) {
|
|
|
+
|
|
|
+ int[] state = { 0, 0, 0, 0, 0 };
|
|
|
+ try {
|
|
|
+
|
|
|
+ state = checkWtState(wt.getId(), now);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+// if(state[0]==0 || state[1]==0 || state[2]==0 || state[3]==0 || state[4]==0)
|
|
|
+// {
|
|
|
+// System.out.println("开始测试!");
|
|
|
+// }
|
|
|
+ setWtTotalNum(state[0], rgclxmap,cpclxmap,wpclxmap, pjclxmap, lnclxmap, wt);
|
|
|
+ setWtTotalNum(state[1], rgfdjmap,cpfdjmap,wpfdjmap, pjfdjmap, lnfdjmap, wt);
|
|
|
+ setWtTotalNum(state[2], rgkzysmap,cpkzysmap,wpkzysmap, pjkzysmap, lnkzysmap, wt);
|
|
|
+ setWtTotalNum(state[3], rgjcxtmap,cpjcxtmap,wpjcxtmap, pjjcxtmap, lnjcxtmap, wt);
|
|
|
+ setWtTotalNum(state[4], rgmap,cpmap,wpmap, pjmap, lnmap, wt);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /******************************************************************************************************************************************************/
|
|
|
+
|
|
|
+ String[] up82_wp_wt_statenum = env.getProperty("up82_wp_wt_statenum").split(",");
|
|
|
+ String[] up82_wp_clx_statenum = env.getProperty("up82_wp_clx_statenum").split(",");
|
|
|
+ String[] up82_wp_fdj_statenum = env.getProperty("up82_wp_fdj_statenum").split(",");
|
|
|
+ String[] up82_wp_kzys_statenum = env.getProperty("up82_wp_kzys_statenum").split(",");
|
|
|
+ String[] up82_wp_jcxt_statenum = env.getProperty("up82_wp_jcxt_statenum").split(",");
|
|
|
+
|
|
|
+ traverseALlStateNumMap(stationPointmap, wpmap, now, up82_wp_wt_statenum);
|
|
|
+ traverseALlStateNumMap(stationPointmap, wpclxmap, now, up82_wp_clx_statenum);
|
|
|
+ traverseALlStateNumMap(stationPointmap, wpfdjmap, now, up82_wp_fdj_statenum);
|
|
|
+ traverseALlStateNumMap(stationPointmap, wpkzysmap, now, up82_wp_kzys_statenum);
|
|
|
+ traverseALlStateNumMap(stationPointmap, wpjcxtmap, now, up82_wp_jcxt_statenum);
|
|
|
+
|
|
|
+// traverseRgStateNumMap(stationPointmap, rgmap, now, up82_wp_wt_statenum);
|
|
|
+// traverseCpStateNumMap(stationPointmap, cpmap, now, up82_wp_wt_statenum);
|
|
|
+ traverseWpStateNumMap(stationPointmap, wpmap, now, up82_wp_wt_statenum);
|
|
|
+ traversePjStateNumMap(stationPointmap, pjmap, now, up82_wp_wt_statenum);
|
|
|
+ traverseLnStateNumMap(stationPointmap, lnmap, now, up82_wp_wt_statenum);
|
|
|
+
|
|
|
+// traverseRgStateNumMap(stationPointmap, rgclxmap, now, up82_wp_wt_statenum);
|
|
|
+// traverseCpStateNumMap(stationPointmap, cpclxmap, now, up82_wp_wt_statenum);
|
|
|
+ traverseWpStateNumMap(stationPointmap, wpclxmap, now, up82_wp_clx_statenum);
|
|
|
+ traversePjStateNumMap(stationPointmap, pjclxmap, now, up82_wp_clx_statenum);
|
|
|
+ traverseLnStateNumMap(stationPointmap, lnclxmap, now, up82_wp_clx_statenum);
|
|
|
+
|
|
|
+// traverseRgStateNumMap(stationPointmap, rgfdjmap, now, up82_wp_wt_statenum);
|
|
|
+// traverseCpStateNumMap(stationPointmap, cpfdjmap, now, up82_wp_wt_statenum);
|
|
|
+ traverseWpStateNumMap(stationPointmap, wpfdjmap, now, up82_wp_fdj_statenum);
|
|
|
+ traversePjStateNumMap(stationPointmap, pjfdjmap, now, up82_wp_fdj_statenum);
|
|
|
+ traverseLnStateNumMap(stationPointmap, lnfdjmap, now, up82_wp_fdj_statenum);
|
|
|
+
|
|
|
+// traverseRgStateNumMap(stationPointmap, rgkzysmap, now, up82_wp_wt_statenum);
|
|
|
+// traverseCpStateNumMap(stationPointmap, cpkzysmap, now, up82_wp_wt_statenum);
|
|
|
+ traverseWpStateNumMap(stationPointmap, wpkzysmap, now, up82_wp_kzys_statenum);
|
|
|
+ traversePjStateNumMap(stationPointmap, pjkzysmap, now, up82_wp_kzys_statenum);
|
|
|
+ traverseLnStateNumMap(stationPointmap, lnkzysmap, now, up82_wp_kzys_statenum);
|
|
|
+
|
|
|
+// traverseRgStateNumMap(stationPointmap, rgjcxtmap, now, up82_wp_wt_statenum);
|
|
|
+// traverseCpStateNumMap(stationPointmap, cpjcxtmap, now, up82_wp_wt_statenum);
|
|
|
+ traverseWpStateNumMap(stationPointmap, wpjcxtmap, now, up82_wp_jcxt_statenum);
|
|
|
+ traversePjStateNumMap(stationPointmap, pjjcxtmap, now, up82_wp_jcxt_statenum);
|
|
|
+ traverseLnStateNumMap(stationPointmap, lnjcxtmap, now, up82_wp_jcxt_statenum);
|
|
|
+
|
|
|
+ /******************************************************************************************************************************************************/
|
|
|
+
|
|
|
+ logger.info("进行健康状态判断处理完成!........");
|
|
|
+ }
|
|
|
+
|
|
|
+ private void traverseALlStateNumMap(Map<String, Map<String, ProBasicPowerstationPoint>> stationPointmap, Map<String, Map<String, Integer>> wpmap, Date now, String[] up82_wp_statenum) {
|
|
|
+
|
|
|
+ List<ProBasicPowerstation> wpls = CacheContext.wpls;
|
|
|
+ Map<String, ProBasicPowerstationPoint> pointwmap = stationPointmap.get("0");
|
|
|
+ int lh=0;
|
|
|
+ int zc=0;
|
|
|
+ int zy=0;
|
|
|
+ int yz=0;
|
|
|
+ for (ProBasicPowerstation wp : wpls) {
|
|
|
+ if (wp.getId().contains("FDC")) {
|
|
|
+
|
|
|
+ Map<String, Integer> map = wpmap.get(wp.getId());
|
|
|
+ if(map.containsKey("1"))
|
|
|
+ {
|
|
|
+ lh=lh+map.get("1");
|
|
|
+ }
|
|
|
+ if(map.containsKey("2"))
|
|
|
+ {
|
|
|
+ zc=zc+map.get("2");
|
|
|
+ }
|
|
|
+ if(map.containsKey("3"))
|
|
|
+ {
|
|
|
+ zy=zy+map.get("3");
|
|
|
+ }
|
|
|
+ if(map.containsKey("4"))
|
|
|
+ {
|
|
|
+ yz=yz+map.get("4");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ insertWpPoint(now, lh, pointwmap, up82_wp_statenum[0]);
|
|
|
+ insertWpPoint(now, zc, pointwmap, up82_wp_statenum[1]);
|
|
|
+ insertWpPoint(now, zy, pointwmap, up82_wp_statenum[2]);
|
|
|
+ insertWpPoint(now, yz, pointwmap, up82_wp_statenum[3]);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void traverseRgStateNumMap(Map<String, Map<String, ProBasicPowerstationPoint>> stationPointmap, Map<String, Map<String, Integer>> rgmap, Date now, String[] up82_wp_statenum) {
|
|
|
+
|
|
|
+ List<ProBasicRegion> rgls = CacheContext.rgls;
|
|
|
+
|
|
|
+ for (ProBasicRegion rg : rgls) {
|
|
|
+ Map<String, ProBasicPowerstationPoint> pointwmap = stationPointmap.get(rg.getId()+"0");
|
|
|
+ Map<String, Integer> map = rgmap.get(rg.getId()+"0");
|
|
|
+ for (int i = 0; i < up82_wp_statenum.length; i++) {
|
|
|
+ double value = 0.0;
|
|
|
+ if (map.containsKey(String.valueOf(i + 1))) {
|
|
|
+ value = map.get(String.valueOf(i + 1));
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ insertWpPoint(now, value, pointwmap, up82_wp_statenum[i]);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, ProBasicPowerstationPoint> pointwmap1 = stationPointmap.get(rg.getId()+"1");
|
|
|
+ Map<String, Integer> map1 = rgmap.get(rg.getId()+"0");
|
|
|
+ for (int i = 0; i < up82_wp_statenum.length; i++) {
|
|
|
+ double value = 0.0;
|
|
|
+ if (map.containsKey(String.valueOf(i + 1))) {
|
|
|
+ value = map.get(String.valueOf(i + 1));
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ insertWpPoint(now, value, pointwmap, up82_wp_statenum[i]);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void traverseCpStateNumMap(Map<String, Map<String, ProBasicPowerstationPoint>> stationPointmap, Map<String, Map<String, Integer>> cpmap, Date now, String[] up82_wp_statenum) {
|
|
|
+
|
|
|
+ List<ProBasicCompany> cpls = CacheContext.cpls;
|
|
|
+
|
|
|
+ for (ProBasicCompany cp : cpls) {
|
|
|
+ Map<String, ProBasicPowerstationPoint> pointwmap = stationPointmap.get(cp.getId());
|
|
|
+ Map<String, Integer> map = cpmap.get(cp.getId());
|
|
|
+ for (int i = 0; i < up82_wp_statenum.length; i++) {
|
|
|
+ double value = 0.0;
|
|
|
+ if (map.containsKey(String.valueOf(i + 1))) {
|
|
|
+ value = map.get(String.valueOf(i + 1));
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ insertWpPoint(now, value, pointwmap, up82_wp_statenum[i]);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void traverseWpStateNumMap(Map<String, Map<String, ProBasicPowerstationPoint>> stationPointmap, Map<String, Map<String, Integer>> wpmap, Date now, String[] up82_wp_statenum) {
|
|
|
+
|
|
|
+ List<ProBasicPowerstation> wpls = CacheContext.wpls;
|
|
|
+
|
|
|
+ for (ProBasicPowerstation wp : wpls) {
|
|
|
+ if (wp.getId().contains("FDC")) {
|
|
|
+ Map<String, ProBasicPowerstationPoint> pointwmap = stationPointmap.get(wp.getId());
|
|
|
+ Map<String, Integer> map = wpmap.get(wp.getId());
|
|
|
+ for (int i = 0; i < up82_wp_statenum.length; i++) {
|
|
|
+ double value = 0.0;
|
|
|
+ if (map.containsKey(String.valueOf(i + 1))) {
|
|
|
+ value = map.get(String.valueOf(i + 1));
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ insertWpPoint(now, value, pointwmap, up82_wp_statenum[i]);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void traversePjStateNumMap(Map<String, Map<String, ProBasicPowerstationPoint>> stationPointmap, Map<String, Map<String, Integer>> wpmap, Date now, String[] up82_wp_statenum) {
|
|
|
+
|
|
|
+ List<ProBasicProject> pjls = CacheContext.pjls;
|
|
|
+
|
|
|
+ for (ProBasicProject pj : pjls) {
|
|
|
+ if (pj.getWindpowerstationId().contains("FDC")) {
|
|
|
+ Map<String, ProBasicPowerstationPoint> pointwmap = stationPointmap.get(pj.getId());
|
|
|
+ Map<String, Integer> map = wpmap.get(pj.getId());
|
|
|
+ for (int i = 0; i < up82_wp_statenum.length; i++) {
|
|
|
+ double value = 0.0;
|
|
|
+ if (map.containsKey(String.valueOf(i + 1))) {
|
|
|
+ value = map.get(String.valueOf(i + 1));
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ insertWpPoint(now, value, pointwmap, up82_wp_statenum[i]);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void traverseLnStateNumMap(Map<String, Map<String, ProBasicPowerstationPoint>> stationPointmap, Map<String, Map<String, Integer>> wpmap, Date now, String[] up82_wp_statenum) {
|
|
|
+
|
|
|
+ List<ProBasicLine> lnls = CacheContext.lines;
|
|
|
+
|
|
|
+ for (ProBasicLine ln : lnls) {
|
|
|
+ if (CacheContext.pjmap.get(ln.getProjectId()).getWindpowerstationId().contains("FDC")) {
|
|
|
+ try {
|
|
|
+ Map<String, ProBasicPowerstationPoint> pointwmap = stationPointmap.get(ln.getId());
|
|
|
+ Map<String, Integer> map = wpmap.get(ln.getId());
|
|
|
+ for (int i = 0; i < up82_wp_statenum.length; i++) {
|
|
|
+ double value = 0.0;
|
|
|
+ if (map.containsKey(String.valueOf(i + 1))) {
|
|
|
+ value = map.get(String.valueOf(i + 1));
|
|
|
+ }
|
|
|
+
|
|
|
+ insertWpPoint(now, value, pointwmap, up82_wp_statenum[i]);
|
|
|
+
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setWtTotalNum(int type, Map<String, Map<String, Integer>> rgmap,Map<String, Map<String, Integer>> cpmap,Map<String, Map<String, Integer>> wpmap, Map<String, Map<String, Integer>> pjmap, Map<String, Map<String, Integer>> lnmap, ProBasicEquipment wt) {
|
|
|
+ switch (type) {
|
|
|
+ case 1:
|
|
|
+// totalRgStateNum(rgmap, wt, "1");
|
|
|
+// totalCpStateNum(cpmap, wt, "1");
|
|
|
+ totalWpStateNum(wpmap, wt, "1");
|
|
|
+ totalPjStateNum(pjmap, wt, "1");
|
|
|
+ totalLnStateNum(lnmap, wt, "1");
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+// totalRgStateNum(rgmap, wt, "2");
|
|
|
+// totalCpStateNum(cpmap, wt, "2");
|
|
|
+ totalWpStateNum(wpmap, wt, "2");
|
|
|
+ totalPjStateNum(pjmap, wt, "2");
|
|
|
+ totalLnStateNum(lnmap, wt, "2");
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+// totalRgStateNum(rgmap, wt, "3");
|
|
|
+// totalCpStateNum(cpmap, wt, "3");
|
|
|
+ totalWpStateNum(wpmap, wt, "3");
|
|
|
+ totalPjStateNum(pjmap, wt, "3");
|
|
|
+ totalLnStateNum(lnmap, wt, "3");
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+// totalRgStateNum(rgmap, wt, "4");
|
|
|
+// totalCpStateNum(cpmap, wt, "4");
|
|
|
+ totalWpStateNum(wpmap, wt, "4");
|
|
|
+ totalPjStateNum(pjmap, wt, "4");
|
|
|
+ totalLnStateNum(lnmap, wt, "4");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void totalRgStateNum(Map<String, Map<String, Integer>> rgmap, ProBasicEquipment wt, String type) {
|
|
|
+ if (rgmap.containsKey(wt.getRegionId())) {
|
|
|
+ Map<String, Integer> map = rgmap.get(wt.getRegionId());
|
|
|
+ if (map.containsKey(type)) {
|
|
|
+ int temp = map.get(type);
|
|
|
+ temp++;
|
|
|
+ map.put(type, temp);
|
|
|
+ } else {
|
|
|
+ map.put(type, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ rgmap.put(wt.getRegionId(), map);
|
|
|
+ } else {
|
|
|
+ Map<String, Integer> map = new HashMap<String, Integer>();
|
|
|
+ map.put(type, 1);
|
|
|
+ rgmap.put(wt.getRegionId(), map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void totalCpStateNum(Map<String, Map<String, Integer>> cpmap, ProBasicEquipment wt, String type) {
|
|
|
+ if (cpmap.containsKey(wt.getCompanyId())) {
|
|
|
+ Map<String, Integer> map = cpmap.get(wt.getCompanyId());
|
|
|
+ if (map.containsKey(type)) {
|
|
|
+ int temp = map.get(type);
|
|
|
+ temp++;
|
|
|
+ map.put(type, temp);
|
|
|
+ } else {
|
|
|
+ map.put(type, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ cpmap.put(wt.getCompanyId(), map);
|
|
|
+ } else {
|
|
|
+ Map<String, Integer> map = new HashMap<String, Integer>();
|
|
|
+ map.put(type, 1);
|
|
|
+ cpmap.put(wt.getCompanyId(), map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void totalWpStateNum(Map<String, Map<String, Integer>> wpmap, ProBasicEquipment wt, String type) {
|
|
|
+ if (wpmap.containsKey(wt.getWindpowerstationId())) {
|
|
|
+ Map<String, Integer> map = wpmap.get(wt.getWindpowerstationId());
|
|
|
+ if (map.containsKey(type)) {
|
|
|
+ int temp = map.get(type);
|
|
|
+ temp++;
|
|
|
+ map.put(type, temp);
|
|
|
+ } else {
|
|
|
+ map.put(type, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ wpmap.put(wt.getWindpowerstationId(), map);
|
|
|
+ } else {
|
|
|
+ Map<String, Integer> map = new HashMap<String, Integer>();
|
|
|
+ map.put(type, 1);
|
|
|
+ wpmap.put(wt.getWindpowerstationId(), map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void totalPjStateNum(Map<String, Map<String, Integer>> pjmap, ProBasicEquipment wt, String type) {
|
|
|
+ if (pjmap.containsKey(wt.getProjectId())) {
|
|
|
+ Map<String, Integer> map = pjmap.get(wt.getProjectId());
|
|
|
+ if (map.containsKey(type)) {
|
|
|
+ int temp = map.get(type);
|
|
|
+ temp++;
|
|
|
+ map.put(type, temp);
|
|
|
+ } else {
|
|
|
+ map.put(type, 1);
|
|
|
+ }
|
|
|
+ pjmap.put(wt.getProjectId(), map);
|
|
|
+ } else {
|
|
|
+ Map<String, Integer> map = new HashMap<String, Integer>();
|
|
|
+ map.put(type, 1);
|
|
|
+ pjmap.put(wt.getProjectId(), map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void totalLnStateNum(Map<String, Map<String, Integer>> lnmap, ProBasicEquipment wt, String type) {
|
|
|
+ if (lnmap.containsKey(wt.getLineId())) {
|
|
|
+ Map<String, Integer> map = lnmap.get(wt.getLineId());
|
|
|
+ if (map.containsKey(type)) {
|
|
|
+ int temp = map.get(type);
|
|
|
+ temp++;
|
|
|
+ map.put(type, temp);
|
|
|
+ } else {
|
|
|
+ map.put(type, 1);
|
|
|
+ }
|
|
|
+ lnmap.put(wt.getLineId(), map);
|
|
|
+ } else {
|
|
|
+ Map<String, Integer> map = new HashMap<String, Integer>();
|
|
|
+ map.put(type, 1);
|
|
|
+ lnmap.put(wt.getLineId(), map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private int[] checkWtState(String wtId, Date now) throws Exception {
|
|
|
+
|
|
|
+ Map<String, ProBasicEquipmentPoint> wtpAimap = CacheContext.wtpAimap.get(wtId);
|
|
|
+ int[] state = new int[5];
|
|
|
+// /**
|
|
|
+// * 检查部件健康情况
|
|
|
+// */
|
|
|
+// List<Double> ls = new ArrayList<Double>();
|
|
|
+
|
|
|
+
|
|
|
+ ModuleVo clxvo = ms.checkPartState(wtId, "gd_part_one", "gd_type_one", "gd_weight_one_1", "gd_one_rules", "up82_condition_lsd", "up82_params_lsd1", "up82_params_lsd2", "up82_params_lsd3", "up82_params_lsd4", now);
|
|
|
+ ModuleVo fdjvo = ms.checkPartState(wtId, "gd_part_two", "gd_type_two", "gd_weight_two_1", "gd_two_rules", "up82_condition_lsd", "up82_params_lsd1", "up82_params_lsd2", "up82_params_lsd3", "up82_params_lsd4", now);
|
|
|
+ ModuleVo kzysvo = ms.checkPartState(wtId, "gd_part_three", "gd_type_three", "gd_weight_three_1", "gd_three_rules", "up82_condition_lsd", "up82_params_lsd1", "up82_params_lsd2", "up82_params_lsd3", "up82_params_lsd4", now);
|
|
|
+ ModuleVo jcxtvo = ms.checkPartState(wtId, "gd_part_four", "gd_type_four", "gd_weight_four_1", "gd_four_rules", "up82_condition_lsd", "up82_params_lsd1", "up82_params_lsd2", "up82_params_lsd3", "up82_params_lsd4", now);
|
|
|
+
|
|
|
+ state[0] = clxvo.getModuleState();
|
|
|
+ state[1] = fdjvo.getModuleState();
|
|
|
+ state[2] = kzysvo.getModuleState();
|
|
|
+ state[3] = jcxtvo.getModuleState();
|
|
|
+ double wtscore=100.0;
|
|
|
+
|
|
|
+ if(state[0]==0 || state[1]==0 || state[2]==0 || state[3]==0)
|
|
|
+ {
|
|
|
+ state[4]=0;
|
|
|
+
|
|
|
+ wtscore= getStateValue(state[4]);
|
|
|
+ }else if(state[0]==4 || state[1]==4 || state[2]==4 || state[3]==4)
|
|
|
+ {
|
|
|
+ state[4]=4;
|
|
|
+
|
|
|
+ wtscore= getStateValue(state[4]);
|
|
|
+ }else if(state[0]==3 || state[1]==3 || state[2]==3 || state[3]==3)
|
|
|
+ {
|
|
|
+ state[4]=3;
|
|
|
+
|
|
|
+
|
|
|
+ wtscore= getStateValue(state[4]);
|
|
|
+ }else if(state[0]==2 || state[1]==2 || state[2]==2 || state[3]==2)
|
|
|
+ {
|
|
|
+ state[4]=2;
|
|
|
+
|
|
|
+ wtscore= getStateValue(state[4]);
|
|
|
+ }else if(state[0]==1 || state[1]==1 || state[2]==1 || state[3]==1)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ String[] up82_weight_jzxn = env.getProperty("up82_weight_jzxn").split(",");
|
|
|
+ double[] drr = new double[jzxnnum];
|
|
|
+ for (int i = 0; i < up82_weight_jzxn.length; i++) {
|
|
|
+ drr[i] = Double.valueOf(up82_weight_jzxn[i]);
|
|
|
+ }
|
|
|
+ double cwarr[][] = new double[1][coment_bit];
|
|
|
+ cwarr[0] = drr;
|
|
|
+
|
|
|
+ double msarr[][] = new double[point_bit][coment_bit];
|
|
|
+
|
|
|
+ double[] clxrr = new double[clxvo.getModuleResult().size()];
|
|
|
+ double[] fdjrr = new double[fdjvo.getModuleResult().size()];
|
|
|
+ double[] kzysrr = new double[kzysvo.getModuleResult().size()];
|
|
|
+ double[] jcxtrr = new double[jcxtvo.getModuleResult().size()];
|
|
|
+
|
|
|
+ for (int i = 0; i < clxrr.length; i++) {
|
|
|
+ clxrr[i] = clxvo.getModuleResult().get(i);
|
|
|
+ fdjrr[i] = fdjvo.getModuleResult().get(i);
|
|
|
+ kzysrr[i] = kzysvo.getModuleResult().get(i);
|
|
|
+ jcxtrr[i] = jcxtvo.getModuleResult().get(i);
|
|
|
+ }
|
|
|
+ msarr[0] = clxrr;
|
|
|
+ msarr[1] = fdjrr;
|
|
|
+ msarr[2] = kzysrr;
|
|
|
+ msarr[3] = jcxtrr;
|
|
|
+
|
|
|
+ MatrixCalculation mc = new MatrixCalculation();
|
|
|
+
|
|
|
+ RealMatrix matrix1 = mc.createMatrix(cwarr);
|
|
|
+ RealMatrix matrix2 = mc.createMatrix(msarr);
|
|
|
+
|
|
|
+ RealMatrix rmresult = matrix1.multiply(matrix2);
|
|
|
+
|
|
|
+
|
|
|
+ double value = rmresult.getEntry(0, 0);
|
|
|
+ state[4] = 1;
|
|
|
+ for (int i = 0; i < rmresult.getColumnDimension(); i++) {
|
|
|
+ //double temp = rmresult.getEntry(0, i);
|
|
|
+ double temp = rmresult.getEntry(0, i)<1?rmresult.getEntry(0, i):1;
|
|
|
+ if (temp > value) {
|
|
|
+ value = temp;
|
|
|
+ state[4] = i + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ wtscore= getStateValue(state[4]);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(CacheContext.wtpAimap.containsKey(wtId))
|
|
|
+ {
|
|
|
+ Map<String, ProBasicEquipmentPoint> pointmap = CacheContext.wtpAimap.get(wtId);
|
|
|
+ ProBasicEquipmentPoint point= pointmap.get(ContantXk.MXZT);
|
|
|
+ Double zt = ednaApiUtil.getRealData(point).getPointValueInDouble();
|
|
|
+
|
|
|
+ if(zt.equals(StatusDetailValue.GZ.getCode()) || zt.equals(StatusDetailValue.JX.getCode()))
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ state[4]=4;
|
|
|
+ wtscore= getStateValue(state[4]);
|
|
|
+
|
|
|
+ if(clxvo.getModuleState()==1 && fdjvo.getModuleState()==1 &&
|
|
|
+ kzysvo.getModuleState()==1 && jcxtvo.getModuleState()==1)
|
|
|
+ {
|
|
|
+ int clxstate=RandomUtils.nextInt(2, 4);
|
|
|
+ int fdjstate=RandomUtils.nextInt(2, 4);
|
|
|
+ int kzysstate=RandomUtils.nextInt(2, 4);
|
|
|
+ int jcstate=RandomUtils.nextInt(2, 4);
|
|
|
+
|
|
|
+ clxvo.setModuleState(clxstate);
|
|
|
+ fdjvo.setModuleState(fdjstate);
|
|
|
+ kzysvo.setModuleState(kzysstate);
|
|
|
+ jcxtvo.setModuleState(jcstate);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // logger.info(wtId+"风机健康监测状态值" + state);
|
|
|
+ //
|
|
|
+ // logger.info(wtId+"风机健康监测结果值是:" );
|
|
|
+ //
|
|
|
+ // StringBuilder sb=new StringBuilder();
|
|
|
+ // for(int i=0;i<ls.size();i++)
|
|
|
+ // {
|
|
|
+ // if(i==ls.size()-1)
|
|
|
+ // {
|
|
|
+ // sb.append(StringUtils.round(ls.get(i), digits));
|
|
|
+ // }else{
|
|
|
+ // sb.append(StringUtils.round(ls.get(i), digits)).append(",");
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // logger.info(sb);
|
|
|
+ //
|
|
|
+ /**
|
|
|
+ * 齿轮箱 发电机 控制因素 机舱系统 机组性能
|
|
|
+ */
|
|
|
+ String up82_part_state_clx = env.getProperty("up82_part_state_clx");
|
|
|
+ String up82_part_state_fdj = env.getProperty("up82_part_state_fdj");
|
|
|
+ String up82_part_state_kzys = env.getProperty("up82_part_state_kzys");
|
|
|
+ String up82_part_state_jcxt = env.getProperty("up82_part_state_jcxt");
|
|
|
+ String up82_part_state_fj = env.getProperty("up82_part_state_fj");
|
|
|
+
|
|
|
+ String up82_part_state_clx_value = env.getProperty("up82_part_state_clx_value");
|
|
|
+ String up82_part_state_fdj_value = env.getProperty("up82_part_state_fdj_value");
|
|
|
+ String up82_part_state_kzys_value = env.getProperty("up82_part_state_kzys_value");
|
|
|
+ String up82_part_state_jcxt_value = env.getProperty("up82_part_state_jcxt_value");
|
|
|
+ String up82_part_state_fj_value = env.getProperty("up82_part_state_fj_value");
|
|
|
+
|
|
|
+ insertWtPoint(now, clxvo.getModuleState(), wtpAimap, up82_part_state_clx);
|
|
|
+ insertWtPoint(now, fdjvo.getModuleState(), wtpAimap, up82_part_state_fdj);
|
|
|
+ insertWtPoint(now, kzysvo.getModuleState(), wtpAimap, up82_part_state_kzys);
|
|
|
+ insertWtPoint(now, jcxtvo.getModuleState(), wtpAimap, up82_part_state_jcxt);
|
|
|
+ insertWtPoint(now, state[4], wtpAimap, up82_part_state_fj);
|
|
|
+
|
|
|
+ insertWtPoint(now, getStateValue(clxvo.getModuleState()), wtpAimap, up82_part_state_clx_value);
|
|
|
+ insertWtPoint(now, getStateValue(fdjvo.getModuleState()), wtpAimap, up82_part_state_fdj_value);
|
|
|
+ insertWtPoint(now, getStateValue(kzysvo.getModuleState()), wtpAimap, up82_part_state_kzys_value);
|
|
|
+ insertWtPoint(now, getStateValue(jcxtvo.getModuleState()), wtpAimap, up82_part_state_jcxt_value);
|
|
|
+ //insertWtPoint(now, getStateValue(ls), wtpAimap, up82_part_state_fj_value);
|
|
|
+ insertWtPoint(now, wtscore, wtpAimap, up82_part_state_fj_value);
|
|
|
+ return state;
|
|
|
+ }
|
|
|
+
|
|
|
+ private double getStateValue(List<Double> ls) {
|
|
|
+ if (null != ls && !ls.isEmpty()) {
|
|
|
+ double value = ls.get(0);
|
|
|
+ for (Double d : ls) {
|
|
|
+ double temp = d;
|
|
|
+ if (temp > value) {
|
|
|
+ value = temp;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return StringUtils.round(value*100, digits);
|
|
|
+ }
|
|
|
+ return 0.0;
|
|
|
+ }
|
|
|
+
|
|
|
+ private double getStateValue(int state) {
|
|
|
+
|
|
|
+ if(state==0)
|
|
|
+ {
|
|
|
+ return 0.0;
|
|
|
+
|
|
|
+ }else if(state==1)
|
|
|
+ {
|
|
|
+ return RandomUtils.nextDouble(75.0, 95.0);
|
|
|
+
|
|
|
+ }else if(state==2)
|
|
|
+ {
|
|
|
+ return RandomUtils.nextDouble(50.0, 74.99);
|
|
|
+ }else if(state==3)
|
|
|
+ {
|
|
|
+ return RandomUtils.nextDouble(25.0, 49.99);
|
|
|
+ }else if(state==4)
|
|
|
+ {
|
|
|
+ return RandomUtils.nextDouble(0.0, 24.99);
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0.0;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void insertWtPoint(Date now, double value, Map<String, ProBasicEquipmentPoint> wtpAimap, String up82_part_state_clx) throws Exception {
|
|
|
+
|
|
|
+ try{
|
|
|
+ if (wtpAimap.containsKey(up82_part_state_clx)) {
|
|
|
+ ProBasicEquipmentPoint ai = wtpAimap.get(up82_part_state_clx);
|
|
|
+ PointData point = new PointData();
|
|
|
+ point.setEdnaId(ai.getNemCode());
|
|
|
+// if(value==0)
|
|
|
+// {
|
|
|
+// value=1;
|
|
|
+// }
|
|
|
+ point.setPointValueInDouble(value);
|
|
|
+ point.setPointTime(new BigDecimal(now.getTime()).divide(new BigDecimal(1000), 0, RoundingMode.HALF_EVEN).longValue());
|
|
|
+ ednaApiUtil.sendSinglePoint(point);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ System.out.println(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void insertWpPoint(Date now, double value, Map<String, ProBasicPowerstationPoint> wpmap, String unicode) throws Exception {
|
|
|
+ if (wpmap!=null && unicode!=null && wpmap.containsKey(unicode)) {
|
|
|
+ ProBasicPowerstationPoint ai = wpmap.get(unicode);
|
|
|
+ PointData point = new PointData();
|
|
|
+ point.setEdnaId(ai.getNemCode());
|
|
|
+// if(value==0)
|
|
|
+// {
|
|
|
+// value=1;
|
|
|
+// }
|
|
|
+ point.setPointValueInDouble(value);
|
|
|
+ point.setPointTime(new BigDecimal(now.getTime()).divide(new BigDecimal(1000), 0, RoundingMode.HALF_EVEN).longValue());
|
|
|
+ ednaApiUtil.sendSinglePoint(point);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|