Преглед изворни кода

Merge remote-tracking branch 'origin/master'

xiewenjie пре 3 година
родитељ
комит
941c2f1bad

+ 1 - 1
sxz-application/src/main/resources/application-dev.properties

@@ -37,7 +37,7 @@ spring.rabbitmq.port=5672
 spring.rabbitmq.username=guest
 spring.rabbitmq.password=guest
 # 开启重试
-spring.rabbitmq.listener.simple.retry.enabled=true
+spring.rabbitmq.listener.simple.retry.enabled=false
 # 重试次数,默认为3次
 spring.rabbitmq.listener.simple.retry.max-attempts=5
 ##mybatis-plus配置 ##

+ 1 - 1
sxz-application/src/main/resources/application-devuat.properties

@@ -37,7 +37,7 @@ spring.rabbitmq.port=5672
 spring.rabbitmq.username=uat
 spring.rabbitmq.password=uat
 # 开启重试
-spring.rabbitmq.listener.simple.retry.enabled=true
+spring.rabbitmq.listener.simple.retry.enabled=false
 # 重试次数,默认为3次
 spring.rabbitmq.listener.simple.retry.max-attempts=5
 ##mybatis-plus配置 ##

+ 1 - 1
sxz-application/src/main/resources/application-prod.properties

@@ -37,7 +37,7 @@ spring.rabbitmq.port=5672
 spring.rabbitmq.username=admin
 spring.rabbitmq.password=sxz12341
 # 开启重试
-spring.rabbitmq.listener.simple.retry.enabled=true
+spring.rabbitmq.listener.simple.retry.enabled=false
 # 重试次数,默认为3次
 spring.rabbitmq.listener.simple.retry.max-attempts=1
 ##mybatis-plus配置 ##

+ 2 - 2
sxz-application/src/main/resources/application-uat.properties

@@ -37,9 +37,9 @@ spring.rabbitmq.port=5672
 spring.rabbitmq.username=guest
 spring.rabbitmq.password=guest
 # 开启重试
-spring.rabbitmq.listener.simple.retry.enabled=true
+spring.rabbitmq.listener.simple.retry.enabled=false
 # 重试次数,默认为3次
-spring.rabbitmq.listener.simple.retry.max-attempts=5
+spring.rabbitmq.listener.simple.retry.max-attempts=1
 ##mybatis-plus配置 ##
 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl
 mybatis-plus.configuration.map-underscore-to-camel-case=true

+ 8 - 1
sxz-base/src/main/java/com/fdkk/sxz/util/CreateObjUtil.java

@@ -78,7 +78,14 @@ public class CreateObjUtil {
         CreateObjUtil.callshell(command);
         CreateObjUtil.log.info("oss下载文件完成,时间为:" + (System.currentTimeMillis() - start));
     }
