Преглед на файлове

判断待合并事件的状态

andyliu преди 1 седмица
родител
ревизия
f0c1572b51

+ 33 - 0
src/main/java/com/shkpr/service/warncore/bizhandler/CommToolHandler.java

@@ -1,10 +1,20 @@
 package com.shkpr.service.warncore.bizhandler;
 
 import com.shkpr.service.warncore.commtools.CommTool;
+import com.shkpr.service.warncore.dbdao.DBMgrProxy;
+import com.shkpr.service.warncore.dbdao.services.intef.OrdWarnEventInfoDBService;
+import com.shkpr.service.warncore.dbdao.tables.OrdWarnEventInfoTable;
 import com.shkpr.service.warncore.dto.OrdWarnRuleCondition;
+import com.shkpr.service.warncore.dto.ResponseCode;
 import org.springframework.util.StringUtils;
 
+import java.util.Map;
+
 public class CommToolHandler {
+    private static OrdWarnEventInfoDBService getOrdWarnEventDBService(){
+        return DBMgrProxy.getInstance().applyXXXApi(OrdWarnEventInfoDBService.class);
+    }
+
     /**
      * 原始值匹配规则条件
      * @param originValue
@@ -44,4 +54,27 @@ public class CommToolHandler {
         }
         return matched;
     }
+
+    /**
+     *
+     * @param eventId
+     * @return -1 -- 本次查询操作异常
+     *         0 -- 指定事件不存在;
+     *         1 -- 指定事件待处理;
+     *         2 -- 指定事件已处理
+     */
+    public static int checkEventAction(String eventId){
+        int action = -1;
+        Map<String, Object> infoDb = getOrdWarnEventDBService().fastGetFiled(OrdWarnEventInfoTable.W_INFO.TABLE
+                , OrdWarnEventInfoTable.W_INFO.ACTION, eventId);
+        if (infoDb == null)
+            return action;
+
+        if (infoDb.size() > 0){
+            action = (int)infoDb.getOrDefault(OrdWarnEventInfoTable.W_INFO.ACTION, 0);
+            infoDb.clear();
+        }else
+            action = 0;
+        return action;
+    }
 }

+ 11 - 3
src/main/java/com/shkpr/service/warncore/bizhandler/SiteDataWarnHandler.java

