dengsixing недель назад: 2
Родитель
Сommit
6ed1f77206

+ 7 - 0
src/main/java/com/fdkankan/contro/constant/FilePathConstant.java

@@ -0,0 +1,7 @@
+package com.fdkankan.contro.constant;
+
+public class FilePathConstant {
+
+    public static final String SEND_CALL_ALGORITHM_PATH = "/mnt/sendCallAlgorithm/";
+
+}

+ 1 - 1
src/main/java/com/fdkankan/contro/constant/HaixinRenderStatus.java

@@ -7,7 +7,7 @@ import lombok.Getter;
 public enum HaixinRenderStatus {
     FAILED(-1, "入队失败"),
     WAIT(0, "等待入队"),
-    SCHEDULEING(1, "入队成功, 排队中"),
+    SCHEDULED(1, "入队成功, 排队中"),
     MODELING(2, "计算中"),
     SUCCESS(3, "计算成功"),
     ERROR(4, "计算失败"); // 新增超时状态

+ 5 - 4
src/main/java/com/fdkankan/contro/constant/JmUploadStatus.java

@@ -2,15 +2,16 @@ package com.fdkankan.contro.constant;
 
 import lombok.Getter;
 
-//江门原始文件上传批次状态(0-上传中,1-已通知计算,2-进入计算,3-退出计算, 4-等待通知计算)
+//江门原始文件上传批次状态(0-上传中,1,-通知计算,2-进入计算,3-退出计算,4-等待入队)
 @Getter
 public enum JmUploadStatus {
     FAILED(-1, "入队失败"),
-    WAIT(0, "上传中"),
-    SCHEDULEING(1, "已入队"),
+    UPLOAD_ING(0, "上传中"),
+    SCHEDULED(1, "已入队"),
     MODELING(2, "计算中"),
     SUCCESS(3, "计算成功"),
-    ERROR(4, "计算失败"); // 新增超时状态
+    SCHEDULE_ING(4, "等待入队")
+    ; // 新增超时状态
 
     private final int code;
     private final String desc;

+ 1 - 1
src/main/java/com/fdkankan/contro/controller/SceneFileController.java

@@ -227,7 +227,7 @@ public class SceneFileController{
         }
 
 //        return sceneFileBuildService.noticeBuild(detail.getUuid(), null, null, "single");
-        return sceneFileBuildService.noticeBuild(detail.getUuid(), null, null, "single");
+        return sceneFileBuildService.noticeBuild(detail);
     }
 
     @PostMapping("/send_bd")

+ 5 - 0
src/main/java/com/fdkankan/contro/entity/ScenePlus.java

@@ -167,4 +167,9 @@ public class ScenePlus implements Serializable {
     @TableField("upload_type")
     private String uploadType;
 
+    //最新一次上传用户id
+    @TableField("last_uploader")
+    private Long lastUploader;
+
+
 }

+ 2 - 2
src/main/java/com/fdkankan/contro/generate/AutoGenerate.java

@@ -17,7 +17,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"contro", getTables(new String[]{
-                "t_orig_file_upload_batch", "t_orig_file_upload"
+                "t_scene_orig_manage"
         }));
 
 //        generate(path,"goods", getTables(new String[]{