-
+    //$bucket/$ossdir  $locathpath
+    public static void ossdownload(String bucket,String ossKey, String path) throws Exception {
+        String command = "bash /opt/ossutil/ossDownload.sh " + ossKey + " " + path + " " + bucket;
+        Long start = System.currentTimeMillis();
+        CreateObjUtil.log.info("开始oss下载文件:" + command);
+        CreateObjUtil.callshell(command);
+        CreateObjUtil.log.info("oss下载文件完成,时间为:" + (System.currentTimeMillis() - start));
+    }
     public static void panoCutaway(String fileUrl) throws Exception {
         String command = "krpanotools makepano -config=templates/vtour-multires.config " + fileUrl;
         Long start = System.currentTimeMillis();

+ 131 - 1
sxz-core/src/main/java/com/fdkk/sxz/other/listener/AddMoldelBuild.java

@@ -16,17 +16,25 @@ import com.fdkk.sxz.vo.request.RequestRenovationPartsDetailManager;
 import com.fdkk.sxz.webApi.service.*;
 import com.fdkk.sxz.webApi.service.custom.ICustomComponentService;
 import com.fdkk.sxz.webApi.service.custom.ICustomProductService;
+import com.rabbitmq.client.AMQP;
+import com.rabbitmq.client.Channel;
 import lombok.extern.slf4j.Slf4j;
+import lombok.val;
 import org.springframework.amqp.rabbit.annotation.RabbitHandler;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.amqp.support.AmqpHeaders;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.messaging.Message;
+import org.springframework.messaging.handler.annotation.Header;
 import org.springframework.stereotype.Component;
 
 import java.io.File;
+import java.io.IOException;
+import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -78,6 +86,128 @@ public class AddMoldelBuild {
         AddMoldelBuild.log.info("模型syncmodel:" + message.getPayload() + ",开始同步");
         syncModelHandler(message.getPayload());
 
+
+    }
+    @RabbitHandler
+    @RabbitListener(queues = TopicRabbitConfig.ADDMODELTO3D)
+    public void addmodelto3d(Message<RequestRenovationPartsDetailManager> message) {
+        AddMoldelBuild.log.info("模型addmodelto3d:" + message.getPayload() + ",开始同步");
+        try {
+            Thread.sleep(1000L*2);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        syncModel(message.getPayload());
+    }
+    public void syncModel(RequestRenovationPartsDetailManager param) {
+        String token = RedisUtil.tryLock(param.getFileId().toString() + "syncModel", 60 * 1000);
+        try {
+            if (token != null) {
+                ModelUploadEntity uploadEntity = modelUploadService.findByFileId(param.getFileId());
+                if (ObjectUtil.isNull(uploadEntity)){
+                String locationPath = buildPath + "upload/" + param.getFileId() + "/";
+                String objPath = locationPath + param.getFileId() + ".obj";
+                String previewPath = locationPath + param.getFileId() + "_preview.jpg";
+
+                CreateObjUtil.ossdownload("4d-tjw",param.getObjPath(),locationPath);
+                //下载OBJ。
+                 //先执行python-NewResortForOne脚本,处理obj文件,
+                AddMoldelBuild.log.info("NewResortForOne脚本处理ojb:");
+                CreateObjUtil.objHandle(objPath);
+
+                String glbPath = locationPath + param.getFileId() + ".glb";
+                log.info("obj转换成glb格式路径-{}", glbPath);
+                AddMoldelBuild.log.info("处理glb:objPath{} ,glbPath{}",objPath, glbPath);
+                CreateObjUtil.objToGlb(objPath, glbPath);
+                AddMoldelBuild.log.info("上传glb:");
+                uploadToOssUtil.uploadTo4dTjw(glbPath, "domain/eHome/furniture/models/" + param.getFileId() + ".glb");
+
+                uploadToOssUtil.downloadFileTo4dTjw(param.getImg().replace(prefix,""),previewPath);
+
+
+                RenovationPartsDetailEntity renovationPartsDetailEntity = new RenovationPartsDetailEntity();
+                BeanUtils.copyProperties(param, renovationPartsDetailEntity);
+                renovationPartsDetailEntity.setExamine(0);
+                renovationPartsDetailEntity.setName(param.getFileId());
+                renovationPartsDetailEntity.setPath(prefix + "domain/eHome/furniture/models/" + param.getFileId() + ".glb");
+                renovationPartsDetailEntity.setImg(param.getImg());
+                renovationPartsDetailEntity.setHighImg(param.getImg());
+                renovationPartsDetailEntity.setMviewStatus(1);
+                renovationPartsDetailEntity.setExamine(1);
+                renovationPartsDetailEntity.setExamineTime(new Date());
+                renovationPartsDetailEntity.setName(param.getFileId());
+                AddMoldelBuild.log.info("renovationPartsDetailEntity:");
+                Boolean saveFlag = renovationPartsDetailService.save(renovationPartsDetailEntity);
+                if (!saveFlag) {
+                    throw new RuntimeException(param.getFileId() + ":添加到模型库失败");
+
+                }
+                AddMoldelBuild.log.info("保存吸附方式:");
+                RenovationPartsAttachingEntity renovationPartsAttachingEntity = new RenovationPartsAttachingEntity();
+                if ("wall".equals(param.getAttachingType())) {
+                    renovationPartsAttachingEntity.setCeilAttaching(false);
+                    renovationPartsAttachingEntity.setWallAttaching(true);
+                    renovationPartsAttachingEntity.setFloorAttaching(false);
+                }
+
+                if ("ceil".equals(param.getAttachingType())) {
+                    renovationPartsAttachingEntity.setCeilAttaching(true);
+                    renovationPartsAttachingEntity.setWallAttaching(false);
+                    renovationPartsAttachingEntity.setFloorAttaching(false);
+                }
+
+                if ("floor".equals(param.getAttachingType())) {
+                    renovationPartsAttachingEntity.setCeilAttaching(false);
+                    renovationPartsAttachingEntity.setWallAttaching(false);
+                    renovationPartsAttachingEntity.setFloorAttaching(true);
+                }
+                renovationPartsAttachingEntity.setPartsDetailId(renovationPartsDetailEntity.getId());
+                renovationPartsAttachingService.save(renovationPartsAttachingEntity);
+                AddMoldelBuild.log.info("保存长宽高:");
+                if (param.getX() != null && param.getY() != null && param.getZ() != null) {
+                    RenovationPartsSizeEntity renovationPartsSizeEntity = new RenovationPartsSizeEntity();
+                    renovationPartsSizeEntity.setX(param.getX());
+                    renovationPartsSizeEntity.setY(param.getY());
+                    renovationPartsSizeEntity.setZ(param.getZ());
+                    renovationPartsSizeEntity.setPartsDetailId(renovationPartsDetailEntity.getId());
+                    renovationPartsSizeService.save(renovationPartsSizeEntity);
+                }
+
+
+
+                String messageStr = renovationPartsDetailEntity.getId() + ":;3:;" + objPath + ":;" + param.getFileId();
+                AddMoldelBuild.log.info("配件obj转换成mview格式");
+                Map<String, String> paramsMap = new HashMap<>();
+                paramsMap.put("uuid", param.getFileId());
+                paramsMap.put("inObj", objPath);
+                paramsMap.put("outFilePath", objPath.replace(".obj", ""));
+                paramsMap.put("resData", messageStr);
+                OkHttpUtils.httpPostForm(maxObjUrl + "toToolbag", paramsMap);
+                Thread.sleep(1000);
+
+
+                AddMoldelBuild.log.info("保存ModelUploadEntity:");
+                ModelUploadEntity modelUploadEntity = new ModelUploadEntity();
+                modelUploadEntity.setUserId(param.getUserId());
+                modelUploadEntity.setObjPath(objPath.replace(buildPath, ""));
+                modelUploadEntity.setAddStatus(2);
+                modelUploadEntity.setStatus(1);
+                modelUploadEntity.setFileType(1);
+                modelUploadEntity.setPartsDetailId(renovationPartsDetailEntity.getId());
+                modelUploadEntity.setFacesNum(param.getFacesNum());
+                modelUploadEntity.setObjSize(param.getObjSize());
+                modelUploadEntity.setThumPath(previewPath.replaceAll(buildPath, ""));
+                modelUploadService.save(modelUploadEntity);
+            }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            AddMoldelBuild.log.error("直接模型入库报错-{}", e.getMessage());
+        } finally {
+            if (token != null) {
+                RedisUtil.unlock(param.getFileId().toString(), token);
+            }
+        }
     }
 
     public void syncModelHandler(RequestRenovationPartsDetailManager param) {
@@ -122,7 +252,7 @@ public class AddMoldelBuild {
             }
         } catch (Exception e) {
             e.printStackTrace();
-            AddMoldelBuild.log.error("提交模型保存-{}", e.getMessage());
+            AddMoldelBuild.log.error("提交模型报错-{}", e.getMessage());
             if (ObjectUtil.isNotNull(modelUploadEntity)) {
                 modelUploadEntity.setAddStatus(-1);
                 modelUploadService.updateById(modelUploadEntity);

+ 13 - 0
sxz-core/src/main/java/com/fdkk/sxz/other/listener/RunBuild.java

@@ -202,6 +202,19 @@ public class RunBuild {
                             //抛出异常MQ重试
                             throw new RuntimeException("BuildMview转换失败" + fileId + ",-{}:");
                         }
+                    case "3":
+                        //普通模型
+                        RenovationPartsDetailEntity partsDetailServiceByIds = renovationPartsDetailService.findById(id);
+                        checkFlag = checkMviewFile(path, fileId, type);
+                        if (checkFlag) {
+                            //obj转换成glb格式
+                            partsDetailServiceByIds.setMviewPath(prefix + "domain/eHome/furniture/temp/" + fileId + ".fdage");
+                            partsDetailServiceByIds.setMviewStatus(2);
+                            renovationPartsDetailService.updateById(partsDetailServiceByIds);
+                        } else {
+                            partsDetailServiceByIds.setMviewStatus(-1);
+                            renovationPartsDetailService.updateById(partsDetailServiceByIds);
+                        }
                         break;
                 }
             } catch (Exception e) {

+ 10 - 2
sxz-core/src/main/java/com/fdkk/sxz/other/mq/TopicRabbitConfig.java

@@ -32,7 +32,8 @@ public class TopicRabbitConfig {
 
     //上传后提交模型
     public final static String ADDMODEL = "topic.addModel.dev";
-
+    //上传后提交模型3D端
+    public final static String ADDMODELTO3D = "topic.addmodelto3d.dev";
     //处理
     public final static String MVIEW = "delay.mview.dev";
 
@@ -92,6 +93,10 @@ public class TopicRabbitConfig {
     public Queue addModelQueue() {
         return new Queue(TopicRabbitConfig.ADDMODEL);
     }
+    @Bean
+    public Queue addmodelto3dQueue() {
+        return new Queue(TopicRabbitConfig.ADDMODELTO3D);
+    }
 
     //@Bean
     //public Queue modelCreatThumQueue() {
@@ -146,5 +151,8 @@ public class TopicRabbitConfig {
     Binding bindingExchangeMessage7() {
         return BindingBuilder.bind(addModelQueue()).to(exchange()).with(TopicRabbitConfig.ADDMODEL);
     }
-
+    @Bean
+    Binding bindingExchangeMessage8() {
+        return BindingBuilder.bind(addmodelto3dQueue()).to(exchange()).with(TopicRabbitConfig.ADDMODELTO3D);
+    }
 }

+ 15 - 15
sxz-core/src/main/java/com/fdkk/sxz/webApi/controller/DataBucketController.java

@@ -99,21 +99,21 @@ public class DataBucketController {
             uploadToOssUtil.uploadTo4dTjw(res.toJSONString().getBytes(), FileName);
             DataBucketController.log.info("上传结束,上传版本号={}", version);
             //step 3 返回json地址
-            if (uploadToOssUtil.existFileToOSS(FileName, "4d-tjw")) {
-                res.forEach(a -> {
-                    JSONObject json = (JSONObject) JSONObject.toJSON(a);
-                    if (json.containsKey("escFilePath")) {
-                        String escFilePath = json.getString("escFilePath");
-                        TimeInterval timer = DateUtil.timer();
-                        timer.start();
-                        List<String> cmdRes = RuntimeUtil.execForLines("bash /home/uploadToEsc.sh ", escFilePath);
-                        DataBucketController.log.info("上传耗时{}", timer.intervalMs());
-                        cmdRes.forEach(c -> {
-                            DataBucketController.log.info("上传文件至ESC{}", c);
-                        });
-                    }
-                });
-            }
+//            if (uploadToOssUtil.existFileToOSS(FileName, "4d-tjw")) {
+//                res.forEach(a -> {
+//                    JSONObject json = (JSONObject) JSONObject.toJSON(a);
+//                    if (json.containsKey("escFilePath")) {
+//                        String escFilePath = json.getString("escFilePath");
+//                        TimeInterval timer = DateUtil.timer();
+//                        timer.start();
+//                        List<String> cmdRes = RuntimeUtil.execForLines("bash /home/uploadToEsc.sh ", escFilePath);
+//                        DataBucketController.log.info("上传耗时{}", timer.intervalMs());
+//                        cmdRes.forEach(c -> {
+//                            DataBucketController.log.info("上传文件至ESC{}", c);
+//                        });
+//                    }
+//                });
+//            }
             ////step 4 发送到任务处理
             //String resultData = OkHttpUtils.httpGet(mainUrl + "/change/data/dataPush/" + version + "/type/" + param.getType());
             //JSONObject resultJson = JSON.parseObject(resultData)    ;

+ 14 - 11
sxz-core/src/main/java/com/fdkk/sxz/webApi/controller/ManagerController.java

@@ -615,19 +615,22 @@ public class ManagerController extends BaseController {
     @NoAuthentication
     @AroundLog(name = "新增模型数据")
     public Result addModelDetail(@RequestBody RequestRenovationPartsDetailManager param) throws Exception {
-        if (param.getModelUploadId() == null) {
-            return Result.failure(CodeConstant.FAILURE_CODE_3001, CodeConstant.FAILURE_MSG_3001);
-        }
+        Message message = MessageBuilder.withPayload(param).build();
+        if (param.getQueryType()!=null&&param.getQueryType()==3){
+            rabbitTemplate.convertAndSend(TopicRabbitConfig.TOPICE, TopicRabbitConfig.ADDMODELTO3D, message);
+        }else {
+            if (param.getModelUploadId() == null) {
+                return Result.failure(CodeConstant.FAILURE_CODE_3001, CodeConstant.FAILURE_MSG_3001);
+            }
 
-        ModelUploadEntity modelUploadEntity = modelUploadService.findById(param.getModelUploadId());
-        if (modelUploadEntity == null) {
-            return Result.failure(CodeConstant.FAILURE_CODE_4009, CodeConstant.FAILURE_MSG_4009);
+            ModelUploadEntity modelUploadEntity = modelUploadService.findById(param.getModelUploadId());
+            if (modelUploadEntity == null) {
+                return Result.failure(CodeConstant.FAILURE_CODE_4009, CodeConstant.FAILURE_MSG_4009);
+            }
+            rabbitTemplate.convertAndSend(TopicRabbitConfig.TOPICE, TopicRabbitConfig.ADDMODEL, message);
+            modelUploadEntity.setAddStatus(1);
+            modelUploadService.updateById(modelUploadEntity);
         }
-
-        Message message = MessageBuilder.withPayload(param).build();
-        rabbitTemplate.convertAndSend(TopicRabbitConfig.TOPICE, TopicRabbitConfig.ADDMODEL, message);
-        modelUploadEntity.setAddStatus(1);
-        modelUploadService.updateById(modelUploadEntity);
         //响应过快,前端未刷新
         return success();
     }

+ 2 - 2
sxz-core/src/main/java/com/fdkk/sxz/webApi/service/impl/RenovationPartsDetailServiceImpl.java

@@ -182,8 +182,8 @@ public class RenovationPartsDetailServiceImpl extends BaseServiceImpl<IRenovatio
                                 ModelUploadEntity uploadModel = JSONObject.toJavaObject(uploadModelJson, ModelUploadEntity.class);
                                 ModelUploadEntity uploadModelS = modelUploadService.findByFileId(uploadModel.getFileId());
                                 if (ObjectUtil.isNull(uploadModelS)) {
-                                    uploadModel.setPartsDetailId(partsDetail.getId());
-                                    uploadModel.setUserId(371L);
+                                    uploadModel.setPartsDetailId(entity.getId());
+                                    uploadModel.setUserId(226L);
                                     boolean saveAttaching = modelUploadService.save(uploadModel);
                                     if (saveAttaching && uploadModelJson.containsKey("cache")) {
                                         JSONObject cache = uploadModelJson.getJSONObject("cache");

+ 9 - 0
sxz-modules/src/main/java/com/fdkk/sxz/entity/RenovationPartsDetailEntity.java

@@ -2,6 +2,7 @@ package com.fdkk.sxz.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.Date;
@@ -85,4 +86,12 @@ public class RenovationPartsDetailEntity extends BaseEntity {
      */
     @TableField("bird_path")
     private String birdPath;
+
+
+    @ApiModelProperty(value = "线下版本使用-style", name = "style")
+    @TableField("style")
+    private Integer style;
+    @ApiModelProperty(value = "线下版本使用-dlc", name = "dlc")
+    @TableField("dlc")
+    private String dlc;
 }

+ 22 - 1
sxz-modules/src/main/java/com/fdkk/sxz/vo/request/RequestRenovationPartsDetailManager.java

@@ -88,6 +88,27 @@ public class RequestRenovationPartsDetailManager implements Serializable {
     private List<Long> ids;
 
 
-    @ApiModelProperty(value = "1批量 2单独", name = "queryType")
+    @ApiModelProperty(value = "1批量 2单独 3,渲染端直接推送", name = "queryType")
     private Integer queryType;
+
+    @ApiModelProperty(value = "鸟瞰图", name = "birdPath")
+    private String birdPath;
+
+    @ApiModelProperty(value = "OBJ路径", name = "objPath")
+    private String objPath;
+
+    @ApiModelProperty(value = "OBJ路径", name = "fileId")
+    private String fileId;
+
+    @ApiModelProperty(value = "用户id", name = "fileId")
+    private Long userId;
+
+    @ApiModelProperty(value = "原始模型面数", name = "obj_size")
+    private Integer facesNum;
+    @ApiModelProperty(value = "最终obj模型大小", name = "obj_size")
+    private Integer objSize;
+    @ApiModelProperty(value = "线下版本使用-style", name = "style")
+    private Integer style;
+    @ApiModelProperty(value = "线下版本使用-dlc", name = "dlc")
+    private String dlc;
 }