MjServiceImpl.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package com.fdkankan.contro.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.io.FileUtil;
  4. import cn.hutool.core.util.ZipUtil;
  5. import com.alibaba.fastjson.JSON;
  6. import com.alibaba.fastjson.JSONObject;
  7. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  8. import com.fdkankan.common.constant.CommonSuccessStatus;
  9. import com.fdkankan.common.constant.RecStatus;
  10. import com.fdkankan.common.constant.SceneStatus;
  11. import com.fdkankan.common.util.CmdUtils;
  12. import com.fdkankan.common.util.SnowflakeIdGenerator;
  13. import com.fdkankan.contro.entity.SceneFileBuild;
  14. import com.fdkankan.contro.entity.SceneOrigBd;
  15. import com.fdkankan.contro.entity.ScenePlus;
  16. import com.fdkankan.contro.httpclient.CustomHttpClient;
  17. import com.fdkankan.contro.service.*;
  18. import com.fdkankan.fyun.config.FYunFileConfig;
  19. import com.fdkankan.fyun.local.constant.LocalConstants;
  20. import com.fdkankan.model.constants.ConstantFilePath;
  21. import com.fdkankan.model.utils.SceneUtil;
  22. import lombok.extern.slf4j.Slf4j;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import javax.annotation.Resource;
  26. import java.io.File;
  27. import java.util.Date;
  28. import java.util.List;
  29. import java.util.Objects;
  30. import java.util.UUID;
  31. @Slf4j
  32. @Service
  33. public class MjServiceImpl implements MjService {
  34. @Resource
  35. private FYunFileConfig fYunFileConfig;
  36. @Autowired
  37. private ISceneFileBuildService sceneFileBuildService;
  38. @Autowired
  39. private ISceneOrigBdService sceneOrigBdService;
  40. @Autowired
  41. private IScenePlusService scenePlusService;
  42. @Autowired
  43. private ISceneFilenameService sceneFilenameService;
  44. @Resource
  45. private CustomHttpClient httpClient;
  46. @Override
  47. public void bd() {
  48. List<SceneOrigBd> list = sceneOrigBdService.list(new LambdaQueryWrapper<SceneOrigBd>().eq(SceneOrigBd::getStatus, CommonSuccessStatus.WAITING.code()));
  49. if (CollUtil.isEmpty(list)) {
  50. return;
  51. }
  52. for (SceneOrigBd v : list) {
  53. String uuid = UUID.randomUUID().toString();
  54. String fileUrl = v.getFileUrl();
  55. String zipName = FileUtil.getName(fileUrl);
  56. String zipDir = ConstantFilePath.BUILD_MODEL_PATH + "bd/" + uuid + "/";
  57. String taskId = v.getTaskId();
  58. String kNo = v.getKNo();
  59. try {
  60. ScenePlus scenePlus = scenePlusService.getByTaskId(taskId);
  61. if(Objects.nonNull(scenePlus) && scenePlus.getSceneStatus() == SceneStatus.wait.code()){
  62. continue;
  63. }
  64. FileUtil.mkdir(zipDir);
  65. String downloadCmd = "wget -O " + zipDir + zipName + " " + fileUrl;
  66. CmdUtils.callLineSh(downloadCmd);
  67. // httpClient.downloadFile(fileUrl, zipDir, zipName);
  68. // String unzipCmd = "unzip -O GBK " + zipDir + zipName + " -d " + zipDir;
  69. // CmdUtils.callLine(unzipCmd);
  70. ZipUtil.unzip(new File(zipDir + zipName), new File(zipDir));
  71. //解压后删除压缩包
  72. FileUtil.del(zipDir + zipName);
  73. String dataFdagePath = zipDir + "data.fdage";
  74. JSONObject dataFdageJson = JSON.parseObject(FileUtil.readUtf8String(dataFdagePath));
  75. JSONObject camJson = dataFdageJson.getJSONObject("cam");
  76. String snCode = camJson.getString("uuid");
  77. String uuidtime = dataFdageJson.getString("uuidtime");
  78. String unicode = snCode + "_" + uuidtime;
  79. SceneFileBuild sceneFileBuild = sceneFileBuildService.getOne(new LambdaQueryWrapper<SceneFileBuild>().eq(SceneFileBuild::getTaskId, taskId));
  80. String fileId = null;
  81. if (Objects.isNull(sceneFileBuild)) {
  82. fileId = String.valueOf(new SnowflakeIdGenerator(0, 0).nextId());
  83. sceneFileBuild = new SceneFileBuild();
  84. sceneFileBuild.setFileId(fileId);
  85. sceneFileBuild.setUnicode(unicode);
  86. sceneFileBuild.setChildName(snCode);
  87. sceneFileBuild.setCreateTime(new Date());
  88. sceneFileBuild.setRecStatus(RecStatus.VALID.code());
  89. sceneFileBuild.setTaskId(taskId);
  90. sceneFileBuild.setKNo(kNo);
  91. sceneFileBuildService.save(sceneFileBuild);
  92. } else {
  93. fileId = sceneFileBuild.getFileId();
  94. }
  95. String realDataSource = ConstantFilePath.BUILD_MODEL_PATH + snCode + "/" + fileId + "/" + unicode;
  96. String realOssHomePath = SceneUtil.getHomePath(realDataSource);
  97. String realOssHomeAbsolutePath = LocalConstants.BASE_PATH + fYunFileConfig.getBucket() + "/" + realOssHomePath;
  98. FileUtil.loopFiles(zipDir).stream().forEach(file -> {
  99. FileUtil.copy(file.getAbsolutePath(), file.getAbsolutePath().replace(zipDir, realOssHomeAbsolutePath), true);
  100. });
  101. sceneFileBuildService.noticeBuild(unicode, v.getId(), realDataSource, "zip");
  102. v.setStatus(CommonSuccessStatus.SUCCESS.code());
  103. } catch (Exception e) {
  104. v.setStatus(CommonSuccessStatus.FAIL.code());
  105. }
  106. sceneOrigBdService.updateById(v);
  107. }
  108. }
  109. public static void main(String[] args) {
  110. // ZipUtil.unzip(new File("D:\\Downloads\\916ed6689_202501101516307030\\916ed6689_202501101516307030.zip"), new File("D:\\Downloads\\aaa\\bbb"));
  111. String substring = "/mnt/data/bd/0ef1b470-4f3a-49b4-bd66-7e0584cce660/".substring(0, "/mnt/data/bd/0ef1b470-4f3a-49b4-bd66-7e0584cce660/".lastIndexOf("/"));
  112. System.out.println(substring);
  113. }
  114. }