Browse Source

数据库脚本调整为MySQL,建筑楼层调整为从物理世界查询

linhuili 3 years ago
parent
commit
0d327ddf46

+ 36 - 0
docker/dockerfiles/labsl/Dockerfile

@@ -0,0 +1,36 @@
+#构建此镜像的基础镜像
+FROM java:8-jre
+#指定作者名称
+MAINTAINER lijie<lijie@persagy.com>
+
+#定义标签属性
+LABEL tier=backend
+LABEL product=adm
+LABEL project=labsl
+LABEL name=labsl
+
+#设置环境变量
+ENV JAVA_OPTS -Dfile.encoding=UTF-8 -Xms2048m -Xmx2048m
+ENV TZ Asia/Shanghai
+#ARG 可以接收docker build命令中以--build-arg 指定的参数
+ARG WORKER_HOME
+
+#执行的命令
+RUN apt-get install -y --no-install-recommends tzdata && rm -rf /var/lib/apt/lists/*
+RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime	&& echo 'Asia/Shanghai' > /etc/timezone
+
+RUN mkdir -p $WORKER_HOME/config
+
+#复制文件到容器内
+COPY *.jar $WORKER_HOME/app.jar
+COPY entrypoint.sh $WORKER_HOME/
+COPY version.txt $WORKER_HOME/
+COPY config $WORKER_HOME/config
+#设置工作目录
+WORKDIR $WORKER_HOME
+
+#查看上述复制的文件,是否复制成功
+RUN ls
+
+#启动执行
+ENTRYPOINT ["sh","./entrypoint.sh"]

+ 3 - 0
docker/dockerfiles/labsl/entrypoint.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+echo "entrypoint run..."
+java -jar $JAVA_OPTS -Dserver.port=$SERVER_PORT -Deureka.client.service-url.defaultZone=$EUREKA_CLIENT_DEFAULT_ZONE -Dspring.cloud.config.profile=$SPRING_CLOUD_CONFIG_PROFILE -Dspring.cloud.config.uri=$SPRING_CLOUD_CONFIG_URI app.jar

+ 36 - 0
docker/dockerfiles/meiku/Dockerfile

@@ -0,0 +1,36 @@
+#构建此镜像的基础镜像
+FROM java:8-jre
+#指定作者名称
+MAINTAINER lijie<lijie@persagy.com>
+
+#定义标签属性
+LABEL tier=backend
+LABEL product=adm
+LABEL project=meiku
+LABEL name=meiku
+
+#设置环境变量
+ENV JAVA_OPTS -Dfile.encoding=UTF-8 -Xms2048m -Xmx2048m
+ENV TZ Asia/Shanghai
+#ARG 可以接收docker build命令中以--build-arg 指定的参数
+ARG WORKER_HOME
+
+#执行的命令
+RUN apt-get install -y --no-install-recommends tzdata && rm -rf /var/lib/apt/lists/*
+RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime	&& echo 'Asia/Shanghai' > /etc/timezone
+
+RUN mkdir -p $WORKER_HOME/config
+
+#复制文件到容器内
+COPY *.jar $WORKER_HOME/app.jar
+COPY entrypoint.sh $WORKER_HOME/
+COPY version.txt $WORKER_HOME/
+COPY config $WORKER_HOME/config
+#设置工作目录
+WORKDIR $WORKER_HOME
+
+#查看上述复制的文件,是否复制成功
+RUN ls
+
+#启动执行
+ENTRYPOINT ["sh","./entrypoint.sh"]

+ 3 - 0
docker/dockerfiles/meiku/entrypoint.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+echo "entrypoint run..."
+java -jar $JAVA_OPTS -Dserver.port=$SERVER_PORT -Deureka.client.service-url.defaultZone=$EUREKA_CLIENT_DEFAULT_ZONE -Dspring.cloud.config.profile=$SPRING_CLOUD_CONFIG_PROFILE -Dspring.cloud.config.uri=$SPRING_CLOUD_CONFIG_URI app.jar

+ 36 - 0
docker/dockerfiles/message-center/Dockerfile

@@ -0,0 +1,36 @@
+#构建此镜像的基础镜像
+FROM java:8-jre
+#指定作者名称
+MAINTAINER lijie<lijie@persagy.com>
+
+#定义标签属性
+LABEL tier=backend
+LABEL product=adm
+LABEL project=message-center
+LABEL name=bdtp-messsage
+
+#设置环境变量
+ENV JAVA_OPTS -Dfile.encoding=UTF-8 -Xms2048m -Xmx2048m
+ENV TZ Asia/Shanghai
+#ARG 可以接收docker build命令中以--build-arg 指定的参数
+ARG WORKER_HOME
+
+#执行的命令
+RUN apt-get install -y --no-install-recommends tzdata && rm -rf /var/lib/apt/lists/*
+RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime	&& echo 'Asia/Shanghai' > /etc/timezone
+
+RUN mkdir -p $WORKER_HOME/config
+
+#复制文件到容器内
+COPY *.jar $WORKER_HOME/app.jar
+COPY entrypoint.sh $WORKER_HOME/
+COPY version.txt $WORKER_HOME/
+COPY config $WORKER_HOME/config
+#设置工作目录
+WORKDIR $WORKER_HOME
+
+#查看上述复制的文件,是否复制成功
+RUN ls
+
+#启动执行
+ENTRYPOINT ["sh","./entrypoint.sh"]

+ 3 - 0
docker/dockerfiles/message-center/entrypoint.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+echo "entrypoint run..."
+java -jar $JAVA_OPTS -Deureka.client.service-url.defaultZone=$EUREKA_CLIENT_DEFAULT_ZONE -Dspring.cloud.config.profile=$SPRING_CLOUD_CONFIG_PROFILE -Dspring.cloud.config.uri=$SPRING_CLOUD_CONFIG_URI app.jar

+ 77 - 0
docker/k8sfiles/labsl.yml

@@ -0,0 +1,77 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: labsl
+  labels:
+    app: labsl
+spec:
+  selector:
+    app: labsl
+  ports:
+  - port: 8080
+    targetPort: 8080
+    name: server-port
+
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: labsl
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: labsl
+  template:
+    metadata:
+      labels:
+        app: labsl
+    spec:
+      containers:
+      - name: labsl
+        image: labisenlin.persagy.com/library/labsl:latest
+        imagePullPolicy: Always
+        ports:
+        - containerPort: 8080
+          name: server-port
+        env:
+        - name: TZ
+          value: Asia/Shanghai
+        - name: SERVER_PORT
+          value: "8080"
+        - name: SPRING_CLOUD_CONFIG_URI
+          valueFrom:
+            configMapKeyRef:
+              name: labsl
+              key: spring.cloud.config.uri
+        - name: SPRING_PROFILES_ACTIVE
+          valueFrom:
+            configMapKeyRef:
+              name: labsl
+              key: spring.profiles.active
+        - name: SPRING_CLOUD_CONFIG_PROFILE
+          valueFrom:
+            configMapKeyRef:
+              name: labsl
+              key: spring.cloud.config.profile
+        - name: EUREKA_CLIENT_FETCH_REGISTRY
+          valueFrom:
+            configMapKeyRef:
+              name: labsl
+              key: eureka.client.fetch-registry
+        - name: EUREKA_CLIENT_REGISTER_WITH_EUREKA
+          valueFrom:
+            configMapKeyRef:
+              name: labsl
+              key: eureka.client.register-with-eureka
+        - name: EUREKA_CLIENT_DEFAULT_ZONE
+          valueFrom:
+            configMapKeyRef:
+              name: labsl
+              key: eureka.client.default.zone
+        - name: EUREKA_INSTANCE_IP_ADDRESS
+          valueFrom:
+            configMapKeyRef:
+              name: labsl
+              key: eureka.instance.ip.address

+ 77 - 0
docker/k8sfiles/meiku.yml

@@ -0,0 +1,77 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: meiku
+  labels:
+    app: meiku
+spec:
+  selector:
+    app: meiku
+  ports:
+  - port: 8080
+    targetPort: 8080
+    name: server-port
+
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: meiku
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: meiku
+  template:
+    metadata:
+      labels:
+        app: meiku
+    spec:
+      containers:
+      - name: meiku
+        image: labisenlin.persagy.com/library/meiku:latest
+        imagePullPolicy: Always
+        ports:
+        - containerPort: 8080
+          name: server-port
+        env:
+        - name: TZ
+          value: Asia/Shanghai
+        - name: SERVER_PORT
+          value: "8080"
+        - name: SPRING_CLOUD_CONFIG_URI
+          valueFrom:
+            configMapKeyRef:
+              name: meiku
+              key: spring.cloud.config.uri
+        - name: SPRING_PROFILES_ACTIVE
+          valueFrom:
+            configMapKeyRef:
+              name: meiku
+              key: spring.profiles.active
+        - name: SPRING_CLOUD_CONFIG_PROFILE
+          valueFrom:
+            configMapKeyRef:
+              name: meiku
+              key: spring.cloud.config.profile
+        - name: EUREKA_CLIENT_FETCH_REGISTRY
+          valueFrom:
+            configMapKeyRef:
+              name: meiku
+              key: eureka.client.fetch-registry
+        - name: EUREKA_CLIENT_REGISTER_WITH_EUREKA
+          valueFrom:
+            configMapKeyRef:
+              name: meiku
+              key: eureka.client.register-with-eureka
+        - name: EUREKA_CLIENT_DEFAULT_ZONE
+          valueFrom:
+            configMapKeyRef:
+              name: meiku
+              key: eureka.client.default.zone
+        - name: EUREKA_INSTANCE_IP_ADDRESS
+          valueFrom:
+            configMapKeyRef:
+              name: meiku
+              key: eureka.instance.ip.address

+ 77 - 0
docker/k8sfiles/message-center.yml

@@ -0,0 +1,77 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: message-center
+  labels:
+    app: message-center
+spec:
+  selector:
+    app: message-center
+  ports:
+  - port: 8080
+    targetPort: 8080
+    name: server-port
+
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: message-center
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: message-center
+  template:
+    metadata:
+      labels:
+        app: message-center
+    spec:
+      containers:
+      - name: message-center
+        image: labisenlin.persagy.com/library/message-center:latest
+        imagePullPolicy: Always
+        ports:
+        - containerPort: 8080
+          name: server-port
+        env:
+        - name: TZ
+          value: Asia/Shanghai
+        - name: SERVER_PORT
+          value: "8080"
+        - name: SPRING_CLOUD_CONFIG_URI
+          valueFrom:
+            configMapKeyRef:
+              name: message-center
+              key: spring.cloud.config.uri
+        - name: SPRING_PROFILES_ACTIVE
+          valueFrom:
+            configMapKeyRef:
+              name: message-center
+              key: spring.profiles.active
+        - name: SPRING_CLOUD_CONFIG_PROFILE
+          valueFrom:
+            configMapKeyRef:
+              name: message-center
+              key: spring.cloud.config.profile
+        - name: EUREKA_CLIENT_FETCH_REGISTRY
+          valueFrom:
+            configMapKeyRef:
+              name: message-center
+              key: eureka.client.fetch-registry
+        - name: EUREKA_CLIENT_REGISTER_WITH_EUREKA
+          valueFrom:
+            configMapKeyRef:
+              name: message-center
+              key: eureka.client.register-with-eureka
+        - name: EUREKA_CLIENT_DEFAULT_ZONE
+          valueFrom:
+            configMapKeyRef:
+              name: message-center
+              key: eureka.client.default.zone
+        - name: EUREKA_INSTANCE_IP_ADDRESS
+          valueFrom:
+            configMapKeyRef:
+              name: message-center
+              key: eureka.instance.ip.address

+ 2 - 0
gradle.properties

@@ -17,6 +17,7 @@ PERSAGY_SERVICE_VERSION = 1.4.228
 MAVEN_REPO_PUBLIC_URL = http://dev.dp.sagacloud.cn:8082/repository/maven-public/
 MAVEN_REPO_PUBLIC_URL = http://dev.dp.sagacloud.cn:8082/repository/maven-public/
 MAVEN_REPO_RELEASE_URL = http://dev.dp.sagacloud.cn:8082/repository/maven-releases/
 MAVEN_REPO_RELEASE_URL = http://dev.dp.sagacloud.cn:8082/repository/maven-releases/
 MAVEN_REPO_SNAPSHOT_URL = http://dev.dp.sagacloud.cn:8082/repository/maven-snapshots/
 MAVEN_REPO_SNAPSHOT_URL = http://dev.dp.sagacloud.cn:8082/repository/maven-snapshots/
+MAVEN_REPO_NEXUS_RELEASE_URL = http://47.93.132.139:8081/nexus/content/repositories/persagy/
 NEXUS_USERNAME = saga
 NEXUS_USERNAME = saga
 NEXUS_PASSWORD = saga
 NEXUS_PASSWORD = saga
 
 
@@ -115,3 +116,4 @@ SPRING_DOC_VERSION = 1.4.8
 # https://mvnrepository.com/artifact/com.credibledoc/plantuml-core
 # https://mvnrepository.com/artifact/com.credibledoc/plantuml-core
 PLANTUML_VERSION = 1.0.24
 PLANTUML_VERSION = 1.0.24
 
 
+DIGITAL_START_VERSION = 1.0.0

+ 7 - 2
labsl/build.gradle

@@ -16,6 +16,11 @@ compileTestKotlin {
     kotlinOptions.jvmTarget = JVM_TARGET
     kotlinOptions.jvmTarget = JVM_TARGET
 }
 }
 
 
+repositories {
+    maven{url MAVEN_REPO_NEXUS_RELEASE_URL}
+    mavenCentral()
+    jcenter()
+}
 dependencies {
 dependencies {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // kotlin 依赖
     // kotlin 依赖
@@ -58,7 +63,7 @@ dependencies {
     compile group: "com.persagy", name: "persagy-service-base", version: PERSAGY_SERVICE_VERSION
     compile group: "com.persagy", name: "persagy-service-base", version: PERSAGY_SERVICE_VERSION
     compile group: "com.persagy", name: "persagy-service-mybatis", version: PERSAGY_SERVICE_VERSION
     compile group: "com.persagy", name: "persagy-service-mybatis", version: PERSAGY_SERVICE_VERSION
     compile group: "com.persagy", name: "persagy-service-mysql", version: PERSAGY_SERVICE_VERSION
     compile group: "com.persagy", name: "persagy-service-mysql", version: PERSAGY_SERVICE_VERSION
-
+    compile group: "com.persagy", name: "dmp-digital-starter", version: DIGITAL_START_VERSION
 
 
     // TestNG 测试框架
     // TestNG 测试框架
     compile group: "org.testng", name: "testng", version: TESTNG_VERSION
     compile group: "org.testng", name: "testng", version: TESTNG_VERSION
@@ -76,5 +81,5 @@ dependencies {
 //    // 二维码与条形码
 //    // 二维码与条形码
 //    // https://mvnrepository.com/artifact/com.google.zxing/core
 //    // https://mvnrepository.com/artifact/com.google.zxing/core
 //    compile group: "com.google.zxing", name: "core", version: ZXING_VERSION
 //    compile group: "com.google.zxing", name: "core", version: ZXING_VERSION
-    
+
 }
 }

+ 4 - 0
labsl/src/main/kotlin/com/persagy/labsl/Opts.kt

@@ -14,4 +14,8 @@ object Opts {
     val projectId: String?
     val projectId: String?
         get() = SPageContext.getHeader("projectId")
         get() = SPageContext.getHeader("projectId")
 
 
+    /** 项目 id */
+    val groupCode: String?
+        get() = SPageContext.getHeader("groupCode")
+
 }
 }