@@ -45,7 +45,7 @@ public class AutoGenerate {
 
 
     public static void  generate(String path,String moduleName,  List<String> tables){
-        FastAutoGenerator.create("jdbc:mysql://192.168.0.25:3306/4dkankan_v4",
+        FastAutoGenerator.create("jdbc:mysql://192.168.0.125:13306/4dkankan_v4",
             "root","4dkk2023cuikuan%")
                 .globalConfig(builder -> {
                     builder.author("")               //作者

+ 4 - 2
src/main/java/com/fdkankan/contro/mq/service/IModelingScheduleService.java

@@ -3,6 +3,7 @@ package com.fdkankan.contro.mq.service;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.contro.entity.ModelingSchedule;
+import com.fdkankan.contro.entity.OrigFileUploadBatch;
 import com.fdkankan.contro.entity.SceneOrigBd;
 
 /**
@@ -15,10 +16,11 @@ import com.fdkankan.contro.entity.SceneOrigBd;
  */
 public interface IModelingScheduleService extends IService<ModelingSchedule> {
 
-    void pushTask(String source, JSONObject dataFdage, String num, SceneOrigBd sceneOrigBd);
-
+    ModelingSchedule pushTask(String source, JSONObject dataFdage, String num, SceneOrigBd sceneOrigBd, OrigFileUploadBatch origFileUploadBatch);
 
     Integer getExpectedTime(Integer shootCount);
 
+    Integer getExpectedTime(ModelingSchedule modelingSchedule);
+
     Integer sumExpectedTime();
 }

+ 3 - 1
src/main/java/com/fdkankan/contro/service/IGaSceneBuildService.java

@@ -1,8 +1,10 @@
 package com.fdkankan.contro.service;
 
 import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.contro.entity.OrigFileUploadBatch;
 import com.fdkankan.contro.entity.SceneOrigBd;
+import com.fdkankan.contro.entity.SceneOrigManage;
 
 public interface IGaSceneBuildService {
-    void noticeBuild(JSONObject dataFdage, String source, SceneOrigBd sceneOrigBd);
+    void noticeBuild(JSONObject dataFdage, String source, SceneOrigBd sceneOrigBd, OrigFileUploadBatch origFileUploadBatch, SceneOrigManage sceneOrigManage);
 }

+ 1 - 1
src/main/java/com/fdkankan/contro/service/IHaixinService.java

@@ -10,5 +10,5 @@ public interface IHaixinService {
     void noticHaixin(String num, boolean buildSuccess) throws Exception;
     void sendResult(String taskId, String packetPath);
     void syncRenderStatus(Long sceneOirgBdId, Integer status, Integer expectedTime, String failReason);
-    void syncRenderStatus_v230(long modelingScheduleId, Integer status, Integer expectedTime, String failReason);
+    void syncRenderStatus_v230(String taskNo, Integer status, Integer expectedTime, String failReason);
 }

+ 2 - 0
src/main/java/com/fdkankan/contro/service/IOrigFileUploadBatchService.java

@@ -20,4 +20,6 @@ public interface IOrigFileUploadBatchService extends IService<OrigFileUploadBatc
 
     List<OrigFileUploadBatch> listPreviewByCondition(OrigFileUploadBatch condition);
 
+    void updateStatausById(long id, int status);
+
 }

+ 33 - 26
src/main/java/com/fdkankan/contro/service/impl/GaSceneBuildServiceImpl.java

@@ -5,12 +5,16 @@ import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.exceptions.ExceptionUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.digest.MD5;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.contro.constant.ApiConstant;
+import com.fdkankan.contro.constant.FilePathConstant;
 import com.fdkankan.contro.constant.HaixinRenderStatus;
+import com.fdkankan.contro.constant.JmUploadStatus;
 import com.fdkankan.contro.entity.*;
 import com.fdkankan.contro.enums.CameraTypeEnum;
 import com.fdkankan.contro.httpclient.MyClient;
@@ -75,9 +79,11 @@ public class GaSceneBuildServiceImpl implements IGaSceneBuildService {
     private IModelingScheduleService modelingScheduleService;
     @Autowired
     private IHaixinService haixinService;
+    @Autowired
+    private IOrigFileUploadBatchService origFileUploadBatchService;
 
     @Override
-    public void noticeBuild(JSONObject dataFdage, String source, SceneOrigBd sceneOrigBd) {
+    public void noticeBuild(JSONObject dataFdage, String source, SceneOrigBd sceneOrigBd, OrigFileUploadBatch origFileUploadBatch, SceneOrigManage sceneOrigManage) {
 
         JSONObject camJson = dataFdage.getJSONObject("cam");
         String snCode = camJson.getString("uuid");
@@ -85,7 +91,6 @@ public class GaSceneBuildServiceImpl implements IGaSceneBuildService {
         String unicode = snCode + "_" + uuidTime;
         int camType = camJson.getIntValue("type");
 
-        String eventContent = null;
         String sceneNum = null;
         String exceptionStr = null;
         try {
@@ -98,7 +103,13 @@ public class GaSceneBuildServiceImpl implements IGaSceneBuildService {
             Long cameraType = this.getCameraTypeByCamType(camType);
 
             //用户注册
-            User user = this.registerUser(source, sceneOrigBd);
+            User user = null;
+            if("hx".equals(source) || "jm".equals(source)){
+                user = this.registerUser(source, sceneOrigBd, origFileUploadBatch);
+            }
+            if("manage".equals(source)){
+                user = userService.getById(sceneOrigManage.getUserId());
+            }
 
             //生成场景数据
             Map<String, Object> genSceneResp = this.genScene(source, dataFdage, camera, cameraDetail, user, cameraType, sceneOrigBd);
@@ -106,7 +117,7 @@ public class GaSceneBuildServiceImpl implements IGaSceneBuildService {
             boolean rebuild = (boolean) genSceneResp.get("rebuild");
 
             //进入计算调度调度池
-            modelingScheduleService.pushTask(source, dataFdage, sceneNum, sceneOrigBd);
+            ModelingSchedule modelingSchedule = modelingScheduleService.pushTask(source, dataFdage, sceneNum, sceneOrigBd, origFileUploadBatch);
 
             if(cameraType == 14){
                 ScenePlus scenePlus = scenePlusService.getScenePlusByNum(sceneNum);
@@ -114,24 +125,29 @@ public class GaSceneBuildServiceImpl implements IGaSceneBuildService {
             }
 
             //场景上传事件通知,江门特有
-//            jmgaService.sendStatus(sceneNum, "上传完毕");
+            if("jm".equals(source)){
+                origFileUploadBatchService.updateStatausById(origFileUploadBatch.getId(), JmUploadStatus.SCHEDULED.getCode());
+                jmgaService.sendStatus(sceneNum, "上传完毕");
+            }
 
-            //场景计算状态通知吗,海鑫特有
+            //推送海鑫通知
             if("hx".equals(source)){
-                haixinService.syncRenderStatus(sceneOrigBd.getId(), HaixinRenderStatus.SCHEDULEING.getCode(), null, exceptionStr);
+                haixinService.syncRenderStatus_v230(sceneOrigBd.getTaskNo(), HaixinRenderStatus.SCHEDULED.getCode(), modelingScheduleService.getExpectedTime(modelingSchedule), null);
             }
 
         }catch (Exception e){
             log.error("通知计算报错,unicode:{}", unicode, e);
 //            eventContent = "通知计算失败";
-//            jmgaService.sendStatus(sceneNum, "通知计算失败");
+            if("jm".equals(source)) {
+                origFileUploadBatchService.updateStatausById(origFileUploadBatch.getId(), JmUploadStatus.FAILED.getCode());
+                jmgaService.sendStatus(sceneNum, "通知计算失败");
+            }
             exceptionStr = ExceptionUtil.stacktraceToString(e, 5000);
             //场景计算状态通知吗,海鑫特有
             if("hx".equals(source)){
-                haixinService.syncRenderStatus(sceneOrigBd.getId(), HaixinRenderStatus.FAILED.getCode(), null, exceptionStr);
+                haixinService.syncRenderStatus_v230(sceneOrigBd.getTaskNo(), HaixinRenderStatus.FAILED.getCode(), null, exceptionStr);
             }
             if(StrUtil.isNotEmpty(sceneNum)){
-
                 try {
                     jmgaService.updateSceneFailAndZipLog(sceneNum, "通知计算报错");
                 } catch (IOException ex) {
@@ -141,7 +157,6 @@ public class GaSceneBuildServiceImpl implements IGaSceneBuildService {
                 String buildLogPath = String.format(UploadFilePath.BUILD_LOG_PATH, sceneNum);
                 String preLogPath = buildLogPath + "noticeBuild-error-" + DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN) + ".log";
                 fYunFileService.uploadFile(ExceptionUtil.stacktraceToString(e).getBytes(StandardCharsets.UTF_8), preLogPath);
-
             }
         }
     }
@@ -174,6 +189,7 @@ public class GaSceneBuildServiceImpl implements IGaSceneBuildService {
         String fileId = sceneFileBuildService.getFileId(snCode, unicode);
         String dataSource = ConstantFilePath.BUILD_MODEL_PATH + snCode + "/" + fileId + "/" + unicode;
 
+        scenePlus.setLastUploader(user.getId());
         scenePlus.setUserId(user.getId());
         scenePlus.setSceneSource(SceneSource.BM.code());
         scenePlus.setStartBuildTime(new Date());
@@ -295,7 +311,7 @@ public class GaSceneBuildServiceImpl implements IGaSceneBuildService {
         return result;
     }
 
-    private User registerUser(String source, SceneOrigBd sceneOrigBd){
+    private User registerUser(String source, SceneOrigBd sceneOrigBd, OrigFileUploadBatch origFileUploadBatch){
         String ryId = null;
         String ryNo = null;
         String password = null;
@@ -308,19 +324,10 @@ public class GaSceneBuildServiceImpl implements IGaSceneBuildService {
         String ryOrgCode = null;
         String ryOrgName = null;
         if("jm".equals(source)){//江门摆渡方式
-//                String fileId = this.getFileId(snCode, uuid);
-//                String subFolder = snCode.concat(File.separator).concat(fileId).concat(File.separator).concat(uuid);
-//                dataSource = ConstantFilePath.BUILD_MODEL_PATH.concat(subFolder);
-//                log.info("dataSource 为:{}", dataSource);
-//
-//                JSONObject configJson = JSONObject.parseObject(FileUtils.readFile(sendCallAlgorithmPath.concat(uuid).concat("/config.json")));
-//                String folderName = configJson.getString("id");
-//                ryId = configJson.getString("customUserId");
-//                ryNo = configJson.getString("customUserName");
-//                password = MD5.create().digestHex(configJson.getString("customUserPwd"));
-//                if(StrUtil.isBlank(folderName) || StrUtil.isBlank(snCode)){
-//                    throw new RuntimeException("config.json 文件有误!");
-//                }
+            JSONObject configJson = JSONObject.parseObject(FileUtils.readFile(FilePathConstant.SEND_CALL_ALGORITHM_PATH.concat(origFileUploadBatch.getUuid()).concat("/config.json")));
+            ryId = configJson.getString("customUserId");
+            ryNo = configJson.getString("customUserName");
+            password = MD5.create().digestHex(configJson.getString("customUserPwd"));
         }else if("hx".equals(source)){//海信压缩包百度方式
             ryId = sceneOrigBd.getRyId();
             ryNo = sceneOrigBd.getRyId();
@@ -350,7 +357,7 @@ public class GaSceneBuildServiceImpl implements IGaSceneBuildService {
         params.put("ryOrgName", ryOrgName);
         String url = fdServiceUrl.concat(ApiConstant.URL_ADD_UCENTER_USER);
         ResultData post1 = myClient.post(url, params);
-        log.info("---------registerUser result:{}-----------", post1);
+        log.info("registerUser result:{}", post1);
         JyUser jyUser = jyUserService.getByRyId(ryId);
         if(Objects.isNull(jyUser)){
             throw new RuntimeException("注册用户失败");

+ 10 - 13
src/main/java/com/fdkankan/contro/service/impl/HaixinServiceImpl.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.common.util.CmdUtils;
 import com.fdkankan.contro.constant.BuildSceneCostTime;
+import com.fdkankan.contro.constant.HaixinRenderStatus;
 import com.fdkankan.contro.dto.UploadSceneDTO;
 import com.fdkankan.contro.entity.ModelingSchedule;
 import com.fdkankan.contro.entity.SceneOrigBd;
@@ -88,7 +89,9 @@ public class HaixinServiceImpl implements IHaixinService {
         sceneOrigBdService.save(sceneOrigBd);
 
         //推送进度
-        haixinService.syncRenderStatus(sceneOrigBd.getId(), 0, modelingScheduleService.sumExpectedTime() + sceneOrigBd.getExpectedTime(), null);
+        //这里现预设一个预估时间,待真正入队,会有任务合并,进行预估时间修正
+        int sumExpectedTime = modelingScheduleService.sumExpectedTime() + sceneOrigBd.getExpectedTime();
+        haixinService.syncRenderStatus_v230(sceneOrigBd.getTaskNo(), HaixinRenderStatus.WAIT.getCode(), sumExpectedTime, null);
 
         return ResultData.ok();
     }
@@ -199,26 +202,20 @@ public class HaixinServiceImpl implements IHaixinService {
         haixinClient.postJson(url, params);
     }
 
-    @Autowired
-    private IModelingScheduleService modelingScheduleService;
-
     //v2.3.0版本海鑫计算进度通知 (-1-处理失败,0-等待中,1-排队中,2-计算中,3-计算成功,4-计算失败)
     @Override
-    public void syncRenderStatus_v230(long modelingScheduleId, Integer status, Integer expectedTime, String failReason) {
-        if(!haixinSyncRenderStatus){
-            return;
-        }
-        ModelingSchedule modelingSchedule = modelingScheduleService.getById(modelingScheduleId);
-        if(!"hx".equals(modelingSchedule.getSource())){//只有海鑫推送过来的才需要回推状态和预估时间
-            return;
-        }
+    public void syncRenderStatus_v230(String taskNo , Integer status, Integer expectedTime, String failReason) {
 
-        SceneOrigBd sceneOrigBd = sceneOrigBdService.getOne(new LambdaQueryWrapper<SceneOrigBd>().eq(SceneOrigBd::getTaskNo, modelingSchedule.getBizId()));
+        SceneOrigBd sceneOrigBd = sceneOrigBdService.getOne(new LambdaQueryWrapper<SceneOrigBd>().eq(SceneOrigBd::getTaskNo, taskNo));
         sceneOrigBd.setStatus(status);
         sceneOrigBd.setReason(failReason);
         sceneOrigBd.setUpdateTime(null);
         sceneOrigBdService.updateById(sceneOrigBd);
 
+        if(!haixinSyncRenderStatus){
+            return;
+        }
+
         String num = null;
         ScenePlus scenePlus = scenePlusService.getByTaskId(sceneOrigBd.getTaskId());
         if(scenePlus != null){

+ 92 - 71
src/main/java/com/fdkankan/contro/service/impl/JmgaServiceImpl.java

@@ -258,6 +258,11 @@ public class JmgaServiceImpl implements IJmgaService {
         throw new BusinessException(ErrorCode.FAILURE_CODE_4001.code(), ErrorCode.FAILURE_CODE_4001.formatMessage(fileName));
     }
 
+    @Autowired
+    private IGaSceneBuildService gaSceneBuildService;
+    @Autowired
+    private ISceneOrigManageService sceneOrigManageService;
+
     @Override
     public void uploadScene(UploadSceneOrigParamVo param) throws Exception {
 
@@ -275,73 +280,89 @@ public class JmgaServiceImpl implements IJmgaService {
         CameraDetail cameraDetail = null;
         String sceneNum = null;
         if(param.getSourceType().equals("orig")){//原始资源
-            String dataFdageStr = com.fdkankan.contro.util.ZipUtil.readUtf8(zipDir + zipName, "data.fdage");
-            if(StrUtil.isEmpty(dataFdageStr) || !JSONUtil.isJson(dataFdageStr)){
-                throw new BusinessException(60027, "data.fdage文件数据异常");
-            }
-            JSONObject dataFdage = JSON.parseObject(dataFdageStr);
-            String snCode = dataFdage.getJSONObject("cam").getString("uuid");
-            String uuidTime = dataFdage.getString("uuidtime");
-            String uniCode = snCode + "_" + uuidTime;
-            int camType = dataFdage.getJSONObject("cam").getIntValue("type");
-            Map<String, Object> instorage = cameraService.instorage(camType, snCode);
-            cameraDetail = (CameraDetail) instorage.get("cameraDetail");
-
-            ScenePlus scenePlus = scenePlusService.getByFileId(uniCode);
-            if(scenePlus == null){
-                scenePlus = new ScenePlus();
-                sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getType());
-                scenePlus.setNum(sceneNum);
-                scenePlus.setCameraId(cameraDetail.getCameraId());
-                scenePlus.setSceneSource(SceneSourceUtil.getSceneSourceByCamType(cameraDetail.getType()));
-            }else{
-                if(scenePlus.getSceneStatus() == SceneStatus.wait.code()){
-                    throw new BusinessException(ErrorCode.FAILURE_CODE_5033);
+            try {
+                String dataFdageStr = com.fdkankan.contro.util.ZipUtil.readUtf8(zipDir + zipName, "data.fdage");
+                if(StrUtil.isEmpty(dataFdageStr) || !JSONUtil.isJson(dataFdageStr)){
+                    throw new BusinessException(60027, "data.fdage文件数据异常");
                 }
-                sceneNum = scenePlus.getNum();
+                JSONObject dataFdage = JSON.parseObject(dataFdageStr);
+                String snCode = dataFdage.getJSONObject("cam").getString("uuid");
+                String uuidTime = dataFdage.getString("uuidtime");
+                String uniCode = snCode + "_" + uuidTime;
+
+                SceneOrigManage sceneOrigManage = new SceneOrigManage();
+                sceneOrigManage.setTaskNo(UUID.randomUUID().toString());
+                sceneOrigManage.setUnicode(uniCode);
+                sceneOrigManage.setUserId(param.getUserId());
+                sceneOrigManage.setFilePath(param.getFilePath());
+                sceneOrigManageService.save(sceneOrigManage);
+                gaSceneBuildService.noticeBuild(dataFdage, "manage", null, null, sceneOrigManage);
+            }finally {
+                FileUtil.del(zipDir + zipName);
             }
-            scenePlus.setTitle(dataFdage.getString("name"));
-            scenePlus.setUserId(user.getId());
-            scenePlus.setUpdateTime(null);
-            scenePlus.setSceneStatus(SceneStatus.wait.code());
-            scenePlusService.saveOrUpdate(scenePlus);
 
-            ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
-            if(scenePlusExt == null){
-                scenePlusExt = new ScenePlusExt();
-                scenePlusExt.setPlusId(scenePlus.getId());
-                scenePlusExt.setWebSite("/" + sceneProNewUrl + scenePlus.getNum());
-                String fileId = sceneFileBuildService.getFileId(snCode, uniCode);
-                scenePlusExt.setDataSource(ConstantFilePath.BUILD_MODEL_PATH + snCode + File.separator + fileId + File.separator + uniCode);
-                if(ModelKind.THREE_D_TILE.code().equals(modelKind)
-                        && CollUtil.isNotEmpty(sdTilesSceneSourceList)
-                        && sdTilesSceneSourceList.contains(scenePlus.getSceneSource())){
-                    scenePlusExt.setModelKind(modelKind);
-                }
-            }
-            JSONArray points = dataFdage.getJSONArray("points");
-            scenePlusExt.setShootCount(points.size());
-            scenePlusExtService.saveOrUpdate(scenePlusExt);
-
-            SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
-            if(sceneEditInfo == null){
-                sceneEditInfo = new SceneEditInfo();
-                sceneEditInfo.setScenePlusId(scenePlus.getId());
-                sceneEditInfoService.save(sceneEditInfo);
-            }
-            SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfo.getId());
-            if(sceneEditInfoExt == null){
-                sceneEditInfoExt = new SceneEditInfoExt();
-                sceneEditInfoExt.setScenePlusId(scenePlus.getId());
-                sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
-                sceneEditInfoExtService.save(sceneEditInfoExt);
-            }
-            SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
-            if(sceneEditControls == null){
-                sceneEditControls = new SceneEditControls();
-                sceneEditControls.setEditInfoId(sceneEditInfo.getId());
-                sceneEditControlsService.save(sceneEditControls);
-            }
+//            String snCode = dataFdage.getJSONObject("cam").getString("uuid");
+//            String uuidTime = dataFdage.getString("uuidtime");
+//            String uniCode = snCode + "_" + uuidTime;
+//            int camType = dataFdage.getJSONObject("cam").getIntValue("type");
+//            Map<String, Object> instorage = cameraService.instorage(camType, snCode);
+//            cameraDetail = (CameraDetail) instorage.get("cameraDetail");
+//
+//            ScenePlus scenePlus = scenePlusService.getByFileId(uniCode);
+//            if(scenePlus == null){
+//                scenePlus = new ScenePlus();
+//                sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getType());
+//                scenePlus.setNum(sceneNum);
+//                scenePlus.setCameraId(cameraDetail.getCameraId());
+//                scenePlus.setSceneSource(SceneSourceUtil.getSceneSourceByCamType(cameraDetail.getType()));
+//            }else{
+//                if(scenePlus.getSceneStatus() == SceneStatus.wait.code()){
+//                    throw new BusinessException(ErrorCode.FAILURE_CODE_5033);
+//                }
+//                sceneNum = scenePlus.getNum();
+//            }
+//            scenePlus.setTitle(dataFdage.getString("name"));
+//            scenePlus.setUserId(user.getId());
+//            scenePlus.setUpdateTime(null);
+//            scenePlus.setSceneStatus(SceneStatus.wait.code());
+//            scenePlusService.saveOrUpdate(scenePlus);
+//
+//            ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
+//            if(scenePlusExt == null){
+//                scenePlusExt = new ScenePlusExt();
+//                scenePlusExt.setPlusId(scenePlus.getId());
+//                scenePlusExt.setWebSite("/" + sceneProNewUrl + scenePlus.getNum());
+//                String fileId = sceneFileBuildService.getFileId(snCode, uniCode);
+//                scenePlusExt.setDataSource(ConstantFilePath.BUILD_MODEL_PATH + snCode + File.separator + fileId + File.separator + uniCode);
+//                if(ModelKind.THREE_D_TILE.code().equals(modelKind)
+//                        && CollUtil.isNotEmpty(sdTilesSceneSourceList)
+//                        && sdTilesSceneSourceList.contains(scenePlus.getSceneSource())){
+//                    scenePlusExt.setModelKind(modelKind);
+//                }
+//            }
+//            JSONArray points = dataFdage.getJSONArray("points");
+//            scenePlusExt.setShootCount(points.size());
+//            scenePlusExtService.saveOrUpdate(scenePlusExt);
+//
+//            SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
+//            if(sceneEditInfo == null){
+//                sceneEditInfo = new SceneEditInfo();
+//                sceneEditInfo.setScenePlusId(scenePlus.getId());
+//                sceneEditInfoService.save(sceneEditInfo);
+//            }
+//            SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfo.getId());
+//            if(sceneEditInfoExt == null){
+//                sceneEditInfoExt = new SceneEditInfoExt();
+//                sceneEditInfoExt.setScenePlusId(scenePlus.getId());
+//                sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
+//                sceneEditInfoExtService.save(sceneEditInfoExt);
+//            }
+//            SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
+//            if(sceneEditControls == null){
+//                sceneEditControls = new SceneEditControls();
+//                sceneEditControls.setEditInfoId(sceneEditInfo.getId());
+//                sceneEditControlsService.save(sceneEditControls);
+//            }
 
         }else{//离线包
             String sceneJsonStr = com.fdkankan.contro.util.ZipUtil.readUtf8(zipDir + zipName, "scene.json");
@@ -381,14 +402,14 @@ public class JmgaServiceImpl implements IJmgaService {
             String fileId = sceneFileBuildService.getFileId(snCode, uniCode);
             scenePlusExt.setDataSource(ConstantFilePath.BUILD_MODEL_PATH + snCode + File.separator + fileId + File.separator + uniCode);
             scenePlusExtService.save(scenePlusExt);
-        }
 
-        //发mq做异步处理
-        JSONObject content = new JSONObject();
-        content.put("zipPath", zipDir + zipName);
-        content.put("num", sceneNum);
-        content.put("sourceType", param.getSourceType());
-        mqProducer.sendByWorkQueue("manage-upload-scene", content);
+            //发mq做异步处理
+            JSONObject content = new JSONObject();
+            content.put("zipPath", zipDir + zipName);
+            content.put("num", sceneNum);
+            content.put("sourceType", param.getSourceType());
+            mqProducer.sendByWorkQueue("manage-upload-scene", content);
+        }
     }
 
 

+ 5 - 5
src/main/java/com/fdkankan/contro/service/impl/MjServiceImpl.java

@@ -45,12 +45,12 @@ public class MjServiceImpl implements MjService {
         if (CollUtil.isEmpty(list)) {
             return;
         }
-        for (SceneOrigBd v : list) {
+        for (SceneOrigBd sceneOrigBd : list) {
             String uuid = UUID.randomUUID().toString();
-            String fileUrl = v.getFileUrl();
+            String fileUrl = sceneOrigBd.getFileUrl();
             String zipName = FileUtil.getName(fileUrl);
             String zipDir = ConstantFilePath.BUILD_MODEL_PATH + "bd/" + uuid + "/";
-            String lockKey = "sceneOrigBd:taskId:" + v.getTaskId();
+            String lockKey = "sceneOrigBd:taskId:" + sceneOrigBd.getTaskId();
             //因为海鑫的业务需求是同一个场景,有可能短时间推过来几个压缩包,为了业务完整性,需要把taskId锁住,让任务是按照推送顺序推入到调度表中
             boolean lock = redisLockUtil.lock(lockKey, 10 * 60);//锁10分钟
             try {
@@ -67,9 +67,9 @@ public class MjServiceImpl implements MjService {
                 JSONObject dataFdage = JSON.parseObject(dataFdageStr);
 
                 //调用通知计算
-                gaSceneBuildService.noticeBuild(dataFdage, "hx", v);
+                gaSceneBuildService.noticeBuild(dataFdage, "hx", sceneOrigBd, null, null);
             } catch (Exception e) {
-                haixinService.syncRenderStatus(v.getId(), -1, 0, ExceptionUtil.stacktraceToString(e, 5000));
+                haixinService.syncRenderStatus(sceneOrigBd.getId(), -1, 0, ExceptionUtil.stacktraceToString(e, 5000));
             }finally {
                 redisLockUtil.unlock(lockKey);
                 //删除压缩包

+ 7 - 5
src/main/java/com/fdkankan/contro/service/impl/ModelingScheduleServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.contro.constant.BuildSceneCostTime;
 import com.fdkankan.contro.constant.TaskStatus;
 import com.fdkankan.contro.entity.ModelingSchedule;
+import com.fdkankan.contro.entity.OrigFileUploadBatch;
 import com.fdkankan.contro.entity.SceneOrigBd;
 import com.fdkankan.contro.mapper.IModelingScheduleMapper;
 import com.fdkankan.contro.mq.service.IModelingScheduleService;
@@ -39,7 +40,7 @@ public class ModelingScheduleServiceImpl extends ServiceImpl<IModelingScheduleMa
 
 
     @Override
-    public void pushTask(String source, JSONObject dataFdage, String num, SceneOrigBd sceneOrigBd) {
+    public ModelingSchedule pushTask(String source, JSONObject dataFdage, String num, SceneOrigBd sceneOrigBd, OrigFileUploadBatch origFileUploadBatch) {
 
         JSONObject camJson = dataFdage.getJSONObject("cam");
         String snCode = camJson.getString("uuid");
@@ -57,6 +58,8 @@ public class ModelingScheduleServiceImpl extends ServiceImpl<IModelingScheduleMa
         String bizId = null;
         if("hx".equals(source)){
             bizId = sceneOrigBd.getTaskNo();
+        }else if ("jm".equals(source)){
+            bizId = origFileUploadBatch.getBatchId();
         }
         task.setBizId(bizId);
         task.setExpectedTime(this.getExpectedTime(task.getShootCount()));
@@ -73,9 +76,7 @@ public class ModelingScheduleServiceImpl extends ServiceImpl<IModelingScheduleMa
             this.updateBatchById(list);
         }
 
-        //推送海鑫通知
-        haixinService.syncRenderStatus_v230(task.getId(), 1, this.getExpectedTime(task), null);
-
+        return task;
     }
 
     @Override
@@ -89,7 +90,8 @@ public class ModelingScheduleServiceImpl extends ServiceImpl<IModelingScheduleMa
         return BuildSceneCostTime.WAIT_TIME + callTime + preTime + postTime;
     }
 
-    private Integer getExpectedTime(ModelingSchedule modelingSchedule){
+    @Override
+    public Integer getExpectedTime(ModelingSchedule modelingSchedule){
         if(modelingSchedule.getExpectedTime() == null){
             return null;
         }

+ 8 - 0
src/main/java/com/fdkankan/contro/service/impl/OrigFileUploadBatchServiceImpl.java

@@ -61,4 +61,12 @@ public class OrigFileUploadBatchServiceImpl extends ServiceImpl<IOrigFileUploadB
         }
         return this.list(wrapper);
     }
+
+    @Override
+    public void updateStatausById(long id, int status) {
+        OrigFileUploadBatch batch = new OrigFileUploadBatch();
+        batch.setId(id);
+        batch.setStatus(status);
+        this.updateById(batch);
+    }
 }

+ 24 - 30
src/main/java/com/fdkankan/contro/service/impl/SceneFileBuildServiceImpl.java

@@ -23,10 +23,7 @@ import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.*;
 import com.fdkankan.contro.bean.SendCallAlgorithmDetail;
 import com.fdkankan.contro.common.Result;
-import com.fdkankan.contro.constant.ApiConstant;
-import com.fdkankan.contro.constant.ModelingControlRespCode;
-import com.fdkankan.contro.constant.RedisConstants;
-import com.fdkankan.contro.constant.RedisKeyExt;
+import com.fdkankan.contro.constant.*;
 import com.fdkankan.contro.entity.*;
 import com.fdkankan.contro.enums.CameraTypeEnum;
 import com.fdkankan.contro.httpclient.MyClient;
@@ -87,12 +84,6 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
     private static final String SPLICE = "#";
 
-    private static final String sendCallAlgorithmPath = "/mnt/sendCallAlgorithm/";
-
-    private static final String zipPassword = "a3ad34136de359536af553f9e7f3cefd";
-
-    private static final String URL_ADD_UCENTER_USER = "/service/manage/inner/addUcenterUser";
-
     @Value("${scene.pro.new.url}")
     private String sceneProNewUrl;
 
@@ -230,6 +221,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     private ISceneOrigBdService sceneOrigBdService;
     @Autowired
     private UploadShootingService uploadShootingService;
+    @Autowired
+    private IGaSceneBuildService gaSceneBuildService;
 
     @Override
     public SceneFileBuild findByFileId(String fileId) {
@@ -1712,7 +1705,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         if(StrUtil.isEmpty(batchId)){
             OrigFileUploadBatch condition = new OrigFileUploadBatch();
             condition.setUuid(uuid);
-            condition.setStatus(0);
+            condition.setStatus(JmUploadStatus.UPLOAD_ING.getCode());
             OrigFileUploadBatch origFileUploadBatch = origFileUploadBatchService.getByCondition(condition);
             if(Objects.isNull(origFileUploadBatch)){
                 batchId = redisUtil.get("single:upload:uuid:" + uuid);
@@ -1722,6 +1715,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                     origFileUploadBatch = new OrigFileUploadBatch();
                     origFileUploadBatch.setUuid(uuid);
                     origFileUploadBatch.setBatchId(batchId);
+                    origFileUploadBatch.setStatus(JmUploadStatus.UPLOAD_ING.getCode());
                     origFileUploadBatchService.save(origFileUploadBatch);
                 }
             }
@@ -1740,13 +1734,13 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         }
 
         if(fileName.equals("config.json")){
-            HttpUtilExt.downloadFileAndCheck(filePath, sendCallAlgorithmPath.concat(uuid).concat("/config.json"), 300000);
+            HttpUtilExt.downloadFileAndCheck(filePath, FilePathConstant.SEND_CALL_ALGORITHM_PATH.concat(uuid).concat("/config.json"), 300000);
         }
         if(fileName.equals("data.fdage")){
-            HttpUtilExt.downloadFileAndCheck(filePath, sendCallAlgorithmPath.concat(uuid).concat("/data.fdage"), 300000);
+            HttpUtilExt.downloadFileAndCheck(filePath, FilePathConstant.SEND_CALL_ALGORITHM_PATH.concat(uuid).concat("/data.fdage"), 300000);
         }
         if(fileName.equals("scene_up_data.txt")){
-            HttpUtilExt.downloadFileAndCheck(filePath, sendCallAlgorithmPath.concat(uuid).concat("/scene_up_data.txt"), 300000);
+            HttpUtilExt.downloadFileAndCheck(filePath, FilePathConstant.SEND_CALL_ALGORITHM_PATH.concat(uuid).concat("/scene_up_data.txt"), 300000);
         }
 
         return ResultData.ok();
@@ -1766,7 +1760,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 String homePath = SceneUtil.getHomePath(dataSource);
                 fdageData = JSONObject.parseObject(fYunFileService.getFileContent(homePath + "data.fdage"));
             }else{
-                fdageData = JSONObject.parseObject(FileUtils.readFile(sendCallAlgorithmPath.concat(uuid).concat("/data.fdage")));
+                fdageData = JSONObject.parseObject(FileUtils.readFile(FilePathConstant.SEND_CALL_ALGORITHM_PATH.concat(uuid).concat("/data.fdage")));
             }
             int camType = fdageData.getJSONObject("cam").getIntValue("type");
             if(Objects.nonNull(bdId)){
@@ -1825,7 +1819,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 dataSource = ConstantFilePath.BUILD_MODEL_PATH.concat(subFolder);
                 log.info("dataSource 为:{}", dataSource);
 
-                JSONObject configJson = JSONObject.parseObject(FileUtils.readFile(sendCallAlgorithmPath.concat(uuid).concat("/config.json")));
+                JSONObject configJson = JSONObject.parseObject(FileUtils.readFile(FilePathConstant.SEND_CALL_ALGORITHM_PATH.concat(uuid).concat("/config.json")));
                 String folderName = configJson.getString("id");
                 ryId = configJson.getString("customUserId");
                 ryNo = configJson.getString("customUserName");
@@ -1906,37 +1900,37 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         return ResultData.ok();
     }
 
+
     @Override
     public ResultData noticeBuild(SendCallAlgorithmDetail detail) throws Exception {
         String unicode = detail.getUuid();
         log.info("通知计算,uuid:{} " + unicode);
 
-        String sceneNum = null;
         try {
-            String[] uuidArr = unicode.split("_");
-            JSONObject fdageData = JSONObject.parseObject(FileUtils.readFile(sendCallAlgorithmPath.concat(unicode).concat("/data.fdage")));
+            JSONObject fdageData = JSONObject.parseObject(FileUtils.readFile(FilePathConstant.SEND_CALL_ALGORITHM_PATH.concat(unicode).concat("/data.fdage")));
 
             OrigFileUploadBatch condition = new OrigFileUploadBatch();
             condition.setUuid(unicode);
-            condition.setStatus(0);
+            condition.setStatus(JmUploadStatus.UPLOAD_ING.getCode());
             OrigFileUploadBatch origFileUploadBatch = origFileUploadBatchService.getByCondition(condition);
-            origFileUploadBatch.setStatus(4);//修改为等待通知计算状态,由定时任务统一分配计算
+            origFileUploadBatch.setStatus(JmUploadStatus.SCHEDULE_ING.getCode());
+            origFileUploadBatch.setUpdateTime(null);
             origFileUploadBatchService.updateById(origFileUploadBatch);
             redisUtil.del("single:upload:uuid:" + unicode);//删除当前批次缓存,如果场景补拍上传就会创建一个新的批次号
 
-            buildScenePost(dataSource, fdageData, "V3", cameraType, sceneNum, camera, cameraDetail, rebuild, "", user, ryId, uploadType);
+            gaSceneBuildService.noticeBuild(fdageData, "jm", null, origFileUploadBatch, null);
 
-        }catch (Exception e){
-            log.error("通知计算报错,uuid:{}", uuid, e);
-            if(StrUtil.isNotEmpty(sceneNum)){
-
-                jmgaService.updateSceneFailAndZipLog(sceneNum, "通知计算报错");
+//            buildScenePost(dataSource, fdageData, "V3", cameraType, sceneNum, camera, cameraDetail, rebuild, "", user, ryId, uploadType);
 
-                String buildLogPath = String.format(UploadFilePath.BUILD_LOG_PATH, sceneNum);
+        }catch (Exception e){
+            log.error("通知计算报错,uuid:{}", unicode, e);
+            ScenePlus scenePlus = scenePlusService.getByFileId(unicode);
+            if(scenePlus != null){
+                jmgaService.updateSceneFailAndZipLog(scenePlus.getNum(), "通知计算报错");
+                String buildLogPath = String.format(UploadFilePath.BUILD_LOG_PATH, scenePlus.getNum());
                 String preLogPath = buildLogPath + "noticeBuild-error-" + DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN) + ".log";
                 fYunFileService.uploadFile(ExceptionUtil.stacktraceToString(e).getBytes(StandardCharsets.UTF_8), preLogPath);
-
-                jmgaService.sendStatus(sceneNum, "通知计算失败");
+                jmgaService.sendStatus(scenePlus.getNum(), "通知计算失败");
             }
 
             throw e;