package com.zy.asrs.task;
|
|
import cn.hutool.core.date.DateUtil;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.zy.asrs.entity.AgvWrkMast;
|
import com.zy.asrs.mapper.AgvBasMapper;
|
import com.zy.asrs.service.AgvWrkMastService;
|
import com.zy.asrs.task.core.WrkMastConfig;
|
import com.zy.common.utils.HttpHandler;
|
import com.zy.system.entity.Config;
|
import com.zy.system.service.ConfigService;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.io.IOException;
|
import java.util.*;
|
|
/**
|
* Created by vincent on 2020/7/7
|
*/
|
@Component
|
public class AgvWrkMastWarnScheduler {
|
|
private static final Logger log = LoggerFactory.getLogger(AgvWrkMastWarnScheduler.class);
|
|
|
@Autowired
|
private AgvWrkMastService agvWrkMastService;
|
|
|
@Autowired
|
private ConfigService configService;
|
|
@Autowired
|
private AgvBasMapper agvBasMapper;
|
|
|
@Scheduled(fixedDelay = 600000)
|
public void report() {
|
Date date = new Date();
|
Map<Long, Integer> timeConfig = new HashMap<>();
|
Config url = configService.selectOne(new EntityWrapper<Config>().eq("code", "WRKMAST_WARN_REPORT_URL"));
|
Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "WRKMAST_WARN_CONFIG"));
|
if (url != null && url.getValue() != null && config != null && config.getValue() != null) {
|
List<WrkMastConfig> wrkMastConfigs = JSONArray.parseArray(config.getValue(), WrkMastConfig.class);
|
EntityWrapper<AgvWrkMast> wrapper = new EntityWrapper<>();
|
for (WrkMastConfig wrkMastConfig : wrkMastConfigs) {
|
wrapper.eq("wrk_sts", wrkMastConfig.getSts()).le("modi_time", DateUtil.offsetHour(date, -wrkMastConfig.getHours()));
|
if (!wrkMastConfigs.get(wrkMastConfigs.size() - 1).equals(wrkMastConfig)) {
|
wrapper.orNew();
|
}
|
timeConfig.put(wrkMastConfig.getSts(), wrkMastConfig.getReport());
|
}
|
List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(wrapper);
|
StringBuffer buffer;
|
for (AgvWrkMast agvWrkMast : agvWrkMasts) {
|
Date errorTime = agvWrkMast.getErrorTime();
|
if (errorTime == null) {
|
errorTime = agvWrkMast.getModiTime();
|
}
|
if (DateUtil.offsetMinute(date, -timeConfig.get(agvWrkMast.getWrkSts())).after(errorTime)) {
|
buffer = new StringBuffer();
|
buffer.append("[" + agvWrkMast.getWrkNo() + "]工作号,状态:" + agvWrkMast.getWrkSts$() + "\n");
|
buffer.append("最后一次更新时间:" + DateUtil.formatDateTime(agvWrkMast.getModiTime()) + "\n");
|
HashMap<String, Object> param = new HashMap<>();
|
HashMap<String, Object> data = new HashMap<>();
|
data.put("content", buffer.toString());
|
param.put("msgtype", "text");
|
param.put("text", data);
|
|
log.info("发送报警信息:{}", JSON.toJSONString(param));
|
String response = null;
|
try {
|
response = new HttpHandler.Builder().setUri(url.getValue()).setJson(JSON.toJSONString(param)).setHttps(true).build().doPost();
|
} catch (IOException e) {
|
//continue;
|
}
|
JSONObject jsonObject = JSON.parseObject(response);
|
if (jsonObject != null && jsonObject.get("errmsg").equals("ok")) {
|
agvWrkMast.setErrorTime(date);
|
agvWrkMastService.updateById(agvWrkMast);
|
} else {
|
agvWrkMast.setErrorTime(date);
|
agvWrkMastService.updateById(agvWrkMast);
|
log.error("发送失败,错误信息:{}", jsonObject == null ? "空" : jsonObject.get("errmsg"));
|
}
|
}
|
}
|
}
|
}
|
|
|
public static void main(String[] args) {
|
List<WrkMastConfig> list = new ArrayList<>();
|
WrkMastConfig wrkMastConfig = new WrkMastConfig();
|
wrkMastConfig.setSts(205L);
|
wrkMastConfig.setHours(480);
|
wrkMastConfig.setReport(120);
|
list.add(wrkMastConfig);
|
wrkMastConfig = new WrkMastConfig();
|
wrkMastConfig.setSts(204L);
|
wrkMastConfig.setHours(24);
|
wrkMastConfig.setReport(60);
|
list.add(wrkMastConfig);
|
wrkMastConfig = new WrkMastConfig();
|
wrkMastConfig.setSts(203L);
|
wrkMastConfig.setHours(24);
|
wrkMastConfig.setReport(60);
|
list.add(wrkMastConfig);
|
wrkMastConfig = new WrkMastConfig();
|
wrkMastConfig.setSts(202L);
|
wrkMastConfig.setHours(24);
|
wrkMastConfig.setReport(60);
|
list.add(wrkMastConfig);
|
System.out.println(JSON.toJSONString(list));
|
}
|
|
}
|