+ 29 - 0
labsl/src/main/kotlin/com/persagy/labsl/client/DmpRwdClient.kt

@@ -0,0 +1,29 @@
+package com.persagy.labsl.client
+
+import com.alibaba.fastjson.JSONArray
+import com.alibaba.fastjson.JSONObject
+import org.springframework.cloud.openfeign.FeignClient
+import com.persagy.dmp.basic.config.DigitalFeignConfig
+import org.springframework.web.bind.annotation.PostMapping
+import com.persagy.labsl.constant.DmpUrlConstant
+import org.springframework.cloud.openfeign.SpringQueryMap
+import com.persagy.labsl.models.request.InstanceUrlParam
+import com.persagy.labsl.models.response.DmpResult
+import org.springframework.web.bind.annotation.RequestBody
+
+/**
+ * @description:数据中台dmp-rwd 物理世界、数据字典、IOT 接口feign
+ * @author:lgy
+ * @data:2021/8/11 14:56
+ */
+@FeignClient(name = "dmp-rwd", configuration = [DigitalFeignConfig::class])
+interface DmpRwdClient {
+    /**
+     * @description: 查询对象列表
+     * @param: objectUrlParam 对象请求url通用参数
+     * @param: criteria post请求参数
+     * @return: com.persagy.dmp.common.DmpResult
+     */
+    @PostMapping(DmpUrlConstant.OBJECT_QUERY)
+    fun queryObject(@SpringQueryMap objectUrlParam: InstanceUrlParam?, @RequestBody criteria: JSONObject?): DmpResult<JSONArray?>?
+}

