andyliu преди 2 седмици
родител
ревизия
f9b6395723

+ 53 - 7
src/main/java/com/shkpr/service/warncore/bizhandler/SiteDataWarnHandler.java

@@ -1,5 +1,7 @@
 package com.shkpr.service.warncore.bizhandler;
 
+import com.global.base.log.LogLevelFlag;
+import com.global.base.log.LogPrintMgr;
 import com.global.base.tools.CastUtil;
 import com.global.base.tools.FastJsonUtil;
 import com.shkpr.service.warncore.commtools.CommTool;
@@ -7,6 +9,7 @@ import com.shkpr.service.warncore.commtools.TimeTool;
 import com.shkpr.service.warncore.constants.CommFieldStatus;
 import com.shkpr.service.warncore.constants.EventAction;
 import com.shkpr.service.warncore.constants.FrequencyUnit;
+import com.shkpr.service.warncore.constants.LogFlagBusiType;
 import com.shkpr.service.warncore.dbdao.DBMgrProxy;
 import com.shkpr.service.warncore.dbdao.services.intef.OrdWarnPlanInfoDBService;
 import com.shkpr.service.warncore.dbdao.services.intef.OrdWarnPlanRulesDBService;
@@ -15,6 +18,7 @@ import com.shkpr.service.warncore.dto.*;
 import com.shkpr.service.warncore.jsonbean.JPGetRegionData;
 import com.shkpr.service.warncore.jsonbean.JPGetRegionReport;
 import com.shkpr.service.warncore.jsonbean.JPGetRegionReportItem;
+import com.shkpr.service.warncore.jsonbean.JPOrdWarnEventInfo;
 import com.shkpr.service.warncore.services.ServiceMgrProxy;
 import org.springframework.util.StringUtils;
 
@@ -26,6 +30,7 @@ import java.util.*;
 public class SiteDataWarnHandler {
     private static int COMPARE_TURE = 1;
     private static int COMPARE_FALSE = 0;
+    private final static String mStrClassName = "SiteDataWarnHandler";
     private static OrdWarnPlanInfoDBService getWarnPlanInfoDBService(){
         return DBMgrProxy.getInstance().applyXXXApi(OrdWarnPlanInfoDBService.class);
     }
@@ -42,7 +47,19 @@ public class SiteDataWarnHandler {
                     put(OrdWarnPlanInfoTable.R_INFO.UNIQUE_ID, planDetail.getUid());
                     put(OrdWarnPlanInfoTable.R_INFO.VERSION, planDetail.getVersion());
                 }}, null, "") <= 0){
-            step = "Plan is changed,do analysis next time";
+            step = "Plan is changed,do analysis next time.";
+            code = ResponseCode.RESULT_BAD;
+        }
+
+        boolean noBindDev = true;
+        for (OrdWarnPlanRules ruleItem:rules){
+            if (!StringUtils.isEmpty(ruleItem.getDevId())){
+                noBindDev = false;
+                break;
+            }
+        }
+        if (noBindDev){
+            step = "No binder device,do analysis next time";
             code = ResponseCode.RESULT_BAD;
         }
 
@@ -61,6 +78,8 @@ public class SiteDataWarnHandler {
         }
 
         OrdWarnPlanTempStep thisStepTempRes = new OrdWarnPlanTempStep(planDetail);
+        thisStepTempRes.setLastAnalyTime(curUTCTm);
+        thisStepTempRes.setCompareTimes(planDetail.getCompareTimes()+1);
         do {
             if (code != ResponseCode.RESULT_NORMAL)
                 break;
@@ -82,7 +101,7 @@ public class SiteDataWarnHandler {
                 }
             }
             if (findStartClock < 0){
-                step = "Not in time range,do analysis next time";
+                step = "Now out in time range,do analysis next time";
                 code = ResponseCode.RESULT_BAD;
                 break;
             }
