From 258d6d78821ac724a88296f407df615e22586d14 Mon Sep 17 00:00:00 2001 From: "lisai17@sina.com" Date: Mon, 16 Nov 2020 11:24:16 +0800 Subject: [PATCH] . --- .../ssjygl/jobs/CheckExceptionDataJob.java | 43 +++++++++++++++---- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/CheckExceptionDataJob.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/CheckExceptionDataJob.java index b7c7763..dc79d72 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/CheckExceptionDataJob.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/CheckExceptionDataJob.java @@ -1,30 +1,57 @@ package com.cowr.service.ssjygl.jobs; import com.cowr.service.ssjygl.main.Config; +import com.cowr.service.ssjygl.main.SvrCacheData; import com.jfinal.kit.HttpKit; import com.jfinal.kit.StrKit; import com.jfinal.log.Log; import com.jfinal.plugin.activerecord.Db; +import com.jfinal.plugin.activerecord.Record; import org.quartz.Job; import org.quartz.JobExecutionContext; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; public class CheckExceptionDataJob implements Job { private static Log log = Log.getLog(CheckExceptionDataJob.class); public void execute() { - int cnt = Db.queryInt("select count(t.sn) cnt from order_temp t\n" + - " left join transport p on t.sn = p.order_sn\n" + - " where t.state = 5 \n" + - " and p.id is null"); - int sync = Db.queryInt("select count(t.id) cnt from sync_task t\n" + - " where t.state = 0"); - String content = ""; + String content = ""; + List onlineids = new ArrayList<>(); + long nowst = System.currentTimeMillis(); + + for (Map.Entry entry : SvrCacheData.SUP_HEARTBEAT.entrySet()) { + Record c = entry.getValue(); + long st = c.getLong("tm"); + + // 五分钟以内的才进行判断,超过5分钟的,就认为是离线了 + // 离线的砂站会产生正常的未同步数据 + if (nowst - st < 5 * 60 * 1000) { + onlineids.add(entry.getKey().toString()); + } + } + + int cnt = 0; + + if (!onlineids.isEmpty()) { + cnt = Db.queryInt("select count(t.sn) cnt from order_temp t\n" + + " left join transport p on t.sn = p.order_sn\n" + + " where t.state = 5 \n" + + " and t.supermarket_id in(" + StrKit.join(onlineids, ",") + ") \n" + + " and p.id is null"); + } else { + content += "没有找到在线砂站信息。"; + log.error("没有找到在线砂站信息。"); + } + + int sync = Db.queryInt("select count(t.id) cnt from sync_task t where t.state = 0"); if (cnt > 0) { - content += "浠水砂石系统有 " + cnt + " 条异常数据。"; + content += "浠水砂石系统有 " + cnt + " 条订单异常数据。"; } if (sync > 0) {