+ 162 - 0
labsl/src/main/kotlin/com/persagy/labsl/constant/DmpUrlConstant.java

@@ -0,0 +1,162 @@
+package com.persagy.labsl.constant;
+
+
+/**
+ *@description:dmp服务请求url常量
+ *@author:lgy
+ *@data:2021/8/11 15:00
+ */
+public class DmpUrlConstant {
+
+    /**
+     * 创建对象
+     */
+    public final static String OBJECT_CREATE = "/rwd/instance/object/create";
+
+    /**
+     * 更新对象
+     */
+    public final static String OBJECT_UPDATE = "/rwd/instance/object/update";
+
+    /**
+     * 删除对象
+     */
+    public final static String OBJECT_DELETE = "/rwd/instance/object/delete";
+
+    /**
+     * 查询对象
+     */
+    public final static String OBJECT_QUERY = "/rwd/instance/object/query";
+
+    /**
+     * 查询实时数据
+     */
+    public final static String OBJECT_CURRENT_DATA = "/rwd/iot/data/current";
+
+    /**
+     * 查询历史数据/分精度数据
+     */
+    public final static String OBJECT_HISTORY_DATA = "/rwd/iot/data/history";
+
+    /**
+     * 查询图实例
+     */
+    public final static String GRAPH_QUERY = "/rwd/graph/query";
+
+    /**
+     * 创建关系
+     */
+    public final static String RELATION_CREATE = "/rwd/instance/relation/create";
+
+    /**
+     * 删除关系
+     */
+    public final static String RELATION_DELETE = "/rwd/instance/relation/delete";
+
+    /**
+     * 查询关系
+     */
+    public final static String RELATION_QUERY = "/rwd/instance/relation/query";
+
+    /**
+     * 查询关系对象
+     */
+    public final static String RELATION_OBJECT_QUERY = "/rwd/instance/relation/object/query";
+
+
+
+    /**
+     * 查询信息点描述信息
+     */
+    public final static String DEF_FUNCID = "/rwd/def/funcid";
+
+    /**
+     * 创建信息点
+     */
+    public final static String DEF_FUNCID_CREATE = "/rwd/def/funcid/create";
+
+    /**
+     * 批量修改信息点
+     */
+    public final static String DEF_FUNCID_UPDATE_BATCH = "/rwd/def/funcid/updateBatch";
+
+
+    /**
+     * 批量删除信息点
+     */
+    public final static String DEF_FUNCID_DEL_BATCH = "/rwd/def/funcid/deleteBatch";
+
+    /**
+     * 类型查询
+     */
+    public final static String DEF_CLASS = "/rwd/def/class";
+
+    // ==================中台组织结构=========================================================================
+
+    /**
+     * 中台人员组织权限服务--查询用户
+     */
+    public static final String ORG_USER_QUERY = "/org/user/query";
+
+    /**
+     * 集团查询
+     */
+    public static final String ORG_GROUP_QUERY = "/org/group/query";
+
+    /**
+     * 项目查询
+     */
+    public static final String ORG_PROJECT_QUERY = "/org/project/query";
+
+    /**批量查询项目接口URI*/
+    public static final  String OBJECT_BATCH_QUERY_PROJECT_BY_IDS = "/rwd/instance/object/batchQueryProjectByIds";
+
+    // ==================中台知识库=========================================================================
+
+    /**
+     * 字典数据查询
+     */
+    public static final String DIC_DATA_QUERY = "/dic/dt/data/query";
+
+    // ==================中台关系计算入口=========================================================================
+    /**
+     * 关系计算创建
+     */
+    public static final String OBJECT_COMPATIBLE_CREATE = "rwd/instance/object/compatible/createObjRelationsByKeywordAndObjType";
+
+    /**
+     * 关系计算删除
+     */
+    public static final String OBJECT_COMPATIBLE_DELETE = "rwd/instance/object/compatible/deleteObjRelationsByRelId";
+
+
+    /**
+     * 查询
+     */
+    public static final String RELATION_PROJECT_CAL_QUERY = "/rwd/instance/relation/project/cal/query";
+    /**
+     * 字典数据查询
+     */
+    public static final String RELATION_PROJECT_CAL_CREATE = "/rwd/instance/relation/project/cal/create";
+    /**
+     * 更新
+     */
+    public static final String RELATION_PROJECT_CAL_UPDATE = "/rwd/instance/relation/project/cal/update";
+
+    /**
+     * 删除
+     */
+    public static final String RELATION_PROJECT_CAL_DELETE = "/rwd/instance/relation/project/cal/delete";
+
+    /**
+     * 查询采集信息点
+     */
+    public final static String DEF_FUNCID_COLLECT = "/rwd/def/funcid/collect/query";
+
+    /**
+     * 批量设置采集信息点
+     */
+    public final static String DEF_FUNCID_COLLECT_SET = "/rwd/def/funcid/collect/updateBatch";
+
+
+}

