Browse Source

报警统计定时任务bug修改

‘xugp 2 years atrás
parent
commit
95a1249cad

+ 11 - 0
schedule-job/alarm-schedule/src/main/java/com/gyee/wisdom/alarm/schedule/cache/DataDictionaryCache.java

@@ -30,6 +30,17 @@ public class DataDictionaryCache {
             return "";
     }
 
+    public static String getWinturbinePartName(String code) {
+        if (dataDictionaryList == null || dataDictionaryList.size() <= 0)
+            initList();
+        Optional<Datadictionary> partDataDictionary = dataDictionaryList.stream().filter(s -> s.getCategory().equals("windturbine") && s.getCode().equals(code)).findFirst();
+
+        if (partDataDictionary.isPresent())
+            return partDataDictionary.get().getName();
+        else
+            return "";
+    }
+
     private static void initList() {
         DatadictionaryService bean = SpringContextUtil.getBean(DatadictionaryService.class);
         List<Datadictionary> allDatadictionary = bean.list();

+ 26 - 10
schedule-job/alarm-schedule/src/main/java/com/gyee/wisdom/alarm/schedule/job/AlarmCountPartsHandler.java

@@ -53,10 +53,11 @@ public class AlarmCountPartsHandler {
     @Autowired
     private AlarmHistoryService alarmHistoryService;
 
-    @XxlJob("AlarmCountParts")
+    @XxlJob("alarmCountParts")
     public boolean doTask() {
 
         try {
+            log.info("调度任务开始执行");
             List<AlarmSnap> snapList = alarmSnapService.queryAll(null, null, "windturbine", null, null, null, null, null, null, null);
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             String strDate = sdf.format(DateUtil.addDays(new Date(),-1));
@@ -79,6 +80,7 @@ public class AlarmCountPartsHandler {
                     }
                     map.put(listEntry.getKey(),alarmHistories);
                 }
+                log.info("得到部件分组");
                 //遍历map(key:windturbined,value:history),得到部件
                 for (Map.Entry<String,List<AlarmHistory>> entry : map.entrySet()){
                     Map<String,String> map1 = new HashMap<>();
@@ -86,10 +88,10 @@ public class AlarmCountPartsHandler {
                     if (value.size()>0) {
                         for (AlarmHistory alarmHistory : value) {
                             AlarmSnap alarmSnap = alarmSnapService.queryById(alarmHistory.getSnapId());
-                            Warning2 warning2 = warning2Service.selectByEdnvalue(alarmSnap.getAlertValue());
-                            if (warning2 != null){
+                            List<Warning2> warning2s = warning2Service.selectByEdnvalue(alarmSnap.getAlertValue());
+                            if (warning2s.size() > 0){
                                 String id = alarmHistory.getId() + "_" + alarmHistory.getSnapId();
-                                map1.put(id, warning2.getRelatedParts());
+                                map1.put(id, warning2s.get(0).getRelatedParts());
                             }
                         }
                         //分组转化为key:parts,value:snapId
@@ -102,10 +104,10 @@ public class AlarmCountPartsHandler {
                                 String[] split = map2.getKey().split("_");
                                 long l = Long.parseLong(split[1]);
                                 AlarmSnap alarmSnap = alarmSnapService.queryById(l);
-                                Warning2 warning2 = warning2Service.selectByEdnvalue(alarmSnap.getAlertValue());
+                                List<Warning2> warning2 = warning2Service.selectByEdnvalue(alarmSnap.getAlertValue());
                                 String tbName = tableNameService.getAlarmHistoryTableName(alarmSnap.getStationId(), dtStart);
                                 count = count + alarmHistoryService.selectAlarmSnapCount(tbName,Long.parseLong(split[0]));
-                                list.add(warning2.getId());
+                                list.add(warning2.get(0).getId());
                             }
                             Map<String, Integer> mapCount = list.stream().collect(Collectors.toMap(key -> key, values -> 1, (value1, value2) -> value1 + value2));
                             for (Map.Entry<String, Integer> entryString : mapCount.entrySet()) {
@@ -117,7 +119,7 @@ public class AlarmCountPartsHandler {
                                 windturbineAlarmIdCount.setRulesId(entryString.getKey());
                                 windturbineAlarmIdCount.setCount(entryString.getValue());
                                 windturbineAlarmIdCount.setWindturbineId(entry.getKey());
-                                windturbineAlarmIdCount.setPartsName(DataDictionaryCache.getPartName(entry1.getKey()));
+                                windturbineAlarmIdCount.setPartsName(DataDictionaryCache.getWinturbinePartName(entry1.getKey()));
                                 windturbineAlarmIdCount.setWindpowerstationId(windturbineService.selectWindturbineByWindturbineid(entry.getKey()).getWindpowerstationid());
                                 alarmRuleCounts.add(windturbineAlarmIdCount);
                             }
@@ -128,7 +130,7 @@ public class AlarmCountPartsHandler {
                                 windturbineAlarmPartsCount.setAlarmDate(dtStart);
                                 windturbineAlarmPartsCount.setParts(entry1.getKey());
                                 windturbineAlarmPartsCount.setCount(count);
-                                windturbineAlarmPartsCount.setPartsName(DataDictionaryCache.getPartName(entry1.getKey()));
+                                windturbineAlarmPartsCount.setPartsName(DataDictionaryCache.getWinturbinePartName(entry1.getKey()));
                                 windturbineAlarmPartsCount.setWindturbineId(entry.getKey());
                                 windturbineAlarmPartsCount.setWindpowerstationId(windturbineService.selectWindturbineByWindturbineid(entry.getKey()).getWindpowerstationid());
                                 acList.add(windturbineAlarmPartsCount);
@@ -137,10 +139,24 @@ public class AlarmCountPartsHandler {
                     }
                 }
                 if (alarmRuleCounts.size() > 0) {
-                    windturbineAlarmIdCountMapper.batchInsert(alarmRuleCounts);
+                    if (alarmRuleCounts.size() <= 500) {
+                        windturbineAlarmIdCountMapper.batchInsert(alarmRuleCounts);
+                    } else {
+                        int times = (int) Math.ceil(alarmRuleCounts.size() / 500.0);
+                        for (int i = 0; i < times; i++) {
+                            windturbineAlarmIdCountMapper.batchInsert(alarmRuleCounts.subList(i * 500, Math.min((i + 1) * 500, alarmRuleCounts.size())));
+                        }
+                    }
                 }
                 if (acList.size() > 0) {
-                    windturbineAlarmPartsCountMapper.batchInsert(acList);
+                    if(acList.size()<=500){
+                        windturbineAlarmPartsCountMapper.batchInsert(acList);
+                    }else{
+                        int times = (int)Math.ceil( acList.size()/500.0 );
+                        for(int i=0; i<times; i++ ){
+                            windturbineAlarmPartsCountMapper.batchInsert(acList.subList(i * 500, Math.min((i + 1) * 500, acList.size())));
+                        }
+                    }
                 }
                 dtStart = dtEnd;
                 dtEnd = DateUtil.addDays(dtStart, 1);

+ 3 - 3
schedule-job/alarm-schedule/src/main/java/com/gyee/wisdom/alarm/schedule/service/Warning2Service.java

@@ -16,11 +16,11 @@ import java.util.List;
 @Service
 public class Warning2Service extends ServiceImpl<Warning2Mapper, Warning2> {
 
-    public Warning2 selectByEdnvalue(int ednValue) {
+    public List<Warning2> selectByEdnvalue(int ednValue) {
         QueryWrapper<Warning2> wrapper = new QueryWrapper<>();
         wrapper.eq("EDNAVALUE", ednValue);
-        Warning2 warning2 = baseMapper.selectOne(wrapper);
-        return warning2;
+        List<Warning2> warning2s = baseMapper.selectList(wrapper);
+        return warning2s;
     }
 
 

+ 1 - 1
schedule-job/alarm-schedule/src/main/resources/mappers-oracle/WindturbineAlarmIdCountMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.gyee.wisdom.alarm.sharding.mapper.WindturbineAlarmIdCountMapper">
+<mapper namespace="com.gyee.wisdom.alarm.schedule.mapper.WindturbineAlarmIdCountMapper">
 
     <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="false">
         insert into Windturbine_Alarm_Id_Count ( ID, alarmdate, parts,partsname,rulesid,count,windturbineid,windpowerstationid)