2
13693261870
2022-09-16 653761a31dfeb50dd3d007e892d69c90bf0cdafc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package com.landtool.lanbase.common.scheduletask;
 
import cn.hutool.core.collection.CollectionUtil;
import com.landtool.lanbase.common.utils.HttpUtils;
import com.landtool.lanbase.modules.res.entity.Res_ExtMapUrl;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.entity.Res_ProblemFeedback;
import com.landtool.lanbase.modules.res.service.impl.ResMainInfoServiceImpl;
import com.landtool.lanbase.modules.res.service.impl.ResProblemFeedbackServiceImpl;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.transaction.Transaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import com.landtool.lanbase.modules.res.controller.ResMainInfoController;
import com.landtool.lanbase.modules.res.service.impl.ResExtMapUrlServiceImpl;
 
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
 
@Component
@Configuration
public class ScheduelTask {
    
    public Logger log=LoggerFactory.getLogger(ScheduelTask.class);
    
    @Autowired
    ResMainInfoServiceImpl resMainInfoService;
    @Autowired 
    ResExtMapUrlServiceImpl resExtMapUrlService;
    @Autowired
    private ResProblemFeedbackServiceImpl resProblemFeedbackService;
    /*
     * 定时检验正常服务  异常服务更新
     * add by zsx
     * 每天凌晨6点
     *  查询所有资源原始地址 http请求地址
     *     1.请求正常  如果资源之前状态为异常则更新正常
     *     2.请求异常  若存在异常记录 则更新记录时间  否则插入一条新的记录  (对应资源状态为正常则更新为异常)
//     */
    @Scheduled(cron = "0 0 6 * * ?")
    public void checkServiceUrl() {
         //获取所有的服务资源
        List<Res_ExtMapUrl> list = resExtMapUrlService.checkAllUrls();
        log.info("服务监控开始");
        for (Res_ExtMapUrl res_extMapUrl : list) {
            int status=0;  //插入记录数据 serverStatus 0 正常  1异常
            boolean flag=false;
            Integer resourceid = res_extMapUrl.getResourceid();
            Integer serverResource = res_extMapUrl.getServerResource();
            try {
                String serverurl = res_extMapUrl.getServerurl();
                if(StringUtils.isNotBlank(serverurl)){
                    String s = HttpUtils.get(serverurl);
                    //正常 如果存在之前异常数据则更新状态为正常
                    if(1== serverResource){
                        updateServerStatus(resourceid,status);
                    }
                }
            } catch (Exception e) {
                status=1;
                //异常抛出认为是服务不能正常使用 之后异常不重复记录(更新校验时间),
                List<Res_ProblemFeedback> problemFeedbacks = resProblemFeedbackService.selectByResourceid(resourceid);
                if(!CollectionUtil.isNotEmpty(problemFeedbacks)){
                    flag=true;
                }
                //首次记录异常记录
                InsertProblem(resourceid,status,flag);
                //如果存在之前正常数据则更新状态为异常
                if(0== serverResource){
                    updateServerStatus(resourceid,status);
                }
            }
        }
        log.info("服务监控结束");
 
    }
 
    //更新异常记录状态
    private void updateServerStatus(Integer resourceid, Integer status) {
        Res_MainInfo mainInfo = new Res_MainInfo();
        mainInfo.setResourceid(resourceid);
        mainInfo.setResourcestatus(status); //状态更新回来
        resMainInfoService.updateByPrimaryKeySelective(mainInfo);
    }
    //插入问题消息
    private void InsertProblem(Integer resourceid, Integer status,Boolean flag) {
        Res_ProblemFeedback model = new Res_ProblemFeedback();
        java.sql.Timestamp time = new java.sql.Timestamp(new Date().getTime());
        model.setResourceid(resourceid);
        model.setAddtime(time);
        if (flag){
            model.setCreateuserid(0); //管理员操作
            model.setFeedbacktype("系统");
            model.setServerstatus(status);
            model.setFeedbackstatus("服务问题");
            model.setRemark("资源打不开");
            resProblemFeedbackService.insertSelective(model);
        }else {
            resProblemFeedbackService.updateByResourceId(model);
        }
    }
 
    public static void main(String[] args)  {
        try {
            HttpUtils.get("http://71.3.251.104:8066/arcgis/rest/services/6257/MapServer");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
}