+ 53 - 0
labsl/src/main/kotlin/com/persagy/labsl/models/request/InstanceUrlParam.java

@@ -0,0 +1,53 @@
+package com.persagy.labsl.models.request;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @description: 对象、关系请求url通用参数
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class InstanceUrlParam implements Serializable {
+
+    private static final long serialVersionUID = -994117732505752231L;
+
+    /**
+     * 集团编码
+     */
+    private String groupCode;
+
+    /**
+     * 方案id
+     */
+    private String schemeId;
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+
+    /**
+     * 应用id
+     */
+    private String appId;
+    /**
+     * 用户id
+     */
+    private String userId;
+
+    public InstanceUrlParam(String groupCode, String schemeId, String projectId, String appId) {
+        this.groupCode = groupCode;
+        this.schemeId = schemeId;
+        this.projectId = projectId;
+        this.appId = appId;
+    }
+}

+ 80 - 0
labsl/src/main/kotlin/com/persagy/labsl/models/response/DmpResult.java

@@ -0,0 +1,80 @@
+package com.persagy.labsl.models.response;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.Serializable;
+import java.lang.reflect.*;
+
+/**
+ * @description: 数据中台返回值通用类
+ * @author: lgy
+ * @since: 2021/08/11 15:40
+ * @version: V1.0
+ */
+@Data
+@NoArgsConstructor
+@Slf4j
+public class DmpResult<T> implements Serializable {
+
+    /**
+     * 成功
+     */
+    public final static String SUCCESS = "success";
+    /**
+     * 失败
+     */
+    public final static String FAILURE = "failure";
+
+    private static final long serialVersionUID = 1L;
+
+    private String result;
+
+    private T data;
+
+    private Integer count;
+
+    private String message;
+
+    public T getData(Class<T> clazz) {
+        if (data == null) {
+            T t = null;
+            try {
+                t = clazz.newInstance();
+            } catch (Exception e) {
+                log.error(e.getMessage(),e);
+            }
+            return t;
+        }
+        return data;
+    }
+
+    public T getData(T t) {
+        if (data == null) {
+            return t;
+        }
+        return data;
+    }
+    // type不能直接实例化对象,通过type获取class的类型,然后实例化对象
+    public static Class<?> getRawType(Type type) {
+        if (type instanceof Class) {
+            return (Class) type;
+        } else if (type instanceof ParameterizedType) {
+            ParameterizedType parameterizedType = (ParameterizedType) type;
+            Type rawType = parameterizedType.getRawType();
+            return (Class) rawType;
+        } else if (type instanceof GenericArrayType) {
+            Type componentType = ((GenericArrayType) type).getGenericComponentType();
+            return Array.newInstance(getRawType(componentType), 0).getClass();
+        } else if (type instanceof TypeVariable) {
+            return Object.class;
+        } else if (type instanceof WildcardType) {
+            return getRawType(((WildcardType) type).getUpperBounds()[0]);
+        } else {
+            String className = type == null ? "null" : type.getClass().getName();
+            throw new IllegalArgumentException("Expected a Class, ParameterizedType, or GenericArrayType, but <" + type + "> is of type " + className);
+        }
+    }
+
+}

