Prechádzať zdrojové kódy

场景计算统计定时任务

dsx 2 rokov pred
rodič
commit
13276705fe

+ 130 - 0
src/main/java/com/fdkankan/job/job/SceneCallCountHandler.java

@@ -0,0 +1,130 @@
+package com.fdkankan.job.job;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.db.Db;
+import cn.hutool.db.Entity;
+import cn.hutool.db.ds.DSFactory;
+import com.alibaba.druid.pool.DruidDataSource;
+import com.fdkankan.common.util.DateExtUtil;
+import com.fdkankan.job.entity.ScenePlus;
+import com.fdkankan.job.entity.ScenePro;
+import com.fdkankan.job.service.IRepairUpXmlUrlService;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.sql.DataSource;
+import java.sql.SQLException;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 此类中的任务用于做数据修复用,不需要定时任务执行,只需在调度中心手动执行一次即可
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/12/16
+ **/
+@Component
+public class SceneCallCountHandler {
+
+    public static final String DINGTALK_MSG_PATTERN =
+            "**日期**: %s\n\n" +
+            //国内
+            "**环境**: 国内\n\n" +
+            "pro场景总数: %d, 成功: %d, 失败: %d, 计算中: %d\n\n" +
+            "plus场景总数: %d, 成功: %d, 失败: %d, 计算中: %d\n\n" +
+            "**错误日志**: 无\n\n"+
+            //国际
+            "**环境**: 国际\n\n" +
+            "场景总数: %d, 成功: %d, 失败: %d, 计算中: %d\n\n" +
+            "**错误日志**: 无\n\n" +
+            //日本
+            "**环境**: 日本\n\n" +
+            "场景总数: %d, 成功: %d, 失败: %d, 计算中: %d\n\n" +
+            "**错误日志**: 无\n\n";
+
+    @XxlJob("sceneCallCountHandler")
+    private void repairSceneUpXmlUrlOfVideos() throws SQLException {
+        XxlJobHelper.log("sceneCallCountHandler start.....");
+
+        Date time = Calendar.getInstance().getTime();
+        time = DateExtUtil.offsetDay(time, -1);
+        Date dateStart = DateExtUtil.beginOfDay(time);
+        Date dateEnd = DateExtUtil.endOfDay(time);
+
+        String sql = "select * from t_scene_plus t where t.create_time > ? and t.create_time < ?";
+        String proSql = "select * from t_scene_pro t where t.create_time > ? and t.create_time < ?";
+
+        //国内正式环境
+        DataSource db1 = DSFactory.get("group_gn");
+        //v4场景
+        int v4Count = 0; int v4success = 0; int v4Fail = 0; int v4Waiting = 0;
+        List<ScenePlus> scenePluses = Db.use(db1).query(sql, ScenePlus.class, "A", dateStart, dateEnd);
+        if(CollUtil.isNotEmpty(scenePluses)){
+            v4Count = scenePluses.size();
+            v4success = (int) scenePluses.stream().filter(plus -> plus.getSceneStatus() == 1 || plus.getSceneStatus() == -2).count();
+            v4Fail = (int)scenePluses.stream().filter(plus -> plus.getSceneStatus() == -1).count();
+            v4Waiting = (int)scenePluses.stream().filter(plus -> plus.getSceneStatus() == 0).count();
+        }
+        //v3场景
+        int v3Count = 0; int v3success = 0; int v3Fail = 0; int v3Waiting = 0;
+        List<ScenePro> scenePros = Db.use(db1).query(sql, ScenePro.class, "A", dateStart, dateEnd);
+        if(CollUtil.isNotEmpty(scenePros)){
+            v3Count = scenePros.size();
+            v3success = (int) scenePros.stream().filter(plus -> plus.getStatus() == 1 || plus.getStatus() == -2).count();
+            v3Fail = (int)scenePros.stream().filter(plus -> plus.getStatus() == -1).count();
+            v3Waiting = (int)scenePros.stream().filter(plus -> plus.getStatus() == 0).count();
+        }
+
+        //国际环境
+        DataSource dbEur = DSFactory.get("group_gj");
+        //v4场景
+        int v4CountEur = 0; int v4successEur; int v4FailEur = 0; int v4WaitingEur = 0;
+        List<ScenePlus> scenePluses4Eur = Db.use(dbEur).query(sql, ScenePlus.class, "A", dateStart, dateEnd);
+        if(CollUtil.isNotEmpty(scenePluses4Eur)){
+            v4CountEur = scenePluses4Eur.size();
+            v4successEur = (int) scenePluses4Eur.stream().filter(plus -> plus.getSceneStatus() == 1 || plus.getSceneStatus() == -2).count();
+            v4FailEur = (int)scenePluses4Eur.stream().filter(plus -> plus.getSceneStatus() == -1).count();
+            v4WaitingEur = (int)scenePluses4Eur.stream().filter(plus -> plus.getSceneStatus() == 0).count();
+        }
+
+        //日本环境
+        DataSource dbJp = DSFactory.get("group_jp");
+        //v4场景
+        int v4CountJp = 0; int v4successJp = 0; int v4FailJp = 0; int v4WaitingJp = 0;
+        List<ScenePro> sceneProsJp = Db.use(dbJp).query(proSql, ScenePro.class, "A", dateStart, dateEnd);
+        if(CollUtil.isNotEmpty(sceneProsJp)){
+            v4CountJp = sceneProsJp.size();
+            v4successJp = (int) sceneProsJp.stream().filter(plus -> plus.getStatus() == 1 || plus.getStatus() == -2).count();
+            v4FailJp = (int)sceneProsJp.stream().filter(plus -> plus.getStatus() == -1).count();
+            v4WaitingJp = (int)sceneProsJp.stream().filter(plus -> plus.getStatus() == 0).count();
+        }
+
+        String ddMsg = String.format(DINGTALK_MSG_PATTERN, DateExtUtil.format(time, DateExtUtil.dateStyle4),
+                v3Count, v3success, v3Fail, v3Waiting,
+                v4Count, v4success, v4Fail, v4Waiting,
+                v4CountJp, v4successJp, v4FailJp, v4WaitingJp);
+
+        XxlJobHelper.log(ddMsg);
+        XxlJobHelper.log("sceneCallCountHandler end.....");
+    }
+
+    public static void main(String[] args) throws SQLException {
+//        DataSource group_db1 = DSFactory.get("group_db1");
+        DruidDataSource dataSource = new DruidDataSource();
+        dataSource.setUrl("jdbc:mysql://3.120.132.91:13306/4dkankan_v4");
+        dataSource.setUsername("root");
+        dataSource.setPassword("JK20220120%JIK");
+
+        String sql = "select * from t_scene_plus t where t.rec_status = ? and t.create_time > DATE(?) and t.create_time < DATE(?)";//
+        List<ScenePlus> scenePluses = Db.use(dataSource).query(sql, ScenePlus.class, "A", "2023-01-13 00:00:00", "2023-01-16 00:00:00");
+
+        System.out.println(123);
+    }
+
+
+}

+ 14 - 0
src/main/resources/db.setting

@@ -0,0 +1,14 @@
+[group_gn]
+url = jdbc:mysql://rm-wz90w10465iiwwv098o.mysql.rds.aliyuncs.com:3306/4dkankan_v4_prod
+username = root
+password = D2719bd0cae1a005
+
+[group_gj]
+url = jdbc:mysql://3.120.132.91:13306/4dkankan_v4
+username = root
+password = JK20220120%JIK
+
+[group_jp]
+url = jdbc:mysql://8.211.153.189:3306/4dkankan_v2
+username = root
+password = Geosign@20211115%