Просмотр исходного кода

删除场景定时任务,场景计算统计定时任务

dsx 2 лет назад
Родитель
Сommit
d07911a00c

+ 10 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -11,6 +11,8 @@ import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneUploadService;
 import com.fdkankan.scene.vo.*;
 import com.fdkankan.common.response.ResultData;
+
+import java.io.File;
 import java.io.IOException;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -82,6 +84,14 @@ public class SceneEditController extends BaseController {
         return sceneEditInfoService.publicScene(param);
     }
 
+    public static void main(String[] args) {
+        File fout = new File("D:\\test222\\aaa\\text.txt");
+        if (!fout.getParentFile().exists()) {
+            fout.getParentFile().mkdirs();
+        }
+
+    }
+
     /**
      * <p>
         单独保存tourList

+ 6 - 0
4dkankan-task/pom.xml

@@ -74,6 +74,12 @@
             <version>1.3.6</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-utils-dingtalk</artifactId>
+            <version>3.0.0-SNAPSHOT</version>
+        </dependency>
+
 <!--        htt请求工具-->
 <!--        <dependency>-->
 <!--            <groupId>com.dtflys.forest</groupId>-->

+ 44 - 0
4dkankan-task/src/main/java/com/fdkankan/task/schedule/ScheduleJob.java

@@ -6,19 +6,26 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.util.DateExtUtil;
+import com.fdkankan.dingtalk.DingTalkSendUtils;
 import com.fdkankan.fyun.oss.UploadToOssUtil;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.task.entity.ScenePro;
 import com.fdkankan.task.service.IScenePlusExtService;
 import com.fdkankan.task.service.IScenePlusService;
 import com.fdkankan.task.service.ISceneProService;
+import com.taobao.api.ApiException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.ExecutorService;
@@ -41,6 +48,8 @@ public class ScheduleJob {
     private IScenePlusService scenePlusService;
     @Autowired
     private IScenePlusExtService scenePlusExtService;
+    @Autowired
+    private DingTalkSendUtils dingTalkSendUtils;
 
 //    @Scheduled(fixedDelay = 2*24*60*60*1000)
 //    public void deleteV3Dir(){
@@ -95,6 +104,41 @@ public class ScheduleJob {
 //
 //    }
 
+    @Scheduled(cron = "0 30 9 * * ?")
+    public void sceneCallCount() throws Exception {
+        String DINGTALK_MSG_PATTERN =
+                "**日期**: %s\n\n" +
+                "**环境**: 汽车之家\n\n" +
+                "场景总数: %d, 成功: %d, 失败: %d, 计算中: %d\n\n" +
+                "**错误日志**: %s";
+
+        Date time = Calendar.getInstance().getTime();
+        time = DateUtil.offsetDay(time, -1);
+        Date dateStart = DateUtil.beginOfDay(time);
+        Date dateEnd = DateUtil.endOfDay(time);
+        StringBuilder v3ErrorMsg =  new StringBuilder();
+        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();
+            scenePros.stream().forEach(pro->{
+                if(pro.getStatus() == -1){
+                    v3ErrorMsg.append(pro.getNum()).append(":").append("计算失败\n\n");
+                }
+            });
+        }
+        String ddMsg = String.format(
+                DINGTALK_MSG_PATTERN, DateUtil.format(time, DateExtUtil.dateStyle4),
+                v3Count, v3success, v3Fail, v3Waiting,
+                v3ErrorMsg);
+
+        dingTalkSendUtils.sendActioncardMsgToDingRobot(ddMsg, "场景计算统计");
+
+    }
+
 
 
     public static void main(String[] args) {

+ 31 - 0
4dkankan-task/src/main/java/com/fdkankan/task/service/impl/ScenePlusServiceImpl.java

@@ -20,6 +20,7 @@ import com.fdkankan.task.service.IScenePlusExtService;
 import com.fdkankan.task.service.IScenePlusService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -36,6 +37,9 @@ import java.util.List;
 @Service
 public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlus> implements IScenePlusService {
 
+    @Value("${oss.orig-bucket}")
+    private String origBucket;
+
     @Autowired
     private IScenePlusExtService scenePlusExtService;
     @Autowired
@@ -183,6 +187,13 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                 uploadToOssUtil.deleteFile(bucket, userViewPath);
             }
 
+            //删除data目录
+            String dataEditPath = String.format(UploadFilePath.DATA_EDIT_PATH, num);
+            List<String> dataEditList = uploadToOssUtil.listKeys(bucket, dataEditPath);
+            if(CollUtil.isNotEmpty(dataEditList)){
+                uploadToOssUtil.deleteFile(bucket, dataEditPath);
+            }
+
             //删除user目录
             String userEditPath = String.format(UploadFilePath.USER_EDIT_PATH, num);
             List<String> userEditList = uploadToOssUtil.listKeys(bucket, userEditPath);
@@ -194,6 +205,26 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
             String dataSource = scenePlusExt.getDataSource();
             if(dataSource.length() > "/mnt/data/".length()){
                 FileUtil.del(dataSource);
+                FileUtil.del(dataSource.concat("_images"));
+                FileUtil.del(dataSource.concat("_obj2txt"));
+            }
+
+            //删除相机原始资源
+            if(StrUtil.isNotEmpty(dataSource)){
+                String homePath = dataSource.replace(ConstantFilePath.BUILD_MODEL_PATH, ConstantFilePath.OSS_PREFIX);
+                //由于国内测试和生产用的bucket是同一个,这里需要做一个安全校验,保证不会删错
+                String fileContent = uploadToOssUtil.getObjectContent(origBucket, homePath.concat("/").concat("data.fdage"));
+                if(StrUtil.isNotBlank(fileContent)){
+                    JSONObject jsonObject = JSON.parseObject(fileContent);
+                    String snCode = jsonObject.getJSONObject("cam").getString("uuid");
+                    String uuidTime = jsonObject.getString("uuidtime");
+                    if(StrUtil.isNotEmpty(snCode)
+                            && StrUtil.isNotEmpty(uuidTime)
+                            && homePath.contains(snCode)
+                            && homePath.contains(uuidTime)){
+                        uploadToOssUtil.deleteFile(origBucket, homePath);
+                    }
+                }
             }
 
             redisUtil.sSet(TaskConstant.deleteNumKey, num);