+ 45 - 15
labsl/src/main/kotlin/com/persagy/labsl/services/planar/PlanarGraphService.kt

@@ -1,17 +1,19 @@
 package com.persagy.labsl.services.planar
 package com.persagy.labsl.services.planar
 
 
-import com.persagy.labsl.utils.IdUtils
+import com.alibaba.fastjson.JSONArray
+import com.alibaba.fastjson.JSONObject
 import com.persagy.base.extensions.toJson
 import com.persagy.base.extensions.toJson
 import com.persagy.database.SFilter
 import com.persagy.database.SFilter
 import com.persagy.labsl.Opts
 import com.persagy.labsl.Opts
+import com.persagy.labsl.Opts.groupCode
+import com.persagy.labsl.Opts.projectId
+import com.persagy.labsl.client.DmpRwdClient
 import com.persagy.labsl.models.entities.pbs.*
 import com.persagy.labsl.models.entities.pbs.*
-import com.persagy.labsl.models.entities.tpt.pub.MarkersPub
-import com.persagy.labsl.models.entities.tpt.pub.NodePub
-import com.persagy.labsl.models.entities.tpt.pub.RelationPub
+import com.persagy.labsl.models.request.InstanceUrlParam
+import com.persagy.labsl.models.response.DmpResult
 import com.persagy.labsl.models.response.SCommonResponse
 import com.persagy.labsl.models.response.SCommonResponse
