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

支持通用方案历史触发数据的存储逻辑

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

+ 24 - 20
src/main/java/com/shkpr/service/warncore/bizhandler/SiteDataWarnHandler.java

@@ -3,6 +3,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.EncryptionUtil;
 import com.global.base.tools.FastJsonUtil;
 import com.shkpr.service.warncore.commtools.CommTool;
 import com.shkpr.service.warncore.commtools.TimeTool;
@@ -434,6 +435,7 @@ public class SiteDataWarnHandler {
         String step = "Start to deep analysis";
         ResponseCode code = ResponseCode.RESULT_NORMAL;
         final String siteId = rules.get(0).getObjId();
+        final String planMixId = PlanKind.PRIVATE.equals(planDetail.getKind())?planDetail.getUid():EncryptionUtil.MD5Hash(planDetail.getUid()+planDetail.getOwnerId()+siteId);
         SiteSampleDataResult siteSampleData = null;
         Map<String, Long> oldEvent2EndUTC = new HashMap<>();//需要更新预警事件的样本截止时间
         Map<String, JPOrdWarnEventInfo> newEvent2Gen = new HashMap<>();
@@ -538,10 +540,10 @@ public class SiteDataWarnHandler {
                 if (code != ResponseCode.RESULT_NORMAL)
                     break;
 
-                List<SiteSampleGroupItem> planOfSample = ownerId2TriggerSample.get(planDetail.getUid());
+                List<SiteSampleGroupItem> planOfSample = ownerId2TriggerSample.get(planMixId);
                 if (planOfSample == null){
                     planOfSample = new ArrayList<>();
-                    ownerId2TriggerSample.put(planDetail.getUid(), planOfSample);
+                    ownerId2TriggerSample.put(planMixId, planOfSample);
                 }
                 if (!matched){//本次没有匹配成功
                     step = "This is not matched.";
@@ -624,7 +626,7 @@ public class SiteDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }
                 }else {//之前有预警事件
                     if (planDetail.getMergeToEvent() == 0 || thisTempStep.getLastEventAction() >= EventAction.DONE){//之前的预警事件已处理,则可认为进行重新计数
@@ -653,7 +655,7 @@ public class SiteDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(lastEventID, eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }
                 }
             }
@@ -726,6 +728,7 @@ public class SiteDataWarnHandler {
         ResponseCode code = ResponseCode.RESULT_NORMAL;
         long curTime = TimeTool.getCurMsUTC();
         final String siteId = rules.get(0).getObjId();
+        final String planMixId = PlanKind.PRIVATE.equals(planDetail.getKind())?planDetail.getUid():EncryptionUtil.MD5Hash(planDetail.getUid()+planDetail.getOwnerId()+siteId);
         SiteStatsDataResult siteStatsData = null;
         Map<String, Long> oldEvent2EndUTC = new HashMap<>();//需要更新预警事件的样本截止时间
         Map<String, JPOrdWarnEventInfo> newEvent2Gen = new HashMap<>();
@@ -850,10 +853,10 @@ public class SiteDataWarnHandler {
                 if (code != ResponseCode.RESULT_NORMAL)
                     break;
 
-                List<SiteStatsDataItem> planOfSample = ownerId2TriggerSample.get(planDetail.getUid());
+                List<SiteStatsDataItem> planOfSample = ownerId2TriggerSample.get(planMixId);
                 if (planOfSample == null){
                     planOfSample = new ArrayList<>();
-                    ownerId2TriggerSample.put(planDetail.getUid(), planOfSample);
+                    ownerId2TriggerSample.put(planMixId, planOfSample);
                 }
                 if (!matched){//本次没有匹配成功
                     step = "This is not matched.";
@@ -897,7 +900,7 @@ public class SiteDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }
                     continue;
                 }//上一次匹配成功了进入下一步
@@ -927,7 +930,7 @@ public class SiteDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }else {
                         thisTempStep.setLastEventId("");
                         thisTempStep.setLastEventTime(0L);
@@ -994,7 +997,7 @@ public class SiteDataWarnHandler {
                                     eventSampleHis = new ArrayList<>();
                                     ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                                 }
-                                eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                                eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                             }
                         }
                     }else {//触发一个新的事件
@@ -1018,7 +1021,7 @@ public class SiteDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }
                 }else {//之前有预警事件
                     if (planDetail.getMergeToEvent() == 0 || thisTempStep.getLastEventAction() >= EventAction.DONE){//之前的预警事件已处理,则可认为进行重新计数
@@ -1045,7 +1048,7 @@ public class SiteDataWarnHandler {
                                 eventSampleHis = new ArrayList<>();
                                 ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                             }
-                            eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                            eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                         }else {
                             thisTempStep.setLastEventId("");
                             thisTempStep.setLastEventTime(0L);
@@ -1068,7 +1071,7 @@ public class SiteDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(lastEventID, eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }
                 }
             }