@@ -114,7 +133,7 @@ public class SiteDataWarnHandler {
             }
 
             if (queryBeginUTC > queryEndUTC){
-                step = "Time is invalid,do analysis next time";
+                step = "Time is invalid,do analysis next time.";
                 code = ResponseCode.RESULT_BAD;
                 break;
             }
@@ -127,7 +146,7 @@ public class SiteDataWarnHandler {
                 thisStepTempRes.setDayTriggerTimes(0);
             if (planDetail.getDayTriggerUpperTimes() > 0
                     && thisStepTempRes.getDayTriggerTimes() >= planDetail.getDayTriggerUpperTimes()){//触发事件达到最大个数
-                step = "Event arrive at max limit,stop analysis for today";
+                step = "Event arrive at max limit,stop analysis for today.";
                 code = ResponseCode.RESULT_BAD;
                 break;
             }
@@ -148,7 +167,13 @@ public class SiteDataWarnHandler {
                 }
             }
         }else {//单独更新预警方案的分析时间、次数、说明
+            thisStepTempRes.setLastAnalyExplain(step);
+            Map<String, Object> updatePlan = thisStepTempRes.genUpdatePlan();
+            updatePlan.put(OrdWarnPlanInfoTable.W_INFO.UPDATE_TIME, System.currentTimeMillis());
         }
+        LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_SITE_DATA_WARN_HANDLE.toStrValue(), mStrClassName
+                , String.format("Handler Site Data Plan:{planId=%s} {step=%s} {%s}...",
+                        planDetail.getUid(), step, code.toString()));
         return code;
     }
 
