|
@@ -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);
|
|
|
}
|
|
|
|