@@ -153,9 +153,17 @@ public class SiteDataWarnHandler {
             }
 
             if (!StringUtils.isEmpty(planDetail.getLastEventId())){
-                //向数据库中快速查询事件最近处理阶段action的值,可以用exist判断更快
-                //并赋值给thisStepTempRes
-                //如果lastEvent事件被手动意外删除了,则将thisStepTempRes中的LastEventId=“”且LastEventTime=0
+                int action = CommToolHandler.checkEventAction(planDetail.getLastEventId());
+                if (action < 0){
+                    step = "Last event check error,do analysis next time.";
+                    code = ResponseCode.RESULT_BAD;
+                    break;
+                }else if (action == 0){//lastEvent事件被手动意外删除
+                    thisStepTempRes.setLastEventId("");
+                    thisStepTempRes.setLastEventTime(0L);
+                    thisStepTempRes.setLastEventAction(1);
+                }else
+                    thisStepTempRes.setLastEventAction(action);
             }
         }while (false);
         if (code == ResponseCode.RESULT_NORMAL){

+ 22 - 4
src/main/java/com/shkpr/service/warncore/bizhandler/ZoneDataWarnHandler.java

@@ -106,8 +106,17 @@ public class ZoneDataWarnHandler {
             thisStepTempRes.setConditionMinUTC(conditionMinUTC);
 
             if (!StringUtils.isEmpty(planDetail.getLastEventId())){
-                //向数据库中快速查询事件最近处理阶段action的值
-                //并赋值给thisTempStep
+                int action = CommToolHandler.checkEventAction(planDetail.getLastEventId());
+                if (action < 0){
+                    step = "Last event check error,do analysis next time.";
+                    code = ResponseCode.RESULT_BAD;
+                    break;
+                }else if (action == 0){//lastEvent事件被手动意外删除
+                    thisStepTempRes.setLastEventId("");
+                    thisStepTempRes.setLastEventTime(0L);
+                    thisStepTempRes.setLastEventAction(1);
+                }else
+                    thisStepTempRes.setLastEventAction(action);
             }
         }while (false);
 
@@ -184,8 +193,17 @@ public class ZoneDataWarnHandler {
             thisStepTempRes.setConditionMinUTC(conditionMinUTC);
 
             if (!StringUtils.isEmpty(planDetail.getLastEventId())){
-                //向数据库中快速查询事件最近处理阶段action的值
-                //并赋值给thisTempStep
+                int action = CommToolHandler.checkEventAction(planDetail.getLastEventId());
+                if (action < 0){
+                    step = "Last event check error,do analysis next time.";
+                    code = ResponseCode.RESULT_BAD;
+                    break;
+                }else if (action == 0){//lastEvent事件被手动意外删除
+                    thisStepTempRes.setLastEventId("");
+                    thisStepTempRes.setLastEventTime(0L);
+                    thisStepTempRes.setLastEventAction(1);
+                }else
+                    thisStepTempRes.setLastEventAction(action);
             }
         }while (false);
 

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

@@ -25,6 +25,7 @@ public enum  LogFlagBusiType {
     BUSI_DB_SMS(102,"DB SMS Busi"),
     BUSI_DB_ORD_WARN_PLAN_INFO(103,"DB Ord Warn Plan Info"),
     BUSI_DB_ORD_WARN_PLAN_RULE(104,"DB Ord Warn Plan Rule"),
+    BUSI_DB_ORD_WARN_EVENT_INFO(105,"DB Ord Warn Event Info"),
 
     BUSI_INFLUX_DB_DEV_RECORD(200,"Influx DB Dev Record"),
 

+ 1 - 0
src/main/java/com/shkpr/service/warncore/dbdao/DBMgrProxy.java

@@ -11,6 +11,7 @@ public class DBMgrProxy {
         add(UserDBService.class);
         add(OrdWarnPlanInfoDBService.class);
         add(OrdWarnPlanRulesDBService.class);
+        add(OrdWarnEventInfoDBService.class);
     }};
     private Map<Class<?>, Object> mapClass2Instance = new ConcurrentHashMap<>();
 

+ 4 - 0
src/main/java/com/shkpr/service/warncore/dbdao/mapper/OrdWarnEventInfoMapper.java

@@ -22,4 +22,8 @@ public interface OrdWarnEventInfoMapper {
 
     @InsertProvider(type = OrdWarnEventInfoSqlProvider.class, method = "batchInserts")
     int batchInserts(@Param("inserts") List<Map<String, Object>> inserts);
+
+    @SelectProvider(type = OrdWarnEventInfoSqlProvider.class, method = "getByUniqueId")
+    Map<String, Object> getOne(@Param("table") String table, @Param("filed") String filed, @Param("id") Object id);
+
 }

+ 69 - 0
src/main/java/com/shkpr/service/warncore/dbdao/services/OrdWarnEventInfoDBServiceImpl.java

@@ -0,0 +1,69 @@
+package com.shkpr.service.warncore.dbdao.services;
+
+import com.global.base.log.LogLevelFlag;
+import com.global.base.log.LogPrintMgr;
+import com.shkpr.service.warncore.constants.LogFlagBusiType;
+import com.shkpr.service.warncore.dbdao.mapper.OrdWarnEventInfoMapper;
+import com.shkpr.service.warncore.dbdao.services.intef.OrdWarnEventInfoDBService;
+import com.shkpr.service.warncore.dbdao.tables.OrdWarnEventInfoTable;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class OrdWarnEventInfoDBServiceImpl implements OrdWarnEventInfoDBService, OrdWarnEventInfoTable {
+    private String mStrClassName = "";
+    private String mBusinessType = "";
+    private String logTag = "";
+    public OrdWarnEventInfoDBServiceImpl() {
+        mStrClassName = this.getClass().getSimpleName();
+        mBusinessType = LogFlagBusiType.BUSI_DB_ORD_WARN_EVENT_INFO.toStrValue();
+        logTag = "Ord Warn Event";
+    }
+
+    @SuppressWarnings("all")
+    @Autowired
+    OrdWarnEventInfoMapper ordWarnEventInfoMapper;
+
+    @Override
+    public int existsLineEx(String table, Map<String, Object> andWheres, Map<String, Object> orWheres, String extend) {
+        int nCode = 0;
+        String strMsg = "Success";
+        try {
+            return (ordWarnEventInfoMapper.existLine(table, andWheres, orWheres, extend)?1:0);
+        }catch (Exception e){
+            nCode = LogLevelFlag.LOG_ERROR.ordinal();
+            strMsg = e.getLocalizedMessage();
+            return -1;
+        }finally {
+            LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.valueFromInt(nCode)
+                    , mBusinessType
+                    , mStrClassName
+                    , String.format("Exists The %s Line from database, code:{%d} msg:{%s} ...", logTag, nCode, strMsg));
+        }
+    }
+
+    @Override
+    public Map<String, Object> fastGetFiled(String table, String filed, Object id) {
+        int nCode = 0;
+        String strMsg = "Success";
+        try {
+            Map<String, Object> mapRes = ordWarnEventInfoMapper.getOne(table, filed, id);//查询不到时也会返回null
+            if (mapRes == null)
+                return new HashMap<>();
+            else
+                return mapRes;
+        }catch (Exception e){
+            nCode = LogLevelFlag.LOG_ERROR.ordinal();
+            strMsg = e.getLocalizedMessage();
+            return null;
+        }finally {
+            LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.valueFromInt(nCode)
+                    , mBusinessType
+                    , mStrClassName
+                    , String.format("Fast Get %s Filed from database, id:{%s} code:{%d} msg:{%s} ...", logTag, String.valueOf(id), nCode, strMsg));
+        }
+    }
+}

+ 12 - 0
src/main/java/com/shkpr/service/warncore/dbdao/services/intef/OrdWarnEventInfoDBService.java

@@ -0,0 +1,12 @@
+package com.shkpr.service.warncore.dbdao.services.intef;
+
+import java.util.Map;
+
+public interface OrdWarnEventInfoDBService {
+    int existsLineEx(String table
+            , Map<String, Object> andWheres
+            , Map<String, Object> orWheres
+            , String extend);
+
+    Map<String, Object> fastGetFiled(String table, String filed, Object id);
+}

+ 2 - 0
src/main/java/com/shkpr/service/warncore/dbdao/tables/OrdWarnEventInfoTable.java

@@ -10,6 +10,7 @@ public interface OrdWarnEventInfoTable {
         String DEFAULT_EXTEND = "";
         String ID = "id";
         String VERSION = "version";
+        String ACTION = "action";
     }
 
     interface W_INFO{
@@ -24,5 +25,6 @@ public interface OrdWarnEventInfoTable {
         String LIMIT_TIME = "limit_time";
         String HANDLE_TIME = "handle_time";
         String UPDATE_TIME = "update_time";
+        String ACTION = "action";
     }
 }