@@ -156,10 +181,10 @@ public class SiteDataWarnHandler {
     private static ResponseCode analysisDataForRealBySet(OrdWarnPlanDetail planDetail, List<OrdWarnPlanRules> rules, OrdWarnPlanTempStep thisTempStep){
         String step = "Start to deep analysis";
         ResponseCode code = ResponseCode.RESULT_NORMAL;
-        long curTime = TimeTool.getCurMsUTC();
         final String siteId = rules.get(0).getObjId();
         SiteSampleDataResult siteSampleData = null;
         Map<String, Long> eventId2NewEndUTC = new HashMap<>();//需要更新预警事件的样本截止时间
+        List<Map<String, Object>> eventToGen = new ArrayList<>();
         do {
             JPGetRegionData jpParam = new JPGetRegionData();
             jpParam.setTotal(1);
@@ -238,6 +263,7 @@ public class SiteDataWarnHandler {
                 if (!matched){//本次没有匹配成功
                     thisTempStep.setLastCompareSampleTime(sampleRecordTm);
                     thisTempStep.setLastCompareSampleResult(COMPARE_FALSE);
+                    thisTempStep.setLastCompareSampleExplain("This is not matched.");
                     thisTempStep.setFirstMatchSampleTime(0L);
                     thisTempStep.setLastEventId("");
                     thisTempStep.setLastEventTime(0L);
@@ -248,6 +274,7 @@ public class SiteDataWarnHandler {
                     thisTempStep.setLastCompareSampleTime(sampleRecordTm);
                     thisTempStep.setLastCompareSampleResult(COMPARE_TURE);
                     thisTempStep.setFirstMatchSampleTime(sampleRecordTm);
+                    thisTempStep.setLastCompareSampleExplain("This is matched, but last is not matched.");
                     continue;
                 }//上一次匹配成功了进入下一步
 
@@ -259,6 +286,7 @@ public class SiteDataWarnHandler {
                     thisTempStep.setFirstMatchSampleTime(sampleRecordTm);
                     thisTempStep.setLastEventId("");
                     thisTempStep.setLastEventTime(0L);
+                    thisTempStep.setLastCompareSampleExplain("This is matched, but two matched sample is too distance.");
                     continue;
                 }//两个最近匹配样本间隔很近,可认为是持续匹配,则进入下一步
 
@@ -268,6 +296,7 @@ public class SiteDataWarnHandler {
                     thisTempStep.setFirstMatchSampleTime(sampleRecordTm);
                     thisTempStep.setLastEventId("");
                     thisTempStep.setLastEventTime(0L);
+                    thisTempStep.setLastCompareSampleExplain("This is matched, but last is not today.");
                     continue;
                 }//上一个匹配样本是当天的,则进入下一步
 
@@ -276,14 +305,19 @@ public class SiteDataWarnHandler {
                     if (matchLen < triggerEventPeriodSwitch){//还得持续等待,达不到触发事件的累计时长
                         thisTempStep.setLastCompareSampleTime(sampleRecordTm);
                         thisTempStep.setLastCompareSampleResult(COMPARE_TURE);
+                        thisTempStep.setLastCompareSampleExplain("This is matched, but need wait the next matched.");
                         if (thisTempStep.getFirstMatchSampleTime() <= 0)
                             thisTempStep.setFirstMatchSampleTime(sampleRecordTm);
                     }else {//触发一个新的事件
                         thisTempStep.setLastCompareSampleTime(sampleRecordTm);
                         thisTempStep.setLastCompareSampleResult(COMPARE_TURE);
-                        thisTempStep.setLastEventId("新事件ID");
-                        thisTempStep.setLastEventTime(curTime);
+                        thisTempStep.setLastEventTime(TimeTool.getCurMsUTC());
                         thisTempStep.setLastEventAction(EventAction.DOING);
+                        thisTempStep.setLastCompareSampleExplain("This is matched, and will gen event.");
+
+                        JPOrdWarnEventInfo newEvent = new JPOrdWarnEventInfo(planDetail, rules, thisTempStep, thisTempStep.getLastEventTime());
+                        eventToGen.add(newEvent.genNewMapData());
+                        thisTempStep.setLastEventId(newEvent.getUid());
                         thisTempStep.setDayTriggerTimes(thisTempStep.getDayTriggerTimes()+1);
                         //[!!!]do not change the FirstMatchSampleTime[!!!]
                     }
@@ -294,14 +328,26 @@ public class SiteDataWarnHandler {
                         thisTempStep.setFirstMatchSampleTime(sampleRecordTm);
                         thisTempStep.setLastEventId("");
                         thisTempStep.setLastEventTime(0L);
+                        thisTempStep.setLastCompareSampleExplain("This is matched, but need to wait the next matched.");
                     }else {//之前的预警事件未处理,则更新预警事件的样本截止时刻
                         thisTempStep.setLastCompareSampleTime(sampleRecordTm);
                         thisTempStep.setLastCompareSampleResult(COMPARE_TURE);
                         eventId2NewEndUTC.put(thisTempStep.getLastEventId(), sampleRecordTm);
+                        thisTempStep.setLastCompareSampleExplain("This is matched, but need to merge the last event.");
                     }
                 }
             }
         }while (false);
+
+        thisTempStep.setLastAnalyExplain(step);
+        Map<String, Object> updatePlan = thisTempStep.genUpdatePlan();
+        updatePlan.put(OrdWarnPlanInfoTable.W_INFO.UPDATE_TIME, System.currentTimeMillis());
+        //将eventId2NewEndUTC进行更新
+        //将eventToGen进行插入
+
+        LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_SITE_DATA_WARN_HANDLE.toStrValue(), mStrClassName
+                , String.format("Analysis Data For Real By Set:{planId=%s,siteId=%s} {step=%s} {%s}...",
+                        planDetail.getUid(), siteId, step, code.toString()));
         return code;
     }
 

+ 21 - 17
src/main/java/com/shkpr/service/warncore/bizhandler/TimeCheckWarnPlanMgr.java

@@ -1,14 +1,13 @@
 package com.shkpr.service.warncore.bizhandler;
 
+import com.global.base.log.LogLevelFlag;
+import com.global.base.log.LogPrintMgr;
 import com.global.base.tools.FastJsonUtil;
 import com.shkpr.service.warncore.commtools.CommTool;
 import com.shkpr.service.warncore.commtools.TimeTool;
 import com.shkpr.service.warncore.components.locks.CountDownLatchEx;
 import com.shkpr.service.warncore.components.locks.OrdWarnPlanLockMgr;
-import com.shkpr.service.warncore.constants.CommFieldStatus;
-import com.shkpr.service.warncore.constants.FrequencyUnit;
-import com.shkpr.service.warncore.constants.OrdWarnObjSrc;
-import com.shkpr.service.warncore.constants.TaskQueueDataTypeEx;
+import com.shkpr.service.warncore.constants.*;
 import com.shkpr.service.warncore.dbdao.DBMgrProxy;
 import com.shkpr.service.warncore.dbdao.services.intef.OrdWarnPlanInfoDBService;
 import com.shkpr.service.warncore.dbdao.services.intef.OrdWarnPlanRulesDBService;
@@ -19,7 +18,8 @@ import com.shkpr.service.warncore.globalmgr.AsyncTaskQueueMgr;
 
 import java.util.*;
 
-public class TimeCheckWarnPlanMgr {
+public class TimerCheckWarnPlanMgr {
+    private final static String mStrClassName = "TimeCheckWarnPlanMgr";
     private static OrdWarnPlanInfoDBService getThisDBService(){
         return DBMgrProxy.getInstance().applyXXXApi(OrdWarnPlanInfoDBService.class);
     }
@@ -48,15 +48,14 @@ public class TimeCheckWarnPlanMgr {
                 int limit = 200, offset = 0, realTotal = 0;
                 while (curIndex < oTotal.getMaxIndex()){
                     List<Map<String, Object>> arrDbTmp = getThisDBService().listAllWithsEx(OrdWarnPlanInfoTable.R_INFO.TABLE
-                            , OrdWarnPlanInfoTable.R_INFO.TOTAL_ANALYSIS_FILED
+                            ,""
                             , limit
                             , offset
                             ,null
                             ,null
                             , OrdWarnPlanInfoTable.R_INFO.TOTAL_ANALYSIS_ORDER
-                            , String.format("and %s = %d and %s = %d and (%s between %d and %d)"
+                            , String.format("and %s = 0 and %s = %d and (%s between %d and %d)"
                                     ,OrdWarnPlanInfoTable.R_INFO.DISUSED
-                                    ,0
                                     ,OrdWarnPlanInfoTable.R_INFO.STATUS
                                     ,CommFieldStatus.ENABLE
                                     ,OrdWarnPlanInfoTable.R_INFO.ID
@@ -78,12 +77,12 @@ public class TimeCheckWarnPlanMgr {
 
                         if (oItem.getStatus() != CommFieldStatus.ENABLE
                                 || oItem.getFrequency() <= 0
-                                || FrequencyUnit.MIN.equals(oItem.getFrequencyUnit())
+                                || !FrequencyUnit.MIN.equals(oItem.getFrequencyUnit())
                                 || oItem.getFrequency() > curMinute
                                 || (curMinute%oItem.getFrequency() != 0))
                             continue;
 
-                        if ("hour".equals(oItem.getDoPeriodUnit())){
+                        if (DoPeriodUnit.HOUR.equals(oItem.getDoPeriodUnit())){
                             if (oItem.getDayTriggerUpperTimes() >= 0){
                                 if (oItem.getDayTriggerUpperTimes() == 0)
                                     continue;
@@ -107,23 +106,23 @@ public class TimeCheckWarnPlanMgr {
      * 先获取方案信息,然后获取规则列表,再加锁
      * @param planWillDo
      */
-    public void handlerPlanWillDo(OrdWarnPlanWillDo planWillDo){
+    public static void handlerPlanWillDo(OrdWarnPlanWillDo planWillDo){
         ResponseCode code = ResponseCode.RESULT_NORMAL;
-        String step = "Start Get Plan Info";
+        String step = "Start get warn plan info.";
         List<OrdWarnPlanRules> rules = null;
         OrdWarnPlanDetail planDetail = null;
         do {
             Map<String, Object> infoDb = getThisDBService().fastGetFiled("", "", planWillDo.getPlanId());
             if (infoDb == null || infoDb.size() <= 0){
                 code = ResponseCode.RESULT_BAD;
-                step = "Get Warn Plan Info Failed";
+                step = "Get warn plan info failed.";
                 break;
             }
 
             planDetail = FastJsonUtil.map2Obj(infoDb, OrdWarnPlanDetail.class,true);
             if (planDetail == null || planDetail.getStatus() != CommFieldStatus.ENABLE){
                 code = ResponseCode.RESULT_BAD;
-                step = "Warn Plan Info Invalid";
+                step = "Warn plan info invalid";
                 break;
             }
             infoDb.clear();
@@ -132,7 +131,7 @@ public class TimeCheckWarnPlanMgr {
                     , null, OrdWarnPlanRulesTable.R_INFO.DEFAULT_ORDER, "");
             if (CommTool.listSize(rulesDb) <= 0){
                 code = ResponseCode.RESULT_BAD;
-                step = "Warn Plan Rules Invalid";
+                step = "Warn plan rules invalid";
                 break;
             }
 
@@ -152,8 +151,9 @@ public class TimeCheckWarnPlanMgr {
 
                 if (latchEx != null){
                     if (OrdWarnObjSrc.SITE.equals(planWillDo.getObjSrc())){
-                        SiteDataWarnHandler.handlerDataFun(planDetail, rules);
+                        code = SiteDataWarnHandler.handlerDataFun(planDetail, rules);
                     }else if (OrdWarnObjSrc.ZONE.equals(planWillDo.getObjSrc())){
+                        code = ZoneDataWarnHandler.handlerDataFun(planDetail, rules);
                     }else if (OrdWarnObjSrc.ZTYPE.equals(planWillDo.getObjSrc())){
                     }else if (OrdWarnObjSrc.TANK.equals(planWillDo.getObjSrc())){
                     }
@@ -164,9 +164,13 @@ public class TimeCheckWarnPlanMgr {
             if (latchEx != null){
                 latchEx.countDown();
             }else{
-                step = "Request Lock For Analysis Failed";
+                step = "Request lock ror analysis failed";
                 code = ResponseCode.RESULT_BAD;
             }
         }
+
+        LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_TIMER_CHECK_WARN_PLAN.toStrValue(), mStrClassName
+                , String.format("Handler Plan Will Do:{planId=%s} {step=%s} {%s}...",
+                        planDetail.getUid(), step, code.toString()));
     }
 }

+ 17 - 2
src/main/java/com/shkpr/service/warncore/bizhandler/ZoneDataWarnHandler.java

@@ -25,7 +25,22 @@ public class ZoneDataWarnHandler {
         return DBMgrProxy.getInstance().applyXXXApi(OrdWarnPlanRulesDBService.class);
     }
 
-    public static ResponseCode handlerDataByMonth(OrdWarnPlanDetail planDetail, List<OrdWarnPlanRules> rules){
+    public static ResponseCode handlerDataFun(OrdWarnPlanDetail planDetail, List<OrdWarnPlanRules> rules){
+        ResponseCode code = ResponseCode.RESULT_NORMAL;
+        switch (planDetail.getFrequencyUnit()){
+            case FrequencyUnit.DAY:{
+                code = pickWarnByDay(planDetail, rules);
+            }
+            break;
+            case FrequencyUnit.MONTH:{
+                code = pickWarnByMonth(planDetail, rules);
+            }
+            break;
+        }
+        return code;
+    }
+
+    private static ResponseCode pickWarnByMonth(OrdWarnPlanDetail planDetail, List<OrdWarnPlanRules> rules){
         ResponseCode code = ResponseCode.RESULT_NORMAL;
         String step = "Start to pre analysis.";
         if (getWarnPlanInfoDBService().existsLineEx(OrdWarnPlanInfoTable.R_INFO.TABLE
@@ -103,7 +118,7 @@ public class ZoneDataWarnHandler {
         return code;
     }
 
-    public static ResponseCode handlerDataByDay(OrdWarnPlanDetail planDetail, List<OrdWarnPlanRules> rules){
+    public static ResponseCode pickWarnByDay(OrdWarnPlanDetail planDetail, List<OrdWarnPlanRules> rules){
         ResponseCode code = ResponseCode.RESULT_NORMAL;
         String step = "Start to pre analysis.";
         if (getWarnPlanInfoDBService().existsLineEx(OrdWarnPlanInfoTable.R_INFO.TABLE

+ 10 - 0
src/main/java/com/shkpr/service/warncore/commtools/CommTool.java

@@ -1,6 +1,7 @@
 package com.shkpr.service.warncore.commtools;
 
 import com.global.base.tools.CastUtil;
+import com.global.base.tools.RandomUtil;
 import com.shkpr.service.warncore.constants.CommDefine;
 import org.springframework.util.StringUtils;
 
@@ -251,4 +252,13 @@ public class CommTool {
             throw e;
         }
     }
+
+    public static String genWarnEventId(long createTime, String extend){
+        String time = TimeTool.convertUTC2DateStr(createTime, TimeTool.TIMESTAMP_FORMAT_EX2);
+        return (new StringBuilder("WET"))
+                .append(time==null?"":time) //为保证订单相对有序递增,需要将时间戳放前面
+                .append(RandomUtil.getRandomStr(3).toUpperCase())
+                .append(StringUtils.isEmpty(extend)?RandomUtil.getDigitalRandomStr(3):extend)
+                .toString();
+    }
 }

+ 6 - 0
src/main/java/com/shkpr/service/warncore/constants/DoPeriodUnit.java

@@ -0,0 +1,6 @@
+package com.shkpr.service.warncore.constants;
+
+public interface DoPeriodUnit {
+    String HOUR = "hour";
+    String MONTH = "month";
+}

+ 2 - 0
src/main/java/com/shkpr/service/warncore/constants/LogFlagBusiType.java

@@ -14,6 +14,8 @@ public enum  LogFlagBusiType {
     BUSI_CALL_SX_WARN_AS(10, "Call SX Warn As Biz"),
 
 
+    BUSI_SITE_DATA_WARN_HANDLE(96, "Site Data Warn Handle"),
+    BUSI_TIMER_CHECK_WARN_PLAN(97, "Timer Check Warn Plan"),
     BUSI_CALL_DATA_QE_AS(98, "Call Data Qe Service"),
     BUSI_INTERNAL(99,"Internal Busi"),
 

+ 1 - 12
src/main/java/com/shkpr/service/warncore/dbdao/tables/OrdWarnPlanInfoTable.java

@@ -14,18 +14,6 @@ public interface OrdWarnPlanInfoTable {
         String FREQUENCY = "frequency";
         String FREQUENCY_UNIT = "frequency_unit";
         String DISUSED = "disused";
-        String TOTAL_ANALYSIS_FILED = new StringBuilder("id")
-                .append(",").append("uid")
-                .append(",").append("status")
-                .append(",").append("frequency")
-                .append(",").append("frequency_unit")
-                .append(",").append("day_trigger_times")
-                .append(",").append("day_trigger_upper_times")
-                .append(",").append("last_analy_time")
-                .append(",").append("last_event_time")
-                .append(",").append("do_period_unit")
-                .append(",").append("owner_src")
-                .append(",").append("obj_src").toString();
         String TOTAL_ANALYSIS_ORDER = "create_time ASC,frequency ASC,id ASC";
     }
 
@@ -43,5 +31,6 @@ public interface OrdWarnPlanInfoTable {
         String FREQUENCY = "frequency";
         String FREQUENCY_UNIT = "frequency_unit";
         String DISUSED = "disused";
+        String UPDATE_TIME = "update_time";
     }
 }

+ 4 - 0
src/main/java/com/shkpr/service/warncore/dto/OrdWarnPlanDetail.java

@@ -35,6 +35,10 @@ public class OrdWarnPlanDetail {
     private int dayTriggerTimes = 0;
     private int dayTriggerUpperTimes = -1;
     private int mergeToEvent = 1;//触发规则时是否合并到上一个会处理的事件上: 0--不合并;1--合并
+    private String batch = "";
+    private int compareTimes = 0;//预案的累计对比次数
+    private long lastAnalyTime = 0L;//最近一次分析的时间
+    private String lastAnalyExplain = "";//最近一次分析的结果说明
 
     public OrdWarnPlanDetail() {
     }

+ 1 - 0
src/main/java/com/shkpr/service/warncore/dto/OrdWarnPlanRules.java

@@ -20,6 +20,7 @@ public class OrdWarnPlanRules {
     private int end = 0;
     private String restrict = "any";
     private int devCycle = 0;//设备采集周期(单位:秒)
+    private String devId = "";//设备相关ID
     private List<OrdWarnRuleCondition> conditions = null;
 
     public OrdWarnPlanRules() {

+ 26 - 0
src/main/java/com/shkpr/service/warncore/dto/OrdWarnPlanTempStep.java

@@ -3,6 +3,9 @@ package com.shkpr.service.warncore.dto;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * 预警方案临时分析结果
  */
@@ -22,6 +25,10 @@ public class OrdWarnPlanTempStep {
     private int dayTriggerTimes = 0;//今日触发事件的个数
     private boolean doForTodayBefore = false;//是否只分析今日之前的数据
 
+    private int compareTimes = 0;//预案的累计对比次数
+    private long lastAnalyTime = 0L;//最近一次分析的时间
+    private String lastAnalyExplain = "";//最近一次分析的结果说明
+
     public OrdWarnPlanTempStep() {
     }
 
@@ -33,6 +40,10 @@ public class OrdWarnPlanTempStep {
             lastCompareSampleExplain = "";
             lastEventTime = planDetail.getLastEventTime();
             lastEventId = planDetail.getLastEventId();
+
+            compareTimes = planDetail.getCompareTimes();
+            lastAnalyTime = planDetail.getLastAnalyTime();//最近一次分析的时间
+            lastAnalyExplain = planDetail.getLastAnalyExplain();//最近一次分析的结果说明
         }
     }
 
@@ -44,4 +55,19 @@ public class OrdWarnPlanTempStep {
         lastEventTime = 0L;
         lastEventId = "";
     }
+
+    public Map<String, Object> genUpdatePlan(){
+        return new HashMap<String, Object>(){{
+            put("day_trigger_times", dayTriggerTimes);
+            put("compare_times", compareTimes);
+            put("last_analy_time", lastAnalyTime);
+            put("last_analy_explain", lastAnalyExplain);
+            put("last_compare_sample_time", lastCompareSampleTime);
+            put("last_compare_sample_result", lastCompareSampleResult);
+            put("last_compare_sample_explain", lastCompareSampleExplain);
+            put("first_match_sample_time", firstMatchSampleTime);
+            put("last_event_time", lastEventTime);
+            put("last_event_id", lastEventId);
+        }};
+    }
 }

+ 2 - 2
src/main/java/com/shkpr/service/warncore/globalmgr/ScheduleTaskMgr.java

@@ -2,7 +2,7 @@ package com.shkpr.service.warncore.globalmgr;
 
 import com.global.base.log.LogLevelFlag;
 import com.global.base.log.LogPrintMgr;
-import com.shkpr.service.warncore.bizhandler.TimeCheckWarnPlanMgr;
+import com.shkpr.service.warncore.bizhandler.TimerCheckWarnPlanMgr;
 import com.shkpr.service.warncore.commtools.TimeTool;
 import com.shkpr.service.warncore.components.LocalDynamicDataSource;
 import com.shkpr.service.warncore.components.locks.OrdWarnPlanLockMgr;
@@ -69,7 +69,7 @@ public class ScheduleTaskMgr {
         ThreadTaskMgr.runTask(new TraceRunnable("S.CHECK.WARN.PLAN.BY.MIN") {
             @Override
             public void function() {
-                //TimeCheckWarnPlanMgr.checkWarnPlanByMinute(curClock, curMinute==0?60:curMinute);
+                TimerCheckWarnPlanMgr.checkWarnPlanByMinute(curClock, curMinute==0?60:curMinute);
             }
         });
     }

+ 12 - 0
src/main/java/com/shkpr/service/warncore/jsonbean/JPOrdWarnEventInfo.java

@@ -1,6 +1,7 @@
 package com.shkpr.service.warncore.jsonbean;
 
 import com.global.base.tools.FastJsonUtil;
+import com.shkpr.service.warncore.commtools.CommTool;
 import com.shkpr.service.warncore.dto.OrdWarnPlanDetail;
 import com.shkpr.service.warncore.dto.OrdWarnPlanRules;
 import com.shkpr.service.warncore.dto.OrdWarnPlanTempStep;
@@ -8,6 +9,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.util.List;
+import java.util.Map;
 
 @Getter
 @Setter
@@ -37,6 +39,7 @@ public class JPOrdWarnEventInfo {
     private long createTime = 0L;
     private long updateTime = 0L;
     private int sendway = 3;
+    private String planBatch = "";
 
     public JPOrdWarnEventInfo() {
     }
@@ -50,6 +53,9 @@ public class JPOrdWarnEventInfo {
         this.ownerSubType = planDetail.getOwnerSubType();
         this.owner = planDetail.getOwner();
         this.sendway = planDetail.getSendway();
+        this.level = planDetail.getLevel();
+        this.ending = planDetail.getEnding();
+        this.planBatch = planDetail.getBatch();
 
         this.fromTime = thisTempStep.getFirstMatchSampleTime();
         this.toTime = thisTempStep.getLastCompareSampleTime();
@@ -57,5 +63,11 @@ public class JPOrdWarnEventInfo {
         this.limitTime = 0L;
         this.createTime = eventTime;
         this.updateTime = eventTime;
+        this.uid = CommTool.genWarnEventId(eventTime, "");
+        this.title = String.format("%s--%s事件", planDetail.getTitle(), this.uid.substring(5, 15));
+    }
+
+    public Map<String, Object> genNewMapData(){
+        return FastJsonUtil.obj2Map(JPOrdWarnEventInfo.this, true);
     }
 }

+ 10 - 0
src/main/java/com/shkpr/service/warncore/queues/AsyncCommTaskQueueHandler.java

@@ -1,7 +1,9 @@
 package com.shkpr.service.warncore.queues;
 
 import com.global.base.taskqueue.*;
+import com.shkpr.service.warncore.bizhandler.TimerCheckWarnPlanMgr;
 import com.shkpr.service.warncore.constants.TaskQueueDataTypeEx;
+import com.shkpr.service.warncore.dto.OrdWarnPlanWillDo;
 import com.shkpr.service.warncore.globalmgr.TraceLogMgr;
 
 import java.util.*;
@@ -59,6 +61,14 @@ public class AsyncCommTaskQueueHandler extends BaseTaskQueueHandler {
                             taskData = null;
                         }
                         break;
+                        case TaskQueueDataTypeEx.ASYNC_ANALY_WARN_PLAN:{
+                            final OrdWarnPlanWillDo mapParam = (OrdWarnPlanWillDo)taskData.getData();
+                            if (mapParam != null)
+                                TimerCheckWarnPlanMgr.handlerPlanWillDo(mapParam);
+                            bExeOk = true;
+                            taskData = null;
+                        }
+                        break;
                         default:{
                             TraceLogMgr.setTraceId(taskData.getTraceId());
                             TraceLogMgr.removeTraceId();