|
@@ -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);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|