| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- package com.fdkankan.manage_jp.task;
- import cn.hutool.core.io.FileUtil;
- import com.alibaba.fastjson.JSONObject;
- import com.fdkankan.fyun.face.FYunFileServiceInterface;
- import com.fdkankan.manage_jp.config.ManageConfig;
- import com.fdkankan.manage_jp.entity.*;
- import com.fdkankan.manage_jp.httpClient.service.LaserService;
- import com.fdkankan.manage_jp.service.IProjectSceneGpsService;
- import com.fdkankan.manage_jp.service.IScenePlusExtService;
- import com.fdkankan.manage_jp.service.IScenePlusService;
- import com.fdkankan.manage_jp.service.ISceneProService;
- import com.fdkankan.manage_jp.vo.response.SceneGpsDb;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Service;
- import java.util.*;
- import java.util.stream.Collectors;
- @Service
- @Slf4j
- public class TaskService {
- @Autowired
- IProjectSceneGpsService projectSceneGpsService;
- @Autowired
- LaserService laserService;
- @Autowired
- ISceneProService sceneProService;
- @Autowired
- IScenePlusService scenePlusService;
- @Autowired
- IScenePlusExtService scenePlusExtService;
- @Scheduled(initialDelay = 2000, fixedDelay = 1000 * 60 )
- public void run() {
- addLaserData();
- }
- private void addLaserData() {
- List<SceneGpsDb> sceneGpsDbs1 = projectSceneGpsService.getNotGpsScene();
- if(sceneGpsDbs1.isEmpty()){
- log.debug("没有需要更新GPS数据的场景");
- return;
- }
- List<ProjectSceneGps> laserssList = new ArrayList<>();
- List<ProjectSceneGps> lasersgList = new ArrayList<>();
- for (SceneGpsDb sceneGpsDb : sceneGpsDbs1) {
- ProjectSceneGps sceneGps = projectSceneGpsService.addGps(sceneGpsDb);
- if(sceneGps != null){
- log.debug("num:{}gps:{}",sceneGpsDb.getNum(),sceneGps);
- if(sceneGps.getSceneSource() == 4 ) {
- laserssList.add(sceneGps);
- }else if( sceneGps.getSceneSource() == 5){
- lasersgList.add(sceneGps);
- }
- }
- }
- addLaserList(laserssList,4);
- addLaserList(lasersgList,5);
- }
- private void addLaserList(List<ProjectSceneGps> laserssList,Integer sceneSource) {
- List<String> sceneMapShowList = new ArrayList<>();
- if(!laserssList.isEmpty()){
- List<String> numList1 = laserssList.stream().map(ProjectSceneGps::getNum).collect(Collectors.toList());
- HashMap<String, JSONObject> ssSceneMap = laserService.list(numList1,sceneSource);
- for (ProjectSceneGps sceneGps : laserssList) {
- JSONObject ssObj = ssSceneMap.get(sceneGps.getNum());
- if(ssObj!=null ){
- sceneGps.setWebSite(ssObj.getString("webSite"));
- projectSceneGpsService.save(sceneGps);
- if(sceneGps.getGpsSource() == 2){
- sceneMapShowList.add(sceneGps.getNum());
- }
- }
- }
- }
- sceneProService.openMapShow(sceneMapShowList);
- }
- @Autowired
- ManageConfig manageConfig;
- @Autowired
- FYunFileServiceInterface fYunFileServiceInterface;
- @Scheduled(initialDelay = 3000,fixedDelay = 1000 * 60 * 60 *24)
- public void delScene() {
- List<ScenePro> scenePros = sceneProService.getDelSceneNumV3();
- for (ScenePro scenePro : scenePros) {
- if(StringUtils.isBlank(scenePro.getNum())){
- continue;
- }
- delSource(scenePro.getNum(),scenePro.getDataSource());
- sceneProService.updateDelSourceV3(scenePro.getNum());
- }
- List<ScenePlus> scenePluses = sceneProService.getDelSceneNumV4();
- for (ScenePlus scenePlus : scenePluses) {
- if(StringUtils.isBlank(scenePlus.getNum())){
- continue;
- }
- delSource(scenePlus.getNum(),scenePlus.getDataSource());
- sceneProService.updateDelSourceV4(scenePlus.getNum());
- }
- }
- /**
- * 删除场景nas和oss数据
- * oss
- * 正式:laser_p_data/场景码
- * 测试:laser_u_data/场景码
- * 原始资源 v3 v4
- * 查看资源 scene_view_data v4
- * 编辑资源 scene_edit_data v4
- * 缓存资源 scene_result_data v4
- * data/data<num> v3
- * images/images<num> v3
- * video/video<num> v3
- * voice/voice<num> v3
- * scene/<num>
- * downloads/scene/<num>
- * downloads/scenes/<num>.zip
- * downloads/extras/<num>_extras.zip
- * downloads/extras/<num>_mesh.zip
- */
- public static List<String> meshOssPath = Arrays.asList(
- "scene_view_data/%s",
- "scene_edit_data/%s",
- "data/data%s",
- "images/images%s",
- "video/video%s",
- "voice/voice%s",
- "scene/%s",
- "downloads/scene/%s",
- "downloads/scenes/%s.zip",
- "downloads/extras/%s_extras.zip",
- "downloads/extras/%s_mesh.zip"
- );
- public static List<String> meshNasDataSourcePath = Arrays.asList(
- "%s_images",
- "%s_laser_obj",
- "%s_obj2Tiles",
- "%s_obj2txt"
- );
- public static List<String> meshNasNumPath = Arrays.asList(
- "/mnt/4Dkankan/scene_v4/%s",
- "/mnt/4Dkankan/scene/data/data%s",
- "/mnt/4Dkankan/scene/images/images%s",
- "/mnt/4Dkankan/scene/voice/voice%s"
- );
- private void delSource(String num,String dataSource){
- try {
- if(StringUtils.isBlank(num)){
- return;
- }
- ScenePro scenePro = sceneProService.getByNum(num);
- ScenePlus scenePlus = scenePlusService.getByNum(num);
- if(scenePro != null || scenePlus != null){
- return;
- }
- String active = manageConfig.getActive();
- String laserOssPath = "laser_u_data/"+ num;
- if(active.contains("prod")){
- laserOssPath= "laser_p_data/"+ num;
- }
- log.info("del-scene:{},oss-path:{}",num,laserOssPath);
- fYunFileServiceInterface.deleteFolder(laserOssPath);
- for (String meshPath : meshOssPath) {
- log.info("del-scene:{},oss-path:{}",num,String.format(meshPath,num));
- if(meshPath.contains(".zip")){
- fYunFileServiceInterface.deleteFile(String.format(meshPath,num));
- }else {
- fYunFileServiceInterface.deleteFolder(String.format(meshPath,num));
- }
- }
- for (String meshPath : meshNasNumPath) {
- log.info("del-scene:{},nas-path:{}",num,String.format(meshPath,num));
- FileUtil.del(String.format(meshPath,num));
- }
- if(checkDataSource(dataSource)){
- List<ScenePro> scenePros = sceneProService.getDataSource(dataSource);
- List<ScenePlusExt> scenePlusExts = scenePlusExtService.getDataSource(dataSource);
- if(!scenePros.isEmpty() || !scenePlusExts.isEmpty()){
- return;
- }
- String origPath = dataSource.replace("/mnt/data","home");
- log.info("del-scene:{},oss-orig-path:{}",num,origPath);
- fYunFileServiceInterface.deleteFolder(origPath);
- log.info("del-scene:{},nas-path:{}",num,dataSource);
- FileUtil.del(dataSource);
- for (String meshPath : meshNasDataSourcePath) {
- log.info("del-scene:{},nas-path:{}",num,String.format(meshPath,dataSource));
- FileUtil.del(String.format(meshPath,dataSource));
- }
- }
- }catch (Exception e){
- log.info("删除失败:{}",e);
- }
- }
- public static boolean checkDataSource(String dataSource) {
- if(StringUtils.isBlank(dataSource)){
- return false;
- }
- return dataSource.contains("/mnt/data") && dataSource.split("/").length >4;
- }
- }
|