From e609c7adf42ef6eea053ff33a8e59abaf0767df6 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期五, 17 一月 2025 08:54:52 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/asrs/task/AgvWarnScheduler.java |  119 +++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 78 insertions(+), 41 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..5a653bc 100644
--- a/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java
@@ -6,7 +6,11 @@
 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 +42,89 @@
     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());
+            Integer warnTime = getWarnTime(agvWarn.getTimes(), first.getValue(), second.getValue(), third.getValue());
             DateTime begin = DateUtil.parse(agvWarn.getBeginTime(), "yyyy-MM-dd HH:mm:ss");
-            if (DateUtil.offsetMinute(begin, warnTime).after(new Date())) {
+            if (DateUtil.offsetMinute(new Date(), -warnTime).after(begin)) {
                 buffer = new StringBuffer();
-                buffer.append(agvWarn.getRobotCode() + "鍙稟GV灏忚溅鎶ヨ:");
-                buffer.append(agvWarn.getWarnContent());
+                buffer.append(processRegion(agvs, agvWarn.getRobotCode()) + "[" + 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(new Date()) + "\n");
+                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);
+                //log.info("鍙戦�佹姤璀︿俊鎭細{}", JSON.toJSONString(param));
+                sendData.put(agvWarn.getRobotCode() + agvWarn.getWarnContent(), param);
+            }
+            for (HashMap.Entry<String, Object> entry : sendData.entrySet()) {
                 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);
+                    agvWarnService.updateById(agvWarn);
+                    //鍙戦�佹垚鍔�
+                    return;
+                } else {
+                    log.error("鍙戦�佸け璐ワ紝閿欒淇℃伅锛歿}", jsonObject.get("errmsg"));
                 }
             }
+
         }
     }
 
@@ -93,32 +133,29 @@
      * @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)) {
+                return agv.getRegion();
+            }
+        }
+        return "鏈煡";
+    }
 
 }

--
Gitblit v1.9.1