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 timeConfig = new HashMap<>(); Config url = configService.selectOne(new EntityWrapper().eq("code", "WRKMAST_WARN_REPORT_URL")); Config config = configService.selectOne(new EntityWrapper().eq("code", "WRKMAST_WARN_CONFIG")); if (url != null && url.getValue() != null && config != null && config.getValue() != null) { List wrkMastConfigs = JSONArray.parseArray(config.getValue(), WrkMastConfig.class); EntityWrapper 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 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 param = new HashMap<>(); HashMap 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 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)); } }