Parcourir la source

调整部分细节

andyliu il y a 2 semaines
Parent
commit
e2d5a3c0d4
18 fichiers modifiés avec 248 ajouts et 69 suppressions
  1. 4 11
      sql.properties
  2. 53 18
      src/main/java/com/shkpr/service/warncore/bizhandler/SiteDataWarnHandler.java
  3. 1 1
      src/main/java/com/shkpr/service/warncore/bizhandler/TimerCheckWarnPlanMgr.java
  4. 9 9
      src/main/java/com/shkpr/service/warncore/bizhandler/ZoneDataWarnHandler.java
  5. 25 0
      src/main/java/com/shkpr/service/warncore/dbdao/mapper/OrdWarnEventInfoMapper.java
  6. 56 0
      src/main/java/com/shkpr/service/warncore/dbdao/providers/OrdWarnEventInfoSqlProvider.java
  7. 0 5
      src/main/java/com/shkpr/service/warncore/dbdao/providers/OrdWarnPlanInfoSqlProvider.java
  8. 52 7
      src/main/java/com/shkpr/service/warncore/dbdao/services/OrdWarnPlanInfoDBServiceImpl.java
  9. 4 6
      src/main/java/com/shkpr/service/warncore/dbdao/services/intef/OrdWarnPlanInfoDBService.java
  10. 28 0
      src/main/java/com/shkpr/service/warncore/dbdao/tables/OrdWarnEventInfoTable.java
  11. 1 0
      src/main/java/com/shkpr/service/warncore/dbdao/tables/OrdWarnPlanInfoTable.java
  12. 1 1
      src/main/java/com/shkpr/service/warncore/dbdao/tables/OrdWarnPlanRulesTable.java
  13. 1 1
      src/main/java/com/shkpr/service/warncore/dto/OrdWarnPlanCheckBean.java
  14. 1 0
      src/main/java/com/shkpr/service/warncore/dto/OrdWarnPlanDetail.java
  15. 2 2
      src/main/java/com/shkpr/service/warncore/dto/OrdWarnPlanRules.java
  16. 1 1
      src/main/java/com/shkpr/service/warncore/dto/OrdWarnPlanTempStep.java
  17. 0 4
      src/main/java/com/shkpr/service/warncore/jsonbean/JPOrdWarnEventInfo.java
  18. 9 3
      src/main/resources/application.properties

+ 4 - 11
sql.properties

@@ -1,13 +1,6 @@
 spring.datasource.data.jdbc-url=jdbc:postgresql://140.246.183.164:5432/water_smart_develop_branch?useSSL=false&useAffectedRows=false&allowMultiQueries=true
-#spring.datasource.data.jdbc-url=jdbc:postgresql://10.101.3.104:5432/watersmart_new?useSSL=false&useAffectedRows=false&allowMultiQueries=true
 spring.datasource.data.username=postgres
 spring.datasource.data.password=kpr.23417.postgres
-
-#spring.datasource.data.jdbc-url=jdbc:postgresql://192.168.0.4:5432/watersmart?useSSL=false&useAffectedRows=false&allowMultiQueries=true
-#spring.datasource.data.username=postgres
-#spring.datasource.data.password=kpr.23417.postgres
-
-
 spring.datasource.data.driver-class-name=org.postgresql.Driver
 
 spring.datasource.data.max-wait=60000
@@ -18,10 +11,10 @@ spring.datasource.data.connection-test-query=SELECT 1
 spring.datasource.data.test-on-borrow=false
 spring.datasource.data.test-on-return=false
 spring.datasource.data.test-while-idle=true
-spring.datasource.data.max-lifetime=120000
-spring.datasource.data.idle-timeout=30000
+spring.datasource.data.max-lifetime=1200000
+spring.datasource.data.idle-timeout=300000
 spring.datasource.data.connection-timeout=30000
-# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+# \u914D\u7F6E\u95F4\u9694\u591A\u4E45\u624D\u8FDB\u884C\u4E00\u6B21\u68C0\u6D4B\uFF0C\u68C0\u6D4B\u9700\u8981\u5173\u95ED\u7684\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
 spring.datasource.data.time-between-eviction-runs-millis=60000
