123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package com.fdkankan.contro.service.impl;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.io.FileUtil;
- import cn.hutool.core.util.ZipUtil;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.fdkankan.common.constant.CommonSuccessStatus;
- import com.fdkankan.common.constant.RecStatus;
- import com.fdkankan.common.constant.SceneStatus;
- import com.fdkankan.common.util.CmdUtils;
- import com.fdkankan.common.util.SnowflakeIdGenerator;
- import com.fdkankan.contro.entity.SceneFileBuild;
- import com.fdkankan.contro.entity.SceneOrigBd;
- import com.fdkankan.contro.entity.ScenePlus;
- import com.fdkankan.contro.httpclient.CustomHttpClient;
- import com.fdkankan.contro.service.*;
- import com.fdkankan.fyun.config.FYunFileConfig;
- import com.fdkankan.fyun.local.constant.LocalConstants;
- import com.fdkankan.model.constants.ConstantFilePath;
- import com.fdkankan.model.utils.SceneUtil;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.io.File;
- import java.util.Date;
- import java.util.List;
- import java.util.Objects;
- import java.util.UUID;
- @Slf4j
- @Service
- public class MjServiceImpl implements MjService {
- @Resource
- private FYunFileConfig fYunFileConfig;
- @Autowired
- private ISceneFileBuildService sceneFileBuildService;
- @Autowired
- private ISceneOrigBdService sceneOrigBdService;
- @Autowired
- private IScenePlusService scenePlusService;
- @Autowired
- private ISceneFilenameService sceneFilenameService;
- @Resource
- private CustomHttpClient httpClient;
- @Override
- public void bd() {
- List<SceneOrigBd> list = sceneOrigBdService.list(new LambdaQueryWrapper<SceneOrigBd>().eq(SceneOrigBd::getStatus, CommonSuccessStatus.WAITING.code()));
- if (CollUtil.isEmpty(list)) {
- return;
- }
- for (SceneOrigBd v : list) {
- String uuid = UUID.randomUUID().toString();
- String fileUrl = v.getFileUrl();
- String zipName = FileUtil.getName(fileUrl);
- String zipDir = ConstantFilePath.BUILD_MODEL_PATH + "bd/" + uuid + "/";
- String taskId = v.getTaskId();
- String kNo = v.getKNo();
- try {
- ScenePlus scenePlus = scenePlusService.getByTaskId(taskId);
- if(Objects.nonNull(scenePlus) && scenePlus.getSceneStatus() == SceneStatus.wait.code()){
- continue;
- }
- FileUtil.mkdir(zipDir);
- String downloadCmd = "wget -O " + zipDir + zipName + " " + fileUrl;
- CmdUtils.callLineSh(downloadCmd);
- // httpClient.downloadFile(fileUrl, zipDir, zipName);
- // String unzipCmd = "unzip -O GBK " + zipDir + zipName + " -d " + zipDir;
- // CmdUtils.callLine(unzipCmd);
- ZipUtil.unzip(new File(zipDir + zipName), new File(zipDir));
- //解压后删除压缩包
- FileUtil.del(zipDir + zipName);
- String dataFdagePath = zipDir + "data.fdage";
- JSONObject dataFdageJson = JSON.parseObject(FileUtil.readUtf8String(dataFdagePath));
- JSONObject camJson = dataFdageJson.getJSONObject("cam");
- String snCode = camJson.getString("uuid");
- String uuidtime = dataFdageJson.getString("uuidtime");
- String unicode = snCode + "_" + uuidtime;
- SceneFileBuild sceneFileBuild = sceneFileBuildService.getOne(new LambdaQueryWrapper<SceneFileBuild>().eq(SceneFileBuild::getTaskId, taskId));
- String fileId = null;
- if (Objects.isNull(sceneFileBuild)) {
- fileId = String.valueOf(new SnowflakeIdGenerator(0, 0).nextId());
- sceneFileBuild = new SceneFileBuild();
- sceneFileBuild.setFileId(fileId);
- sceneFileBuild.setUnicode(unicode);
- sceneFileBuild.setChildName(snCode);
- sceneFileBuild.setCreateTime(new Date());
- sceneFileBuild.setRecStatus(RecStatus.VALID.code());
- sceneFileBuild.setTaskId(taskId);
- sceneFileBuild.setKNo(kNo);
- sceneFileBuildService.save(sceneFileBuild);
- } else {
- fileId = sceneFileBuild.getFileId();
- }
- String realDataSource = ConstantFilePath.BUILD_MODEL_PATH + snCode + "/" + fileId + "/" + unicode;
- String realOssHomePath = SceneUtil.getHomePath(realDataSource);
- String realOssHomeAbsolutePath = LocalConstants.BASE_PATH + fYunFileConfig.getBucket() + "/" + realOssHomePath;
- FileUtil.loopFiles(zipDir).stream().forEach(file -> {
- FileUtil.copy(file.getAbsolutePath(), file.getAbsolutePath().replace(zipDir, realOssHomeAbsolutePath), true);
- });
- sceneFileBuildService.noticeBuild(unicode, v.getId(), realDataSource, "zip");
- v.setStatus(CommonSuccessStatus.SUCCESS.code());
- } catch (Exception e) {
- v.setStatus(CommonSuccessStatus.FAIL.code());
- }
- sceneOrigBdService.updateById(v);
- }
- }
- public static void main(String[] args) {
- // ZipUtil.unzip(new File("D:\\Downloads\\916ed6689_202501101516307030\\916ed6689_202501101516307030.zip"), new File("D:\\Downloads\\aaa\\bbb"));
- String substring = "/mnt/data/bd/0ef1b470-4f3a-49b4-bd66-7e0584cce660/".substring(0, "/mnt/data/bd/0ef1b470-4f3a-49b4-bd66-7e0584cce660/".lastIndexOf("/"));
- System.out.println(substring);
- }
- }
|