Pārlūkot izejas kodu

四川日报压缩包推送

dengsixing 10 mēneši atpakaļ
vecāks
revīzija
85949fa298
19 mainītis faili ar 832 papildinājumiem un 107 dzēšanām
  1. 12 0
      pom.xml
  2. 50 0
      src/main/java/com/fdkankan/external/consumer/RabbitMqListener.java
  3. 174 0
      src/main/java/com/fdkankan/external/entity/SceneEditControls.java
  4. 62 27
      src/main/java/com/fdkankan/external/entity/SceneEditInfo.java
  5. 140 0
      src/main/java/com/fdkankan/external/entity/SceneEditInfoExt.java
  6. 36 22
      src/main/java/com/fdkankan/external/entity/ScenePlus.java
  7. 57 48
      src/main/java/com/fdkankan/external/entity/ScenePlusExt.java
  8. 18 0
      src/main/java/com/fdkankan/external/mapper/ISceneEditControlsMapper.java
  9. 18 0
      src/main/java/com/fdkankan/external/mapper/ISceneEditInfoExtMapper.java
  10. 10 10
      src/main/java/com/fdkankan/external/schedule/ScheduleJob.java
  11. 18 0
      src/main/java/com/fdkankan/external/service/ISceneEditControlsService.java
  12. 20 0
      src/main/java/com/fdkankan/external/service/ISceneEditInfoExtService.java
  13. 2 0
      src/main/java/com/fdkankan/external/service/ISceneEditInfoService.java
  14. 9 0
      src/main/java/com/fdkankan/external/service/IScrbService.java
  15. 26 0
      src/main/java/com/fdkankan/external/service/impl/SceneEditControlsServiceImpl.java
  16. 33 0
      src/main/java/com/fdkankan/external/service/impl/SceneEditInfoExtServiceImpl.java
  17. 5 0
      src/main/java/com/fdkankan/external/service/impl/SceneEditInfoServiceImpl.java
  18. 82 0
      src/main/java/com/fdkankan/external/service/impl/ScrbServiceImpl.java
  19. 60 0
      src/main/java/com/fdkankan/external/util/ScrbObsUtil.java

+ 12 - 0
pom.xml

@@ -195,6 +195,18 @@
             <version>3.0.0-SNAPSHOT</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-utils-rabbitmq</artifactId>
+            <version>3.0.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.huaweicloud</groupId>
+            <artifactId>esdk-obs-java-bundle</artifactId>
+            <version>3.22.12</version>
+        </dependency>
+
     </dependencies>
 
     <dependencyManagement>

+ 50 - 0
src/main/java/com/fdkankan/external/consumer/RabbitMqListener.java

@@ -0,0 +1,50 @@
+package com.fdkankan.external.consumer;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.external.service.IScrbService;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.nio.charset.StandardCharsets;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/4/20
+ **/
+@Slf4j
+@Component
+public class RabbitMqListener {
+
+    @Autowired
+    private IScrbService scrbService;
+
+    /**
+     * 场景计算
+     * @param channel
+     * @param message
+     * @throws Exception
+     */
+    @RabbitListener(
+            //queuesToDeclare = @Queue("${queue.modeling.modeling-call}"),
+            queuesToDeclare = @Queue("scrb-package-scene"),
+            concurrency = "1"
+    )
+    public void buildSceneHandler(Channel channel, Message message) throws Exception {
+        long deliveryTag = message.getMessageProperties().getDeliveryTag();
+        String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+        JSONObject jsonObject = JSON.parseObject(msg);
+        scrbService.packageScene(jsonObject);
+        channel.basicAck(deliveryTag, false);
+    }
+
+}

+ 174 - 0
src/main/java/com/fdkankan/external/entity/SceneEditControls.java