-# 配置一个连接在池中最小生存的时间,单位是毫秒
+# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5C0F\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
 spring.datasource.data.minEvictableIdleTimeMillis=300000

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

@@ -13,6 +13,7 @@ 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;
+import com.shkpr.service.warncore.dbdao.tables.OrdWarnEventInfoTable;
 import com.shkpr.service.warncore.dbdao.tables.OrdWarnPlanInfoTable;
 import com.shkpr.service.warncore.dto.*;
 import com.shkpr.service.warncore.jsonbean.JPGetRegionData;
@@ -87,15 +88,15 @@ public class SiteDataWarnHandler {
             int findStartClock = -1;
             for (int i=rules.size()-1;i>=0;i--){
                 if (i == 0)
-                    conditionMinUTC = TimeTool.convertDateStr2UTC(String.format("%s %2d:00:00", curDate, rules.get(i).getStart()));
-                if (curClock >= rules.get(i).getStart() && curClock <= rules.get(i).getEnd()){
-                    findStartClock = rules.get(i).getStart();
+                    conditionMinUTC = TimeTool.convertDateStr2UTC(String.format("%s %2d:00:00", curDate, rules.get(i).getStarts()));
+                if (curClock >= rules.get(i).getStarts() && curClock <= rules.get(i).getEnds()){
+                    findStartClock = rules.get(i).getStarts();
                     if (FrequencyUnit.MIN.equals(planDetail.getFrequencyUnit())){//以分钟为单位进行分析
                         queryEndUTC = Math.min(curUTCTm
-                                , TimeTool.convertDateStr2UTC(String.format("%s %2d:59:59", curDate, rules.get(i).getEnd())));
+                                , TimeTool.convertDateStr2UTC(String.format("%s %2d:59:59", curDate, rules.get(i).getEnds())));
                     }else {//以小时或其他单位进行分析
                         queryEndUTC = Math.min(TimeTool.convertDateStr2UTC(String.format("%s %2d:59:59", curDate, curClock))
-                                , TimeTool.convertDateStr2UTC(String.format("%s %2d:59:59", curDate, rules.get(i).getEnd())));
+                                , TimeTool.convertDateStr2UTC(String.format("%s %2d:59:59", curDate, rules.get(i).getEnds())));
                     }
                     break;
                 }
@@ -115,8 +116,8 @@ public class SiteDataWarnHandler {
                 for (int i=rules.size()-1;i>=0;i--){
                     if (findStartClock < 0)
                         break;
-                    if (findStartClock == rules.get(i).getEnd())
-                        findStartClock = rules.get(i).getStart()-1;
+                    if (findStartClock == rules.get(i).getEnds())
+                        findStartClock = rules.get(i).getStarts()-1;
                 }
                 queryBeginUTC = TimeTool.convertDateStr2UTC(String.format("%s %2d:00:00", curDate, findStartClock+1));
             }
@@ -152,7 +153,7 @@ public class SiteDataWarnHandler {
             }
 
             if (!StringUtils.isEmpty(planDetail.getLastEventId())){
-                //向数据库中快速查询事件最近处理阶段action的值
+                //向数据库中快速查询事件最近处理阶段action的值,可以用exist判断更快
                 //并赋值给thisStepTempRes
             }
         }while (false);
@@ -169,7 +170,15 @@ public class SiteDataWarnHandler {
         }else {//单独更新预警方案的分析时间、次数、说明
             thisStepTempRes.setLastAnalyExplain(step);
             Map<String, Object> updatePlan = thisStepTempRes.genUpdatePlan();
+            updatePlan.put(OrdWarnPlanInfoTable.W_INFO.VERSION, planDetail.getVersion()+1);
             updatePlan.put(OrdWarnPlanInfoTable.W_INFO.UPDATE_TIME, System.currentTimeMillis());
+            if (getWarnPlanInfoDBService().updatePlanForTrigger(new HashMap<String, Object>(){{
+                        put(OrdWarnPlanInfoTable.W_INFO.UNIQUE_ID, planDetail.getUid());
+                        put(OrdWarnPlanInfoTable.W_INFO.VERSION, planDetail.getVersion());
+                    }}, updatePlan, null, null) <= 0){
+                step = "Update warn plan trigger result to db failed.";
+                code = ResponseCode.RESULT_BAD;
+            }
         }
         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}...",