-import com.persagy.labsl.services.MarkersService
-import com.persagy.labsl.services.RelationService
-import com.persagy.labsl.services.pub.GraphPubService
+import com.persagy.labsl.utils.AdmEntityTransferUtil
+import com.persagy.labsl.utils.IdUtils
 import com.persagy.mybatis.SMybatisDao
 import com.persagy.mybatis.SMybatisDao
 import com.persagy.service.SObjectService
 import com.persagy.service.SObjectService
 import com.persagy.service.models.enums.SResponseType
 import com.persagy.service.models.enums.SResponseType
@@ -21,10 +23,9 @@ import com.persagy.service.models.responses.SBaseResponse
 import com.persagy.service.models.responses.SCreateResponse
 import com.persagy.service.models.responses.SCreateResponse
 import com.persagy.service.models.responses.SQueryResponse
 import com.persagy.service.models.responses.SQueryResponse
 import org.slf4j.LoggerFactory
 import org.slf4j.LoggerFactory
+import org.springframework.beans.factory.annotation.Autowired
 import java.text.SimpleDateFormat
 import java.text.SimpleDateFormat
 import java.util.*
 import java.util.*
-import kotlin.collections.ArrayList
-import kotlin.collections.HashSet
 
 
 /**
 /**
  * 图服务
  * 图服务
@@ -56,9 +57,13 @@ object PlanarGraphService : SObjectService<PlanarGraph>(SMybatisDao(PlanarGraph:
     /** 已发布 */
     /** 已发布 */
      val planarGraphPubService = SObjectService(SMybatisDao(PlanarGraphPub::class.java))
      val planarGraphPubService = SObjectService(SMybatisDao(PlanarGraphPub::class.java))
     /** 建筑 */
     /** 建筑 */
-    val buildingService = SObjectService(SMybatisDao(Building::class.java))
+    //val buildingService = SObjectService(SMybatisDao(Building::class.java))
     /** 楼层 */
     /** 楼层 */