@@ -1141,6 +1144,7 @@ public class SiteDataWarnHandler {
         ResponseCode code = ResponseCode.RESULT_NORMAL;
         long curTime = TimeTool.getCurMsUTC();
         final String siteId = rules.get(0).getObjId();
+        final String planMixId = PlanKind.PRIVATE.equals(planDetail.getKind())?planDetail.getUid():EncryptionUtil.MD5Hash(planDetail.getUid()+planDetail.getOwnerId()+siteId);
         SiteStatsDataResult siteStatsData = null;
         Map<String, Long> oldEvent2EndUTC = new HashMap<>();//需要更新预警事件的样本截止时间
         Map<String, JPOrdWarnEventInfo> newEvent2Gen = new HashMap<>();
@@ -1267,10 +1271,10 @@ public class SiteDataWarnHandler {
                 if (code != ResponseCode.RESULT_NORMAL)
                     break;
 
-                List<SiteStatsDataItem> planOfSample = ownerId2TriggerSample.get(planDetail.getUid());
+                List<SiteStatsDataItem> planOfSample = ownerId2TriggerSample.get(planMixId);
                 if (planOfSample == null){
                     planOfSample = new ArrayList<>();
-                    ownerId2TriggerSample.put(planDetail.getUid(), planOfSample);
+                    ownerId2TriggerSample.put(planMixId, planOfSample);
                 }
                 if (!matched){//本次没有匹配成功
                     step = "This is not matched.";
@@ -1314,7 +1318,7 @@ public class SiteDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }
                     continue;
                 }//上一次匹配成功了进入下一步
@@ -1344,7 +1348,7 @@ public class SiteDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }else {
                         thisTempStep.setLastEventId("");
                         thisTempStep.setLastEventTime(0L);
@@ -1381,7 +1385,7 @@ public class SiteDataWarnHandler {
                                     eventSampleHis = new ArrayList<>();
                                     ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                                 }
-                                eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                                eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                             }
                         }
                     }else {//触发一个新的事件
@@ -1405,7 +1409,7 @@ public class SiteDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }
                 }else {//之前有预警事件
                     if (planDetail.getMergeToEvent() == 0 || thisTempStep.getLastEventAction() >= EventAction.DONE){//之前的预警事件已处理,则可认为进行重新计数
@@ -1432,7 +1436,7 @@ public class SiteDataWarnHandler {
                                 eventSampleHis = new ArrayList<>();
                                 ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                             }
-                            eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                            eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                         }else {
                             thisTempStep.setLastEventId("");
                             thisTempStep.setLastEventTime(0L);
@@ -1455,7 +1459,7 @@ public class SiteDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(lastEventID, eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }
                 }
             }

+ 10 - 8
src/main/java/com/shkpr/service/warncore/bizhandler/ZoneDataWarnHandler.java

@@ -3,6 +3,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.EncryptionUtil;
 import com.global.base.tools.FastJsonUtil;
 import com.shkpr.service.warncore.commtools.CommTool;
 import com.shkpr.service.warncore.commtools.TimeTool;
@@ -511,6 +512,7 @@ public class ZoneDataWarnHandler {
         ResponseCode code = ResponseCode.RESULT_NORMAL;
         long curTime = TimeTool.getCurMsUTC();
         final String zoneId = rules.get(0).getObjId();
+        final String planMixId = PlanKind.PRIVATE.equals(planDetail.getKind())?planDetail.getUid(): EncryptionUtil.MD5Hash(planDetail.getUid()+planDetail.getOwnerId()+zoneId);
         List<DateKeyValue> zoneStatsData = null;//要求数据按date升序
         Map<String, Long> oldEvent2EndUTC = new HashMap<>();//需要更新预警事件的样本截止时间
         Map<String, JPOrdWarnEventInfo> newEvent2Gen = new HashMap<>();
@@ -610,10 +612,10 @@ public class ZoneDataWarnHandler {
                 if (code != ResponseCode.RESULT_NORMAL)
                     break;
 
-                List<DateKeyValue> planOfSample = ownerId2TriggerSample.get(planDetail.getUid());
+                List<DateKeyValue> planOfSample = ownerId2TriggerSample.get(planMixId);
                 if (planOfSample == null){
                     planOfSample = new ArrayList<>();
-                    ownerId2TriggerSample.put(planDetail.getUid(), planOfSample);
+                    ownerId2TriggerSample.put(planMixId, planOfSample);
                 }
                 if (!matched){//本次没有匹配成功
                     step = "This is not matched.";
@@ -657,7 +659,7 @@ public class ZoneDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }
                     continue;
                 }//上一次匹配成功了进入下一步
@@ -693,7 +695,7 @@ public class ZoneDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }else {
                         thisTempStep.setLastEventId("");
                         thisTempStep.setLastEventTime(0L);
@@ -770,7 +772,7 @@ public class ZoneDataWarnHandler {
                                     eventSampleHis = new ArrayList<>();
                                     ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                                 }
-                                eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                                eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                             }
                         }
                     }else {//触发一个新的事件
@@ -794,7 +796,7 @@ public class ZoneDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }
                 }else {//之前有预警事件
                     if (planDetail.getMergeToEvent() == 0 || thisTempStep.getLastEventAction() >= EventAction.DONE){//之前的预警事件已处理,则可认为进行重新计数
@@ -821,7 +823,7 @@ public class ZoneDataWarnHandler {
                                 eventSampleHis = new ArrayList<>();
                                 ownerId2TriggerSample.put(newEvent.getUid(), eventSampleHis);
                             }
-                            eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                            eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                         }else {
                             thisTempStep.setLastEventId("");
                             thisTempStep.setLastEventTime(0L);
@@ -844,7 +846,7 @@ public class ZoneDataWarnHandler {
                             eventSampleHis = new ArrayList<>();
                             ownerId2TriggerSample.put(lastEventID, eventSampleHis);
                         }
-                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planDetail.getUid()));
+                        eventSampleHis.addAll(ownerId2TriggerSample.remove(planMixId));
                     }
                 }
             }

