dengsixing 4 月之前
父節點
當前提交
da390c9a28

+ 21 - 0
src/main/java/com/fdkankan/job/controller/SceneBuildStatusController.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 2025-04-02
+ */
+@RestController
+@RequestMapping("/job/sceneBuildStatus")
+public class SceneBuildStatusController {
+
+}
+

+ 3 - 0
src/main/java/com/fdkankan/job/dto/SceneBean.java

@@ -8,4 +8,7 @@ public class SceneBean {
     private String num;
 
     private String dataSource;
+
+    private String version;
+
 }

+ 49 - 0
src/main/java/com/fdkankan/job/entity/SceneBuildStatus.java

@@ -0,0 +1,49 @@
+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 2025-04-02
+ */
+@Getter
+@Setter
+@TableName("t_scene_build_status")
+public class SceneBuildStatus implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("num")
+    private String num;
+
+    @TableField("biz_type")
+    private String bizType;
+
+    @TableField("last_req_build_time")
+    private Date lastReqBuildTime;
+
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @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_asyn_oper_log"
+                "t_scene_build_status"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 33 - 9
src/main/java/com/fdkankan/job/job/SceneCallCountHandler.java

@@ -1,16 +1,19 @@
 package com.fdkankan.job.job;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.img.ImgUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.common.constant.CommonOperStatus;
+import com.fdkankan.common.constant.CommonSuccessStatus;
 import com.fdkankan.common.constant.SceneSource;
 import com.fdkankan.common.util.DateExtUtil;
 import com.fdkankan.dingtalk.DingTalkSendUtils;
-import com.fdkankan.job.entity.SceneBuildProcessLog;
-import com.fdkankan.job.entity.ScenePlus;
-import com.fdkankan.job.entity.ScenePro;
+import com.fdkankan.job.dto.SceneBean;
+import com.fdkankan.job.entity.*;
+import com.fdkankan.job.mapper.ISceneBuildStatusMapper;
+import com.fdkankan.job.mapper.IScenePlusMapper;
 import com.fdkankan.job.service.ISceneBuildProcessLogService;
 import com.fdkankan.job.service.IScenePlusService;
 import com.fdkankan.job.service.ISceneProService;
@@ -24,10 +27,7 @@ import org.springframework.stereotype.Component;
 
 import java.io.File;
 import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