-    val floorService = SObjectService(SMybatisDao(Floor::class.java))
+   // val floorService = SObjectService(SMybatisDao(Floor::class.java))
+
+
+    @Autowired
+    private val rwdClient: DmpRwdClient? = null
 
 
     /**
     /**
      * 创建图形
      * 创建图形
@@ -1184,6 +1189,7 @@ object PlanarGraphService : SObjectService<PlanarGraph>(SMybatisDao(PlanarGraph:
      * @param request       查询条件
      * @param request       查询条件
      */
      */
     fun pageQuerysDrafts(request: SQueryRequest): SQueryResponse<Building> {
     fun pageQuerysDrafts(request: SQueryRequest): SQueryResponse<Building> {
+       // val projectId = instanceUrlParam.projectId;
         val sQueryResponse = SQueryResponse<Building>()
         val sQueryResponse = SQueryResponse<Building>()
         try {
         try {
             val pageQuery = PlanarGraphService.pageQuery(request, arrayListOf(SFilter.eq("projectId", Opts.projectId!!)))
             val pageQuery = PlanarGraphService.pageQuery(request, arrayListOf(SFilter.eq("projectId", Opts.projectId!!)))
@@ -1199,9 +1205,14 @@ object PlanarGraphService : SObjectService<PlanarGraph>(SMybatisDao(PlanarGraph:
                     for (content in pageQuery.content!!) {
                     for (content in pageQuery.content!!) {
                         setFloor.add(content.floorId!!)
                         setFloor.add(content.floorId!!)
                     }
                     }
-                    val buildingList = buildingService.select(SFilter.inList("id", setBuilding.toList())).exec()
 
 
-                    val floorList = floorService.select(SFilter.inList("id", setFloor.toList())).order("floorSequenceId desc").exec()
+                    // val buildingList = buildingService.select(SFilter.inList("id", setBuilding.toList())).exec()
+                    var dmpBuildResult = queryDmpObject(SFilter.inList("id", setBuilding.toList()))
+                    val buildingList = AdmEntityTransferUtil.toAdmMultiEntity(dmpBuildResult!!.data, null, Building::class.java)
+
+                    //val floorList = floorService.select(SFilter.inList("id", setFloor.toList())).order("floorSequenceId desc").exec()
+                    var dmpFloorResult = queryDmpObject(SFilter.inList("id", setFloor.toList()))
+                    val floorList = AdmEntityTransferUtil.toAdmMultiEntity(dmpFloorResult!!.data, null, Floor::class.java)
                     for (floor in floorList) {
                     for (floor in floorList) {
                         for (content in pageQuery.content!!) {
                         for (content in pageQuery.content!!) {
                             if (content.floorId == floor.id) {
                             if (content.floorId == floor.id) {
@@ -1239,6 +1250,20 @@ object PlanarGraphService : SObjectService<PlanarGraph>(SMybatisDao(PlanarGraph:
     }
     }
 
 
     /**
     /**
+     * 查询物理世界对象信息
+     */
+    fun queryDmpObject(id: SFilter): DmpResult<JSONArray?>? {
+        val context = InstanceUrlParam()
+        context.groupCode = groupCode
+        context.projectId = projectId
+        val param = JSONObject()
+        val criteria = JSONObject()
+        criteria["id"] = id
+        param["criteria"] = id
+        return rwdClient?.queryObject(context,criteria)
+    }
+
+    /**
      * 查询已发布平面图
      * 查询已发布平面图
      */
      */
     fun pageQuerysPub(request: SQueryRequest): SQueryResponse<Building> {
     fun pageQuerysPub(request: SQueryRequest): SQueryResponse<Building> {
@@ -1257,9 +1282,14 @@ object PlanarGraphService : SObjectService<PlanarGraph>(SMybatisDao(PlanarGraph:
                     for (content in pageQuery.content!!) {
                     for (content in pageQuery.content!!) {
                         setFloor.add(content.floorId!!)
                         setFloor.add(content.floorId!!)
                     }
                     }
-                    val buildingList = buildingService.select(SFilter.inList("id", setBuilding.toList())).exec()
+                    //val buildingList = buildingService.select(SFilter.inList("id", setBuilding.toList())).exec()
+                    var dmpBuildResult = queryDmpObject(SFilter.inList("id", setBuilding.toList()))
+                    val buildingList = AdmEntityTransferUtil.toAdmMultiEntity(dmpBuildResult!!.data, null, Building::class.java)
+
+                    //val floorList = floorService.select(SFilter.inList("id", setFloor.toList())).order("floorSequenceId desc").exec()
+                    var dmpFloorResult = queryDmpObject(SFilter.inList("id", setFloor.toList()))
+                    val floorList = AdmEntityTransferUtil.toAdmMultiEntity(dmpFloorResult!!.data, null, Floor::class.java)
 
 
-                    val floorList = floorService.select(SFilter.inList("id", setFloor.toList())).order("floorSequenceId desc").exec()
                     for (floor in floorList) {
                     for (floor in floorList) {
                         for (content in pageQuery.content!!) {
                         for (content in pageQuery.content!!) {
                             if (content.floorId == floor.id) {
                             if (content.floorId == floor.id) {

+ 140 - 0
labsl/src/main/kotlin/com/persagy/labsl/utils/AdmEntityTransferUtil.java

@@ -0,0 +1,140 @@
+package com.persagy.labsl.utils;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ArrayUtil;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.basic.utils.JsonNodeUtils;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * ADM通用查询条件
+ * @author Charlie Yu
+ * @date 2021-08-16
+ */
+public class AdmEntityTransferUtil {
+
+    /**
+     * 转换为数据中台对象
+     * @param objList
+     * @return
+     */
+    public static ArrayNode toDmpMultiEntity(List objList) {
+        return JsonNodeUtils.toArrayNode(objList, "infos", null);
+    }
+
+    /**
+     * 转换为数据中台对象
+     * @param obj
+     * @return
+     */
+    public static JsonNode toDmpSingleEntity(Object obj) {
+        return JsonNodeUtils.toObjectNode(obj, "infos", null);
+    }
+
+    /**
+     * 转换为数据中心对象
+     * @param array 数据中台对象
+     * @param clazz 数据中心对象class
+     * @param <T>
+     * @return
+     */
+    public static <T> List<T> toAdmMultiEntity(List array, List<String> projection, Class<T> clazz) {
+        ArrayNode dataNode = JsonNodeUtils.toArrayNode(array, null, null);
+        return toAdmMultiEntity(dataNode, projection, clazz);
+    }
+
+    /**
+     * 转换为数据中心对象
+     * @param array
+     * @param clazz
+     * @param <T>
+     * @return
+     */
+    public static <T> List<T> toAdmMultiEntity(ArrayNode array, List<String> projection, Class<T> clazz) {
+        if(ArrayUtil.isEmpty(array)) {
+            return null;
+        }
+        // 转换属性名
+        for(int i = 0, j = array.size();i < j;i++) {
+            JsonNode node = array.get(i);
+            if(node != null && node.isObject()) {
+                resetAdmProperty((ObjectNode) node, projection);
+            }
+        }
+        return JsonNodeUtils.toEntity(array, clazz, "infos");
+    }
+
+    /**
+     * 转换为数据中心对象
+     * @param node
+     * @param clazz
+     * @param <T>
+     * @return
+     */
+    public static <T> T toAdmSingleEntity(ObjectNode node, List<String> projection, Class<T> clazz) {
+        resetAdmProperty(node, projection);
+        return JsonNodeUtils.toEntity(node, clazz, "infos");
+    }
+
+    /**
+     * 处理dmp转adm对象的属性名
+     * @param node
+     */
+    private static void resetAdmProperty(ObjectNode node, List<String> projection) {
+        // 转换属性名 TODO 目前只有创建时间和修改时间需要转换,后续有其他时通过建立映射在此转换即可
+        copyProperty(node, "creationTime", "createTime");
+        copyProperty(node, "modifiedTime", "lastUpdate");
+        copyProperty(node, "objType", "objectType");
+        removeProperty(node, projection);
+    }
+
+    /**
+     * 拷贝属性
+     * @param dmpData 数据中台对象
+     * @param srcProp 数据中台属性名
+     * @param desProp 对应的数据中心属性名
+     */
+    private static void copyProperty(ObjectNode dmpData, String srcProp, String desProp) {
+        if(dmpData == null) {
+            return;
+        }
+        JsonNode value = dmpData.get(srcProp);
+        if(value == null || value.isNull()) {
+            return;
+        }
+        dmpData.set(desProp, value);
+        dmpData.remove(srcProp);
+    }
+
+    /**
+     * 删除掉数据中心不需要的属性
+     * @param dmpData
+     */
+    private static void removeProperty(ObjectNode dmpData, List<String> projection){
+        if(CollUtil.isNotEmpty(projection)) {
+            // 转换为Set,提供遍历效率
+            Set<String> fieldSet = CollUtil.newHashSet(projection);
+            Iterator<String> fields =  dmpData.fieldNames();
+            while (fields.hasNext()) {
+                String field = fields.next();
+                // 返回结果中包含的不处理
+                if(fieldSet.contains(field)) {
+                    continue;
+                }
+                // 去掉不包含的属性
+                fields.remove();
+            }
+        } else {
+            // 返回全部时,去掉不需要属性
+            List<String> removeList = CollUtil.newArrayList("creator","valid", "createApp", "virtualCodes", "updateApp", "grouping", "modifier");
+            for(String removeField:removeList) {
+                dmpData.remove(removeField);
+            }
+        }
+    }
+}

+ 13 - 7
labsl/src/main/resources/application.yml

@@ -1,9 +1,11 @@
 ###############################################################################################################
 ###############################################################################################################
 # spring-cloud相关配置
 # spring-cloud相关配置
+server:
+  port: 9971
 eureka:
 eureka:
   client:                                   #客户端注册进eureka服务列表内
   client:                                   #客户端注册进eureka服务列表内
     service-url:
     service-url:
-      defaultZone:                          http://eureka-service:8761/eureka
+      defaultZone:                          http://frame:123456@develop.persagy.com/integrated-eureka/eureka/
 #启用监控
 #启用监控
 management:
 management:
   endpoints:
   endpoints:
@@ -34,12 +36,12 @@ spring:
     default-domain:                     labsl
     default-domain:                     labsl
 
 
   datasource:
   datasource:
-    name:                               labsl
-    type:                               com.alibaba.druid.pool.DruidDataSource
-    driver-class-name:                  org.postgresql.Driver
-    url:                                jdbc:postgresql://192.168.64.14:5432/datacenterlabsl
-    username:                           postgres
-    password:                           cGVyc2FneV8yMDIwcXdlIUAj
+    name: labsl
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://rm-2ze20ntn5y9ljsx147o.mysql.rds.aliyuncs.com:3306/labsl?allowMultiQueries=true&serverTimezone=UTC&useUnicode=true&useSSL=false&characterEncoding=UTF-8
+    username: root
+    password: zVmW58LaAtjIKbb
 
 
   jackson:
   jackson:
     date-format:                        yyyy-MM-dd HH:mm:ss
     date-format:                        yyyy-MM-dd HH:mm:ss
@@ -52,6 +54,8 @@ spring:
     mapper:
     mapper:
       # 属性按字母顺序输出
       # 属性按字母顺序输出
      sort_properties_alphabetically:   true
      sort_properties_alphabetically:   true
+  main:
+    allow-bean-definition-overriding: true
 
 
 # spring-doc 配置
 # spring-doc 配置
 springdoc:
 springdoc:
@@ -69,3 +73,5 @@ mybatis:
   typeAliasesPackage:                   cn.sagacloud.server.datacenter.entities
   typeAliasesPackage:                   cn.sagacloud.server.datacenter.entities
 
 
 
 
+
+

+ 6 - 6
meiku/src/main/resources/application.yml

@@ -17,12 +17,12 @@ spring:
     default-domain:                     meiku
     default-domain:                     meiku
 
 
   datasource:
   datasource:
-    name:                               meiku
-    type:                               com.alibaba.druid.pool.DruidDataSource
-    driver-class-name:                  org.postgresql.Driver
-    url:                                jdbc:postgresql://192.168.64.14:5432/datacenterlabsl
-    username:                           postgres
-    password:                           cGVyc2FneV8yMDIwcXdlIUAj
+    name: labsl
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://rm-2ze20ntn5y9ljsx147o.mysql.rds.aliyuncs.com:3306/meiku?allowMultiQueries=true&serverTimezone=UTC&useUnicode=true&useSSL=false&characterEncoding=UTF-8
+    username: root
+    password: zVmW58LaAtjIKbb
 
 
   jackson:
   jackson:
     date-format:                        yyyy-MM-dd HH:mm:ss
     date-format:                        yyyy-MM-dd HH:mm:ss