@@ -0,0 +1,174 @@
+package com.fdkankan.external.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author
+ * @since 2022-01-20
+ */
+@Getter
+@Setter
+@TableName("t_scene_edit_controls")
+public class SceneEditControls implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * t_scene_edit_info表id
+     */
+    @TableField("edit_info_id")
+    private Long editInfoId;
+
+    /**
+     * 是否展示小地图(0-不展示,1-展示)
+     */
+    @TableField("show_map")
+    private Integer showMap;
+
+    /**
+     * 是否需要密码(0-不需要,1-需要)
+     */
+    @TableField("show_lock")
+    private Integer showLock;
+
+    /**
+     * 是否展示标题(0-不需要,1-需要)
+     */
+    @TableField("show_title")
+    private Integer showTitle;
+
+    /**
+     * 是否展示漫游按钮(0-不需要,1-需要)
+     */
+    @TableField("show_panorama")
+    private Integer showPanorama;
+
+    /**
+     * 是否展示3D按钮(0-不需要,1-需要)
+     */
+    @TableField("show_dollhouse")
+    private Integer showDollhouse;
+
+    /**
+     * 是否展示2D按钮(0-不需要,1-需要)
+     */
+    @TableField("show_floorplan")
+    private Integer showFloorplan;
+
+    /**
+     * 是否展示VR(0-不需要,1-需要)
+     */
+    @TableField("show_VR")
+    private Integer showVR;
+
+    /**
+     * 是否展示自动导览(0-不需要,1-需要)
+     */
+    @TableField("show_tour")
+    private Integer showTour;
+
+    /**
+     * 是否展示测量线(0-不需要,1-需要)
+     */
+    @TableField("show_rule")
+    private Integer showRule;
+
+
+    /**
+     * 是否展示标尺(0-不需要,1-需要)
+     */
+    @TableField("show_scale")
+    private Integer showScale;
+
+    /**
+     * 是否展示分享场景(0-不需要,1-需要)
+     */
+    @TableField("show_share")
+    private Integer showShare;
+
+    /**
+     * 是否展示分享热点(0-不需要,1-需要)
+     */
+    @TableField("show_tagshare")
+    private Integer showTagshare;
+
+    /**
+     * 是否展示合照开关(0-不需要,1-需要)
+     */
+    @TableField("show_capture")
+    private Integer showCapture;
+
+    /**
+     * 是否显示多媒体标签标题(0-否,1-是)
+     */
+    @TableField("show_tag_title")
+    private Integer showTagTitle;
+
+    /**
+     * 是否显示指示牌标签标题(0-否,1-是)
+     */
+    @TableField("show_billboard_title")
+    private Integer showBillboardTitle;
+
+    /**
+     * 是否显示视频监控标签标题(0-否,1-是)
+     */
+    @TableField("show_camera_title")
+    private Integer showCameraTitle;
+
+    /**
+     * 是否显示场景关联标签标题(0-否,1-是)
+     */
+    @TableField("show_link_title")
+    private Integer showLinkTitle;
+
+    /**
+     * 是否显示空间绘制标题
+     */
+    @TableField("show_draw_title")
+    private Integer showDrawTitle;
+
+    /**
+     * 是否显示全部模型
+     */
+    @TableField("show_all_model")
+    private Integer showAllModel;
+
+
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
+    private String recStatus;
+
+
+}

+ 62 - 27
src/main/java/com/fdkankan/external/entity/SceneEditInfo.java

@@ -1,172 +1,207 @@
 package com.fdkankan.external.entity;
 
