From 9ed4cb53a2c643b879f993537f5a2793fba56ba1 Mon Sep 17 00:00:00 2001 From: ZY <zc857179121@qq.com> Date: 星期一, 31 三月 2025 07:57:13 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/asrs/task/AgvWarnScheduler.java | 133 ++++++++++++++++++++++++++++++-------------- 1 files changed, 90 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java b/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java index e55d588..bca34de 100644 --- a/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java +++ b/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java @@ -1,12 +1,15 @@ package com.zy.asrs.task; -import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; +import com.zy.asrs.entity.Agv; import com.zy.asrs.entity.AgvWarn; +import com.zy.asrs.entity.AgvWarnLog; +import com.zy.asrs.mapper.AgvBasMapper; +import com.zy.asrs.service.AgvWarnLogService; import com.zy.asrs.service.AgvWarnService; import com.zy.asrs.task.handler.AgvWarnHandler; import com.zy.common.utils.HttpHandler; @@ -38,53 +41,97 @@ private AgvWarnService agvWarnService; @Autowired + private AgvWarnLogService agvWarnLogService; + + @Autowired private ConfigService configService; + @Autowired + private AgvBasMapper agvBasMapper; + + + /** - * 瓒呰繃 + * 鍒犻櫎鍛婅鏃ュ織 */ - @Scheduled(fixedDelay = 30000) + @Scheduled(cron = "0 0 1 * * ? ") + private void delWarnLog() { + String format = DateUtil.format(DateUtil.offsetMonth(new Date(), -1), "yyyy-MM-dd HH:mm:ss"); + List<AgvWarnLog> agvWarnList = agvWarnLogService.selectList(new EntityWrapper<AgvWarnLog>().le("modi_time", format)); + for (AgvWarnLog agvWarn : agvWarnList) { + agvWarnLogService.deleteById(agvWarn); + } + } + + /** + * 瓒呰繃涓�鍒嗛挓娌℃洿鏂扮殑锛屽垹闄� + */ + @Scheduled(fixedDelay = 10000) private void del() { - String format = DateUtil.format(DateUtil.offsetMinute(new Date(), -3), "yyyy-MM-dd HH:mm:ss"); - List<AgvWarn> agvWarnList = agvWarnService.selectList(new EntityWrapper<AgvWarn>().ge("modi_time", format)); + String format = DateUtil.format(DateUtil.offsetMinute(new Date(), -1), "yyyy-MM-dd HH:mm:ss"); + List<AgvWarn> agvWarnList = agvWarnService.selectList(new EntityWrapper<AgvWarn>().le("modi_time", format)); for (AgvWarn agvWarn : agvWarnList) { agvWarnHandler.start(agvWarn); } } - @Scheduled(fixedDelay = 10000) + @Scheduled(fixedDelay = 20000) private void report() { - List<Config> config = configService.selectList(new EntityWrapper<Config>().eq("code", "AGV_WARN_REPORT_URL")); + List<Agv> agvs = agvBasMapper.selectList(new EntityWrapper<Agv>()); + Config first = configService.selectOne(new EntityWrapper<Config>().eq("code", "AGV_WARN_RATE1")); + Config second = configService.selectOne(new EntityWrapper<Config>().eq("code", "AGV_WARN_RATE2")); + Config third = configService.selectOne(new EntityWrapper<Config>().eq("code", "AGV_WARN_RATE3")); + Config url = configService.selectOne(new EntityWrapper<Config>().eq("code", "AGV_WARN_REPORT_URL")); List<AgvWarn> agvWarnList = agvWarnService.selectList(new EntityWrapper<AgvWarn>()); StringBuffer buffer; + HashMap<String, Object> sendData = new HashMap<>(); for (AgvWarn agvWarn : agvWarnList) { - Integer warnTime = getWarnTime(agvWarn.getTimes()); - DateTime begin = DateUtil.parse(agvWarn.getBeginTime(), "yyyy-MM-dd HH:mm:ss"); - if (DateUtil.offsetMinute(begin, warnTime).after(new Date())) { + Integer warnTime = getWarnTime(agvWarn.getTimes(), first.getValue(), second.getValue(), third.getValue()); + Date begin = DateUtil.parse(agvWarn.getBeginTime(), "yyyy-MM-dd HH:mm:ss"); + if (DateUtil.offsetMinute(agvWarn.getAppeTime(), -3).after(begin)) { + begin = agvWarn.getAppeTime(); + } + if (DateUtil.offsetMinute(new Date(), -warnTime).after(begin)) { buffer = new StringBuffer(); - buffer.append(agvWarn.getRobotCode() + "鍙稟GV灏忚溅鎶ヨ:"); - buffer.append(agvWarn.getWarnContent()); + String s = processRegion(agvs, agvWarn.getRobotCode()); + if (s == null) { + continue; + } + buffer.append(s + "[" + agvWarn.getRobotCode() + "]鍙稟GV灏忚溅鎶ヨ浜哱n"); + buffer.append("鎶ヨ绫诲瀷锛�" + agvWarn.getWarnContent() + "\n"); + if (!Cools.isEmpty(agvWarn.getSourceLocNo())) { + buffer.append("浠�:[" + agvWarn.getSourceLocNo() + "]鍒癧" + agvWarn.getLocNo() + "]\n"); + } + //buffer.append("鎶ヨ寮�濮嬫椂闂�:" + agvWarn.getBeginTime() + "\n"); + buffer.append("鎶ヨ寮�濮嬫椂闂�:" + DateUtil.formatDateTime(begin) + "\n"); + buffer.append("褰撳墠鏃堕棿:" + DateUtil.formatDateTime(new Date())); + //int i = agvWarn.getTimes() + 1; + //buffer.append("绗琜" + i + "]娆℃姤璀�"); 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); + sendData.put(agvWarn.getRobotCode() + agvWarn.getWarnContent(), param); + } + for (HashMap.Entry<String, Object> entry : sendData.entrySet()) { + log.info("鍙戦�佹姤璀︿俊鎭細{}", JSON.toJSONString(entry.getValue())); String response = null; try { - response = new HttpHandler.Builder() - .setUri(config.get(0).getValue()) - .setJson(JSON.toJSONString(param)) - .setHttps(true) - .build() - .doPost(); + response = new HttpHandler.Builder().setUri(url.getValue()).setJson(JSON.toJSONString(entry.getValue())).setHttps(true).build().doPost(); } catch (IOException e) { throw new RuntimeException(e); } JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.get("errmsg").equals("ok")) { - return;//鍙戦�佹垚鍔� + agvWarn.setTimes(agvWarn.getTimes() + 1); + agvWarn.setModiTime(new Date()); + agvWarnService.updateById(agvWarn); + } else { + log.error("鍙戦�佸け璐ワ紝閿欒淇℃伅锛歿}", jsonObject.get("errmsg")); } } + } } @@ -93,32 +140,32 @@ * @param times * @return */ - private Integer getWarnTime(Integer times) { - try { - List<Config> config = configService.selectList(new EntityWrapper<Config>().eq("code", "AGV_WARN_RATE1")); - if (!Cools.isEmpty(config)) { - String value = config.get(0).getValue(); - if (Cools.isEmpty(value)) { - return 5; - } else { - String[] split = value.split(","); - if (split.length < times + 1) { - Config config2 = configService.selectOne(new EntityWrapper<Config>().eq("code", "AGV_WARN_RATE2")); - int t = 0; - for (String s : split) { - t = t + Integer.parseInt(s); - } - return t + Integer.parseInt(config2.getValue()); - } else { - return Integer.parseInt(split[times]); - } - } - } - return 5; - } catch (Exception e) { - return 5; + private Integer getWarnTime(Integer times, String first, String second, String thrid) { + switch (times) { + case 0: + return Integer.parseInt(first); + case 1: + return Integer.parseInt(first) + Integer.parseInt(second); + case 2: + return Integer.parseInt(first) + Integer.parseInt(second) + Integer.parseInt(thrid); + default: + return (times - 2) * Integer.parseInt(thrid) + Integer.parseInt(first) + Integer.parseInt(second) + Integer.parseInt(thrid); } } + private String processRegion(List<Agv> agvs, String agvNo) { + if (agvNo == null) { + return "鏈煡灏忚溅"; + } + for (Agv agv : agvs) { + if (agv.getAgvNo() != null && agv.getAgvNo().equals(agvNo)) { + if (!Cools.isEmpty(agv.getFlag()) && agv.getFlag() == 1) { + return null; + } + return agv.getRegion(); + } + } + return "鏈煡"; + } } -- Gitblit v1.9.1