+ 12 - 8
src/main/java/com/shkpr/service/warncore/dbdao/services/OrdWarnPlanCommonDBServiceImpl.java

@@ -2,18 +2,17 @@ package com.shkpr.service.warncore.dbdao.services;
 
 import com.global.base.log.LogLevelFlag;
 import com.global.base.log.LogPrintMgr;
+import com.global.base.tools.EncryptionUtil;
 import com.shkpr.service.warncore.commtools.CommTool;
 import com.shkpr.service.warncore.constants.LogFlagBusiType;
-import com.shkpr.service.warncore.dbdao.mapper.OrdWarnEventInfoMapper;
-import com.shkpr.service.warncore.dbdao.mapper.OrdWarnEventRulesMapper;
-import com.shkpr.service.warncore.dbdao.mapper.OrdWarnPlanCommonDoRecordMapper;
-import com.shkpr.service.warncore.dbdao.mapper.OrdWarnPlanCommonMapper;
+import com.shkpr.service.warncore.dbdao.mapper.*;
 import com.shkpr.service.warncore.dbdao.services.intef.OrdWarnPlanCommonDBService;
 import com.shkpr.service.warncore.dbdao.tables.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -47,6 +46,10 @@ public class OrdWarnPlanCommonDBServiceImpl implements OrdWarnPlanCommonDBServic
     @Autowired
     OrdWarnEventRulesMapper ordWarnEventRulesMapper;
 
+    @SuppressWarnings("all")
+    @Autowired
+    OrdWarnTriggerSampleHisMapper ordWarnTriggerSampleHisMapper;
+
     @Override
     public List<Map<String, Object>> listAllWiths(int limit, int offset, Map<String, Object> andWheres, Map<String, Object> orWheres, String orderBy, String extend) {
         return listAllWithsEx("", "", limit, offset, andWheres, orWheres, orderBy, extend);
@@ -228,19 +231,20 @@ public class OrdWarnPlanCommonDBServiceImpl implements OrdWarnPlanCommonDBServic
                     ordWarnEventInfoMapper.batchUpdateWiths(wheres, oldEvents);
                 }
                 nRes = ordWarnPlanCommonDoRecordMapper.insertOrUpdateEx(doRecord, OrdWarnPlanCommonDoRecordTable.W_INFO.UNIQUE_FIELDS, OrdWarnPlanCommonDoRecordTable.W_INFO.UPDATE_FIELDS);
-                /*if (!StringUtils.isEmpty(eventIdAcceptPlanHisTriggerSam)){
+                final String hisOwnerId = EncryptionUtil.MD5Hash(planId+ownerId+objId);
+                if (!StringUtils.isEmpty(eventIdAcceptPlanHisTriggerSam)){
                     ordWarnTriggerSampleHisMapper.updateWiths(new HashMap<String, Object>(){{
                         put(OrdWarnTriggerSampleHisTable.W_INFO.OWNER_ID, eventIdAcceptPlanHisTriggerSam);
                     }}, new HashMap<String, Object>(){{
-                        put(OrdWarnTriggerSampleHisTable.W_INFO.OWNER_ID, planId);
+                        put(OrdWarnTriggerSampleHisTable.W_INFO.OWNER_ID, hisOwnerId);
                     }}, null, "");
                 }else if (clearPlanHisTriggerSam){
                     ordWarnTriggerSampleHisMapper.deleteWithsEx(new HashMap<String, Object>(){{
-                        put(OrdWarnTriggerSampleHisTable.W_INFO.OWNER_ID, planId);
+                        put(OrdWarnTriggerSampleHisTable.W_INFO.OWNER_ID, hisOwnerId);
                     }}, null, "");
                 }
                 if (CommTool.listSize(triggerSampleHis) > 0)
-                    ordWarnTriggerSampleHisMapper.batchInserts(triggerSampleHis);*/
+                    ordWarnTriggerSampleHisMapper.batchInserts(triggerSampleHis);
                 if (CommTool.listSize(newEventId) > 0){
                     ordWarnEventRulesMapper.copyRuleFromCommonPlan(planId
                             , new HashMap<String, String>(){{