-import com.mybatisflex.annotation.Id;
-import com.mybatisflex.annotation.KeyType;
-import com.mybatisflex.annotation.Table;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
-import java.math.BigInteger;
-import java.sql.Timestamp;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import java.util.Date;
 
 /**
- *  实体类。
+ * <p>
+ *
+ * </p>
  *
- * @author dsx
- * @since 2023-12-12
+ * @author
+ * @since 2022-01-20
  */
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-@Table(value = "t_scene_edit_info")
+@Getter
+@Setter
+@TableName("t_scene_edit_info")
 public class SceneEditInfo implements Serializable {
 
+    private static final long serialVersionUID = 1L;
+
     /**
      * 主键
      */
-    @Id(keyType = KeyType.Auto)
-    private BigInteger id;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
 
+    @TableField("scene_pro_id")
     private Long sceneProId;
 
+    @TableField("scene_plus_id")
     private Long scenePlusId;
 
     /**
      * 地面logo名称
      */
+    @TableField("floor_logo")
     private String floorLogo;
 
     /**
      * 地面logo大小
      */
+    @TableField("floor_logo_size")
     private Integer floorLogoSize;
 
     /**
      * 地面logo文件名称
      */
+    @TableField("floor_logo_file")
     private String floorLogoFile;
 
     /**
      * 背景音乐名称
      */
+    @TableField("music")
     private String music;
 
     /**
      * 背景音乐文件名称
      */
+    @TableField("music_file")
     private String musicFile;
 
     /**
      * 浏览密码
      */
+    @TableField("scene_password")
     private String scenePassword;
 
     /**
      * 场景标题
      */
+    @TableField("title")
     private String title;
 
     /**
      * 场景描述
      */
+    @TableField("description")
     private String description;
 
     /**
-     * 用户是否上传户型图(0-否,1-是)
+     * 用户是否上传户型图
      */
-    private Integer floorPlanUser;
+    @TableField("floor_plan_user")
+    private Byte floorPlanUser;
+
+//    /**
+//     *
+//     */
+//    @TableField("cad_info")
+//    private String cadInfo;
 
     /**
      * 是否有热点数据(0-否,1-是)
      */
-    private Integer tags;
+    @TableField("tags")
+    private Byte tags;
 
     /**
      * 版本
      */
+    @TableField("version")
     private Integer version;
 
     /**
      * 图片版本
      */
+    @TableField("img_version")
     private Integer imgVersion;
 
     /**
      * 场景关联版本
      */
+    @TableField("link_version")
     private Integer linkVersion;
 
     /**
      * 是否上传模型
      */
-    private Integer isUploadObj;
+    @TableField("is_upload_obj")
+    private Byte isUploadObj;
 
     /**
      * 重新建模的版本
      */
+    @TableField("floor_edit_ver")
     private Integer floorEditVer;
 
     /**
      * 正式发布重新建模的版本
      */
+    @TableField("floor_publish_ver")
     private Integer floorPublishVer;
 
     /**
      * 空间视频数据
      */
+    @TableField("box_videos")
     private String boxVideos;
 
     /**
      * 空间贴图数据
      */
+    @TableField("box_photos")
     private String boxPhotos;
 
     /**
      * 空间模型数据
      */
+    @TableField("box_models")
     private String boxModels;
 
     /**
      * 是否需要处理球幕视频
      */
-    private Integer buildVideoStatus;
+    @TableField("build_video_status")
+    private Byte buildVideoStatus;
 
     /**
      * 初始点信息
      */
+    @TableField("entry")
     private String entry;
 
     /**
      * 加载logo名
      */
+    @TableField("loading_logo")
     private String loadingLogo;
 
     /**
      * 加载logo文件名
      */
+    @TableField("loading_logo_file")
     private String loadingLogoFile;
 
     /**
      * 用户上传自定义平面图数据
      */
+    @TableField("floor_plan_upload")
     private String floorPlanUpload;
 
     /**
      * 创建时间
      */
-    private Timestamp createTime;
+    @TableField("create_time")
+    private Date createTime;
 
     /**
      * 修改时间
      */
-    private Timestamp updateTime;
+    @TableField("update_time")
+    private Date updateTime;
 
     /**
-     * A-有效,I-无效
+     * 记录的状态,A: 生效,I: 禁用
      */
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
     private String recStatus;
 
+
 }

+ 140 - 0
src/main/java/com/fdkankan/external/entity/SceneEditInfoExt.java

