Pārlūkot izejas kodu

Merge branch 'feature-v4.10.0-20230714-dsx' into release

dsx 2 gadi atpakaļ
vecāks
revīzija
15875eee2c

+ 6 - 2
src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java

@@ -143,6 +143,10 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
             if(new File(message.getPath() + File.separator + "results").exists()){
                 FileUtils.deleteDirectory(message.getPath() + File.separator + "results");
             }
+            //由于刘强说caches会影响计算结果,所以这里删除caches
+            if(new File(message.getPath() + File.separator + "caches").exists()){
+                FileUtils.deleteDirectory(message.getPath() + File.separator + "caches");
+            }
 
             //删除点位校准数据
             if (Objects.nonNull(message.getExt())
@@ -646,7 +650,7 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
         QrConfig qrConfig = QrConfig.create();
         qrConfig.setWidth(1024);
         qrConfig.setHeight(1024);
-        if(!ObjectUtils.isEmpty(localLogoPath)){
+        if(StrUtil.isNotEmpty(localLogoPath)){
             qrConfig.setImg(localLogoPath);
         }
         QrCodeUtil.generate(scenePlusExt.getWebSite(), qrConfig, FileUtil.file(outPathZh));
@@ -662,7 +666,7 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
 
     private void pushMsgToApp(Integer pushChannel, String pushToken, int cameraType, String sceneName, String webSite){
         log.info("推送消息,渠道是 {}, 手机token是 {}", pushChannel, pushToken);
-        if(Objects.isNull(pushChannel) && StrUtil.isBlank(pushToken)){
+        if(Objects.isNull(pushChannel) || StrUtil.isBlank(pushToken)){
             return;
         }
 

+ 47 - 4
src/main/java/com/fdkankan/contro/mq/service/impl/BuildV3SceneServiceImpl.java

@@ -4,11 +4,14 @@ import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.file.FileNameUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.ZipUtil;
+import cn.hutool.extra.qrcode.QrCodeUtil;
+import cn.hutool.extra.qrcode.QrConfig;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.common.constant.PayStatus;
+import com.fdkankan.common.constant.SceneScheme;
 import com.fdkankan.common.constant.SceneStatus;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.contro.entity.*;
@@ -22,6 +25,7 @@ import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.model.constants.ConstantFileName;
 import com.fdkankan.model.constants.ConstantFilePath;
 import com.fdkankan.model.constants.UploadFilePath;
+import com.fdkankan.model.enums.ModelTypeEnums;
 import com.fdkankan.model.utils.CreateHouseJsonUtil;
 import com.fdkankan.model.utils.CreateObjUtil;
 import com.fdkankan.push.config.PushMessageConfig;
@@ -105,6 +109,9 @@ public class BuildV3SceneServiceImpl implements IBuildSceneService {
     @Autowired
     private ISceneColdStorageService sceneColdStorageService;
 
+    @Autowired
+    private ICompanyService companyService;
+
     @Override
     public void buildScenePre(BuildSceneCallMessage message) {
         boolean success = false;
@@ -115,6 +122,10 @@ public class BuildV3SceneServiceImpl implements IBuildSceneService {
             if(new File(message.getPath() + File.separator + "results").exists()){
                 FileUtils.deleteDirectory(message.getPath() + File.separator + "results");
             }
+            //由于刘强说caches会影响计算结果,所以这里删除caches
+            if(new File(message.getPath() + File.separator + "caches").exists()){
+                FileUtils.deleteDirectory(message.getPath() + File.separator + "caches");
+            }
 
             //用户相机重新全量上传,需要解冻结
             sceneColdStorageService.unfreeze(num, "用户相机重新全量上传", message.getPath());
@@ -258,7 +269,8 @@ public class BuildV3SceneServiceImpl implements IBuildSceneService {
             uploadFiles.entrySet().stream().filter(entry-> FileNameUtil.getName(entry.getKey()).equals("floorplan_cad.json"))
                     .forEach(entry-> uploadHouseTypeJson(sceneCode,entry.getKey()));
 
-
+            //生成二维码
+            this.createQrcode(sceneCode);
 
             //计算成功,通知APP
             Integer pushChannel = fdageData.getInteger("pushChannel");
@@ -300,6 +312,32 @@ public class BuildV3SceneServiceImpl implements IBuildSceneService {
         }
     }
 
+    private void createQrcode(String num){
+        ScenePro scenePro = sceneProService.getByNum(num);
+        String logoPath = null;
+        if(Objects.nonNull(scenePro.getCameraId())){
+            CameraDetail cameraDetail = cameraDetailService.getByCameraId(scenePro.getId());
+            if(Objects.nonNull(cameraDetail) && Objects.nonNull(cameraDetail.getCompanyId())){
+                Company company = companyService.getById(cameraDetail.getCompanyId());
+                if(Objects.nonNull(company) && StrUtil.isNotEmpty(company.getQrLogo())){
+                    logoPath =  ConstantFilePath.BASE_PATH + File.separator + company.getQrLogo();
+                }
+            }
+        }
+
+        //生成二维码
+        String outPathZh = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+ num +".png";
+        String outPathEn = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+ num +"_en.png";
+        QrConfig qrConfig = QrConfig.create();
+        qrConfig.setWidth(1024);
+        qrConfig.setHeight(1024);
+        if(StrUtil.isNotEmpty(logoPath)){
+            qrConfig.setImg(logoPath);
+        }
+        QrCodeUtil.generate(scenePro.getWebSite(), qrConfig, FileUtil.file(outPathZh));
+        QrCodeUtil.generate(scenePro.getWebSite() + "&lang=en", qrConfig, FileUtil.file(outPathEn));
+    }
+
     private void copyFiles(String path, String num) {
         if (new File(path + File.separator + "results" + File.separator + "floor.json").exists()) {
             FileUtils.copyFile(path + File.separator + "results" + File.separator + "floor.json", ConstantFilePath.SCENE_PATH + "data" + File.separator + "data" + num + File.separator + "floor.json", true);
@@ -442,7 +480,7 @@ public class BuildV3SceneServiceImpl implements IBuildSceneService {
 
     private void pushMsgToApp(Integer pushChannel, String pushToken, int cameraType, String sceneName, String webSite){
         log.info("推送消息,渠道是 {}, 手机token是 {}", pushChannel, pushToken);
-        if(Objects.isNull(pushChannel) && StrUtil.isBlank(pushToken)){
+        if(Objects.isNull(pushChannel) || StrUtil.isBlank(pushToken)){
             return;
         }
 
@@ -573,7 +611,7 @@ public class BuildV3SceneServiceImpl implements IBuildSceneService {
     }
 
     private ScenePro updateDbPlus(String num, Long space, String videosJson, Long computeTime,boolean isObj){
-        sceneProService.update(new LambdaUpdateWrapper<ScenePro>()
+        LambdaUpdateWrapper<ScenePro> wrapper = new LambdaUpdateWrapper<ScenePro>()
                 .eq(ScenePro::getNum, num)
                 .set(ScenePro::getStatus, SceneStatus.NO_DISPLAY.code())
                 .set(ScenePro::getUpdateTime, new Date())
@@ -582,7 +620,12 @@ public class BuildV3SceneServiceImpl implements IBuildSceneService {
                 .set(ScenePro::getComputeTime, computeTime)
                 .set(ScenePro::getVideos, videosJson)
                 .set(ScenePro::getIsObj, isObj ? 1 : 0)
-                .set(ScenePro::getPayStatus, PayStatus.PAY.code()));
+                .set(ScenePro::getPayStatus, PayStatus.PAY.code());
+
+        if(ModelTypeEnums.TILE_CODE.equals(modelSceneKind)){
+            wrapper.set(ScenePro::getSceneScheme, SceneScheme.LM.code());
+        }
+        sceneProService.update(wrapper);
        return sceneProService.getByNum(num);
     }
 

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

@@ -640,7 +640,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         // 判断是否是V3的场景
         ScenePro scenePro = sceneProService.getOne(
-            new LambdaQueryWrapper<ScenePro>().like(ScenePro::getDataSource, fileId));
+            new LambdaQueryWrapper<ScenePro>().like(ScenePro::getDataSource, "/".concat(fileId).concat("/")));
 
         boolean callV3 = callV3(scenePro, preParams, fdageJson, "api/scene/file/uploadSuccessBuild");
         if(callV3) return ResultData.ok();
@@ -790,7 +790,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         // 判断是否是V3的场景
         ScenePro scenePro = sceneProService.getOne(
-            new LambdaQueryWrapper<ScenePro>().like(ScenePro::getDataSource, fileId));
+            new LambdaQueryWrapper<ScenePro>().like(ScenePro::getDataSource, "/".concat(fileId).concat("/")));
 
         boolean callV3 = callV3(scenePro, preParams, fdageJson, "api/scene/file/turntableUploadSuccess");
         if (callV3) return ResultData.ok();