Prechádzať zdrojové kódy

修改mview生成方式

xiewenjie 3 rokov pred
rodič
commit
bea30d612c

+ 99 - 5
sxz-core/src/main/java/com/fdkk/sxz/other/listener/RunBuild.java

@@ -3,6 +3,7 @@ package com.fdkk.sxz.other.listener;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.file.FileReader;
+import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
@@ -13,6 +14,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fdkk.sxz.constant.ConstantFileName;
 import com.fdkk.sxz.constant.ConstantFilePath;
 import com.fdkk.sxz.entity.*;
+import com.fdkk.sxz.entity.custuom.CustomComponentEntity;
 import com.fdkk.sxz.other.mq.TopicRabbitConfig;
 import com.fdkk.sxz.util.*;
 import com.fdkk.sxz.webApi.service.*;
@@ -56,7 +58,8 @@ public class RunBuild {
 
     @Autowired
     private ICustomComponentService customComponentService;
-
+    @Autowired
+    private IRenovationPartsDetailService renovationPartsDetailService;
     @Value("${server.file.location}")
     private String buildPath;
 
@@ -78,6 +81,9 @@ public class RunBuild {
     @Autowired
     private RedisUtil redisUtil;
 
+    @Value("${prefix.ali}")
+    private String prefix;
+
     @RabbitHandler
     @RabbitListener(queues = TopicRabbitConfig.CHANGE)
     public void change(String str) {
@@ -98,12 +104,99 @@ public class RunBuild {
     }
 
     @RabbitHandler
-    @RabbitListener(queues = TopicRabbitConfig.MODEL)
+    @RabbitListener(queues = TopicRabbitConfig.MODEL, concurrency = "2")
     public void model(String str) {
         RunBuild.log.info("模型转换:" + str);
         modelBuild(str);
     }
 
+    @RabbitHandler
+    @RabbitListener(queues = TopicRabbitConfig.MVIEW, concurrency = "5")
+    public void modelMviewPath(String str) {
+        RunBuild.log.info("处理Mview:" + str);
+        modelBuildMviewPath(str);
+    }
+
+    private void modelBuildMviewPath(String str) {
+        String[] datas = str.split(":;");
+        String id = datas[0];
+        String type = datas[1];
+        String path = datas[2];
+        String fileId = datas[3];
+        boolean checkFlag = false;
+        String token = RedisUtil.tryLock("BuildMview:" + fileId, 60 * 60 * 1000);
+        if (token != null) {
+            RunBuild.log.info("暂无的fileId:" + fileId + "消费,继续执行处理逻辑");
+            try {
+                switch (type) {
+                    case "1":
+                        //普通模型
+                        RenovationPartsDetailEntity partsDetailServiceById = renovationPartsDetailService.findById(id);
+                        checkFlag = checkMviewFile(path, fileId, type);
+                        if (checkFlag) {
+                            partsDetailServiceById.setMviewPath(prefix + "domain/eHome/furniture/temp/" + fileId + ".mview");
+                            partsDetailServiceById.setMviewStatus(2);
+                            renovationPartsDetailService.updateById(partsDetailServiceById);
+                        } else {
+                            partsDetailServiceById.setMviewStatus(-1);
+                            renovationPartsDetailService.updateById(partsDetailServiceById);
+                        }
+                    case "2":
+                        //定制模型
+                        CustomComponentEntity componentServiceById = customComponentService.findById(id);
+                        checkFlag = checkMviewFile(path, fileId, type);
+                        if (checkFlag) {
+                            componentServiceById.setMviewPath(prefix + "domain/eHome/furniture/models/" + fileId + ".mview");
+                            componentServiceById.setMviewStatus(2);
+                            customComponentService.updateById(componentServiceById);
+                            //抛出异常MQ重试
+                            throw new RuntimeException("BuildMview转换失败" + fileId + ",-{}:");
+                        } else {
+                            componentServiceById.setMviewStatus(-1);
+                            customComponentService.updateById(componentServiceById);
+                            //抛出异常MQ重试
+                            throw new RuntimeException("BuildMview转换失败" + fileId + ",-{}:");
+                        }
+                }
+            } catch (Exception e) {
+                RunBuild.log.info("BuildMview转换失败,{}", e.getMessage());
+                throw new RuntimeException("BuildMview转换失败" + fileId + ",-{}:", e);
+            } finally {
+                if (token != null) {
+                    RedisUtil.unlock("BuildMview:" + fileId, token);
+                }
+            }
+        }
+
+    }
+
+    private boolean checkMviewFile(String path, String fileId, String type) {
+        File file = FileUtil.file(path);
+        if (FileUtil.exist(file)) {
+            return true;
+        } else {
+            int count = 20;
+            boolean flag = true;
+            while (flag) {
+                if (FileUtil.exist(path)) {
+                    RunBuild.log.info("BuildMview文件存在{}", fileId);
+                    if (type.equals("1")) {
+                        uploadToOssUtil.uploadTo4dTjw(path, "domain/eHome/furniture/models/" + fileId + ".mview");
+                    } else {
+                        uploadToOssUtil.uploadTo4dTjw(path, "domain/eHome/furniture/temp/" + fileId + ".mview");
+                    }
+                    flag = false;
+                } else {
+                    ThreadUtil.sleep(1000);
+                }
+                if (count <= 0) {
+                    break;
+                }
+                count -= 1;
+            }
+        }
+        return false;
+    }
 
     /**
      * 场景渲染
@@ -429,7 +522,8 @@ public class RunBuild {
         }
 
         RunBuild.log.info("vrnum-{}, txt转换dam,开始时间-{}", vrNum, new Date());
-        CreateObjUtil.convertTxtToDam(path + File.separator + "results" + File.separator + "modeldata.txt", path + File.separator + "results" + File.separator + ConstantFileName.modelUUID + "_50k" +
+        CreateObjUtil.convertTxtToDam(path + File.separator + "results" + File.separator + "modeldata.txt", path + File.separator + "results" + File.separator + ConstantFileName.modelUUID +
+                "_50k" +
                 ".dam");
         RunBuild.log.info("vrnum-{}, txt转换dam,结束时间-{}", vrNum, new Date());
 
@@ -697,7 +791,6 @@ public class RunBuild {
         //上锁保证只有一个在消费,加锁一个钟,成功消费就解锁了
         String token = RedisUtil.tryLock(fileId, 60 * 60 * 1000);
         if (token != null) {
-            RunBuild.log.info("已有同样的fileId:" + fileId + ",正在消费了");
             RunBuild.log.info("暂无的fileId:" + fileId + "消费,继续执行处理逻辑");
             try {
                 String path = buildPath + "upload";
@@ -1253,7 +1346,8 @@ public class RunBuild {
             checkExaggerateSurace(jsonObject, filePath, fileId, modelId, taskType, uploadType);
             if (ObjectUtil.isNotNull(uploadEntity)) {
                 jsonObject.put("name", uploadEntity.getFileId() + "#" + fileId);
-                uploadToOssUtil.downloadFileTo4dTjw("domain/eHome/furniture/ue4data/" + uploadEntity.getFileId() + "/" + fileId + "/" + fileId + "_preview.jpg", filePath + fileId + "_preview.jpg");
+                uploadToOssUtil.downloadFileTo4dTjw("domain/eHome/furniture/ue4data/" + uploadEntity.getFileId() + "/" + fileId + "/" + fileId + "_preview.jpg", filePath + fileId + "_preview" +
+                        ".jpg");
 
             } else {
 

+ 6 - 3
sxz-core/src/main/java/com/fdkk/sxz/other/mq/TopicRabbitConfig.java

@@ -29,6 +29,9 @@ public class TopicRabbitConfig {
 
     public final static String MODEL = "topic.model";
 
+    //处理
+    public final static String MVIEW = "topic.MVIEW";
+
     public final static String TOPICE = "topicExchange";
 
     @Bean
@@ -56,19 +59,19 @@ public class TopicRabbitConfig {
     //这样只要是消息携带的路由键是topic.man,才会分发到该队列
     @Bean
     Binding bindingExchangeMessage() {
-        return BindingBuilder.bind(firstQueue()).to(exchange()).with(CHANGE);
+        return BindingBuilder.bind(firstQueue()).to(exchange()).with(TopicRabbitConfig.CHANGE);
     }
 
     //将secondQueue和topicExchange绑定,而且绑定的键值为用上通配路由键规则topic.#
     // 这样只要是消息携带的路由键是以topic.开头,都会分发到该队列
     @Bean
     Binding bindingExchangeMessage2() {
-        return BindingBuilder.bind(secondQueue()).to(exchange()).with(LIGHT);
+        return BindingBuilder.bind(secondQueue()).to(exchange()).with(TopicRabbitConfig.LIGHT);
     }
 
     @Bean
     Binding bindingExchangeMessage3() {
-        return BindingBuilder.bind(modelQueue()).to(exchange()).with(MODEL);
+        return BindingBuilder.bind(modelQueue()).to(exchange()).with(TopicRabbitConfig.MODEL);
     }
 
 }

+ 3 - 29
sxz-core/src/main/java/com/fdkk/sxz/webApi/controller/ManagerController.java

@@ -1,6 +1,5 @@
 package com.fdkk.sxz.webApi.controller;
 
-import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
@@ -590,7 +589,6 @@ public class ManagerController extends BaseController {
         //先执行python-NewResortForOne脚本,处理obj文件
         CreateObjUtil.objHandle(buildPath + modelUploadEntity.getObjPath());
 
-
         ManagerController.log.info("配件obj转换成mview格式");
         Map<String, String> paramsMap = new HashMap<>();
         paramsMap.put("uuid", modelUploadEntity.getFileId());
@@ -599,24 +597,6 @@ public class ManagerController extends BaseController {
         OkHttpUtils.httpPostForm(maxObjUrl + "toToolbag", paramsMap);
         Thread.sleep(1000);
 
-        ManagerController.log.info("上传开始");
-        int count = 10;
-        boolean flag = true;
-        while (flag) {
-            if (FileUtil.exist(buildPath + modelUploadEntity.getObjPath().replace(".obj", ".mview"))) {
-                ManagerController.log.info("文件存在");
-                uploadToOssUtil.uploadTo4dTjw(buildPath + modelUploadEntity.getObjPath().replace(".obj", ".mview"), "domain/eHome/furniture/temp/" + modelUploadEntity.getFileId() + ".mview");
-                flag = false;
-            } else {
-                Thread.sleep(1000);
-            }
-            if (count <= 0) {
-                break;
-            }
-            count -= 1;
-        }
-        ManagerController.log.info("配件obj转换成mview格式结束{}", modelUploadEntity.getObjPath().replace(".obj", ".mview"));
-
         //obj转换成glb格式
         String glbPath = buildPath + "upload/" + modelUploadEntity.getFileId() + "/" + modelUploadEntity.getFileId() + ".glb";
         ManagerController.log.info("obj转换成glb格式路径-{}", glbPath);
@@ -651,14 +631,6 @@ public class ManagerController extends BaseController {
         renovationPartsDetailEntity.setExamine(0);
         renovationPartsDetailEntity.setName(modelUploadEntity.getFileId());
         renovationPartsDetailEntity.setPath(prefix + "domain/eHome/furniture/temp/" + modelUploadEntity.getFileId() + ".glb");
-        if (FileUtil.exist(buildPath + modelUploadEntity.getObjPath().replace(".obj", ".mview"))) {
-            ManagerController.log.info("文件存在");
-            if (!uploadToOssUtil.existFileToOSS(renovationPartsDetailEntity.getMviewPath(), "4d-tjw")) {
-                uploadToOssUtil.uploadTo4dTjw(buildPath + modelUploadEntity.getObjPath().replace(".obj", ".mview"), "domain/eHome/furniture/temp/" + modelUploadEntity.getFileId() + ".mview");
-                ManagerController.log.info("文件不存在OSS,重新上传");
-            }
-            renovationPartsDetailEntity.setMviewPath(prefix + "domain/eHome/furniture/temp/" + modelUploadEntity.getFileId() + ".mview");
-        }
 
         // 加锁,同一个模型只能请求一次3d渲染,防止同一账号在登录多个客户端下同时操作一个模型导致出问题
         Result result;
@@ -693,11 +665,13 @@ public class ManagerController extends BaseController {
 
             renovationPartsDetailEntity.setHasToolbag(1);
         }
-
+        renovationPartsDetailEntity.setMviewStatus(1);
         Boolean saveFlag = renovationPartsDetailService.save(renovationPartsDetailEntity);
         if (!saveFlag) {
             return Result.failure(CodeConstant.FAILURE_CODE_4008, CodeConstant.FAILURE_MSG_4008);
         }
+        rabbitTemplate.convertAndSend(TopicRabbitConfig.TOPICE, TopicRabbitConfig.MVIEW, renovationPartsDetailEntity.getId() + ":;1:;" + buildPath + modelUploadEntity.getObjPath().replace(".obj",
+                ".mview") + ":;" + modelUploadEntity.getFileId());
 
         //保存模型位置信息
         RenovationPartsAttachingEntity renovationPartsAttachingEntity = new RenovationPartsAttachingEntity();

+ 42 - 58
sxz-core/src/main/java/com/fdkk/sxz/webApi/service/impl/ComponentModelUploadServiceImpl.java

@@ -2,41 +2,27 @@ package com.fdkk.sxz.webApi.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fdkk.sxz.base.Result;
 import com.fdkk.sxz.base.impl.BaseServiceImpl;
 import com.fdkk.sxz.entity.ComponentModelUploadEntity;
-import com.fdkk.sxz.entity.ModelUploadEntity;
-import com.fdkk.sxz.entity.custuom.CustomComponentClassifyEntity;
 import com.fdkk.sxz.entity.custuom.CustomComponentEntity;
-import com.fdkk.sxz.entity.custuom.CustomProductEntity;
-import com.fdkk.sxz.entity.system.Organization;
 import com.fdkk.sxz.exception.BusinessException;
 import com.fdkk.sxz.util.CreateObjUtil;
 import com.fdkk.sxz.util.OkHttpUtils;
-import com.fdkk.sxz.util.SnowFlakeUUidUtils;
 import com.fdkk.sxz.util.UploadToOssUtil;
 import com.fdkk.sxz.vo.request.RequestModelComponentSaveModel;
-import com.fdkk.sxz.vo.request.RequestModelCustomUpload;
 import com.fdkk.sxz.vo.response.ResponseModelComponent;
-import com.fdkk.sxz.vo.response.ResponseModelCustom;
 import com.fdkk.sxz.webApi.mapper.IComponentModelUploadMapper;
 import com.fdkk.sxz.webApi.service.IComponentModelUploadService;
 import com.fdkk.sxz.webApi.service.custom.ICustomComponentService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.sql.Wrapper;
-import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -75,7 +61,7 @@ public class ComponentModelUploadServiceImpl extends BaseServiceImpl<IComponentM
 
     @Override
     public ResponseModelComponent findComponent(Long id) {
-        ComponentModelUploadEntity  componentModelUploadEntity= findById(id);
+        ComponentModelUploadEntity componentModelUploadEntity = findById(id);
 
         ResponseModelComponent responseModelComponent = new ResponseModelComponent();
         responseModelComponent.setId(componentModelUploadEntity.getId());
@@ -87,13 +73,13 @@ public class ComponentModelUploadServiceImpl extends BaseServiceImpl<IComponentM
         responseModelComponent.setObjPath(componentModelUploadEntity.getObjPath());
         responseModelComponent.setMtlPath(componentModelUploadEntity.getMtlPath());
         responseModelComponent.setThumStatus(componentModelUploadEntity.getThumStatus());
-        if (ObjectUtil.isNotNull(componentModelUploadEntity.getPartsDetailId())){
+        if (ObjectUtil.isNotNull(componentModelUploadEntity.getPartsDetailId())) {
             CustomComponentEntity componentEntity = customComponentService.findById(componentModelUploadEntity.getPartsDetailId());
             responseModelComponent.setName(componentEntity.getName());
             responseModelComponent.setComponentTypeId(componentEntity.getComponentTypeId());
             responseModelComponent.setModelId(componentEntity.getId());
             responseModelComponent.setGlbPtah(componentEntity.getTemplate());
-        }else {
+        } else {
             responseModelComponent.setComponentTypeId(0L);
         }
 
@@ -102,23 +88,23 @@ public class ComponentModelUploadServiceImpl extends BaseServiceImpl<IComponentM
 
     @Override
     public List<ComponentModelUploadEntity> findPartsModelUploadId(Long id) {
-        LambdaQueryWrapper<ComponentModelUploadEntity> wrapper =  Wrappers.lambdaQuery();
-        if (ObjectUtil.isNotNull(id)&&id>0){
-            wrapper.eq(ComponentModelUploadEntity::getPartsModelUploadId,id);
+        LambdaQueryWrapper<ComponentModelUploadEntity> wrapper = Wrappers.lambdaQuery();
+        if (ObjectUtil.isNotNull(id) && id > 0) {
+            wrapper.eq(ComponentModelUploadEntity::getPartsModelUploadId, id);
         }
         return list(wrapper);
     }
 
     @Override
     public List<ComponentModelUploadEntity> findIsNotPartsDetailId(Long userId, Integer fileType) {
-        LambdaQueryWrapper<ComponentModelUploadEntity> wrapper =  Wrappers.lambdaQuery();
-        if (ObjectUtil.isNotNull(userId)&&userId>0){
-            wrapper.eq(ComponentModelUploadEntity::getUserId,userId);
+        LambdaQueryWrapper<ComponentModelUploadEntity> wrapper = Wrappers.lambdaQuery();
+        if (ObjectUtil.isNotNull(userId) && userId > 0) {
+            wrapper.eq(ComponentModelUploadEntity::getUserId, userId);
         }
-        if (ObjectUtil.isNotNull(fileType)&&fileType>0){
-            wrapper.eq(ComponentModelUploadEntity::getFileType,fileType);
+        if (ObjectUtil.isNotNull(fileType) && fileType > 0) {
+            wrapper.eq(ComponentModelUploadEntity::getFileType, fileType);
         }
-        wrapper.ne(ComponentModelUploadEntity::getStatus,-1);
+        wrapper.ne(ComponentModelUploadEntity::getStatus, -1);
         wrapper.isNull(ComponentModelUploadEntity::getPartsDetailId);
 
         return list(wrapper);
@@ -126,7 +112,7 @@ public class ComponentModelUploadServiceImpl extends BaseServiceImpl<IComponentM
 
     @Override
     @Transactional(rollbackFor = BusinessException.class)
-    public Result saveOrUpdateCustomUpload(RequestModelComponentSaveModel param) throws Exception ,BusinessException{
+    public Result saveOrUpdateCustomUpload(RequestModelComponentSaveModel param) throws Exception, BusinessException {
         if (ObjectUtil.isNotNull(param)) {
             //判断保存或者修改
             if (ObjectUtil.isNull(param.getModelId())) {
@@ -139,7 +125,7 @@ public class ComponentModelUploadServiceImpl extends BaseServiceImpl<IComponentM
                     customComponentEntity.setName(param.getName());
                     customComponentEntity.setUserId(param.getUserId());
                     customComponentEntity.setFileId(componentModel.getFileId());
-                    log.info("处理缩略图");
+                    ComponentModelUploadServiceImpl.log.info("处理缩略图");
 
                     //先执行python-NewResortForOne脚本,处理obj文件
                     CreateObjUtil.objHandle(buildPath + componentModel.getObjPath());
@@ -148,63 +134,60 @@ public class ComponentModelUploadServiceImpl extends BaseServiceImpl<IComponentM
 
                     customComponentEntity.setThumbnailSrc(prefix + "domain/eHome/furniture/models/" + componentModel.getFileId() + "_preview.jpg");
 
-                    log.info("配件obj转换成mview格式");
+                    ComponentModelUploadServiceImpl.log.info("配件obj转换成mview格式");
                     Map<String, String> paramsMap = new HashMap<>();
-                    paramsMap.put("uuid",componentModel.getFileId());
-                    paramsMap.put("inObj",buildPath +componentModel.getObjPath());
-                    paramsMap.put("outFilePath",buildPath + componentModel.getObjPath().replace(".obj", ""));
-                    OkHttpUtils.httpPostForm(maxObjUrl+"toToolbag",paramsMap);
+                    paramsMap.put("uuid", componentModel.getFileId());
+                    paramsMap.put("inObj", buildPath + componentModel.getObjPath());
+                    paramsMap.put("outFilePath", buildPath + componentModel.getObjPath().replace(".obj", ""));
+                    OkHttpUtils.httpPostForm(maxObjUrl + "toToolbag", paramsMap);
                     Thread.sleep(1000);
-                    uploadToOssUtil.uploadTo4dTjw(buildPath + componentModel.getObjPath().replace(".obj", ".mview"), "domain/eHome/furniture/models/" + componentModel.getFileId() + ".mview");
-                    customComponentEntity.setMviewPath(prefix + "domain/eHome/furniture/models/" + componentModel.getFileId() + ".mview");
-                    log.info("配件obj转换成mview格式结束{}",customComponentEntity.getMviewPath());
 
 
                     //obj转换成glb格式
-                    log.info("配件obj转换成glb格式");
+                    ComponentModelUploadServiceImpl.log.info("配件obj转换成glb格式");
                     String glbPath = buildPath + componentModel.getObjPath().replace(".obj", ".glb");
-                    log.info("obj转换成glb格式路径-{}", glbPath);
+                    ComponentModelUploadServiceImpl.log.info("obj转换成glb格式路径-{}", glbPath);
                     CreateObjUtil.objToGlb(buildPath + componentModel.getObjPath(), glbPath);
                     uploadToOssUtil.uploadTo4dTjw(buildPath + componentModel.getObjPath().replace(".obj", ".glb"), "domain/eHome/furniture/models/" + componentModel.getFileId() + ".glb");
                     customComponentEntity.setTemplate(prefix + "domain/eHome/furniture/models/" + componentModel.getFileId() + ".glb");
                     //obj转换成glb格式
-                    log.info("上传obj到simpleObj-Mtl开始");
+                    ComponentModelUploadServiceImpl.log.info("上传obj到simpleObj-Mtl开始");
                     uploadToOssUtil.uploadTo4dTjw(buildPath + componentModel.getObjPath(),
-                            "domain/eHome/furniture/simpleObj-Mtl/"+componentModel.getFileId() + "/"+componentModel.getFileId() +".obj");
+                            "domain/eHome/furniture/simpleObj-Mtl/" + componentModel.getFileId() + "/" + componentModel.getFileId() + ".obj");
                     //obj转换成glb格式
-                    log.info("上传obj到simpleObj-Mtl结束");
+                    ComponentModelUploadServiceImpl.log.info("上传obj到simpleObj-Mtl结束");
                     Boolean componentSaveFlag = customComponentService.save(customComponentEntity);
                     if (componentSaveFlag) {
                         componentModel.setPartsDetailId(customComponentEntity.getId());
                         updateById(componentModel);
                     }
 
-                    List<String>  fileList=uploadToOssUtil.fileFolderTo4dTjw("domain/eHome/furniture/ue4data/"+componentModel.getFileId());
-                    log.info("上传mtl+jpg 到simpleObj-Mtl开始");
+                    List<String> fileList = uploadToOssUtil.fileFolderTo4dTjw("domain/eHome/furniture/ue4data/" + componentModel.getFileId());
+                    ComponentModelUploadServiceImpl.log.info("上传mtl+jpg 到simpleObj-Mtl开始");
                     for (String s : fileList) {
                         //上传到simpleObj-Mtl
-                        String oldPath="domain/eHome/furniture/ue4data/"+componentModel.getFileId()+"/";
-                        s=s.replace(oldPath,"");
-                        if (s.contains("_preview.jpg") || s.contains("-base.obj")){
+                        String oldPath = "domain/eHome/furniture/ue4data/" + componentModel.getFileId() + "/";
+                        s = s.replace(oldPath, "");
+                        if (s.contains("_preview.jpg") || s.contains("-base.obj")) {
                             continue;
                         }
                         uploadToOssUtil.copyTo4dTjw(
-                                oldPath+s
-                                ,"domain/eHome/furniture/simpleObj-Mtl/"+componentModel.getFileId()+"/"+s);
+                                oldPath + s
+                                , "domain/eHome/furniture/simpleObj-Mtl/" + componentModel.getFileId() + "/" + s);
                     }
-                    log.info("上传mtl+jpg 到simpleObj-Mtl结束");
+                    ComponentModelUploadServiceImpl.log.info("上传mtl+jpg 到simpleObj-Mtl结束");
 
                     return Result.success(componentSaveFlag);
 
                 }
                 return Result.failure("查询不到成品模型");
             } else {
-                log.info("修改成品");
+                ComponentModelUploadServiceImpl.log.info("修改成品");
                 CustomComponentEntity componentModel = customComponentService.findById(param.getModelId());
                 if (ObjectUtil.isNotNull(componentModel)) {
                     componentModel.setName(param.getName());
                     componentModel.setComponentTypeId(param.getComponentTypeId());
-                    boolean componentUpdateFlag= customComponentService.updateById(componentModel);
+                    boolean componentUpdateFlag = customComponentService.updateById(componentModel);
                     return Result.success(componentUpdateFlag);
 
                 }
@@ -216,18 +199,19 @@ public class ComponentModelUploadServiceImpl extends BaseServiceImpl<IComponentM
 
     @Override
     public ComponentModelUploadEntity findByFileId(String fileId) {
-        LambdaQueryWrapper<ComponentModelUploadEntity> wrapper =  Wrappers.lambdaQuery();
-        if (ObjectUtil.isNotNull(fileId)&& StrUtil.isNotEmpty(fileId)){
-            wrapper.eq(ComponentModelUploadEntity::getFileId,fileId);
+        LambdaQueryWrapper<ComponentModelUploadEntity> wrapper = Wrappers.lambdaQuery();
+        if (ObjectUtil.isNotNull(fileId) && StrUtil.isNotEmpty(fileId)) {
+            wrapper.eq(ComponentModelUploadEntity::getFileId, fileId);
         }
         return getOne(wrapper);
     }
 
     @Override
     public ComponentModelUploadEntity findByPartsDetailId(Long partsDeatilId) {
-        LambdaQueryWrapper<ComponentModelUploadEntity> wrapper =  Wrappers.lambdaQuery();
-        if (ObjectUtil.isNotNull(partsDeatilId)&& partsDeatilId>0){
-            wrapper.eq(ComponentModelUploadEntity::getPartsDetailId,partsDeatilId);
+        LambdaQueryWrapper<ComponentModelUploadEntity> wrapper = Wrappers.lambdaQuery();
+        if (ObjectUtil.isNotNull(partsDeatilId) && partsDeatilId > 0) {
+            wrapper.eq(ComponentModelUploadEntity::getPartsDetailId, partsDeatilId);
         }
-        return getOne(wrapper);    }
+        return getOne(wrapper);
+    }
 }

+ 58 - 76
sxz-core/src/main/java/com/fdkk/sxz/webApi/service/impl/ModelUploadServiceImpl.java

@@ -1,10 +1,6 @@
 package com.fdkk.sxz.webApi.service.impl;
 
 import cn.hutool.core.date.DateTime;
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.io.watch.SimpleWatcher;
-import cn.hutool.core.io.watch.WatchMonitor;
-import cn.hutool.core.io.watch.Watcher;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -15,11 +11,10 @@ import com.fdkk.sxz.entity.ComponentModelUploadEntity;
 import com.fdkk.sxz.entity.ModelUploadEntity;
 import com.fdkk.sxz.entity.custuom.CustomComponentEntity;
 import com.fdkk.sxz.entity.custuom.CustomProductEntity;
-import com.fdkk.sxz.entity.custuom.CustomProductFirstclassifyEntity;
 import com.fdkk.sxz.exception.BusinessException;
+import com.fdkk.sxz.other.mq.TopicRabbitConfig;
 import com.fdkk.sxz.util.CreateObjUtil;
 import com.fdkk.sxz.util.OkHttpUtils;
-import com.fdkk.sxz.util.SnowFlakeUUidUtils;
 import com.fdkk.sxz.util.UploadToOssUtil;
 import com.fdkk.sxz.vo.request.RequestModelCustomUpload;
 import com.fdkk.sxz.vo.response.ResponseModelCustom;
@@ -30,15 +25,13 @@ import com.fdkk.sxz.webApi.service.custom.ICustomComponentService;
 import com.fdkk.sxz.webApi.service.custom.ICustomProductService;
 import lombok.extern.slf4j.Slf4j;
 import net.oschina.j2cache.CacheChannel;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.nio.file.Path;
-import java.nio.file.WatchEvent;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -83,18 +76,20 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
     @Value("${max.obj.url}")
     private String maxObjUrl;
 
+    @Autowired
+    RabbitTemplate rabbitTemplate;  //使用RabbitTemplate,这提供了接收/发送等等方
 
     @Autowired
     private CacheChannel cacheChannel;
 
     @Override
     public boolean removeById(Long id) {
-        ModelUploadEntity entity= findById(id);
-        boolean removeById=super.removeById(id);
-        if (removeById){
-            cacheChannel.evict("ModelUploadEntity","id::"+id);
+        ModelUploadEntity entity = findById(id);
+        boolean removeById = super.removeById(id);
+        if (removeById) {
+            cacheChannel.evict("ModelUploadEntity", "id::" + id);
             if (ObjectUtil.isNotNull(entity)) {
-                cacheChannel.evict("ModelUploadEntity","fileId::"+entity.getFileId());
+                cacheChannel.evict("ModelUploadEntity", "fileId::" + entity.getFileId());
             }
         }
         return removeById;
@@ -102,25 +97,24 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
 
     @Override
     public ModelUploadEntity findById(Long id) {
-        ModelUploadEntity entity=super.findById(id);
-        if (ObjectUtil.isNotNull(entity)){
-            cacheChannel.set("ModelUploadEntity","id::"+entity.getId(),entity,60*30 );
+        ModelUploadEntity entity = super.findById(id);
+        if (ObjectUtil.isNotNull(entity)) {
+            cacheChannel.set("ModelUploadEntity", "id::" + entity.getId(), entity, 60 * 30);
         }
         return super.findById(id);
     }
 
     @Override
     public boolean updateById(ModelUploadEntity entity) {
-        boolean updateById=super.updateById(entity);
-        if (updateById){
-            cacheChannel.set("ModelUploadEntity","id::"+entity.getId(),entity,60*30  );
-            cacheChannel.set("ModelUploadEntity","fileId::"+entity.getFileId(),entity,60*30 );
+        boolean updateById = super.updateById(entity);
+        if (updateById) {
+            cacheChannel.set("ModelUploadEntity", "id::" + entity.getId(), entity, 60 * 30);
+            cacheChannel.set("ModelUploadEntity", "fileId::" + entity.getFileId(), entity, 60 * 30);
         }
         return updateById;
     }
 
 
-
     @Override
     @Transactional(rollbackFor = BusinessException.class)
     public Result saveOrUpdateCustomUpload(RequestModelCustomUpload param) throws Exception {
@@ -128,7 +122,7 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
             //判断保存或者修改
             if (ObjectUtil.isNull(param.getModelId())) {
                 //保存
-                log.info("保存成品");
+                ModelUploadServiceImpl.log.info("保存成品");
 
                 ModelUploadEntity modelUploadEntity = modelUploadService.findById(param.getId());
                 if (ObjectUtil.isNotNull(modelUploadEntity)) {
@@ -148,7 +142,7 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
                     entity.setUserId(param.getUserId());
                     JSONArray ids = new JSONArray();
                     //处理配件
-                    log.info("保存配件");
+                    ModelUploadServiceImpl.log.info("保存配件");
                     if (ObjectUtil.isNotNull(param.getComponentSlots())) {
                         for (RequestModelCustomUpload.Component componentSlot : param.getComponentSlots()) {
                             ComponentModelUploadEntity componentModel = componentModelUploadService.findById(componentSlot.getId());
@@ -165,7 +159,7 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
                                 customComponentEntity.setName(componentSlot.getTitle());
                                 customComponentEntity.setFileId(componentModel.getFileId());
                                 customComponentEntity.setCreateTime(new DateTime());
-                                log.info("处理缩略图");
+                                ModelUploadServiceImpl.log.info("处理缩略图");
 
                                 //先执行python-NewResortForOne脚本,处理obj文件
                                 CreateObjUtil.objHandle(buildPath + componentModel.getObjPath());
@@ -174,65 +168,53 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
 
                                 customComponentEntity.setThumbnailSrc(prefix + "domain/eHome/furniture/models/" + componentModel.getFileId() + "_preview.jpg");
 
-                                log.info("配件obj转换成mview格式");
-                                Map<String, String> paramsMap = new HashMap<>();
-                                paramsMap.put("uuid",componentModel.getFileId());
-                                paramsMap.put("inObj",buildPath +componentModel.getObjPath());
-                                paramsMap.put("outFilePath",buildPath + componentModel.getObjPath().replace(".obj", ""));
-                                OkHttpUtils.httpPostForm(maxObjUrl+"toToolbag",paramsMap);
-                                log.info("上传开始");
-                                int count=4;
-                                boolean flag=true;
-                                while (flag){
-                                    if(FileUtil.exist(buildPath + componentModel.getObjPath().replace(".obj", ".mview"))){
-                                        log.info("文件存在");
-                                        uploadToOssUtil.uploadTo4dTjw(buildPath + componentModel.getObjPath().replace(".obj", ".mview"), "domain/eHome/furniture/models/" + componentModel.getFileId() + ".mview");
-                                        customComponentEntity.setMviewPath(prefix + "domain/eHome/furniture/models/" + componentModel.getFileId() + ".mview");
-                                        flag=false;
-                                    }else {
-                                        Thread.sleep(1000);
-                                    }
-                                    if (count<=0){
-                                        break;
-                                    }
-                                     count -= 1;
-                                }
-
-                                log.info("配件obj转换成mview格式结束{}",customComponentEntity.getMviewPath());
+                                ModelUploadServiceImpl.log.info("配件obj转换成mview格式结束{}", customComponentEntity.getMviewPath());
                                 //obj转换成glb格式
-                                log.info("配件obj转换成glb格式");
+                                ModelUploadServiceImpl.log.info("配件obj转换成glb格式");
                                 String glbPath = buildPath + componentModel.getObjPath().replace(".obj", ".glb");
-                                log.info("obj转换成glb格式路径-{}", glbPath);
+                                ModelUploadServiceImpl.log.info("obj转换成glb格式路径-{}", glbPath);
                                 CreateObjUtil.objToGlb(buildPath + componentModel.getObjPath(), glbPath);
                                 uploadToOssUtil.uploadTo4dTjw(buildPath + componentModel.getObjPath().replace(".obj", ".glb"), "domain/eHome/furniture/models/" + componentModel.getFileId() + ".glb");
                                 customComponentEntity.setTemplate(prefix + "domain/eHome/furniture/models/" + componentModel.getFileId() + ".glb");
                                 //obj转换成glb格式
-                                log.info("上传obj到simpleObj-Mtl开始");
+                                ModelUploadServiceImpl.log.info("上传obj到simpleObj-Mtl开始");
                                 uploadToOssUtil.uploadTo4dTjw(buildPath + componentModel.getObjPath(),
-                                        "domain/eHome/furniture/simpleObj-Mtl/"+componentModel.getFileId() +"/"+componentModel.getFileId()+ ".obj");
+                                        "domain/eHome/furniture/simpleObj-Mtl/" + componentModel.getFileId() + "/" + componentModel.getFileId() + ".obj");
                                 //obj转换成glb格式
-                                log.info("上传obj到simpleObj-Mtl结束");
+                                ModelUploadServiceImpl.log.info("上传obj到simpleObj-Mtl结束");
+                                customComponentEntity.setMviewStatus(1);
                                 Boolean componentSaveFlag = customComponentService.save(customComponentEntity);
                                 if (componentSaveFlag) {
                                     componentModel.setPartsDetailId(customComponentEntity.getId());
                                     componentModelUploadService.updateById(componentModel);
                                     ids.add(customComponentEntity.getId().toString());
+
+                                    ModelUploadServiceImpl.log.info("配件obj转换成mview格式MQ处理");
+                                    Map<String, String> paramsMap = new HashMap<>();
+                                    paramsMap.put("uuid", componentModel.getFileId());
+                                    paramsMap.put("inObj", buildPath + componentModel.getObjPath());
+                                    paramsMap.put("outFilePath", buildPath + componentModel.getObjPath().replace(".obj", ""));
+                                    OkHttpUtils.httpPostForm(maxObjUrl + "toToolbag", paramsMap);
+                                    ModelUploadServiceImpl.log.info("上传开始");
+                                    rabbitTemplate.convertAndSend(TopicRabbitConfig.TOPICE, TopicRabbitConfig.MVIEW,
+                                            customComponentEntity.getId() + ":;2:;" + buildPath + componentModel.getObjPath().replace(".obj", ".mview") + ":;" + componentModel.getFileId());
+
                                 }
 
-                               List<String>  fileList=uploadToOssUtil.fileFolderTo4dTjw("domain/eHome/furniture/ue4data/"+modelUploadEntity.getFileId()+"/"+componentModel.getFileId());
-                                log.info("上传mtl+jpg 到simpleObj-Mtl开始");
+                                List<String> fileList = uploadToOssUtil.fileFolderTo4dTjw("domain/eHome/furniture/ue4data/" + modelUploadEntity.getFileId() + "/" + componentModel.getFileId());
+                                ModelUploadServiceImpl.log.info("上传mtl+jpg 到simpleObj-Mtl开始");
                                 for (String s : fileList) {
                                     //上传到simpleObj-Mtl
-                                    String oldPath="domain/eHome/furniture/ue4data/"+modelUploadEntity.getFileId()+"/"+componentModel.getFileId()+"/";
-                                    s=s.replace(oldPath,"");
-                                    if (s.contains("_preview.jpg") || s.contains("-base.obj")){
+                                    String oldPath = "domain/eHome/furniture/ue4data/" + modelUploadEntity.getFileId() + "/" + componentModel.getFileId() + "/";
+                                    s = s.replace(oldPath, "");
+                                    if (s.contains("_preview.jpg") || s.contains("-base.obj")) {
                                         continue;
                                     }
                                     uploadToOssUtil.copyTo4dTjw(
-                                            oldPath+s
-                                            ,"domain/eHome/furniture/simpleObj-Mtl/"+componentModel.getFileId()+"/"+s);
+                                            oldPath + s
+                                            , "domain/eHome/furniture/simpleObj-Mtl/" + componentModel.getFileId() + "/" + s);
                                 }
-                                log.info("上传mtl+jpg 到simpleObj-Mtl结束");
+                                ModelUploadServiceImpl.log.info("上传mtl+jpg 到simpleObj-Mtl结束");
                             }
                         }
                     }
@@ -247,14 +229,14 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
                 return Result.failure("查询不到成品模型");
             } else {
                 //修改
-                log.info("修改成品");
+                ModelUploadServiceImpl.log.info("修改成品");
                 CustomProductEntity entity = customProductService.findById(param.getModelId());
                 if (ObjectUtil.isNotNull(entity)) {
-                    log.info("修改成品" + entity.getId());
+                    ModelUploadServiceImpl.log.info("修改成品" + entity.getId());
                     entity.setName(param.getName());
                     entity.setParentId(param.getCustomTypeId());
                     if (ObjectUtil.isNotNull(param.getComponentSlots())) {
-                        log.info("修改配件");
+                        ModelUploadServiceImpl.log.info("修改配件");
                         for (RequestModelCustomUpload.Component componentSlot : param.getComponentSlots()) {
                             CustomComponentEntity componentModel = customComponentService.findById(componentSlot.getModelId());
                             if (ObjectUtil.isNotNull(componentModel)) {
@@ -274,9 +256,9 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
 
     @Override
     public ModelUploadEntity findByFileId(String fileId) {
-        ModelUploadEntity entity=modelUploadMapper.findByFileId(fileId);
-        if (ObjectUtil.isNotNull(entity)){
-            cacheChannel.set("ModelUploadEntity","fileId::"+fileId,entity,60*30 );
+        ModelUploadEntity entity = modelUploadMapper.findByFileId(fileId);
+        if (ObjectUtil.isNotNull(entity)) {
+            cacheChannel.set("ModelUploadEntity", "fileId::" + fileId, entity, 60 * 30);
         }
         return entity;
     }
@@ -304,12 +286,12 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
         responseModelCustomUpload.setProgress(entity.getProgress());
         responseModelCustomUpload.setThumPath(entity.getThumPath());
         responseModelCustomUpload.setThumStatus(entity.getThumStatus());
-        if (ObjectUtil.isNotNull(entity.getPartsDetailId())){
-            CustomProductEntity customProductEntity=  customProductService.findById(entity.getPartsDetailId());
+        if (ObjectUtil.isNotNull(entity.getPartsDetailId())) {
+            CustomProductEntity customProductEntity = customProductService.findById(entity.getPartsDetailId());
             responseModelCustomUpload.setName(customProductEntity.getName());
             responseModelCustomUpload.setCustomTypeId(customProductEntity.getParentId());
             responseModelCustomUpload.setModelId(customProductEntity.getId());
-        }else {
+        } else {
             responseModelCustomUpload.setCustomTypeId(0L);
         }
 
@@ -329,14 +311,14 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
                 json.put("name", componentModelUploadEntity.getFileId());
 
 
-                if (ObjectUtil.isNotNull(componentModelUploadEntity.getPartsDetailId())){
-                    CustomComponentEntity componentEntity=customComponentService.findById(componentModelUploadEntity.getPartsDetailId());
-                    if (ObjectUtil.isNotNull(componentEntity)){
+                if (ObjectUtil.isNotNull(componentModelUploadEntity.getPartsDetailId())) {
+                    CustomComponentEntity componentEntity = customComponentService.findById(componentModelUploadEntity.getPartsDetailId());
+                    if (ObjectUtil.isNotNull(componentEntity)) {
                         json.put("customComponentTypeId", componentEntity.getComponentTypeId());
                         json.put("title", componentEntity.getName());
                         json.put("modelId", componentEntity.getId());
                     }
-                }else {
+                } else {
                     json.put("customComponentTypeId", 0);
                 }
 

+ 24 - 21
sxz-modules/src/main/java/com/fdkk/sxz/entity/RenovationPartsDetailEntity.java

@@ -10,67 +10,70 @@ import java.util.Date;
  * Created by Hb_zzZ on 2020/8/11.
  */
 @Data
-@TableName( "tb_renovation_parts_detail")
+@TableName("tb_renovation_parts_detail")
 public class RenovationPartsDetailEntity extends BaseEntity {
 
-    @TableField( "parts_type_id")
+    @TableField("parts_type_id")
     private Long partsTypeId;
 
-    @TableField( "parts_color_id")
+    @TableField("parts_color_id")
     private Long partsColorId;
 
-    @TableField( "parts_style_id")
+    @TableField("parts_style_id")
     private Long partsStyleId;
 
-    @TableField( "parts_classify_id")
+    @TableField("parts_classify_id")
     private Long partsClassifyId;
 
-    @TableField( "parts_shape_id")
+    @TableField("parts_shape_id")
     private Long partsShapeId;
 
-    @TableField( "parts_brand_id")
+    @TableField("parts_brand_id")
     private Long partsBrandId;
 
-    @TableField( "company_id")
+    @TableField("company_id")
     private Long companyId;
 
-    @TableField( "key_word")
+    @TableField("key_word")
     private String keyWord;
 
-    @TableField( "type")
+    @TableField("type")
     private String type;
 
-    @TableField( "description")
+    @TableField("description")
     private String description;
 
-    @TableField( "img")
+    @TableField("img")
     private String img;
 
-    @TableField( "high_img")
+    @TableField("high_img")
     private String highImg;
 
-    @TableField( "path")
+    @TableField("path")
     private String path;
 
-    @TableField( "mview_path")
+    @TableField("mview_path")
     private String mviewPath;
 
-    @TableField( "name")
+    @TableField("name")
     private String name;
 
-    @TableField( "zh_name")
+    @TableField("zh_name")
     private String zhName;
 
-    @TableField( "is_show")
+    @TableField("is_show")
     private Integer isShow;
 
-    @TableField( "examine")
+    @TableField("examine")
     private Integer examine;
 
-    @TableField( "examine_time")
+    @TableField("examine_time")
     private Date examineTime;
 
-    @TableField( "has_toolbag")
+    @TableField("has_toolbag")
     private Integer hasToolbag;
 
+    @TableField("mview_status")
+    private Integer mviewStatus;
+
 }

+ 12 - 13
sxz-modules/src/main/java/com/fdkk/sxz/entity/custuom/CustomComponentEntity.java

@@ -1,14 +1,12 @@
 package com.fdkk.sxz.entity.custuom;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import com.fdkk.sxz.entity.BaseEntity;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fdkk.sxz.entity.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.util.Date;
 
@@ -41,7 +39,6 @@ public class CustomComponentEntity extends BaseEntity {
     private Long userId;
 
 
-
     @TableField("file_id")
     @ApiModelProperty(value = "文件名称", name = "fileId")
     private String fileId;
@@ -117,27 +114,29 @@ public class CustomComponentEntity extends BaseEntity {
     private String template;
 
 
-    @TableField( "x")
+    @TableField("x")
     private Integer x;
 
-    @TableField( "y")
+    @TableField("y")
     private Integer y;
 
-    @TableField( "z")
+    @TableField("z")
     private Integer z;
 
 
-    @TableField( "is_show")
+    @TableField("is_show")
     @ApiModelProperty(value = "0不显示,1显示", name = "isShow")
     private Integer isShow;
 
-    @TableField( "examine")
+    @TableField("examine")
     @ApiModelProperty(value = "审核,0审核中,1审核通过", name = "depth")
     private Integer examine;
 
-    @TableField( "examine_time")
+    @TableField("examine_time")
     @ApiModelProperty(value = "审核时间", name = "depth")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date examineTime;
-
+    
+    @TableField("mview_status")
+    private Integer mviewStatus;
 }