@@ -183,8 +192,9 @@ public class SiteDataWarnHandler {
         ResponseCode code = ResponseCode.RESULT_NORMAL;
         final String siteId = rules.get(0).getObjId();
         SiteSampleDataResult siteSampleData = null;
-        Map<String, Long> eventId2NewEndUTC = new HashMap<>();//需要更新预警事件的样本截止时间
-        List<Map<String, Object>> eventToGen = new ArrayList<>();
+        Map<String, Long> oldEvent2EndUTC = new HashMap<>();//需要更新预警事件的样本截止时间
+        Map<String, JPOrdWarnEventInfo> newEvent2Gen = new HashMap<>();
+
         do {
             JPGetRegionData jpParam = new JPGetRegionData();
             jpParam.setTotal(1);
@@ -232,7 +242,7 @@ public class SiteDataWarnHandler {
                 OrdWarnPlanRules findRule = null;
                 int sampleRecordClock = (int)((sampleRecordTm/1000/60/60%24+8)%24);
                 for (OrdWarnPlanRules ruleItem:rules){
-                    if (sampleRecordClock <= ruleItem.getEnd() && sampleRecordClock >= ruleItem.getStart()){
+                    if (sampleRecordClock <= ruleItem.getEnds() && sampleRecordClock >= ruleItem.getStarts()){
                         findRule = ruleItem;
                         break;
                     }
@@ -312,12 +322,12 @@ public class SiteDataWarnHandler {
                         thisTempStep.setLastCompareSampleTime(sampleRecordTm);
                         thisTempStep.setLastCompareSampleResult(COMPARE_TURE);
                         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());
+                        newEvent2Gen.put(newEvent.getUid(), newEvent);
                         thisTempStep.setLastEventId(newEvent.getUid());
+                        thisTempStep.setLastEventAction(newEvent.getAction());
                         thisTempStep.setDayTriggerTimes(thisTempStep.getDayTriggerTimes()+1);
                         //[!!!]do not change the FirstMatchSampleTime[!!!]
                     }
@@ -332,7 +342,10 @@ public class SiteDataWarnHandler {
                     }else {//之前的预警事件未处理,则更新预警事件的样本截止时刻
                         thisTempStep.setLastCompareSampleTime(sampleRecordTm);
                         thisTempStep.setLastCompareSampleResult(COMPARE_TURE);
-                        eventId2NewEndUTC.put(thisTempStep.getLastEventId(), sampleRecordTm);
+                        if (newEvent2Gen.containsKey(thisTempStep.getLastEventId())){
+                            newEvent2Gen.get(thisTempStep.getLastEventId()).setToTime(sampleRecordTm);
+                        }else
+                            oldEvent2EndUTC.put(thisTempStep.getLastEventId(), sampleRecordTm);
                         thisTempStep.setLastCompareSampleExplain("This is matched, but need to merge the last event.");
                     }
                 }
@@ -341,10 +354,32 @@ public class SiteDataWarnHandler {
 
         thisTempStep.setLastAnalyExplain(step);
         Map<String, Object> updatePlan = thisTempStep.genUpdatePlan();
+        updatePlan.put(OrdWarnPlanInfoTable.W_INFO.VERSION, planDetail.getVersion()+1);
         updatePlan.put(OrdWarnPlanInfoTable.W_INFO.UPDATE_TIME, System.currentTimeMillis());
-        //将eventId2NewEndUTC进行更新
-        //将eventToGen进行插入
-
+        List<Map<String, Object>> genNewEventObj = null;
+        if (CommTool.mapSize(newEvent2Gen) > 0){
+            genNewEventObj = new ArrayList<>();
+            for (Map.Entry<String, JPOrdWarnEventInfo> entry:newEvent2Gen.entrySet())
+                genNewEventObj.add(FastJsonUtil.obj2Map(entry.getValue(), true));
+        }
+        List<Map<String, Object>> genOldEventObj = null;
+        if (CommTool.mapSize(oldEvent2EndUTC) > 0){
+            genOldEventObj = new ArrayList<>();
+            for (Map.Entry<String, Long> entry:oldEvent2EndUTC.entrySet()){
+                genOldEventObj.add(new HashMap<String, Object>(){{
+                    put(OrdWarnEventInfoTable.W_INFO.UNIQUE_ID, entry.getKey());
+                    put(OrdWarnEventInfoTable.W_INFO.TO_TIME, entry.getValue());
+                    put(OrdWarnEventInfoTable.W_INFO.UPDATE_TIME, TimeTool.getCurMsUTC());
+                }});
+            }
+        }
+        if (getWarnPlanInfoDBService().updatePlanForTrigger(new HashMap<String, Object>(){{
+                        put(OrdWarnPlanInfoTable.W_INFO.UNIQUE_ID, planDetail.getUid());
+                        put(OrdWarnPlanInfoTable.W_INFO.VERSION, planDetail.getVersion());
+                    }}, updatePlan, genNewEventObj, genOldEventObj) <= 0){
+            step = "Update warn plan trigger result to db failed.";
+            code = ResponseCode.RESULT_BAD;
+        }
         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()));
@@ -425,7 +460,7 @@ public class SiteDataWarnHandler {
                 OrdWarnPlanRules findRule = null;
                 int sampleRecordClock = (int)((sampleRecordTm/1000/60/60%24+8)%24);
                 for (OrdWarnPlanRules ruleItem:rules){
-                    if (sampleRecordClock <= ruleItem.getEnd() && sampleRecordClock >= ruleItem.getStart()){
+                    if (sampleRecordClock <= ruleItem.getEnds() && sampleRecordClock >= ruleItem.getStarts()){
                         findRule = ruleItem;
                         break;
                     }

+ 1 - 1
src/main/java/com/shkpr/service/warncore/bizhandler/TimerCheckWarnPlanMgr.java

@@ -92,7 +92,7 @@ public class TimerCheckWarnPlanMgr {
                                 }
                             }
 
-                            if (curClock < oItem.getMinStart())
+                            if (curClock < oItem.getMinStarts())
                                 continue;
                         }
                         AsyncTaskQueueMgr.getInstance().postTaskData(TaskQueueDataTypeEx.ASYNC_ANALY_WARN_PLAN, new OrdWarnPlanWillDo(oItem.getUid(), oItem.getObjSrc()));

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

@@ -65,8 +65,8 @@ public class ZoneDataWarnHandler {
 
             int findStartRange = -1;
             for (int i=rules.size()-1;i>=0;i--){
-                if (preMonth >= rules.get(i).getStart() && preMonth <= rules.get(i).getEnd()){
-                    findStartRange = rules.get(i).getStart();
+                if (preMonth >= rules.get(i).getStarts() && preMonth <= rules.get(i).getEnds()){
+                    findStartRange = rules.get(i).getStarts();
                     break;
                 }
             }
@@ -79,8 +79,8 @@ public class ZoneDataWarnHandler {
             for (int i=rules.size()-1;i>=0;i--){
                 if (findStartRange <= 0)
                     break;
-                if (findStartRange == rules.get(i).getEnd())
-                    findStartRange = rules.get(i).getStart()-1;
+                if (findStartRange == rules.get(i).getEnds())
+                    findStartRange = rules.get(i).getStarts()-1;
             }
             queryBeginUTC = TimeTool.convertDateStr2BeginUTC(String.format("%d-%2d-01 00:00:00", preMonthInYear, findStartRange+1));
             conditionMinUTC = queryBeginUTC;
@@ -142,8 +142,8 @@ public class ZoneDataWarnHandler {
 
             int findStartRange = -1;
             for (int i=rules.size()-1;i>=0;i--){
-                if (preDayInMonth >= rules.get(i).getStart() && preDayInMonth <= rules.get(i).getEnd()){
-                    findStartRange = rules.get(i).getStart();
+                if (preDayInMonth >= rules.get(i).getStarts() && preDayInMonth <= rules.get(i).getEnds()){
+                    findStartRange = rules.get(i).getStarts();
                     break;
                 }
             }
@@ -156,8 +156,8 @@ public class ZoneDataWarnHandler {
             for (int i=rules.size()-1;i>=0;i--){
                 if (findStartRange <= 0)
                     break;
-                if (findStartRange == rules.get(i).getEnd())
-                    findStartRange = rules.get(i).getStart()-1;
+                if (findStartRange == rules.get(i).getEnds())
+                    findStartRange = rules.get(i).getStarts()-1;
             }
 
             queryBeginUTC = TimeTool.convertDateStr2BeginUTC(String.format("%d-%2d-01 00:00:00", preDayInYear, findStartRange+1));
@@ -232,7 +232,7 @@ public class ZoneDataWarnHandler {
                 OrdWarnPlanRules findRule = null;
                 int sampleTmInMonth = TimeTool.getMonthIndex(sampleRecordTm);
                 for (OrdWarnPlanRules ruleItem:rules){
-                    if (sampleTmInMonth <= ruleItem.getEnd() && sampleTmInMonth >= ruleItem.getStart()){
+                    if (sampleTmInMonth <= ruleItem.getEnds() && sampleTmInMonth >= ruleItem.getStarts()){
                         findRule = ruleItem;
                         break;
                     }

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

@@ -0,0 +1,25 @@
+package com.shkpr.service.warncore.dbdao.mapper;
+
+import com.shkpr.service.warncore.dbdao.providers.OrdWarnEventInfoSqlProvider;
+import org.apache.ibatis.annotations.InsertProvider;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.SelectProvider;
+import org.apache.ibatis.annotations.UpdateProvider;
+
+import java.util.List;
+import java.util.Map;
+
+public interface OrdWarnEventInfoMapper {
+    @SelectProvider(type = OrdWarnEventInfoSqlProvider.class, method = "existsLine")
+    boolean existLine(@Param("table") String table
+            , @Param("andWheres") Map<String, Object> andWheres
+            , @Param("orWheres") Map<String, Object> orWheres
+            , @Param("extend") String extend);
+
+    @UpdateProvider(type = OrdWarnEventInfoSqlProvider.class, method = "batchUpdateWiths")
+    int batchUpdateWiths( @Param("andWheres") List<Map<String, Object>> andWheres
+            , @Param("datas") List<Map<String, Object>> datas);
+
+    @InsertProvider(type = OrdWarnEventInfoSqlProvider.class, method = "batchInserts")
+    int batchInserts(@Param("inserts") List<Map<String, Object>> inserts);
+}

+ 56 - 0
src/main/java/com/shkpr/service/warncore/dbdao/providers/OrdWarnEventInfoSqlProvider.java

@@ -0,0 +1,56 @@
+package com.shkpr.service.warncore.dbdao.providers;
+
+import com.shkpr.service.warncore.dbdao.tables.OrdWarnEventInfoTable;
+
+public class OrdWarnEventInfoSqlProvider extends BaseSqlProvider implements OrdWarnEventInfoTable {
+    @Override
+    public String getRTableName() {
+        return R_INFO.TABLE;
+    }
+
+    @Override
+    public String getWTableName() {
+        return W_INFO.TABLE;
+    }
+
+    @Override
+    public String getRUniqueId() {
+        return R_INFO.UNIQUE_ID;
+    }
+
+    @Override
+    public String getWUniqueId() {
+        return W_INFO.UNIQUE_ID;
+    }
+
+    @Override
+    public String getSAllFiled() {
+        return R_INFO.ALL_FILED;
+    }
+
+    @Override
+    public String getRPrimaryKey() {
+        return R_INFO.PRIMARY_KEY;
+    }
+
+    @Override
+    public String getWPrimaryKey() {
+        return W_INFO.PRIMARY_KEY;
+    }
+
+    @Override
+    public boolean isWJsonForFiled(String filedName) {
+        return false;
+    }
+
+    @Override
+    protected boolean isWTimeForFiled(String filedName) {
+        if (W_INFO.CREATE_TIME.equalsIgnoreCase(filedName)
+                || W_INFO.HANDLE_TIME.equalsIgnoreCase(filedName)
+                || W_INFO.FROM_TIME.equalsIgnoreCase(filedName)
+                || W_INFO.TO_TIME.equalsIgnoreCase(filedName)
+                || W_INFO.LIMIT_TIME.equalsIgnoreCase(filedName))
+            return false;
+        return (filedName.endsWith("time"));
+    }
+}

+ 0 - 5
src/main/java/com/shkpr/service/warncore/dbdao/providers/OrdWarnPlanInfoSqlProvider.java

@@ -48,11 +48,6 @@ public class OrdWarnPlanInfoSqlProvider extends BaseSqlProvider implements OrdWa
 
     @Override
     protected boolean isWTimeForFiled(String filedName) {
-        String LAST_ANALY_TIME = "last_analy_time";
-        String LAST_COMPARE_SAMPLE_TIME = "last_compare_sample_time";
-        String FIRST_MATCH_SAMPLE_TIME = "first_match_sample_time";
-        String LAST_EVENT_TIME = "last_event_time";
-        String CREATE_TIME = "create_time";
         if (W_INFO.LAST_ANALY_TIME.equalsIgnoreCase(filedName)
                 || W_INFO.LAST_COMPARE_SAMPLE_TIME.equalsIgnoreCase(filedName)
                 || W_INFO.FIRST_MATCH_SAMPLE_TIME.equalsIgnoreCase(filedName)

+ 52 - 7
src/main/java/com/shkpr/service/warncore/dbdao/services/OrdWarnPlanInfoDBServiceImpl.java

@@ -4,12 +4,17 @@ import com.global.base.log.LogLevelFlag;
 import com.global.base.log.LogPrintMgr;
 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.OrdWarnPlanInfoMapper;
 import com.shkpr.service.warncore.dbdao.services.intef.OrdWarnPlanInfoDBService;
+import com.shkpr.service.warncore.dbdao.tables.OrdWarnEventInfoTable;
 import com.shkpr.service.warncore.dbdao.tables.OrdWarnPlanInfoTable;
 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 java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -29,6 +34,10 @@ public class OrdWarnPlanInfoDBServiceImpl implements OrdWarnPlanInfoDBService, O
     @Autowired
     OrdWarnPlanInfoMapper ordWarnPlanInfoMapper;
 
+    @SuppressWarnings("all")
+    @Autowired
+    OrdWarnEventInfoMapper ordWarnEventInfoMapper;
+
     @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);
@@ -189,13 +198,49 @@ public class OrdWarnPlanInfoDBServiceImpl implements OrdWarnPlanInfoDBService, O
         }
     }
 
+    @Transactional(transactionManager = "mainDbTransactionManager")
     @Override
-    public int updateForNoTrigger(String planId, Map<String, Object> updatePlan, List<Map<String, Object>> pointsWhere, List<Map<String, Object>> pointsData) {
-        return 0;
-    }
-
-    @Override
-    public int triggerEvent(String eventId, String planId, Map<String, Object> updatePlan, List<Map<String, Object>> pointsWhere, List<Map<String, Object>> pointsData, Map<String, Object> eventInfo, List<Map<String, Object>> eventTriggers) {
-        return 0;
+    public int updatePlanForTrigger(Map<String, Object> planWhere, Map<String, Object> updatePlan, List<Map<String, Object>> newEvents, List<Map<String, Object>> oldEvents) {
+        int nCode = 0;
+        String strMsg = "Success";
+        try {
+            int nRes = 1;
+            do {
+                if (CommTool.listSize(newEvents) > 0){
+                    if (ordWarnEventInfoMapper.batchInserts(newEvents) != CommTool.listSize(newEvents)){
+                        nRes = -1;
+                        break;
+                    }
+                }
+                if (CommTool.listSize(oldEvents) > 0){
+                    List<Map<String, Object>> wheres = new ArrayList<>();
+                    for (Map<String, Object> eventItem:oldEvents)
+                        wheres.add(new HashMap<String, Object>(){{put(OrdWarnEventInfoTable.W_INFO.UNIQUE_ID, eventItem.remove(OrdWarnEventInfoTable.W_INFO.UNIQUE_ID));}});
+                    ordWarnEventInfoMapper.batchUpdateWiths(wheres, oldEvents);
+                }
+                nRes = ordWarnPlanInfoMapper.updateWiths(updatePlan, planWhere, null, "");
+            }while (false);
+
+            if (nRes <= 0){
+                strMsg = "Failed";
+                nCode = LogLevelFlag.LOG_WARN.ordinal();
+                try {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                }catch (Exception e1){}
+            }
+            return nRes;
+        }catch (Exception e){
+            try {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            }catch (Exception e1){}
+            nCode = LogLevelFlag.LOG_ERROR.ordinal();
+            strMsg = e.getLocalizedMessage();
+            return -1;
+        }finally {
+            LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.valueFromInt(nCode)
+                    , mBusinessType
+                    , mStrClassName
+                    , String.format("Update plan for trigger to database by Transactional, code:{%d} msg:{%s} ...", nCode, strMsg));
+        }
     }
 }

+ 4 - 6
src/main/java/com/shkpr/service/warncore/dbdao/services/intef/OrdWarnPlanInfoDBService.java

@@ -33,12 +33,10 @@ public interface OrdWarnPlanInfoDBService extends BaseDBService {
             , Map<String, Object> orWheres
             , String orderBy
             , String extend);
-    int updateForNoTrigger(String planId, Map<String, Object> updatePlan, List<Map<String, Object>> pointsWhere, List<Map<String, Object>> pointsData);
-    int triggerEvent(String eventId, String planId, Map<String, Object> updatePlan
-            , List<Map<String, Object>> pointsWhere
-            , List<Map<String, Object>> pointsData
-            , Map<String, Object> eventInfo
-            , List<Map<String, Object>> eventTriggers);
+    int updatePlanForTrigger(Map<String, Object> planWhere
+            , Map<String, Object> updatePlan
+            , List<Map<String, Object>> newEvents
+            , List<Map<String, Object>> oldEvents);
 }
 
 

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

@@ -0,0 +1,28 @@
+package com.shkpr.service.warncore.dbdao.tables;
+
+public interface OrdWarnEventInfoTable {
+    interface R_INFO{
+        String TABLE = "v_k4_ord_warn_event_info";
+        String PRIMARY_KEY = "uid";
+        String UNIQUE_ID = "uid";
+        String ALL_FILED = "*";
+        String DEFAULT_ORDER = "create_time DESC,id DESC";
+        String DEFAULT_EXTEND = "";
+        String ID = "id";
+        String VERSION = "version";
+    }
+
+    interface W_INFO{
+        String ID = "id";
+        String TABLE = "k4_ord_warn_event_info";
+        String PRIMARY_KEY = "uid";
+        String UNIQUE_ID = "uid";
+        String CREATE_TIME = "create_time";
+        String VERSION = "version";
+        String FROM_TIME = "from_time";
+        String TO_TIME = "to_time";
+        String LIMIT_TIME = "limit_time";
+        String HANDLE_TIME = "handle_time";
+        String UPDATE_TIME = "update_time";
+    }
+}

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

@@ -32,5 +32,6 @@ public interface OrdWarnPlanInfoTable {
         String FREQUENCY_UNIT = "frequency_unit";
         String DISUSED = "disused";
         String UPDATE_TIME = "update_time";
+        String VERSION = "version";
     }
 }

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

@@ -6,7 +6,7 @@ public interface OrdWarnPlanRulesTable {
         String PRIMARY_KEY = "id";
         String ALL_FILED = "*";
         String UNIQUE_ID = "id";
-        String DEFAULT_ORDER = "start ASC, id ASC";
+        String DEFAULT_ORDER = "starts ASC, id ASC";
         String DEFAULT_EXTEND = "";
         String PLAN_ID = "plan_id";
         String CONDITIONS = "conditions";

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

@@ -18,7 +18,7 @@ public class OrdWarnPlanCheckBean {
     private String ownerSrc = "";
     private String objSrc = "";
     private String doPeriodUnit = "";
-    private int minStart = 0;
+    private int minStarts = 0;
 
     public OrdWarnPlanCheckBean() {
     }

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

@@ -21,6 +21,7 @@ public class OrdWarnPlanDetail {
     private int sendway = 3;
     private long lastCompareSampleTime = 0L;
     private int lastCompareSampleResult = 0;
+    private String lastCompareSampleExplain = "";
     private long firstMatchSampleTime = 0L;
     private long lastEventTime = 0L;
     private String lastEventId = "";

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

@@ -16,8 +16,8 @@ public class OrdWarnPlanRules {
     private String objId = "";
     private String objName = "";
     private String objSrc = "";
-    private int start = 0;
-    private int end = 0;
+    private int starts = 0;
+    private int ends = 0;
     private String restrict = "any";
     private int devCycle = 0;//设备采集周期(单位:秒)
     private String devId = "";//设备相关ID

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

@@ -37,7 +37,7 @@ public class OrdWarnPlanTempStep {
             firstMatchSampleTime = planDetail.getFirstMatchSampleTime();
             lastCompareSampleTime = planDetail.getLastCompareSampleTime();
             lastCompareSampleResult = planDetail.getLastCompareSampleResult();
-            lastCompareSampleExplain = "";
+            lastCompareSampleExplain = planDetail.getLastCompareSampleExplain();
             lastEventTime = planDetail.getLastEventTime();
             lastEventId = planDetail.getLastEventId();
 

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

@@ -66,8 +66,4 @@ public class JPOrdWarnEventInfo {
         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);
-    }
 }

+ 9 - 3
src/main/resources/application.properties

@@ -101,7 +101,7 @@ global.internal.call.password=Tri@Tech
 #\u6570\u636E\u5F15\u64CE\u670D\u52A1\u7684\u5185\u90E8\u901A\u4FE1\u53EF\u4FE1\u4EFB\u53E3\u4EE4
 cloud.data.service.call.password=Tri@Tech
 #\u6570\u636E\u5F15\u64CE\u670D\u52A1\u8BBF\u95EE\u5730\u5740
-cloud.data.service.address=http://127.0.0.1:9004/
+cloud.data.service.address=https://119.96.215.215:9000/
 #GisAe\u670D\u52A1\u7684\u5185\u90E8\u901A\u4FE1\u53EF\u4FE1\u4EFB\u53E3\u4EE4
 cloud.gis.service.call.password=Tri@Tech
 #GisAe\u670D\u52A1\u8BBF\u95EE\u5730\u5740
@@ -110,6 +110,10 @@ cloud.gis.service.address=http://127.0.0.1:9006/
 cloud.task.service.call.password=Tri@Tech
 #Task\u670D\u52A1\u8BBF\u95EE\u5730\u5740
 cloud.task.service.address=http://127.0.0.1:9002/
+#Base\u670D\u52A1\u7684\u5185\u90E8\u901A\u4FE1\u53EF\u4FE1\u4EFB\u53E3\u4EE4
+cloud.base.service.call.password=Tri@Tech
+#Base\u670D\u52A1\u8BBF\u95EE\u5730\u5740
+cloud.base.service.address=https://119.96.215.215:9000/
 #KPR\u5E73\u53F0\u4EE3\u7406\u5730\u5740
 cloud.kpr.proxy.address=https://119.96.165.176:9090/
 
@@ -120,10 +124,12 @@ cron.refresh.timer.clock=0 0-5 0 * * ?
 cron.clear.local.cache=0 15 0 * * ?
 #\u6BCF\u5206\u949F\u7684\u7B2C20\u79D2\u6267\u884C\u4E00\u6B21
 cron.check.minute.warn=20 0/1 * * * ?
-#\u6BCF\u4E2A\u6574\u70B9\u7684\u7B2C5\u5206\u949F\u6267\u884C\u4E00\u6B21
-cron.check.hour.warn=0 5 * * * ?
+#\u6BCF\u4E2A\u6574\u70B9\u7684\u7B2C10\u5206\u949F\u6267\u884C\u4E00\u6B21
+cron.check.hour.warn=0 10 * * * ?
 #\u6BCF\u592900:30:00\u6267\u884C\u4E00\u6B21
 cron.check.day.warn=0 30 0 * * ?
+#\u6BCF\u67081\u65E5\u768401:00:00\u6267\u884C\u4E00\u6B21
+cron.check.month.warn=0 0 1 1 * ?
 
 #\u4E07\u7EF4\u7F51\u8BBF\u95EE\u7684\u4EE3\u7406\u5730\u5740(\u4E3A\u7A7A\u65F6\uFF0C\u8BBF\u95EE\u4E07\u7EF4\u7F51\u4E0D\u4F7F\u7528\u4EE3\u7406)
 global.www.proxy.address=