@@ -0,0 +1,140 @@
+package com.fdkankan.external.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author
+ * @since 2022-03-07
+ */
+@Getter
+@Setter
+@TableName("t_scene_edit_info_ext")
+public class SceneEditInfoExt {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("scene_pro_id")
+    private Long sceneProId;
+
+    @TableField("scene_plus_id")
+    private Long scenePlusId;
+
+    @TableField("edit_info_id")
+    private Long editInfoId;
+
+    @TableField("floor_plan_angle")
+    private Float floorPlanAngle;
+
+    @TableField("floor_plan_compass")
+    private Float floorPlanCompass;
+
+    /**
+     * 大场景序号(随心装场景码)  原pro_edit表中的字段
+     */
+    @TableField("vr_num")
+    private String vrNum;
+
+    /**
+     * 是否有保存导览(0-否,1-是)
+     */
+    @TableField("tours")
+    private Integer tours;
+
+    /**
+     * 是否有马赛克
+     */
+    @TableField("mosaic")
+    private Integer mosaic;
+
+    /**
+     * 水印文件名
+     */
+    @TableField("water_mark")
+    private String waterMark;
+
+    /**
+     * 是否有场景关联(0-否,1-是)
+     */
+    @TableField("links")
+    private Integer links;
+
+    /**
+     * 是否有滤镜(0-否,1-是)
+     */
+    @TableField("filters")
+    private Integer filters;
+
+    /**
+     * 是否有监控摄像头(0-否,1-是)
+     */
+    @TableField("surveillances")
+    private Integer surveillances;
+
+    /**
+     * 二维码logo路径(oss相对路径)
+     */
+    @TableField("share_logo_img")
+    private String shareLogoImg;
+
+    /**
+     * 是否有指示牌(0-否,1-是)
+     */
+    @TableField("billboards")
+    private Integer billboards;
+
+    /**
+     * 是否有指示牌(0-否,1-是)
+     */
+    @TableField("cut_model")
+    private Integer cutModel;
+
+    /**
+     * 是否有指示牌(0-否,1-是)
+     */
+    @TableField("scene_draw")
+    private Integer sceneDraw;
+
+    /**
+     * 分享配置信息
+     */
+    @TableField("sns_info")
+    private String snsInfo;
+
+    /**
+     * 启动页信息
+     */
+    @TableField("started")
+    private String started;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
+    private String recStatus;
+
+
+}

+ 36 - 22
src/main/java/com/fdkankan/external/entity/ScenePlus.java

@@ -1,106 +1,120 @@
 package com.fdkankan.external.entity;
 
-import com.mybatisflex.annotation.Column;
-import com.mybatisflex.annotation.Id;
-import com.mybatisflex.annotation.KeyType;
-import com.mybatisflex.annotation.Table;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
-import java.sql.Timestamp;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import java.util.Date;
 
 /**
- * 场景主表 实体类。
+ * <p>
+ * 场景主表
+ * </p>
  *
- * @author dsx
- * @since 2023-12-08
+ * @author
+ * @since 2022-03-16
  */
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-@Table(value = "t_scene_plus")
+@Getter
+@Setter
+@TableName("t_scene_plus")
 public class ScenePlus implements Serializable {
 
-    @Id(keyType = KeyType.Auto)
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**
      * 场景码
      */
+    @TableField("num")
     private String num;
 
     /**
      * 用户id
      */
+    @TableField("user_id")
     private Long userId;
 
     /**
      * 相机id
      */
+    @TableField("camera_id")
     private Long cameraId;
 
     /**
      * 手机id
      */
+    @TableField("phone_id")
     private String phoneId;
 
     /**
      * 场景名称
      */
+    @TableField("title")
     private String title;
 
     /**
      * 场景描述
      */
+    @TableField("description")
     private String description;
 
     /**
      * 场景状态:0-未建好,1--已建好,-1-计算出错,-2--不在官网显示
      */
+    @TableField("scene_status")
     private Integer sceneStatus;
 
     /**
      * 场景来源:相机拍摄10以内表示,1表示八目,2双目,3转台,4 激光  其他来源10以上,11:一键换装,12:123看房,13文通虚拟场景
      */
+    @TableField("scene_source")
     private Integer sceneSource;
 
     /**
      * 支付状态:0表示未付款,1表示付款了,-1表示欠费,-2表示容量不足
      */
+    @TableField("pay_status")
     private Integer payStatus;
 
     /**
      * 场景类型  0-其他,1-文博,2-地产,3-电商,4-餐饮,5-家居,99-一件换装虚拟房源
      */
+    @TableField("scene_type")
     private Integer sceneType;
 
     /**
      * 是否推荐:0-否,1-是
      */
+    @TableField("recommend")
     private Integer recommend;
 
     /**
      * 是否有housetype文件(0-否,1-是)
      */
+    @TableField("house_type")
     private Integer houseType;
 
     /**
      * 创建时间
      */
-    private Timestamp createTime;
+    @TableField("create_time")
+    private Date createTime;
 
     /**
      * 更新时间
      */
-    private Timestamp updateTime;
+    @TableField("update_time")
+    private Date updateTime;
 
     /**
-     * A-有效,I-无效
+     * 记录的状态,A: 生效,I: 禁用
      */
-    @Column(isLogicDelete = true)
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
     private String recStatus;
 
+
 }