@@ -54,13 +54,18 @@ public class SceneCallCountHandler {
     private ISceneBuildProcessLogService sceneBuildProcessLogService;
     @Autowired
     private DingTalkSendUtils dingTalkSendUtils;
+    @Autowired
+    private ISceneBuildStatusMapper sceneBuildStatusMapper;
+    @Autowired
+    private IScenePlusMapper scenePlusMapper;
 
     public static final String DINGTALK_MSG_PATTERN =
             "**日期**: %s\n\n" +
             "**环境**: %s\n\n" +
             "%s" +
             "%s" +
-            "**错误日志**: \n\n%s";
+            "**当日计算失败**: \n\n%s" +
+            "**现存异常场景**: \n\n%s";
 
     @XxlJob("sceneCallCountHandler")
     public void sceneCallCountHandler() throws Exception {
@@ -247,6 +252,23 @@ public class SceneCallCountHandler {
             errorMsg.append(v3ErrorMsg);
         }
 
+        StringBuilder abnormalMsg = new StringBuilder();
+        List<SceneBean> timeOutScenes = scenePlusMapper.selectTimeOutScene();
+        if(CollUtil.isNotEmpty(timeOutScenes)){
+            for (SceneBean sceneBean : timeOutScenes) {
+                abnormalMsg.append(sceneBean.getNum());
+                abnormalMsg.append(":计算超时\n\n");
+            }
+        }
+
+        List<SceneBean> failBeans = scenePlusMapper.selectTimeOutScene();
+        if(CollUtil.isNotEmpty(failBeans)){
+            for (SceneBean sceneBean : failBeans) {
+                abnormalMsg.append(sceneBean.getNum());
+                abnormalMsg.append(":计算失败\n\n");
+            }
+        }
+
         String envName = "";
         if(env.equals("gn")){
             envName = "国内";
@@ -264,13 +286,15 @@ public class SceneCallCountHandler {
                 envName,
                 v4Msg,
                 v3Msg,
-                errorMsg);
+                errorMsg,
+                abnormalMsg);
 
         XxlJobHelper.log(ddMsg);
         dingTalkSendUtils.sendActioncardMsgToDingRobot(ddMsg, "场景计算统计");
         XxlJobHelper.log("sceneCallCountHandler end.....");
     }
 
+
     public static void main(String[] args) throws SQLException {
 
         System.out.println("ggg  123123");

+ 22 - 0
src/main/java/com/fdkankan/job/mapper/ISceneBuildStatusMapper.java

@@ -0,0 +1,22 @@
+package com.fdkankan.job.mapper;
+
+import com.fdkankan.job.entity.SceneBuildStatus;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2025-04-02
+ */
+@Mapper
+public interface ISceneBuildStatusMapper extends BaseMapper<SceneBuildStatus> {
+
+    List<SceneBuildStatus> selectTimeOutScene();
+
+}

+ 4 - 0
src/main/java/com/fdkankan/job/mapper/IScenePlusMapper.java

@@ -28,4 +28,8 @@ public interface IScenePlusMapper extends BaseMapper<ScenePlus> {
 
     List<SceneBean> selectColdStorageScene(Date time);
 
+    List<SceneBean> selectTimeOutScene();
+
+    List<SceneBean> selectFailScene();
+
 }

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

@@ -0,0 +1,16 @@
+package com.fdkankan.job.service;
+
+import com.fdkankan.job.entity.SceneBuildStatus;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-04-02
+ */
+public interface ISceneBuildStatusService extends IService<SceneBuildStatus> {
+
+}

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

@@ -0,0 +1,20 @@
+package com.fdkankan.job.service.impl;
+
+import com.fdkankan.job.entity.SceneBuildStatus;
+import com.fdkankan.job.mapper.ISceneBuildStatusMapper;
+import com.fdkankan.job.service.ISceneBuildStatusService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-04-02
+ */
+@Service
+public class SceneBuildStatusServiceImpl extends ServiceImpl<ISceneBuildStatusMapper, SceneBuildStatus> implements ISceneBuildStatusService {
+
+}

+ 35 - 0
src/main/resources/mapper/job/SceneBuildStatusMapper.xml

@@ -0,0 +1,35 @@
+<?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.ISceneBuildStatusMapper">
+
+    <select id="selectTimeOutScene">
+        SELECT
+            sbs.*
+        FROM
+            t_scene_build_status sbs
+                LEFT JOIN t_scene_plus p
+                          ON sbs.`num` = p.`num`
+        WHERE p.`rec_status` = 'A'
+          AND sbs.`rec_status` = 'A'
+          AND p.scene_source IN (1, 3, 4, 5, 6)
+          AND p.`scene_status` = 0
+          AND TIMESTAMPDIFF(
+                  HOUR,
+                      sbs.last_req_build_time,
+                      NOW()
+                  ) > 48
+          AND NOT EXISTS
+            (SELECT
+                 1
+             FROM
+                 t_scene_copy_log l
+             WHERE sbs.`num` = l.`new_num`)
+    </select>
+
+    <select id="selectFailScene">
+        SELECT * FROM  t_scene_plus p
+        WHERE p.`rec_status` = 'A'  AND p.scene_source IN (1,3,4,5,6)
+          AND p.`scene_status` in (-1, 500)
+    </select>
+
+</mapper>

+ 34 - 0
src/main/resources/mapper/job/ScenePlusMapper.xml

@@ -42,5 +42,39 @@
         and NOT EXISTS (select c.num from t_scene_cold_storage c where c.rec_status = 'A' AND c.`state` = 1 and c.num = plus.num)
         and NOT EXISTS (select o.num from t_scene_clean_orig o where o.rec_status = 'A' and o.state != -1 and o.num = plus.num and ext.algorithm_time <![CDATA[ < ]]> o.create_time)
     </select>
+    <select id="selectTimeOutScene" resultType="com.fdkankan.job.dto.SceneBean">
+        SELECT
+            *
+        FROM t_scene_plus p
+        WHERE p.`rec_status` = 'A'
+          AND p.scene_source IN (1, 3, 4, 5, 6)
+          AND p.`scene_status` = 0
+          AND TIMESTAMPDIFF(
+                  HOUR,
+                      p.update_time,
+                      NOW()
+                  ) > 48
+          AND NOT EXISTS
+            (SELECT
+                 1
+             FROM
+                 t_scene_copy_log l
+             WHERE p.`num` = l.`new_num`)
+    </select>
+
+    <select id="selectFailScene" resultType="com.fdkankan.job.dto.SceneBean">
+        SELECT
+            *
+        FROM t_scene_plus p
+        WHERE p.`rec_status` = 'A'
+          AND p.scene_source IN (1, 3, 4, 5, 6)
+          AND p.`scene_status` = -1
+          AND NOT EXISTS
+            (SELECT
+                 1
+             FROM
+                 t_scene_copy_log l
+             WHERE p.`num` = l.`new_num`)
+    </select>
 
 </mapper>