zhongrj
2023-06-03 74227382ee14a22bae739674fbc034083dd811c3
新增定时任务执行器与告警规则处理串起,完成整个流程的执行逻辑
2 files modified
4 files added
416 ■■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/notice/feign/NoticeClient.java 32 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/notice/feign/NoticeClientFallBack.java 17 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskClient.java 1 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/feign/NoticeFeignClient.java 35 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-xxljob/pom.xml 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/AlarmXxlJob.java 326 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/notice/feign/NoticeClient.java
New file
@@ -0,0 +1,32 @@
package cn.gistack.alerts.notice.feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
 * 告警 feign 远程调用
 * @author zhongrj
 * @date 2023-06-03
 */
@FeignClient(value = "blade-alerts",fallback = NoticeClientFallBack.class)
public interface NoticeClient {
    String API_PREFIX = "/client";
    String CREATE_ALARM_NOTICE_TASK_JOB_HANDLER = API_PREFIX + "/createAlarmNoticeTaskJobHandler";
    /**
     * 发送告警通知
     * @param name
     * @param content
     * @param type
     * @return
     */
    @GetMapping(CREATE_ALARM_NOTICE_TASK_JOB_HANDLER)
    Object createAlarmNoticeTaskJobHandler(@RequestParam("name") String name,
                                           @RequestParam("content") String content,
                                           @RequestParam("title") String type);
}
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/notice/feign/NoticeClientFallBack.java
New file
@@ -0,0 +1,17 @@
package cn.gistack.alerts.notice.feign;
import org.springframework.stereotype.Component;
/**
 * 告警通知远程调用异常处理
 * @author zhongrj
 * @date 2023-06-03
 */
@Component
public class NoticeClientFallBack implements NoticeClient {
    @Override
    public Object createAlarmNoticeTaskJobHandler(String name, String content, String type) {
        return null;
    }
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskClient.java
@@ -1,7 +1,6 @@
package cn.gistack.sm.patrol.feign;
import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClientFallback;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/feign/NoticeFeignClient.java
New file
@@ -0,0 +1,35 @@
package cn.gistack.alerts.notice.feign;
import cn.gistack.alerts.notice.strategy.NoticeStrategyContext;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
/**
 * 告警 feign 调用
 * @author zhongrj
 * @date 2023-06-03
 */
@AllArgsConstructor
@RestController
@NonDS
@ApiIgnore
public class NoticeFeignClient implements NoticeClient{
    private final NoticeStrategyContext applicationContext;
    /**
     * 发送告警通知
     * @param name
     * @param content
     * @param type
     * @return
     */
    @GetMapping(CREATE_ALARM_NOTICE_TASK_JOB_HANDLER)
    @Override
    public Object createAlarmNoticeTaskJobHandler(String name, String content, String type) {
        return applicationContext.doSomethingByStrategy(name, content, type);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-xxljob/pom.xml
@@ -48,6 +48,11 @@
            <artifactId>skjcmanager-sm-api</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>cn.gistack</groupId>
            <artifactId>skjcmanager-alerts-api</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
    </dependencies>
    <build>
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/AlarmXxlJob.java
New file
@@ -0,0 +1,326 @@
package cn.gistack.job.executor.jobhandler;
import cn.gistack.alerts.notice.feign.NoticeClient;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
 * 告警定时任务执行器
 * @author zhongrj
 * @date 2023-06-03
 */
@Component
public class AlarmXxlJob {
    @Autowired
    private NoticeClient noticeClient;
    /**
     * 策略1: 水位信息接收不到-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterInfoNotHandle")
    public ReturnT<String> waterInfoNotHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("水位信息接收不到","","waterInfoNotHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略2: 水位数据异常-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterDataExcHandle")
    public ReturnT<String> waterDataExcHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("水位数据异常","","waterDataExcHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略3: 水位超低于死水位-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterLessDeadHandle")
    public ReturnT<String> waterLessDeadHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("水位超低于死水位","","waterLessDeadHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略4: 水位高于死水位,低于旱警水位-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterMoreDeadLessHJHandle")
    public ReturnT<String> waterMoreDeadLessHJHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("水位高于死水位,低于旱警水位","","waterMoreDeadLessHJHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略5: 水位接近汛限告警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterComeOverHandle")
    public ReturnT<String> waterComeOverHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("水位接近汛限告警","","waterComeOverHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略6: 水位初次超汛限告警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterFirstOverHandle")
    public ReturnT<String> waterFirstOverHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("水位初次超汛限告警","","waterFirstOverHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略7: 水位小幅超汛限告警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterSmallScaleOverHandle")
    public ReturnT<String> waterSmallScaleOverHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("水位小幅超汛限告警","","waterSmallScaleOverHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略8: 水位大幅超汛限告警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterBigScaleOverHandle")
    public ReturnT<String> waterBigScaleOverHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("水位大幅超汛限告警","","waterBigScaleOverHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略9: 水位接近设计洪水位告警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterComeDesignHandle")
    public ReturnT<String> waterComeDesignHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("水位接近设计洪水位告警","","waterComeDesignHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略10: 水位超设计洪水位告警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterMoreDesignHandle")
    public ReturnT<String> waterMoreDesignHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("水位超设计洪水位告警","","waterMoreDesignHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略11: 水位超校核洪水位告警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterMoreCheckHandle")
    public ReturnT<String> waterMoreCheckHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("水位超校核洪水位告警","","waterMoreCheckHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略12: 近1h水位陡升-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterComeOneHourUpHandle")
    public ReturnT<String> waterComeOneHourUpHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("近1h水位陡升","","waterComeOneHourUpHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略13: 近1h水位陡降-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("waterComeOneHourDownHandle")
    public ReturnT<String> waterComeOneHourDownHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("近1h水位陡降","","waterComeOneHourDownHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略14: 暴雨降雨预警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("rainstormHandle")
    public ReturnT<String> rainstormHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("暴雨降雨预警","","rainstormHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略15: 已降大雨告警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("alreadyHeavyRainHandle")
    public ReturnT<String> alreadyHeavyRainHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("已降大雨告警","","alreadyHeavyRainHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略16: 已降暴雨告警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("alreadyRainstormHandle")
    public ReturnT<String> alreadyRainstormHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("已降暴雨告警","","alreadyRainstormHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略17: 2小时降雨告警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("twoHourRainHandle")
    public ReturnT<String> twoHourRainHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("2小时降雨告警","","twoHourRainHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
    /**
     * 策略18: 6小时降雨告警-定时任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("sixHourRainHandle")
    public ReturnT<String> sixHourRainHandle(String param){
        XxlJobLogger.log("开始执行任务...");
        // 创建外呼任务
        Object result = noticeClient.createAlarmNoticeTaskJobHandler("6小时降雨告警","","sixHourRainHandle");
        XxlJobLogger.log("任务响应结果:" + result);
        XxlJobLogger.log("结束自动创建任务...");
        // 返回
        return ReturnT.SUCCESS;
    }
}