+ 57 - 48
src/main/java/com/fdkankan/external/entity/ScenePlusExt.java

@@ -1,166 +1,175 @@
 package com.fdkankan.external.entity;
 
-import com.mybatisflex.annotation.Column;
-import com.mybatisflex.annotation.Id;
-import com.mybatisflex.annotation.KeyType;
-import com.mybatisflex.annotation.Table;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.io.Serializable;
-import java.sql.Timestamp;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import java.util.Date;
 
 /**
- *  实体类。
+ * <p>
+ *
+ * </p>
  *
- * @author dsx
- * @since 2023-12-11
+ * @author
+ * @since 2022-03-16
  */
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-@Table(value = "t_scene_plus_ext")
+@Getter
+@Setter
+@TableName("t_scene_plus_ext")
 public class ScenePlusExt implements Serializable {
 
-    @Id(keyType = KeyType.Auto)
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**
      * t_scene_plus主键
      */
+    @TableField("plus_id")
     private Long plusId;
 
     /**
      * 场景数据目录
      */
+    @TableField("data_source")
     private String dataSource;
 
     /**
      * 场景链接
      */
+    @TableField("web_site")
     private String webSite;
 
     /**
      * 缩略图链接
      */
+    @TableField("thumb")
     private String thumb;
 
     /**
      * 方案:1-双目,2-转台,3-六目,4-八目,10-获取4k图,11-获取2k,12-获取1k
      */
+    @TableField("scene_scheme")
     private Integer sceneScheme;
 
     /**
      * 使用用量
      */
+    @TableField("space")
     private Long space;
 
     /**
-     * 原始文件容量
-     */
-    private Long origSpace;
-
-    /**
      * 云服务器类型
      */
+    @TableField("ecs")
     private String ecs;
 
     /**
      * 点位数量
      */
-    private Long shootCount;
+    @TableField("shoot_count")
+    private Integer shootCount;
 
     /**
      * 浏览次数
      */
+    @TableField("view_count")
     private Integer viewCount;
 
     /**
      * gps定位
      */
+    @TableField("gps")
     private String gps;
 
     /**
      * 算法类型(slam、sfm)
      */
+    @TableField("algorithm")
     private String algorithm;
 
     /**
      * 固件版本
      */
+    @TableField("firmware_version")
     private String firmwareVersion;
 
     /**
      * 算法类型(V2,V3)
      */
+    @TableField("build_type")
     private String buildType;
 
     /**
      * 分辨率(2k,4k)
      */
+    @TableField("scene_resolution")
     private String sceneResolution;
 
     /**
      * 场景来源,lite:双目lite相机,pro:八目相机,minion:双面转台相机,laser:激光相机,virtual:虚拟场景,sketch:图片建模场景
      */
+    @TableField("scene_from")
     private String sceneFrom;
 
     /**
-     * 切图方式(tiles:瓦片图,face:切片图,pano:全景图 ,local:本地切片,cube:立体图)
+     * 切图方式(tiles:瓦片图,face:切片图,pan:全景图 ,local:本地切片,cube:立体图)
      */
+    @TableField("scene_kind")
     private String sceneKind;
 
     /**
-     * 算法生成模型类型(dam,3dtiles)
+     * 算法模型类型(dam,3dtiles)
      */
+    @TableField("model_kind")
     private String modelKind;
 
     /**
-     * 点位视频
-     */
-    private String videos;
-
-    /**
-     * oss桶名
-     */
-    private String yunFileBucket;
-
-    /**
      * 算法计算完成时间
      */
-    private Timestamp algorithmTime;
+    @TableField("algorithm_time")
+    private Date algorithmTime;
 
     /**
      * 计算耗时
      */
-    private Long computeTime;
+    @TableField("compute_time")
+    private String computeTime;
 
     /**
-     * 拍摄模式:3(SFM架站式-看看场景), 
-        4(SFM架站式-看见/深时/深光场景),
-        5(SLAM移动定位模式) ,
-        6(SLAM移动定位模式-有点位)
+     * 点位视频
      */
-    private Integer location;
+    @TableField("videos")
+    private String videos;
+
+    @TableField("yun_file_bucket")
+    private String yunFileBucket;
 
     /**
      * 创建时间
      */
-    private Timestamp createTime;
+    @TableField("create_time")
+    private Date createTime;
 
     /**
      * 更新时间
      */
-    private Timestamp updateTime;
+    @TableField("update_time")
+    private Date updateTime;
 
     /**
-     * A-有效,I-无效
+     * 记录的状态,A: 生效,I: 禁用
      */
-    @Column(isLogicDelete = true)
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
     private String recStatus;
 
+    /**
+     * 是否是mesh场景
+     */
+    @TableField("is_obj")
     private Integer isObj;
-
 }

