|
@@ -0,0 +1,596 @@
|
|
|
+package com.gyee.failurestatistics.service;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.gyee.failurestatistics.init.CacheContext;
|
|
|
+import com.gyee.failurestatistics.model.auto.*;
|
|
|
+import com.gyee.failurestatistics.service.auto.*;
|
|
|
+import com.gyee.failurestatistics.util.realtimesource.EdosUtil;
|
|
|
+import com.gyee.common.contant.Contant;
|
|
|
+import com.gyee.common.model.PointData;
|
|
|
+import com.gyee.common.model.StringUtils;
|
|
|
+
|
|
|
+import com.gyee.common.util.DateUtils;
|
|
|
+import com.gyee.common.util.RandomUtil;
|
|
|
+import com.gyee.common.vo.benchmark.OpeVo;
|
|
|
+import com.gyee.failurestatistics.vo.EventVo;
|
|
|
+import com.gyee.failurestatistics.vo.ShutdowneventVo;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.sql.ResultSet;
|
|
|
+import java.sql.SQLException;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.Map.Entry;
|
|
|
+/**
|
|
|
+ * @ClassName : FailurestatisticsService
|
|
|
+ * @Description : 故障统计service
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class FailurestatisticsService {
|
|
|
+
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private IFailurestatisticsmainService failurestatisticsmainService;
|
|
|
+ @Resource
|
|
|
+ private IFailurestatisticssubService failurestatisticssubService;
|
|
|
+
|
|
|
+
|
|
|
+ public void saveFailurestatisticsmain() throws Exception {
|
|
|
+
|
|
|
+
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
+ cal.set(Calendar.MINUTE, 0);
|
|
|
+ cal.set(Calendar.SECOND, 0);
|
|
|
+ Date endDate = cal.getTime();
|
|
|
+ cal.set(Calendar.DAY_OF_MONTH, -1);
|
|
|
+ Date beginDate = cal.getTime();
|
|
|
+
|
|
|
+ Map<String, List<EventVo>> day1nummap = getCountMap(beginDate, endDate);
|
|
|
+ Map<String, Map<String, List<ShutdowneventVo>>> day1eventmap = getEventMap(beginDate, endDate);
|
|
|
+ Map<String, Integer> day1ordermap = getCountOrderNum(beginDate, endDate);
|
|
|
+
|
|
|
+ cal = Calendar.getInstance();
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
+ cal.set(Calendar.MINUTE, 0);
|
|
|
+ cal.set(Calendar.SECOND, 0);
|
|
|
+ endDate = cal.getTime();
|
|
|
+ cal.set(Calendar.DAY_OF_MONTH, -3);
|
|
|
+ beginDate = cal.getTime();
|
|
|
+
|
|
|
+ Map<String, List<EventVo>> day3nummap = getCountMap(beginDate, endDate);
|
|
|
+ Map<String, Map<String, List<ShutdowneventVo>>> day3eventmap = getEventMap(beginDate, endDate);
|
|
|
+ Map<String, Integer> day3ordermap = getCountOrderNum(beginDate, endDate);
|
|
|
+ cal = Calendar.getInstance();
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
+ cal.set(Calendar.MINUTE, 0);
|
|
|
+ cal.set(Calendar.SECOND, 0);
|
|
|
+ endDate = cal.getTime();
|
|
|
+ cal.set(Calendar.DAY_OF_MONTH, -7);
|
|
|
+ beginDate = cal.getTime();
|
|
|
+ Map<String, List<EventVo>> day7nummap = getCountMap(beginDate, endDate);
|
|
|
+ Map<String, Map<String, List<ShutdowneventVo>>> day7eventmap = getEventMap(beginDate, endDate);
|
|
|
+ Map<String, Integer> day7ordermap = getCountOrderNum(beginDate, endDate);
|
|
|
+ cal = Calendar.getInstance();
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
+ cal.set(Calendar.MINUTE, 0);
|
|
|
+ cal.set(Calendar.SECOND, 0);
|
|
|
+ endDate = cal.getTime();
|
|
|
+ cal.set(Calendar.DAY_OF_MONTH, -15);
|
|
|
+ beginDate = cal.getTime();
|
|
|
+ Map<String, List<EventVo>> day15nummap = getCountMap(beginDate, endDate);
|
|
|
+ Map<String, Map<String, List<ShutdowneventVo>>> day15eventmap = getEventMap(beginDate, endDate);
|
|
|
+ Map<String, Integer> day15ordermap = getCountOrderNum(beginDate, endDate);
|
|
|
+ cal = Calendar.getInstance();
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
+ cal.set(Calendar.MINUTE, 0);
|
|
|
+ cal.set(Calendar.SECOND, 0);
|
|
|
+ endDate = cal.getTime();
|
|
|
+ cal.set(Calendar.MONTH, -1);
|
|
|
+ beginDate = cal.getTime();
|
|
|
+ Map<String, List<EventVo>> month1nummap = getCountMap(beginDate, endDate);
|
|
|
+ Map<String, Map<String, List<ShutdowneventVo>>> month1eventmap = getEventMap(beginDate, endDate);
|
|
|
+ Map<String, Integer> month1ordermap = getCountOrderNum(beginDate, endDate);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ cal = Calendar.getInstance();
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
+ cal.set(Calendar.MINUTE, 0);
|
|
|
+ cal.set(Calendar.SECOND, 0);
|
|
|
+ for (Windpowerstation wp : CacheContext.wpls) {
|
|
|
+ if (wp.getId().endsWith("FDC")) {
|
|
|
+
|
|
|
+ System.out.println("开始统计"+wp.getName()+"故障排名和次数统计");
|
|
|
+ List<Windturbine> wtls = CacheContext.wtsmap.get(wp.getId());
|
|
|
+ Map<String, Integer> synthesistopordermap =getSynthesistopOrderNum(wtls,day1ordermap, day3ordermap, day7ordermap, day15ordermap, month1ordermap);
|
|
|
+ for (Windturbine wt : wtls) {
|
|
|
+ Failurestatisticsmain po = new Failurestatisticsmain();
|
|
|
+ po.setWpid(wp.getId());
|
|
|
+ po.setWpname(wp.getName());
|
|
|
+ po.setWtid(wt.getId());
|
|
|
+ po.setWtname(wt.getName());
|
|
|
+ po.setRecodedate(cal.getTime());
|
|
|
+ if (day1nummap.containsKey(wt.getId())) {
|
|
|
+ /*********************************************************************************/
|
|
|
+ setFailurestatisticsmainValue(po, 0, day1nummap, wt);
|
|
|
+ if (day1ordermap.containsKey(wt.getId())) {
|
|
|
+ po.setDay1topnum(day1ordermap.get(wt.getId()));
|
|
|
+ } else {
|
|
|
+ po.setDay1topnum(wtls.size());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (day3nummap.containsKey(wt.getId())) {
|
|
|
+ /*********************************************************************************/
|
|
|
+ setFailurestatisticsmainValue(po, 1, day3nummap, wt);
|
|
|
+ if (day3ordermap.containsKey(wt.getId())) {
|
|
|
+ po.setDay3topnum(day3ordermap.get(wt.getId()));
|
|
|
+ } else {
|
|
|
+ po.setDay3topnum(wtls.size());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (day7nummap.containsKey(wt.getId())) {
|
|
|
+ /*********************************************************************************/
|
|
|
+ setFailurestatisticsmainValue(po, 2, day7nummap, wt);
|
|
|
+ if (day7ordermap.containsKey(wt.getId())) {
|
|
|
+ po.setDay7topnum(day7ordermap.get(wt.getId()));
|
|
|
+ } else {
|
|
|
+ po.setDay7topnum(wtls.size());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*********************************************************************************/
|
|
|
+ if (day15nummap.containsKey(wt.getId())) {
|
|
|
+ setFailurestatisticsmainValue(po, 3, day15nummap, wt);
|
|
|
+ if (day15ordermap.containsKey(wt.getId())) {
|
|
|
+ po.setDay15topnum(day15ordermap.get(wt.getId()));
|
|
|
+ } else {
|
|
|
+ po.setDay15topnum(wtls.size());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*********************************************************************************/
|
|
|
+ if (month1nummap.containsKey(wt.getId())) {
|
|
|
+ setFailurestatisticsmainValue(po, 4, month1nummap, wt);
|
|
|
+ if (month1ordermap.containsKey(wt.getId())) {
|
|
|
+ po.setMonth1topnum(month1ordermap.get(wt.getId()));
|
|
|
+ } else {
|
|
|
+ po.setMonth1topnum(wtls.size());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*********************************************************************************/
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if(synthesistopordermap.containsKey(wt.getId()))
|
|
|
+ {
|
|
|
+ po.setSynthesistopnum(synthesistopordermap.get(wt.getId()));
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ po.setSynthesistopnum(wtls.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ String tid=com.gyee.failurestatistics.util.StringUtils.getUUID();
|
|
|
+ po.setId(tid);
|
|
|
+ insertFailurestatisticsmain(po);
|
|
|
+// DAY3TOP1
|
|
|
+// DAY3TOP2
|
|
|
+// DAY3TOP3
|
|
|
+// DAY7TOP1
|
|
|
+// DAY7TOP2
|
|
|
+// DAY7TOP3
|
|
|
+// DAY15TOP1
|
|
|
+// DAY15TOP2
|
|
|
+// DAY15TOP3
|
|
|
+// MONTH1TOP1
|
|
|
+// MONTH1TOP2
|
|
|
+// MONTH1TOP3
|
|
|
+ //保存子表分类统计3天故障编号
|
|
|
+ saveFailureStatisticsSub(cal, day1eventmap, wp, wt, po, tid, "DAY1TOP1", po.getDay1top1Id());
|
|
|
+ saveFailureStatisticsSub(cal, day1eventmap, wp, wt, po, tid, "DAY1TOP2", po.getDay1top2Id());
|
|
|
+ saveFailureStatisticsSub(cal, day1eventmap, wp, wt, po, tid, "DAY1TOP3", po.getDay1top3Id());
|
|
|
+
|
|
|
+ //保存子表分类统计3天故障编号
|
|
|
+ saveFailureStatisticsSub(cal, day3eventmap, wp, wt, po, tid, "DAY3TOP1", po.getDay3top1Id());
|
|
|
+ saveFailureStatisticsSub(cal, day3eventmap, wp, wt, po, tid, "DAY3TOP2", po.getDay3top2Id());
|
|
|
+ saveFailureStatisticsSub(cal, day3eventmap, wp, wt, po, tid, "DAY3TOP3", po.getDay3top3Id());
|
|
|
+ //保存子表分类统计7天故障编号
|
|
|
+ saveFailureStatisticsSub(cal, day7eventmap, wp, wt, po, tid, "DAY7TOP1", po.getDay7top1Id());
|
|
|
+ saveFailureStatisticsSub(cal, day7eventmap, wp, wt, po, tid, "DAY7TOP2", po.getDay7top2Id());
|
|
|
+ saveFailureStatisticsSub(cal, day7eventmap, wp, wt, po, tid, "DAY7TOP3", po.getDay7top3Id());
|
|
|
+ //保存子表分类统计15天故障编号
|
|
|
+ saveFailureStatisticsSub(cal, day15eventmap, wp, wt, po, tid, "DAY15TOP1", po.getDay15top1Id());
|
|
|
+ saveFailureStatisticsSub(cal, day15eventmap, wp, wt, po, tid, "DAY15TOP2", po.getDay15top2Id());
|
|
|
+ saveFailureStatisticsSub(cal, day15eventmap, wp, wt, po, tid, "DAY15TOP3", po.getDay15top3Id());
|
|
|
+ //保存子表分类统计1月故障编号
|
|
|
+ saveFailureStatisticsSub(cal, month1eventmap, wp, wt, po, tid, "MONTH1TOP1", po.getMonth1top1Id());
|
|
|
+ saveFailureStatisticsSub(cal, month1eventmap, wp, wt, po, tid, "MONTH1TOP2", po.getMonth1top2Id());
|
|
|
+ saveFailureStatisticsSub(cal, month1eventmap, wp, wt, po, tid, "MONTH1TOP3", po.getMonth1top3Id());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ System.out.println("结束统计"+wp.getName()+"故障排名和次数统计");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 风机编号》Integer 获得统计综合排名顺序号
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+
|
|
|
+ public Map<String, Integer> getSynthesistopOrderNum(List<Windturbine> wtls, Map<String, Integer> day1ordermap,Map<String, Integer> day3ordermap, Map<String, Integer> day7ordermap, Map<String, Integer> day15ordermap, Map<String, Integer> month1ordermap) {
|
|
|
+
|
|
|
+ Map<String, Integer> synthesistopordermap = new TreeMap<String, Integer>();
|
|
|
+
|
|
|
+ if (StringUtils.notEmp(wtls) && !wtls.isEmpty() && StringUtils.notEmp(day3ordermap) && StringUtils.notEmp(day7ordermap) && StringUtils.notEmp(day15ordermap) && StringUtils.notEmp(month1ordermap)) {
|
|
|
+ for (Windturbine wt : wtls) {
|
|
|
+ int day1 = 0;
|
|
|
+ int day3 = 0;
|
|
|
+ int day7 = 0;
|
|
|
+ int day15 = 0;
|
|
|
+ int month1 = 0;
|
|
|
+
|
|
|
+ if (day1ordermap.containsKey(wt.getId())) {
|
|
|
+ day1 = day1ordermap.get(wt.getId());
|
|
|
+ } else {
|
|
|
+ day1 = wtls.size();
|
|
|
+ }
|
|
|
+ if (day3ordermap.containsKey(wt.getId())) {
|
|
|
+ day3 = day3ordermap.get(wt.getId());
|
|
|
+ } else {
|
|
|
+ day3 = wtls.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (day7ordermap.containsKey(wt.getId())) {
|
|
|
+ day7 = day7ordermap.get(wt.getId());
|
|
|
+ } else {
|
|
|
+ day7 = wtls.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (day15ordermap.containsKey(wt.getId())) {
|
|
|
+ day15 = day15ordermap.get(wt.getId());
|
|
|
+ } else {
|
|
|
+ day15 = wtls.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (month1ordermap.containsKey(wt.getId())) {
|
|
|
+ month1 = month1ordermap.get(wt.getId());
|
|
|
+ } else {
|
|
|
+ month1 = wtls.size();
|
|
|
+ }
|
|
|
+ synthesistopordermap.put(wt.getId(), day1+day3 + day7 + day15 + month1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 这里将map.entrySet()转换成list
|
|
|
+ List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(synthesistopordermap.entrySet());
|
|
|
+ // 然后通过比较器来实现排序
|
|
|
+ Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
|
|
|
+ // 升序排序
|
|
|
+ public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
|
|
|
+ return o1.getValue().compareTo(o2.getValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ synthesistopordermap = new TreeMap<String, Integer>();
|
|
|
+ int i = 1;
|
|
|
+ for (Map.Entry<String, Integer> mapping : list) {
|
|
|
+ // System.out.println(mapping.getKey()+":"+mapping.getValue());
|
|
|
+ synthesistopordermap.put(mapping.getKey(), i);
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ return synthesistopordermap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 复制排名前三的故障名称和故障数量
|
|
|
+ *
|
|
|
+ * @param po
|
|
|
+ * @param type
|
|
|
+ * @param nummap
|
|
|
+ * @param wt
|
|
|
+ */
|
|
|
+ private void setFailurestatisticsmainValue(Failurestatisticsmain po, int type, Map<String, List<EventVo>> nummap, Windturbine wt) {
|
|
|
+ List<EventVo> eventls = nummap.get(wt.getId());
|
|
|
+ int i = 1;
|
|
|
+ if (type == 0) {
|
|
|
+ for (EventVo vo : eventls) {
|
|
|
+ switch (i) {
|
|
|
+ case 1:
|
|
|
+ po.setDay1top1(vo.getEventnum());
|
|
|
+ po.setDay1top1Id(vo.getWarnId());
|
|
|
+ po.setDay1top1name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ po.setDay1top2(vo.getEventnum());
|
|
|
+ po.setDay1top2Id(vo.getWarnId());
|
|
|
+ po.setDay1top2name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ po.setDay1top3(vo.getEventnum());
|
|
|
+ po.setDay1top3Id(vo.getWarnId());
|
|
|
+ po.setDay1top3name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (type == 1) {
|
|
|
+ for (EventVo vo : eventls) {
|
|
|
+ switch (i) {
|
|
|
+ case 1:
|
|
|
+ po.setDay3top1(vo.getEventnum());
|
|
|
+ po.setDay3top1Id(vo.getWarnId());
|
|
|
+ po.setDay3top1name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ po.setDay3top2(vo.getEventnum());
|
|
|
+ po.setDay3top2Id(vo.getWarnId());
|
|
|
+ po.setDay3top2name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ po.setDay3top3(vo.getEventnum());
|
|
|
+ po.setDay3top3Id(vo.getWarnId());
|
|
|
+ po.setDay3top3name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (type == 2) {
|
|
|
+ for (EventVo vo : eventls) {
|
|
|
+ switch (i) {
|
|
|
+ case 1:
|
|
|
+
|
|
|
+ po.setDay7top1(vo.getEventnum());
|
|
|
+ po.setDay7top1Id(vo.getWarnId());
|
|
|
+ po.setDay7top1name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ po.setDay7top2(vo.getEventnum());
|
|
|
+ po.setDay7top2Id(vo.getWarnId());
|
|
|
+ po.setDay7top2name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ po.setDay7top3(vo.getEventnum());
|
|
|
+ po.setDay7top3Id(vo.getWarnId());
|
|
|
+ po.setDay7top3name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (type == 3) {
|
|
|
+ for (EventVo vo : eventls) {
|
|
|
+ switch (i) {
|
|
|
+ case 1:
|
|
|
+ po.setDay15top1(vo.getEventnum());
|
|
|
+ po.setDay15top1Id(vo.getWarnId());
|
|
|
+ po.setDay15top1name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ po.setDay15top2(vo.getEventnum());
|
|
|
+ po.setDay15top2Id(vo.getWarnId());
|
|
|
+ po.setDay15top2name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ po.setDay15top3(vo.getEventnum());
|
|
|
+ po.setDay15top3Id(vo.getWarnId());
|
|
|
+ po.setDay15top3name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (type == 4) {
|
|
|
+ for (EventVo vo : eventls) {
|
|
|
+ switch (i) {
|
|
|
+ case 1:
|
|
|
+ po.setMonth1top1(vo.getEventnum());
|
|
|
+ po.setMonth1top1Id(vo.getWarnId());
|
|
|
+ po.setMonth1top1name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ po.setMonth1top2(vo.getEventnum());
|
|
|
+ po.setMonth1top2Id(vo.getWarnId());
|
|
|
+ po.setMonth1top2name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ po.setMonth1top3(vo.getEventnum());
|
|
|
+ po.setMonth1top3Id(vo.getWarnId());
|
|
|
+ po.setMonth1top3name(vo.getWarnName());
|
|
|
+ i++;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 风机编号》Listt<EventVo> 获得统计数量map
|
|
|
+ *
|
|
|
+ * @param beginDate
|
|
|
+ * @param endDate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @SuppressWarnings({ "unchecked", "rawtypes" })
|
|
|
+ public Map<String, List<EventVo>> getCountMap(Date beginDate, Date endDate) {
|
|
|
+
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Map<String, List<EventVo>> map = new HashMap<String, List<EventVo>>();
|
|
|
+
|
|
|
+ if (StringUtils.notEmp(beginDate) && StringUtils.notEmp(endDate)) {
|
|
|
+
|
|
|
+
|
|
|
+ List<EventVo> list = failurestatisticsmainService.getCountMap(beginDate,endDate);
|
|
|
+
|
|
|
+ if (!list.isEmpty()) {
|
|
|
+ for (EventVo vo : list) {
|
|
|
+ if (map.containsKey(vo.getWtId())) {
|
|
|
+ List<EventVo> ls = map.get(vo.getWtId());
|
|
|
+ ls.add(vo);
|
|
|
+ map.put(vo.getWtId(), ls);
|
|
|
+ } else {
|
|
|
+ List<EventVo> ls = new ArrayList<EventVo>();
|
|
|
+ ls.add(vo);
|
|
|
+ map.put(vo.getWtId(), ls);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 风机编号》Integer 获得统计排名顺序号
|
|
|
+ *
|
|
|
+ * @param beginDate
|
|
|
+ * @param endDate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<String, Integer> getCountOrderNum(Date beginDate, Date endDate) {
|
|
|
+
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Map<String, Integer> map = new HashMap<String, Integer>();
|
|
|
+
|
|
|
+ if (StringUtils.notEmp(beginDate) && StringUtils.notEmp(endDate)) {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ List<EventVo> list =failurestatisticsmainService.getCountOrderNum(beginDate,endDate);
|
|
|
+
|
|
|
+ if (!list.isEmpty()) {
|
|
|
+ String wpId = list.get(0).getWpId();
|
|
|
+ int i = 1;
|
|
|
+ for (EventVo vo : list) {
|
|
|
+ if (wpId.equals(vo.getWpId())) {
|
|
|
+ map.put(vo.getWtId(), i);
|
|
|
+ i++;
|
|
|
+ } else {
|
|
|
+ wpId = vo.getWpId();
|
|
|
+ i = 1;
|
|
|
+ map.put(vo.getWtId(), i);
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获得风机》报警编号》List<ShutdowneventVo>
|
|
|
+ *
|
|
|
+ * @param beginDate
|
|
|
+ * @param endDate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @SuppressWarnings({ "unchecked", "rawtypes" })
|
|
|
+ public Map<String, Map<String, List<ShutdowneventVo>>> getEventMap(Date beginDate, Date endDate) {
|
|
|
+
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Map<String, Map<String, List<ShutdowneventVo>>> map = new HashMap<String, Map<String, List<ShutdowneventVo>>>();
|
|
|
+
|
|
|
+ if (StringUtils.notEmp(beginDate) && StringUtils.notEmp(endDate)) {
|
|
|
+
|
|
|
+ List<ShutdowneventVo> list =failurestatisticsmainService.getEventMap(beginDate,endDate);
|
|
|
+
|
|
|
+ if (!list.isEmpty()) {
|
|
|
+ for (ShutdowneventVo vo : list) {
|
|
|
+ if (map.containsKey(vo.getWindTurbineId())) {
|
|
|
+ Map<String, List<ShutdowneventVo>> tempmap = map.get(vo.getWindTurbineId());
|
|
|
+ if (tempmap.containsKey(vo.getWarningId())) {
|
|
|
+ List<ShutdowneventVo> ls = tempmap.get(vo.getWarningId());
|
|
|
+ ls.add(vo);
|
|
|
+ tempmap.put(vo.getWarningId(), ls);
|
|
|
+ } else {
|
|
|
+ List<ShutdowneventVo> ls = new ArrayList<ShutdowneventVo>();
|
|
|
+ ls.add(vo);
|
|
|
+ tempmap.put(vo.getWarningId(), ls);
|
|
|
+ }
|
|
|
+ map.put(vo.getWindTurbineId(), tempmap);
|
|
|
+ } else {
|
|
|
+ Map<String, List<ShutdowneventVo>> tempmap = new HashMap<String, List<ShutdowneventVo>>();
|
|
|
+ List<ShutdowneventVo> ls = new ArrayList<ShutdowneventVo>();
|
|
|
+ ls.add(vo);
|
|
|
+ tempmap.put(vo.getWarningId(), ls);
|
|
|
+ map.put(vo.getWindTurbineId(), tempmap);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void saveFailureStatisticsSub(Calendar cal, Map<String, Map<String, List<ShutdowneventVo>>> eventmap, Windpowerstation wp, Windturbine wt,
|
|
|
+ Failurestatisticsmain po, String tid,String name,String warningId) {
|
|
|
+ if(eventmap.containsKey(wt.getId()))
|
|
|
+ {
|
|
|
+ Map<String, List<ShutdowneventVo>> map=eventmap.get(wt.getId());
|
|
|
+ if(map.containsKey(warningId))
|
|
|
+ {
|
|
|
+ List<ShutdowneventVo> eventls=map.get(warningId);
|
|
|
+ for(ShutdowneventVo vo:eventls)
|
|
|
+ {
|
|
|
+ Failurestatisticssub subpo=new Failurestatisticssub();
|
|
|
+ subpo.setId(StringUtils.getUUID());
|
|
|
+ subpo.setTid(tid);
|
|
|
+ subpo.setWpid(wp.getId());
|
|
|
+ subpo.setWpname(wp.getName());
|
|
|
+ subpo.setWtid(wt.getId());
|
|
|
+ subpo.setWtname(wt.getName());
|
|
|
+ subpo.setRecodedate(cal.getTime());
|
|
|
+ subpo.setName(name);
|
|
|
+ subpo.setEventid(vo.getId());
|
|
|
+ failurestatisticssubService.insertFailurestatisticssub(subpo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void deleteFailurestatisticsmain(Date recodedate) {
|
|
|
+ failurestatisticsmainService.deleteFailurestatisticsmain(recodedate);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public int insertFailurestatisticsmain(Failurestatisticsmain po) {
|
|
|
+
|
|
|
+ return failurestatisticsmainService.insertFailurestatisticsmain(po);
|
|
|
+ }
|
|
|
+}
|