Переглянути джерело

场景计算统计定时任务

dsx 2 роки тому
батько
коміт
cb58c62eda

+ 21 - 0
src/main/java/com/fdkankan/job/controller/SceneBuildProcessLogController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.job.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 场景计算流程状态表 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-02-06
+ */
+@RestController
+@RequestMapping("/job/sceneBuildProcessLog")
+public class SceneBuildProcessLogController {
+
+}
+

+ 81 - 0
src/main/java/com/fdkankan/job/entity/SceneBuildProcessLog.java

@@ -0,0 +1,81 @@
+package com.fdkankan.job.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 场景计算流程状态表
+ * </p>
+ *
+ * @author 
+ * @since 2023-02-06
+ */
+@Getter
+@Setter
+@TableName("t_scene_build_process_log")
+public class SceneBuildProcessLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 计算流程(pre-前置处理,call-计算,post-后置处)	失败原因  PRE_ERROR("pre","场景计算资源准备错误"),CALL_ERROR("call","算法计算错误"),POST_ERROR("post","场景计算结果处理错误"),	  NOT_KNOW_ERROR("not_know","未知原因错误")	
+     */
+    @TableField("process")
+    private String process;
+
+    /**
+     * mq消息队列名称
+     */
+    @TableField("queue_name")
+    private String queueName;
+
+    /**
+     * 处理状态(0-处理中,1-成功,-1-失败)
+     */
+    @TableField("state")
+    private Integer state;
+
+    /**
+     * 失败原因
+     */
+    @TableField("reason")
+    private String reason;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * A-有效,I-无效
+     */
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
+    private String recStatus;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/job/generate/AutoGenerate.java

@@ -17,7 +17,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"job", getTables(new String[]{
-                "t_scene_edit_info"
+                "t_scene_build_process_log"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 51 - 50
src/main/java/com/fdkankan/job/job/SceneCallCountHandler.java

@@ -2,17 +2,26 @@ package com.fdkankan.job.job;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.img.ImgUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.db.Db;
 import cn.hutool.db.Entity;
 import cn.hutool.db.ds.DSFactory;
 import com.alibaba.druid.pool.DruidDataSource;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.constant.CommonOperStatus;
 import com.fdkankan.common.util.DateExtUtil;
+import com.fdkankan.job.entity.SceneBuildProcessLog;
 import com.fdkankan.job.entity.ScenePlus;
 import com.fdkankan.job.entity.ScenePro;
 import com.fdkankan.job.service.IRepairUpXmlUrlService;
+import com.fdkankan.job.service.ISceneBuildProcessLogService;
+import com.fdkankan.job.service.IScenePlusService;
+import com.fdkankan.job.service.ISceneProService;
+import com.fdkankan.model.constants.SceneBuildProcessType;
 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.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import javax.sql.DataSource;
@@ -33,21 +42,23 @@ import java.util.List;
 @Component
 public class SceneCallCountHandler {
 
+    @Value("${env}")
+    private String env;
+
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Autowired
+    private ISceneProService sceneProService;
+    @Autowired
+    private ISceneBuildProcessLogService sceneBuildProcessLogService;
+
     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";
+            "v4场景总数: %d, 成功: %d, 失败: %d, 计算中: %d\n\n" +
+            "%s" +
+            "**错误日志**: %s";
 
     @XxlJob("sceneCallCountHandler")
     private void repairSceneUpXmlUrlOfVideos() throws SQLException {
@@ -59,59 +70,49 @@ public class SceneCallCountHandler {
         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, dateStart, dateEnd);
+        List<ScenePlus> scenePluses = scenePlusService.list(new LambdaQueryWrapper<ScenePlus>().ge(ScenePlus::getCreateTime, dateStart).le(ScenePlus::getCreateTime, 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, 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();
+        String v3Msg = "";
+        if(env.equals("eur")){
+            int v3Count = 0; int v3success = 0; int v3Fail = 0; int v3Waiting = 0;
+            List<ScenePro> scenePros = sceneProService.list(new LambdaQueryWrapper<ScenePro>().ge(ScenePro::getCreateTime, dateStart).le(ScenePro::getCreateTime, 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();
+            }
+            v3Msg = String.format("v3场景总数: %d, 成功: %d, 失败: %d, 计算中: %d\n\n", v3Count, v3success, v3Fail, v3Waiting);
+        }
+
+        //查询错误日志
+        StringBuilder errorMsg = new StringBuilder();
+        List<SceneBuildProcessLog> logList = sceneBuildProcessLogService.list(
+                new LambdaQueryWrapper<SceneBuildProcessLog>().eq(SceneBuildProcessLog::getState, CommonOperStatus.FAILD.code()));
+        if(CollUtil.isNotEmpty(logList)){
+            logList.stream().forEach(item->{
+                errorMsg.append("\n\n").append(item.getNum()).append(":").append(SceneBuildProcessType.get(item.getProcess()).message()).append("出错\n\n");
+            });
+        }else{
+            errorMsg.append("无");
         }
 
-//        //国际环境
-//        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, 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, 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
-        );
+                v4Count, v4success, v4Fail, v4Waiting,
+                v3Msg,
+                errorMsg);
 
         XxlJobHelper.log(ddMsg);
         XxlJobHelper.log("sceneCallCountHandler end.....");

+ 18 - 0
src/main/java/com/fdkankan/job/mapper/ISceneBuildProcessLogMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.job.mapper;
+
+import com.fdkankan.job.entity.SceneBuildProcessLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 场景计算流程状态表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-02-06
+ */
+@Mapper
+public interface ISceneBuildProcessLogMapper extends BaseMapper<SceneBuildProcessLog> {
+
+}

+ 16 - 0
src/main/java/com/fdkankan/job/service/ISceneBuildProcessLogService.java

@@ -0,0 +1,16 @@
+package com.fdkankan.job.service;
+
+import com.fdkankan.job.entity.SceneBuildProcessLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 场景计算流程状态表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-02-06
+ */
+public interface ISceneBuildProcessLogService extends IService<SceneBuildProcessLog> {
+
+}

+ 20 - 0
src/main/java/com/fdkankan/job/service/impl/SceneBuildProcessLogServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fdkankan.job.service.impl;
+
+import com.fdkankan.job.entity.SceneBuildProcessLog;
+import com.fdkankan.job.mapper.ISceneBuildProcessLogMapper;
+import com.fdkankan.job.service.ISceneBuildProcessLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 场景计算流程状态表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-02-06
+ */
+@Service
+public class SceneBuildProcessLogServiceImpl extends ServiceImpl<ISceneBuildProcessLogMapper, SceneBuildProcessLog> implements ISceneBuildProcessLogService {
+
+}

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

@@ -1,14 +0,0 @@
-[group_gn]
-url = jdbc:mysql://120.24.144.164:3306/4dkankan_v4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
-username = root
-password = 4Dage@4Dage#@168
-
-[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%

+ 5 - 0
src/main/resources/mapper/job/SceneBuildProcessLogMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.job.mapper.ISceneBuildProcessLogMapper">
+
+</mapper>