+ 18 - 0
src/main/java/com/fdkankan/external/mapper/ISceneEditControlsMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.external.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.external.entity.SceneEditControls;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2022-01-18
+ */
+@Mapper
+public interface ISceneEditControlsMapper extends BaseMapper<SceneEditControls> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/external/mapper/ISceneEditInfoExtMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.external.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.external.entity.SceneEditInfoExt;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2022-03-07
+ */
+@Mapper
+public interface ISceneEditInfoExtMapper extends BaseMapper<SceneEditInfoExt> {
+
+}

+ 10 - 10
src/main/java/com/fdkankan/external/schedule/ScheduleJob.java

@@ -16,16 +16,16 @@ public class ScheduleJob {
     private ISceneOfflinePackagePushService sceneOfflinePackagePushService;
 
 
-    /**
-     * 中国文物信息中心场景推送任务
-     * 每隔十分钟推送一次
-     */
-    @Scheduled(cron="0/30 * * * * ?")
-    public void scenePush4Zgwwxxzx() {
-        log.info("中国文物信息中心场景推送任务开始");
-        sceneOfflinePackagePushService.scenePushScheduleHandler("zgwwxxzx");
-        log.info("中国文物信息中心场景推送任务结束");
-    }
+//    /**
+//     * 中国文物信息中心场景推送任务
+//     * 每隔十分钟推送一次
+//     */
+//    @Scheduled(cron="0/30 * * * * ?")
+//    public void scenePush4Zgwwxxzx() {
+//        log.info("中国文物信息中心场景推送任务开始");
+//        sceneOfflinePackagePushService.scenePushScheduleHandler("zgwwxxzx");
+//        log.info("中国文物信息中心场景推送任务结束");
+//    }
 
 //    @Scheduled(fixedRate = 30*1000)
 //    public void scenePush4Zgwwxxzx() {

+ 18 - 0
src/main/java/com/fdkankan/external/service/ISceneEditControlsService.java

@@ -0,0 +1,18 @@
+package com.fdkankan.external.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.external.entity.SceneEditControls;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author
+ * @since 2022-01-18
+ */
+public interface ISceneEditControlsService extends IService<SceneEditControls> {
+
+    SceneEditControls getBySceneEditId(long sceneEditInfoId);
+
+}

+ 20 - 0
src/main/java/com/fdkankan/external/service/ISceneEditInfoExtService.java

@@ -0,0 +1,20 @@
+package com.fdkankan.external.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.external.entity.SceneEditInfoExt;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author
+ * @since 2022-03-07
+ */
+public interface ISceneEditInfoExtService extends IService<SceneEditInfoExt> {
+
+    SceneEditInfoExt getByScenePlusId(long scenePlusId);
+
+    SceneEditInfoExt getByEditInfoId(long editInfoId);
+
+}

+ 2 - 0
src/main/java/com/fdkankan/external/service/ISceneEditInfoService.java

@@ -11,4 +11,6 @@ import com.fdkankan.external.entity.SceneEditInfo;
  */
 public interface ISceneEditInfoService extends IService<SceneEditInfo> {
 
+    SceneEditInfo getByScenePlusId(Long scenePlusId);
+
 }

+ 9 - 0
src/main/java/com/fdkankan/external/service/IScrbService.java

@@ -0,0 +1,9 @@
+package com.fdkankan.external.service;
+
+import com.alibaba.fastjson.JSONObject;
+
+public interface IScrbService {
+
+    void packageScene(JSONObject jsonObject);
+
+}

+ 26 - 0
src/main/java/com/fdkankan/external/service/impl/SceneEditControlsServiceImpl.java

@@ -0,0 +1,26 @@
+package com.fdkankan.external.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.external.entity.SceneEditControls;
+import com.fdkankan.external.mapper.ISceneEditControlsMapper;
+import com.fdkankan.external.service.ISceneEditControlsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2022-01-18
+ */
+@Service
+public class SceneEditControlsServiceImpl extends ServiceImpl<ISceneEditControlsMapper, SceneEditControls> implements ISceneEditControlsService {
+
+    @Override
+    public SceneEditControls getBySceneEditId(long sceneEditInfoId) {
+        return this.getOne(new LambdaQueryWrapper<SceneEditControls>()
+                .eq(SceneEditControls::getEditInfoId, sceneEditInfoId));
+    }
+}

+ 33 - 0
src/main/java/com/fdkankan/external/service/impl/SceneEditInfoExtServiceImpl.java

@@ -0,0 +1,33 @@
+package com.fdkankan.external.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.external.entity.SceneEditInfoExt;
+import com.fdkankan.external.mapper.ISceneEditInfoExtMapper;
+import com.fdkankan.external.service.ISceneEditInfoExtService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2022-03-07
+ */
+@Service
+public class SceneEditInfoExtServiceImpl extends ServiceImpl<ISceneEditInfoExtMapper, SceneEditInfoExt> implements ISceneEditInfoExtService {
+
+    @Override
+    public SceneEditInfoExt getByScenePlusId(long scenePlusId) {
+        return this.getOne(new LambdaQueryWrapper<SceneEditInfoExt>().eq(SceneEditInfoExt::getScenePlusId, scenePlusId));
+    }
+
+    @Override
+    public SceneEditInfoExt getByEditInfoId(long editInfoId) {
+        return this.getOne(new LambdaQueryWrapper<SceneEditInfoExt>().eq(SceneEditInfoExt::getEditInfoId, editInfoId));
+    }
+
+
+
+}

+ 5 - 0
src/main/java/com/fdkankan/external/service/impl/SceneEditInfoServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fdkankan.external.service.impl;
 
 import com.mybatisflex.annotation.UseDataSource;
+import com.mybatisflex.core.query.QueryWrapper;
 import com.mybatisflex.spring.service.impl.ServiceImpl;
 import com.fdkankan.external.entity.SceneEditInfo;
 import com.fdkankan.external.mapper.SceneEditInfoMapper;
@@ -17,4 +18,8 @@ import org.springframework.stereotype.Service;
 @Service
 public class SceneEditInfoServiceImpl extends ServiceImpl<SceneEditInfoMapper, SceneEditInfo> implements ISceneEditInfoService {
 
+    @Override
+    public SceneEditInfo getByScenePlusId(Long scenePlusId) {
+        return this.getOne(QueryWrapper.create().eq(SceneEditInfo::getScenePlusId, scenePlusId));
+    }
 }

+ 82 - 0
src/main/java/com/fdkankan/external/service/impl/ScrbServiceImpl.java

@@ -0,0 +1,82 @@
+package com.fdkankan.external.service.impl;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.ZipUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.external.entity.*;
+import com.fdkankan.external.service.*;
+import com.fdkankan.fyun.face.FYunFileServiceInterface;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.util.List;
+
+@Service
+public class ScrbServiceImpl implements IScrbService {
+
+    private static final String basePath = "/mnt/scrb/";
+
+    @Resource
+    private FYunFileServiceInterface fYunFileService;
+
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Autowired
+    private IScenePlusExtService scenePlusExtService;
+    @Autowired
+    private ISceneEditInfoService sceneEditInfoService;
+    @Autowired
+    private ISceneEditInfoExtService sceneEditInfoExtService;
+    @Autowired
+    private ISceneEditControlsService sceneEditControlsService;
+
+    @Override
+    public void packageScene(JSONObject jsonObject) {
+
+        String num = jsonObject.getString("num");
+        String path = basePath + num + "/";
+        String sourcePath = path + "source/";
+        String zipPath = path + num + ".zip";
+        FileUtil.mkdir(sourcePath);
+
+        //下载表结构
+        ScenePlus scenePlus = scenePlusService.getByNum(num);
+        ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
+        SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
+        SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfo.getId());
+        SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
+        FileUtil.writeUtf8String(JSON.toJSONString(scenePlus), sourcePath + "scenePlus.txt");
+        FileUtil.writeUtf8String(JSON.toJSONString(scenePlusExt), sourcePath + "scenePlusExt.txt");
+        FileUtil.writeUtf8String(JSON.toJSONString(sceneEditInfo), sourcePath + "sceneEditInfo.txt");
+        FileUtil.writeUtf8String(JSON.toJSONString(sceneEditInfoExt), sourcePath + "sceneEditInfoExt.txt");
+        FileUtil.writeUtf8String(JSON.toJSONString(sceneEditControls), sourcePath + "sceneEditControls.txt");
+
+        //下载scene_view_data
+        String viewPath = "scene_view_data/" + num + "/";
+        List<String> keys = fYunFileService.listRemoteFiles(viewPath);
+        keys.stream().forEach(key->{
+            fYunFileService.downloadFile(key, sourcePath + key);
+        });
+
+        //下载cache/images/
+        String imagesPath = "scene_result_data/" + num + "/caches/images/";
+        keys = fYunFileService.listRemoteFiles(imagesPath);
+        keys.stream().forEach(key->{
+            fYunFileService.downloadFile(key, sourcePath + key);
+        });
+
+        //打包并上传到obs
+        File zip = ZipUtil.zip(sourcePath, zipPath);
+        if(!zip.exists()){
+            throw new RuntimeException("打包失败,zipPath:" + zipPath);
+        }
+
+        //上传obs
+
+
+    }
+}

+ 60 - 0
src/main/java/com/fdkankan/external/util/ScrbObsUtil.java

@@ -0,0 +1,60 @@
+package com.fdkankan.external.util;
+
+import com.obs.services.ObsClient;
+import com.obs.services.model.ObsObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+@Slf4j
+@Configuration
+@ConditionalOnProperty(name = "scrb.obs.use", havingValue = "true")
+public class ScrbObsUtil {
+
+    @Value("${scrb.obs.endPoint:#{null}}")
+    private String endPoint;
+
+    @Value("${scrb.obs.ak:#{null}}")
+    private String ak;
+
+    @Value("${scrb.obs.sk:#{null}}")
+    private String sk;
+
+    @Autowired
+    private ObsClient obsClient;
+
+    @Bean("obsClient")
+    public ObsClient initObsClient(){
+        return new ObsClient(ak, sk, endPoint);
+    }
+
+    public String getFileContent(String bucket, String objectname){
+        try {
+            ObsObject object = obsClient.getObject(bucket, objectname);
+            InputStream inputStream = object.getObjectContent();
+            StringBuilder content = new StringBuilder();
+            try(BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))){
+                while (true) {
+                    String line = reader.readLine();
+                    if (line == null) break;
+                    content.append(line);
+                }
+            } catch (IOException e) {
+                log.error("读取华为云文件流失败", e);
+            }
+            return content.toString();
+        } catch (Exception e) {
+            log.error("获取文件内容失败:{}", objectname, e);
+            return null;
+        }
+    }
+
+}