فهرست منبع

fix bug:解决拓扑图草稿保存丢失问题

lijie 2 سال پیش
والد
کامیت
e3e56288a4
32فایلهای تغییر یافته به همراه683 افزوده شده و 49 حذف شده
  1. 1 1
      labsl/build.gradle
  2. 2 0
      labsl/src/main/kotlin/com/persagy/labsl/LaBSLApp.kt
  3. 1 1
      labsl/src/main/kotlin/com/persagy/labsl/config/MybatisPlusConfig.kt
  4. 1 1
      labsl/src/main/kotlin/com/persagy/labsl/controller/GraphCategoryController.kt
  5. 14 12
      labsl/src/main/kotlin/com/persagy/labsl/controller/GraphController.kt
  6. 5 2
      labsl/src/main/kotlin/com/persagy/labsl/domain/GraphEntity.kt
  7. 5 1
      labsl/src/main/kotlin/com/persagy/labsl/domain/GraphPubEntity.kt
  8. 6 0
      labsl/src/main/kotlin/com/persagy/labsl/domain/NodeEntity.kt
  9. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/domain/NodePubEntity.kt
  10. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/AnchorMapper.kt
  11. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/AnchorPubMapper.kt
  12. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/AttachObjectIdsMapper.kt
  13. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/AttachObjectIdsPubMapper.kt
  14. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/GraphCategoryEquipMapper.kt
  15. 9 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/GraphCategoryMapper.kt
  16. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/GraphMapper.kt
  17. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/GraphPubMapper.kt
  18. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/MarkerMapper.kt
  19. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/MarkerPubMapper.kt
  20. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/NodeMapper.kt
  21. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/NodePubMapper.kt
  22. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/RelationMapper.kt
  23. 4 0
      labsl/src/main/kotlin/com/persagy/labsl/mapper/RelationPubMapper.kt
  24. 0 2
      labsl/src/main/kotlin/com/persagy/labsl/models/entities/pbs/PlanarGraph.kt
  25. 3 1
      labsl/src/main/kotlin/com/persagy/labsl/models/entities/tpt/Elements.kt
  26. 27 0
      labsl/src/main/kotlin/com/persagy/labsl/models/entities/tpt/ElementsEntity.kt
  27. 30 0
      labsl/src/main/kotlin/com/persagy/labsl/models/entities/tpt/pub/Elements.kt
  28. 3 0
      labsl/src/main/kotlin/com/persagy/labsl/models/entities/tpt/pub/ElementsPub.kt
  29. 27 0
      labsl/src/main/kotlin/com/persagy/labsl/models/entities/tpt/pub/ElementsPubEntity.kt
  30. 41 1
      labsl/src/main/kotlin/com/persagy/labsl/service/GraphService.kt
  31. 438 13
      labsl/src/main/kotlin/com/persagy/labsl/service/impl/GraphServiceImpl.kt
  32. 14 14
      labsl/src/main/resources/application.yml

+ 1 - 1
labsl/build.gradle

@@ -74,7 +74,7 @@ dependencies {
     compile group: "com.baomidou", name: "mybatis-plus-boot-starter", version: MYBATIS_PLUS_VERSION
     compile group: "com.baomidou", name: "mybatis-plus-annotation", version: MYBATIS_PLUS_VERSION
     compile group: "com.baomidou", name: "mybatis-plus-extension", version: MYBATIS_PLUS_VERSION
-    compile group: "com.baomidou", name: "dynamic-datasource-spring-boot-starter", version: MYBATIS_PLUS_DYNAMIC_VERSION
+    //compile group: "com.baomidou", name: "dynamic-datasource-spring-boot-starter", version: MYBATIS_PLUS_DYNAMIC_VERSION
     compile group: "com.github.jeffreyning", name:"mybatisplus-plus", version:"1.7.0-RELEASE"
     //compile group: "com.persagy", name: "integrated-config-client", version: PERSAGY_INTERGERT_VERSION
 

+ 2 - 0
labsl/src/main/kotlin/com/persagy/labsl/LaBSLApp.kt

@@ -20,6 +20,7 @@
 
 package com.persagy.labsl
 
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
 import org.slf4j.LoggerFactory
 import org.springframework.boot.SpringApplication
 import org.springframework.boot.autoconfigure.SpringBootApplication
@@ -35,6 +36,7 @@ import org.springframework.context.annotation.ComponentScan
 @ComponentScan(basePackages = ["com.persagy"])           // 配置组件扫描路径
 //@MapperScan("com.persagy")                       // Mapper组件扫描路径
 @SpringBootApplication
+// (exclude = [DruidDataSourceAutoConfigure::class])
 open class LaBSLApp : SpringBootServletInitializer() {
     companion object {
         // 日志

+ 1 - 1
labsl/src/main/kotlin/com/persagy/labsl/config/MybatisPlusConfig.kt

@@ -18,7 +18,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement
  * @description 由 Mybatisplus Code Generator 创建
  * @since 2020-09-09 09:13:27
  */
-@MapperScan(value = ["com.persagy.**.mapper","com.persagy.**.services.mappers"])
+@MapperScan(value = ["com.persagy.**.mapper","com.persagy.**.services.mappers","com.persagy.mybatis"])
 @Configuration
 @EnableTransactionManagement
 open class MybatisPlusConfig : CommandLineRunner {

+ 1 - 1
labsl/src/main/kotlin/com/persagy/labsl/controller/GraphCategoryController.kt

@@ -28,7 +28,7 @@ class GraphCategoryController {
      * @param request   查询条件
      * @return 查询结果
      */
-   @Operation(summary = "查询系统图类型信息", description = "类型开关 true  获取所有 false 获取已有图形的类型")
+    @Operation(summary = "查询系统图类型信息", description = "类型开关 true  获取所有 false 获取已有图形的类型")
     @PostMapping(value = ["/query"])
     fun graphCategoryQuery(@RequestBody request: GraphCategoryRequest): SQueryResponse<GraphCategory> {
         return GraphCategoryService.graphCategoryQuery(request)

+ 14 - 12
labsl/src/main/kotlin/com/persagy/labsl/controller/GraphController.kt

@@ -2,6 +2,8 @@ package com.persagy.labsl.controller
 
 import com.persagy.database.SFilter
 import com.persagy.labsl.Opts
+import com.persagy.labsl.domain.GraphEntity
+import com.persagy.labsl.domain.GraphPubEntity
 import com.persagy.labsl.models.entities.tpt.Graph
 import com.persagy.labsl.models.entities.tpt.pub.GraphPub
 import com.persagy.labsl.models.response.SCommonResponse
@@ -41,8 +43,8 @@ class GraphController {
      */
     @Operation(summary ="草稿箱-创建图", description = "id和graphId为必填,图中会包含多个节点,详细节点结构见示例")
     @PostMapping("/drafts/create")
-    fun create(@RequestBody request: SCreateRequest<Graph>): SCreateResponse<Graph> {
-        return GraphService.draftsCreateLogic(request)
+    fun create(@RequestBody request: SCreateRequest<GraphEntity>): SCreateResponse<GraphEntity> {
+        return graphService.draftsCreateLogic(request)
     } // Function create()
 
     /**
@@ -53,7 +55,7 @@ class GraphController {
      */
     @Operation(summary = "草稿箱-保存图形", description = "")
     @PostMapping("/drafts/save")
-    fun save(@RequestBody graph: Graph): SCreateResponse<Graph> {
+    fun save(@RequestBody graph: GraphEntity): SCreateResponse<GraphEntity> {
         return graphService.saveLogic(graph)
     } // Function save()
 
@@ -65,8 +67,8 @@ class GraphController {
      */
    @Operation(summary="草稿箱-发布图形", description =" Id 和 GraphId 必须填写")
     @PostMapping("/drafts/publish")
-    fun pubDrawings(@RequestBody graph: GraphPub): SCreateResponse<GraphPub>{
-        return GraphService.pubDrawingsLogic(graph)
+    fun pubDrawings(@RequestBody graph: GraphPubEntity): SCreateResponse<GraphPubEntity>{
+        return graphService.pubDrawingsLogic(graph)
     } // Function pubDrawings()
 
 
@@ -76,10 +78,10 @@ class GraphController {
      * @param idList    图例列表
      * @return 移出结果
      */
-   @Operation(summary = "草稿箱-移至回收站", description = " Id 和 GraphId 必填")
+    @Operation(summary = "草稿箱-移至回收站", description = " Id 和 GraphId 必填")
     @PostMapping(value = ["/drafts/recycle"])
-    fun recycle(@RequestBody idList: ArrayList<Graph>): SBaseResponse {
-        return GraphService.recycleLogic(idList)
+    fun recycle(@RequestBody idList: ArrayList<GraphEntity>): SBaseResponse {
+        return graphService.recycleLogic(idList)
     } // Function recycle()
 
     /**
@@ -90,8 +92,8 @@ class GraphController {
      */
    @Operation(summary = "已发布-图形移至回收站", description = "Id 和 GraphId 必填")
     @PostMapping(value = ["/pub/recycle"])
-    fun recyclePub(@RequestBody idList: ArrayList<Graph>): SBaseResponse{
-        return GraphService.recyclePubLogic(idList)
+    fun recyclePub(@RequestBody idList: ArrayList<GraphEntity>): SBaseResponse{
+        return graphService.recyclePubLogic(idList)
     } // Function recyclePub()
 
     /**
@@ -102,8 +104,8 @@ class GraphController {
      */
    @Operation(summary = "草稿箱-更新图形信息", description = "Id 和 GraphId 必填")
     @PostMapping(value = ["/drafts/update"])
-    fun update(@RequestBody request: SUpdateRequest<Graph>): SBaseResponse {
-        return GraphService.draftsUpdateLogic(request)
+    fun update(@RequestBody request: SUpdateRequest<GraphEntity>): SBaseResponse {
+        return graphService.draftsUpdateLogic(request)
     } // Function update()
 
     /**

+ 5 - 2
labsl/src/main/kotlin/com/persagy/labsl/domain/GraphEntity.kt

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField
 import com.baomidou.mybatisplus.annotation.TableName
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler
 import com.github.jeffreyning.mybatisplus.anno.MppMultiId
-import com.persagy.labsl.models.entities.tpt.Graph
+import com.persagy.labsl.models.entities.tpt.ElementsEntity
 import lombok.Data
 import java.io.Serializable
 import java.util.*
@@ -15,7 +15,7 @@ import java.util.*
  */
 @TableName(value = "graph",autoResultMap = true)
 @Data
-class GraphEntity : Serializable {
+open class GraphEntity : Serializable {
     /**
      * 对象id
      */
@@ -114,6 +114,9 @@ class GraphEntity : Serializable {
     @TableField(value = "view_background")
     var viewBackground: String? = null
 
+    @TableField(exist = false)
+    open var elements: ElementsEntity? = null
+
     companion object {
         //fun toEntityByObj(graph: Graph): GraphEntity? {
         //  val graphEntity = GraphEntity()

+ 5 - 1
labsl/src/main/kotlin/com/persagy/labsl/domain/GraphPubEntity.kt

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField
 import com.baomidou.mybatisplus.annotation.TableName
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler
 import com.github.jeffreyning.mybatisplus.anno.MppMultiId
+import com.persagy.labsl.models.entities.tpt.pub.ElementsPubEntity
 import lombok.Data
 import java.io.Serializable
 import java.util.*
@@ -71,7 +72,7 @@ class GraphPubEntity : Serializable {
      * 是否移至回收站 , false 正常,true 以至回收站
      */
     @TableField(value = "is_available")
-    var isAvailable: Int? = null
+    var isAvailable: Boolean? = null
     /**
      * 内部版本号
      */
@@ -113,6 +114,9 @@ class GraphPubEntity : Serializable {
     @TableField(value = "view_background")
     var viewBackground: String? = null
 
+    @TableField(exist = false)
+    var elements: ElementsPubEntity? = null
+
     companion object {
         @TableField(exist = false)
         val serialVersionUID = 1L

+ 6 - 0
labsl/src/main/kotlin/com/persagy/labsl/domain/NodeEntity.kt

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableField
 import com.baomidou.mybatisplus.annotation.TableName
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler
 import com.github.jeffreyning.mybatisplus.anno.MppMultiId
+import com.persagy.labsl.models.entities.tpt.Anchor
+import io.swagger.v3.oas.annotations.media.Schema
 import lombok.Data
 import java.io.Serializable
 import java.util.*
@@ -109,6 +111,10 @@ class NodeEntity : Serializable {
     @TableField(value = "attach_object_ids",typeHandler = JacksonTypeHandler::class)
     var attachObjectIds: Any? = null
 
+    /** 锚点列表 */
+    @TableField(exist = false)
+    var anchorList: ArrayList<AnchorEntity>? = null
+
     companion object {
         @TableField(exist = false)
         val serialVersionUID = 1L

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField
 import com.baomidou.mybatisplus.annotation.TableName
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler
 import com.github.jeffreyning.mybatisplus.anno.MppMultiId
+import com.persagy.labsl.models.entities.tpt.pub.AnchorPub
 import lombok.Data
 import java.io.Serializable
 import java.util.*
@@ -109,6 +110,9 @@ class NodePubEntity : Serializable {
     @TableField(value = "attach_object_ids",typeHandler = JacksonTypeHandler::class)
     var attachObjectIds: Any? = null
 
+    @TableField(exist = false)
+    var anchorList: ArrayList<AnchorPubEntity>? = null
+
     companion object {
         @TableField(exist = false)
         val serialVersionUID = 1L

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.AnchorEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.Anchor
  */
+@Repository
+@Mapper
 interface AnchorMapper : BaseMapper<AnchorEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.AnchorPubEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.AnchorPub
  */
+@Repository
+@Mapper
 interface AnchorPubMapper : BaseMapper<AnchorPubEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.AttachObjectIdsEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.AttachObjectIds
  */
+@Repository
+@Mapper
 interface AttachObjectIdsMapper : BaseMapper<AttachObjectIdsEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.AttachObjectIdsPubEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.AttachObjectIdsPub
  */
+@Repository
+@Mapper
 interface AttachObjectIdsPubMapper : BaseMapper<AttachObjectIdsPubEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.GraphCategoryEquipEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.GraphCategoryEquip
  */
+@Repository
+@Mapper
 interface GraphCategoryEquipMapper : BaseMapper<GraphCategoryEquipEntity?>

+ 9 - 0
labsl/src/main/kotlin/com/persagy/labsl/mapper/GraphCategoryMapper.kt

@@ -2,8 +2,17 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.GraphCategoryEntity
+import com.persagy.labsl.models.entities.auxiliary.CategoryCode
+import com.persagy.labsl.models.entities.tpt.Graph
+import com.persagy.labsl.models.entities.tpt.pub.GraphPub
+import org.apache.ibatis.annotations.Mapper
+import org.apache.ibatis.annotations.Param
+import org.apache.ibatis.annotations.Select
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.GraphCategory
  */
+@Repository
+@Mapper
 interface GraphCategoryMapper : BaseMapper<GraphCategoryEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.GraphEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.Graph
  */
+@Repository
+@Mapper
 interface GraphMapper : BaseMapper<GraphEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.GraphPubEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.GraphPub
  */
+@Repository
+@Mapper
 interface GraphPubMapper : BaseMapper<GraphPubEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.MarkerEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.Marker
  */
+@Repository
+@Mapper
 interface MarkerMapper : BaseMapper<MarkerEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.MarkerPubEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.MarkerPub
  */
+@Repository
+@Mapper
 interface MarkerPubMapper : BaseMapper<MarkerPubEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.NodeEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.Node
  */
+@Repository
+@Mapper
 interface NodeMapper : BaseMapper<NodeEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.NodePubEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.NodePub
  */
+@Repository
+@Mapper
 interface NodePubMapper : BaseMapper<NodePubEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.RelationEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.Relation
  */
+@Repository
+@Mapper
 interface RelationMapper : BaseMapper<RelationEntity?>

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

@@ -2,8 +2,12 @@ package com.persagy.labsl.mapper
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper
 import com.persagy.labsl.domain.RelationPubEntity
+import org.apache.ibatis.annotations.Mapper
+import org.springframework.stereotype.Repository
 
 /**
  * @Entity com.persagy.labsl.domain.RelationPub
  */
+@Repository
+@Mapper
 interface RelationPubMapper : BaseMapper<RelationPubEntity?>

+ 0 - 2
labsl/src/main/kotlin/com/persagy/labsl/models/entities/pbs/PlanarGraph.kt

@@ -1,6 +1,5 @@
 package com.persagy.labsl.models.entities.pbs
 
-import com.persagy.labsl.models.entities.tpt.Elements
 import com.persagy.service.models.SBaseEntity
 import io.swagger.v3.oas.annotations.media.Schema
 import java.io.Serializable
@@ -8,7 +7,6 @@ import java.util.*
 import javax.persistence.Column
 import javax.persistence.Id
 import javax.persistence.Table
-import javax.validation.constraints.NotNull
 import kotlin.collections.HashMap
 
 /**

+ 3 - 1
labsl/src/main/kotlin/com/persagy/labsl/models/entities/tpt/Elements.kt

@@ -1,6 +1,8 @@
 package com.persagy.labsl.models.entities.tpt
 
-import com.persagy.labsl.models.entities.tpt.Relation
+import com.persagy.labsl.domain.MarkerEntity
+import com.persagy.labsl.domain.NodeEntity
+import com.persagy.labsl.domain.RelationEntity
 import io.swagger.v3.oas.annotations.media.Schema
 import java.io.Serializable
 import javax.validation.Valid

+ 27 - 0
labsl/src/main/kotlin/com/persagy/labsl/models/entities/tpt/ElementsEntity.kt

@@ -0,0 +1,27 @@
+package com.persagy.labsl.models.entities.tpt
+
+import com.persagy.labsl.domain.MarkerEntity
+import com.persagy.labsl.domain.NodeEntity
+import com.persagy.labsl.domain.RelationEntity
+import io.swagger.v3.oas.annotations.media.Schema
+import java.io.Serializable
+import javax.validation.Valid
+
+/**
+ * 系统图展示所需数据
+ *
+ * @author wx
+ */
+class ElementsEntity : Serializable {
+
+    @Schema(description = "图例节点")
+    @Valid
+    var nodes : ArrayList<NodeEntity>? = null
+
+    @Schema(description = "文本注释,图上的图片说明")
+    var markers : ArrayList<MarkerEntity>? = null
+
+    @Schema(description = "管线对象")
+    var relations : ArrayList<RelationEntity>? = null
+
+} // Class Elements

+ 30 - 0
labsl/src/main/kotlin/com/persagy/labsl/models/entities/tpt/pub/Elements.kt

@@ -0,0 +1,30 @@
+package com.persagy.labsl.models.entities.tpt.pub
+
+import com.persagy.labsl.domain.MarkerEntity
+import com.persagy.labsl.domain.NodeEntity
+import com.persagy.labsl.domain.RelationEntity
+import com.persagy.labsl.models.entities.tpt.Markers
+import com.persagy.labsl.models.entities.tpt.Node
+import com.persagy.labsl.models.entities.tpt.Relation
+import io.swagger.v3.oas.annotations.media.Schema
+import java.io.Serializable
+import javax.validation.Valid
+
+/**
+ * 系统图展示所需数据
+ *
+ * @author wx
+ */
+class Elements : Serializable {
+
+    @Schema(description = "图例节点")
+    @Valid
+    var nodes : ArrayList<Node>? = null
+
+    @Schema(description = "文本注释,图上的图片说明")
+    var markers : ArrayList<Markers>? = null
+
+    @Schema(description = "管线对象")
+    var relations : ArrayList<Relation>? = null
+
+} // Class Elements

+ 3 - 0
labsl/src/main/kotlin/com/persagy/labsl/models/entities/tpt/pub/ElementsPub.kt

@@ -1,5 +1,8 @@
 package com.persagy.labsl.models.entities.tpt.pub
 
+import com.persagy.labsl.domain.MarkerPubEntity
+import com.persagy.labsl.domain.NodePubEntity
+import com.persagy.labsl.domain.RelationPubEntity
 import io.swagger.v3.oas.annotations.media.Schema
 import java.io.Serializable
 import javax.validation.Valid

+ 27 - 0
labsl/src/main/kotlin/com/persagy/labsl/models/entities/tpt/pub/ElementsPubEntity.kt

@@ -0,0 +1,27 @@
+package com.persagy.labsl.models.entities.tpt.pub
+
+import com.persagy.labsl.domain.MarkerPubEntity
+import com.persagy.labsl.domain.NodePubEntity
+import com.persagy.labsl.domain.RelationPubEntity
+import io.swagger.v3.oas.annotations.media.Schema
+import java.io.Serializable
+import javax.validation.Valid
+
+/**
+ * 系统图展示所需数据
+ *
+ * @author wx
+ */
+class ElementsPubEntity : Serializable {
+
+    @Schema(description = "图例节点")
+    @Valid
+    var nodes : ArrayList<NodePubEntity>? = null
+
+    @Schema(description = "文本注释,图上的图片说明")
+    var markers : ArrayList<MarkerPubEntity>? = null
+
+    @Schema(description = "管线对象")
+    var relations : ArrayList<RelationPubEntity>? = null
+
+} // Class Elements

+ 41 - 1
labsl/src/main/kotlin/com/persagy/labsl/service/GraphService.kt

@@ -2,12 +2,52 @@ package com.persagy.labsl.service
 
 import com.baomidou.mybatisplus.extension.service.IService
 import com.persagy.labsl.domain.GraphEntity
+import com.persagy.labsl.domain.GraphPubEntity
 import com.persagy.labsl.models.entities.tpt.Graph
+import com.persagy.service.models.requests.SCreateRequest
+import com.persagy.service.models.requests.SUpdateRequest
+import com.persagy.service.models.responses.SBaseResponse
 import com.persagy.service.models.responses.SCreateResponse
+import java.util.ArrayList
 
 /**
  *
  */
 interface GraphService : IService<GraphEntity?> {
-    fun saveLogic(graph: Graph): SCreateResponse<Graph>
+    /**
+     * 保存草稿
+     * @author : lijie
+     * Update By 2022/6/7 14:28
+     */
+    fun saveLogic(graph: GraphEntity): SCreateResponse<GraphEntity>
+    /**
+     * 创建草稿
+     * @author : lijie
+     * Update By 2022/6/7 14:29
+     */
+    fun draftsCreateLogic(request: SCreateRequest<GraphEntity>): SCreateResponse<GraphEntity>
+    /**
+     * 发布草稿
+     * @author : lijie
+     * Update By 2022/6/7 14:47
+     */
+    fun pubDrawingsLogic(graphPub: GraphPubEntity): SCreateResponse<GraphPubEntity>
+    /**
+     * 图、移至或移出回收站
+     * @author : lijie
+     * Update By 2022/6/7 15:39
+     */
+    fun recycleLogic(idList: ArrayList<GraphEntity>): SBaseResponse
+    /**
+     * 已发布图形移至回收站
+     * @author : lijie
+     * Update By 2022/6/7 15:48
+     */
+    fun recyclePubLogic(idList: ArrayList<GraphEntity>): SBaseResponse
+    /**
+     * 更新草稿
+     * @author : lijie
+     * Update By 2022/6/7 16:26
+     */
+    fun draftsUpdateLogic(request: SUpdateRequest<GraphEntity>): SBaseResponse
 }

+ 438 - 13
labsl/src/main/kotlin/com/persagy/labsl/service/impl/GraphServiceImpl.kt

@@ -2,15 +2,21 @@ package com.persagy.labsl.service.impl
 
 import cn.hutool.core.bean.BeanUtil
 import cn.hutool.core.collection.CollUtil
+import cn.hutool.core.util.ObjectUtil
 import cn.hutool.core.util.StrUtil
+import com.baomidou.mybatisplus.core.toolkit.Wrappers
 import com.baomidou.mybatisplus.extension.kotlin.KtQueryWrapper
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
+import com.persagy.database.SFilter
 import com.persagy.labsl.Opts
 import com.persagy.labsl.domain.*
 import com.persagy.labsl.mapper.GraphMapper
-import com.persagy.labsl.models.entities.tpt.Graph
 import com.persagy.labsl.service.*
+import com.persagy.labsl.utils.IdUtils
 import com.persagy.service.models.enums.SResponseType
+import com.persagy.service.models.requests.SCreateRequest
+import com.persagy.service.models.requests.SUpdateRequest
+import com.persagy.service.models.responses.SBaseResponse
 import com.persagy.service.models.responses.SCreateResponse
 import lombok.extern.slf4j.Slf4j
 import org.springframework.beans.factory.annotation.Autowired
@@ -34,16 +40,77 @@ open class GraphServiceImpl : ServiceImpl<GraphMapper?, GraphEntity?>(), GraphSe
     lateinit var relationService: RelationService
     @Autowired
     lateinit var anchorService: AnchorService
+    @Autowired
+    lateinit var graphPubService: GraphPubService
+    @Autowired
+    lateinit var nodePubService: NodePubService
+    @Autowired
+    lateinit var markerPubService: MarkerPubService
+    @Autowired
+    lateinit var relationPubService: RelationPubService
+    @Autowired
+    lateinit var anchorPubService: AnchorPubService
+    /**
+     * 创建草稿图
+     * @author : lijie
+     * Update By 2022/6/7 14:41
+     */
+    @Transactional
+    override fun draftsCreateLogic(request: SCreateRequest<GraphEntity>): SCreateResponse<GraphEntity> {
+        val sCreateResponse = SCreateResponse<GraphEntity>(SResponseType.success)
+        if (request.content.isNullOrEmpty()){
+            sCreateResponse.message = "不可以为空"
+            return sCreateResponse
+        }
+        for (content in request.content) {
+            /** id 赋值 */
+            if (content.id.isNullOrEmpty()){
+                content.id = IdUtils.uuidCreate()
+            }
+            /** 图 id */
+            if (content.graphId.isNullOrEmpty()){
+                content.graphId = IdUtils.uuidCreate()
+            }
 
+            /** 版本 */
+            if (content.version.isNullOrEmpty())
+                content.version = "2.0.1"
+
+            /** 项目 id */
+            if (content.projectId.isNullOrEmpty()){
+                content.projectId = Opts.projectId
+            }
+            val entity = list(Wrappers.lambdaQuery(GraphEntity::class.java)
+                    .eq(StrUtil.isNotBlank(Opts.projectId),GraphEntity::projectId, Opts.projectId!!)
+                    .eq(StrUtil.isNotBlank(content.categoryId),GraphEntity::categoryId, content.categoryId!!)
+                    .eq(StrUtil.isNotBlank(content.name),GraphEntity::name, content.name!!))
+            if (CollUtil.isNotEmpty(entity)) {
+                sCreateResponse.result = SResponseType.failure
+                sCreateResponse.message = "同一分类下图名称不可以重复"
+                return sCreateResponse
+            }
+            val entity1 = graphPubService.list(Wrappers.lambdaQuery(GraphPubEntity::class.java)
+                    .eq(StrUtil.isNotBlank(Opts.projectId),GraphPubEntity::projectId, Opts.projectId!!)
+                    .eq(StrUtil.isNotBlank(content.categoryId),GraphPubEntity::categoryId, content.categoryId!!)
+                    .eq(StrUtil.isNotBlank(content.name),GraphPubEntity::name, content.name!!))
+            if (CollUtil.isNotEmpty(entity1)) {
+                sCreateResponse.result = SResponseType.failure
+                sCreateResponse.message = "同一分类下已发布图名称已存在"
+                return sCreateResponse
+            }
+            save(content)
+        }
+        sCreateResponse.entityList = request.content
+        return sCreateResponse
+    }
     /**
-     * 创建图
-     *
+     * 保存草稿图
      * @param graph   图对象
      * @return 图形对象列表
      */
     @Transactional
-    override fun saveLogic(graph: Graph): SCreateResponse<Graph> {
-        val sCreateResponse = SCreateResponse<Graph>()
+    override fun saveLogic(graph: GraphEntity): SCreateResponse<GraphEntity> {
+        val sCreateResponse = SCreateResponse<GraphEntity>()
             /** 未发布 */
             if (graph.id.isNullOrEmpty()) {
                 /** id赋值 */
@@ -71,8 +138,7 @@ open class GraphServiceImpl : ServiceImpl<GraphMapper?, GraphEntity?>(), GraphSe
             /** 图标记设置为 1 草稿箱 */
             graph.state = 1
             /** 插入图形数据 */
-            val graphEntity = BeanUtil.copyProperties(graph, GraphEntity::class.java)
-            save(graphEntity)
+            save(graph)
             /** 列表不能为空 */
             saveElements(graph)
             /** 返回标志 */
@@ -82,8 +148,367 @@ open class GraphServiceImpl : ServiceImpl<GraphMapper?, GraphEntity?>(), GraphSe
             /** 返回对象 */
             return sCreateResponse
     }
+    /**
+     * 发布草稿
+     * @author : lijie
+     * Update By 2022/6/7 14:49
+     */
+    @Transactional
+    override fun pubDrawingsLogic(graphPub: GraphPubEntity): SCreateResponse<GraphPubEntity> {
+        /** 返回对象 */
+        val sCreateResponse = SCreateResponse<GraphPubEntity>()
+        /** 图对象 */
+        val graph1 = GraphEntity()
+        /** 项目 id */
+        graph1.projectId = Opts.projectId!!
+        /** 图编码 */
+        graph1.id = graphPub.id
+        /** 图 id */
+        graph1.graphId = graphPub.graphId
+        /** 设置表明,查询 */
+        val graphEntity = getOne(Wrappers.lambdaQuery(GraphEntity::class.java)
+                .eq(StrUtil.isNotBlank(Opts.projectId),GraphEntity::projectId,Opts.projectId!!)
+                .eq(StrUtil.isNotBlank(graphPub.id),GraphEntity::id,graphPub.id!!)
+                .eq(StrUtil.isNotBlank(graphPub.graphId),GraphEntity::graphId,graphPub.graphId!!)
+                .eq(GraphEntity::state,1))
+        if (ObjectUtil.isNull(graphEntity)){
+            /** 返回标志 */
+            sCreateResponse.result = SResponseType.failure
+            sCreateResponse.message = "草稿箱中没有待发布图形"
+            /** 返回对象 */
+            return sCreateResponse
+        }
+        val graph = BeanUtil.copyProperties(graphEntity, GraphPubEntity::class.java)
+        /** 清除已发布的老数据 */
+        delOldDataPub(graph1)
+        /** 版本号 */
+        val listVersion = graph.version!!.split(".")
+        /** 版本号加 1 */
+        val num = listVersion[1].toInt() + 1
+        /** 版本号赋值 */
+        graph.version = listVersion[0] + "." + num + "." + 0
+        /** 已发布标志 */
+        graph.state = 0
+        /** 已发布 */
+        graph.isAvailable = true
+        graphPubService.save(graph)
+        /** 设置表明,查询 */
+        val nodeList = nodeService.list(Wrappers.lambdaQuery(NodeEntity::class.java)
+                .eq(StrUtil.isNotBlank(graphPub.id),NodeEntity::id,graphPub.id!!)
+                .eq(StrUtil.isNotBlank(graphPub.graphId),NodeEntity::graphId,graph.graphId!!)
+                .eq(NodeEntity::state,1))
+        /** 列表长度大于 0 */
+        if (CollUtil.isNotEmpty(nodeList)){
+            log.debug("对象长度 = ${nodeList.size}   ******************************************************")
+            val nodePubList = ArrayList<NodePubEntity>()
+            /** 遍历列表 */
+            for (node in nodeList){
+                val nodePub = BeanUtil.copyProperties(node, NodePubEntity::class.java)
+                /** 图编码 */
+                nodePub.id = graph.id
+                /** 图 id */
+                nodePub.graphId = graph.graphId
+                /** 发布标志 */
+                nodePub.state = 0
+                nodePubList.add(nodePub)
+            }
+            /** 插入数据 */
+            nodePubService.saveBatch(CollUtil.newArrayList(nodePubList))
+        }
+        /** 设置表明,查询 */
+        val markersList = markerService.list(Wrappers.lambdaQuery(MarkerEntity::class.java)
+                .eq(StrUtil.isNotBlank(graphPub.id),MarkerEntity::id,graphPub.id!!)
+                .eq(StrUtil.isNotBlank(graphPub.graphId),MarkerEntity::graphId,graph.graphId!!)
+                .eq(MarkerEntity::state,1))
+        /** 列表大于 0 */
+        if (CollUtil.isNotEmpty(markersList)){
+            val markerPubList = ArrayList<MarkerPubEntity>()
+            /** 遍历列表 */
+            for (markers in markersList){
+                val markersPub = BeanUtil.copyProperties(markers, MarkerPubEntity::class.java)
+                /** 图编码 */
+                markersPub.id = graph.id
+                /** 图 id */
+                markersPub.graphId = graph.graphId
+                /** 发布标志 */
+                markersPub.state = 0
+                markerPubList.add(markersPub)
+            }
+            markerPubService.saveBatch(CollUtil.newArrayList(markerPubList))
+        }
+        /** 设置表明,查询 */
+        val relationList = relationService.list(Wrappers.lambdaQuery(RelationEntity::class.java)
+                .eq(StrUtil.isNotBlank(graphPub.id),RelationEntity::id,graphPub.id!!)
+                .eq(StrUtil.isNotBlank(graphPub.graphId),RelationEntity::graphId,graph.graphId!!)
+                .eq(RelationEntity::state,1))
+        /** 列表长度大于 0 */
+        if (CollUtil.isNotEmpty(relationList)){
+            val relationPubList = ArrayList<RelationPubEntity>()
+            /** 遍历列表 */
+            for (relation in relationList){
+                val relationPub = BeanUtil.copyProperties(relation, RelationPubEntity::class.java)
+                /** 图编码  */
+                relationPub.id = graph.id
+                /** 图 id */
+                relationPub.graphId = graph.graphId
+                /** 已发布标志 */
+                relationPub.state = 0
+                relationPubList.add(relationPub)
+            }
+            relationPubService.saveBatch(CollUtil.newArrayList(relationPubList))
+        }
+
+        /** 设置表明,查询 */
+        val anchorList = anchorService.list(Wrappers.lambdaQuery(AnchorEntity::class.java)
+                .eq(StrUtil.isNotBlank(graphPub.id),AnchorEntity::id,graphPub.id!!)
+                .eq(StrUtil.isNotBlank(graphPub.graphId),AnchorEntity::graphId,graph.graphId!!)
+                .eq(AnchorEntity::state,1))
+        /** 列表长度大于 0 */
+        if (CollUtil.isNotEmpty(anchorList)){
+            val anchorPubList = ArrayList<AnchorPubEntity>()
+            /** 遍历列表 */
+            for (anchor in anchorList){
+                val anchorPub = BeanUtil.copyProperties(anchor, AnchorPubEntity::class.java)
+                /** 图编码 */
+                anchorPub.id = graph.id
+                /** 图 id */
+                anchorPub.graphId = graph.graphId
+                /** 已发布图标志 */
+                anchorPub.state = 0
+                anchorPubList.add(anchorPub)
+            }
+            anchorPubService.saveBatch(CollUtil.newArrayList(anchorPubList))
+        }
 
-    private fun saveElements(graph: Graph) {
+        /** 清除草稿箱图 */
+        delOldData(graph1)
+        /** 对象列表 */
+        sCreateResponse.entityList = arrayListOf(graph)
+        /** 返回标志 */
+        sCreateResponse.result = SResponseType.success
+        /** 返回对象 */
+        return sCreateResponse
+    }
+    /**
+     * 图、移至或移出回收站
+     * @author : lijie
+     * Update By 2022/6/7 15:39
+     */
+    @Transactional
+    override fun recycleLogic(idList: ArrayList<GraphEntity>): SBaseResponse {
+        /** 返回对象 */
+        val sBaseResponse = SBaseResponse()
+        if (idList.isNullOrEmpty()){
+            /** 返回标记 */
+            sBaseResponse.result = SResponseType.failure
+            return sBaseResponse
+        }
+        /** 遍历列表 */
+        for (graph in idList) {
+            /** 删除时间 */
+            graph.delTime = Date()
+            /** 回收站标记 */
+            graph.state = 4
+        }
+        updateBatchById(CollUtil.newArrayList(idList))
+        /** 返回标记 */
+        sBaseResponse.result = SResponseType.success
+        return sBaseResponse
+    }
+    /**
+     * 已发布图形移至回收站
+     * @author : lijie
+     * Update By 2022/6/7 15:48
+     */
+    @Transactional
+    override fun recyclePubLogic(idList: java.util.ArrayList<GraphEntity>): SBaseResponse {
+        /** 返回对象 */
+        val sBaseResponse = SBaseResponse()
+        if (idList.isNullOrEmpty()){
+            /** 返回标志 */
+            sBaseResponse.result = SResponseType.failure
+            return sBaseResponse
+        }
+        /** 遍历列表 */
+        for (graph in idList){
+            /** 项目 id */
+            graph.projectId = Opts.projectId
+            /** 设置表明,查询 */
+            val graphPub = graphPubService.getOne(Wrappers.lambdaQuery(GraphPubEntity::class.java)
+                    .eq(StrUtil.isNotBlank(Opts.projectId),GraphPubEntity::projectId,Opts.projectId!!)
+                    .eq(StrUtil.isNotBlank(graph.id),GraphPubEntity::id,graph.id!!)
+                    .eq(StrUtil.isNotBlank(graph.graphId),GraphPubEntity::graphId,graph.graphId!!))
+            if (ObjectUtil.isNull(graphPub)){
+                continue
+            }
+            val graphEntity = BeanUtil.copyProperties(graphPub, GraphEntity::class.java)
+            /** 图编码 */
+            graphEntity.id = IdUtils.uuidCreate()
+            /** 回收站标志 */
+            graphEntity.state = 4
+            graphEntity.delTime = Date()
+            save(graphEntity)
+            /** 查询 */
+            val nodeBuilder = com.persagy.labsl.services.NodeService.select(
+                    SFilter.eq("id", graph.id!!),
+                    SFilter.eq("graphId", graph.graphId!!)
+            )
+
+            /** 设置表明,查询 */
+            val nodePubList = nodePubService.list(Wrappers.lambdaQuery(NodePubEntity::class.java)
+                    .eq(StrUtil.isNotBlank(graph.id),NodePubEntity::id,graph.id!!)
+                    .eq(StrUtil.isNotBlank(graph.graphId),NodePubEntity::graphId,graph.graphId!!))
+            /** 里边数量大于 0  */
+            if (CollUtil.isNotEmpty(nodePubList)){
+                val nodeList = ArrayList<NodeEntity>()
+                /** 遍历列表 */
+                for (nodePub in nodePubList){
+                    val node = BeanUtil.copyProperties(nodePub, NodeEntity::class.java)
+                    /** 图编码 */
+                    node.id = graphEntity.id
+                    /** 回收站标志 */
+                    node.state = 4
+                    nodeList.add(node)
+                }
+                nodeService.saveBatch(CollUtil.newArrayList(nodeList))
+                /** 设置表明,查询 */
+                val anchorPubList = anchorPubService.list(Wrappers.lambdaQuery(AnchorPubEntity::class.java)
+                        .eq(StrUtil.isNotBlank(graph.id),AnchorPubEntity::id,graph.id!!)
+                        .eq(StrUtil.isNotBlank(graph.graphId),AnchorPubEntity::graphId,graph.graphId!!))
+                /** 列表大于 0  */
+                if (CollUtil.isNotEmpty(anchorPubList)){
+                    val anchorList = ArrayList<AnchorEntity>()
+                    /** 遍历列表 */
+                    for (anchorPub in anchorPubList){
+                        val anchor = BeanUtil.copyProperties(anchorPub, AnchorEntity::class.java)
+                        /** 图编码 */
+                        anchor.id = graphEntity.id
+                        /** 回收站标志 */
+                        anchor.state = 4
+                        anchorList.add(anchor)
+                    }
+                    anchorService.saveBatch(CollUtil.newArrayList(anchorList))
+                }
+            }
+            /** 设置表明,查询 */
+            val markerPubList = markerPubService.list(Wrappers.lambdaQuery(MarkerPubEntity::class.java)
+                    .eq(StrUtil.isNotBlank(graph.id),MarkerPubEntity::id,graph.id!!)
+                    .eq(StrUtil.isNotBlank(graph.graphId),MarkerPubEntity::graphId,graph.graphId!!))
+            /** 列表大于 0  */
+            if (CollUtil.isNotEmpty(markerPubList)){
+                val markerList = ArrayList<MarkerEntity>()
+                /** 遍历列表 */
+                for (markerPub in markerPubList){
+                    val marker = BeanUtil.copyProperties(markerPub, MarkerEntity::class.java)
+                    /** 图编码 */
+                    marker.id = graphEntity.id
+                    /** 回收站标志 */
+                    marker.state = 4
+                    markerList.add(marker)
+                }
+                markerService.saveBatch(CollUtil.newArrayList(markerList))
+            }
+
+            /** 查询 */
+            val relationBuilder = com.persagy.labsl.services.RelationService.select(
+                    SFilter.eq("id", graph.id!!),
+                    SFilter.eq("graphId", graph.graphId!!)
+            )
+            /** 设置表明,查询 */
+            val relationPubList = relationPubService.list(Wrappers.lambdaQuery(RelationPubEntity::class.java)
+                    .eq(StrUtil.isNotBlank(graph.id),RelationPubEntity::id,graph.id!!)
+                    .eq(StrUtil.isNotBlank(graph.graphId),RelationPubEntity::graphId,graph.graphId!!))
+            /** 列表大于 0  */
+            if (CollUtil.isNotEmpty(relationPubList)){
+                val relationList = ArrayList<RelationEntity>()
+                /** 遍历列表 */
+                for (relationPub in relationPubList){
+                    val relation = BeanUtil.copyProperties(relationPub, RelationEntity::class.java)
+                    /** 图编码 */
+                    relation.id = graphEntity.id
+                    /** 回收站标志 */
+                    relation.state = 4
+                    relationList.add(relation)
+                }
+                relationService.saveBatch(CollUtil.newArrayList(relationList))
+            }
+            /** 删除已发布的图形数据 */
+            delOldDataPub(graph)
+        }
+        /** 返回标志 */
+        sBaseResponse.result = SResponseType.success
+        return sBaseResponse
+    }
+    /**
+     * 更新草稿
+     * @author : lijie
+     * Update By 2022/6/7 16:28
+     */
+    @Transactional
+    override fun draftsUpdateLogic(request: SUpdateRequest<GraphEntity>): SBaseResponse {
+        val sBaseResponse = SBaseResponse(SResponseType.success)
+        if (request.content.isNullOrEmpty()){
+            return sBaseResponse
+        }
+        for (content in request.content!!) {
+            val entity = list(Wrappers.lambdaQuery(GraphEntity::class.java)
+                    .eq(StrUtil.isNotBlank(Opts.projectId),GraphEntity::projectId, Opts.projectId!!)
+                    .eq(StrUtil.isNotBlank(content.categoryId),GraphEntity::categoryId, content.categoryId!!)
+                    .eq(StrUtil.isNotBlank(content.name),GraphEntity::name, content.name!!))
+            if (CollUtil.isNotEmpty(entity)) {
+                sBaseResponse.result = SResponseType.failure
+                sBaseResponse.message = "图名称已经存在"
+                return sBaseResponse
+            }
+            val entity1 = graphPubService.list(Wrappers.lambdaQuery(GraphPubEntity::class.java)
+                    .eq(StrUtil.isNotBlank(Opts.projectId),GraphPubEntity::projectId, Opts.projectId!!)
+                    .eq(StrUtil.isNotBlank(content.categoryId),GraphPubEntity::categoryId, content.categoryId!!)
+                    .eq(StrUtil.isNotBlank(content.name),GraphPubEntity::name, content.name!!))
+            if (CollUtil.isNotEmpty(entity1)) {
+                sBaseResponse.result = SResponseType.failure
+                sBaseResponse.message = "同一分类下已发布图名称已存在"
+                return sBaseResponse
+            }
+        }
+        updateBatchById(CollUtil.newArrayList(request.content))
+        return sBaseResponse
+    }
+
+    /**
+     * 清除已发布的老数据
+     *
+     * @param   graph   图对象
+     */
+    private fun delOldDataPub(graph: GraphEntity) {
+        val graphWrapper= KtQueryWrapper(GraphPubEntity())
+        val nodeWrapper=KtQueryWrapper(NodePubEntity())
+        val markerWrapper=KtQueryWrapper(MarkerPubEntity())
+        val relationWrapper=KtQueryWrapper(RelationPubEntity())
+        val anchorWrapper=KtQueryWrapper(AnchorPubEntity())
+        graphWrapper.eq(StrUtil.isNotBlank(graph.projectId),GraphPubEntity::projectId,graph.projectId!!)
+        graphWrapper.eq(StrUtil.isNotBlank(graph.id),GraphPubEntity::id,graph.id!!)
+        graphWrapper.eq(StrUtil.isNotBlank(graph.graphId),GraphPubEntity::graphId,graph.graphId)
+        graphPubService.remove(graphWrapper)
+        nodeWrapper.eq(StrUtil.isNotBlank(graph.id),NodePubEntity::id,graph.id!!)
+        nodeWrapper.eq(StrUtil.isNotBlank(graph.graphId),NodePubEntity::graphId,graph.graphId)
+        nodePubService.remove(nodeWrapper)
+        markerWrapper.eq(StrUtil.isNotBlank(graph.id),MarkerPubEntity::id,graph.id!!)
+        markerWrapper.eq(StrUtil.isNotBlank(graph.graphId),MarkerPubEntity::graphId,graph.graphId)
+        markerPubService.remove(markerWrapper)
+        relationWrapper.eq(StrUtil.isNotBlank(graph.id),RelationPubEntity::id,graph.id!!)
+        relationWrapper.eq(StrUtil.isNotBlank(graph.graphId),RelationPubEntity::graphId,graph.graphId)
+        relationPubService.remove(relationWrapper)
+        anchorWrapper.eq(StrUtil.isNotBlank(graph.id),AnchorPubEntity::id,graph.id!!)
+        anchorWrapper.eq(StrUtil.isNotBlank(graph.graphId),AnchorPubEntity::graphId,graph.graphId)
+        anchorPubService.remove(anchorWrapper)
+    }
+
+    /**
+     * 保存子数据
+     * @author : lijie
+     * Update By 2022/6/7 15:10
+     */
+    private fun saveElements(graph: GraphEntity) {
         if (null==graph.elements){
             return
         }
@@ -104,7 +529,7 @@ open class GraphServiceImpl : ServiceImpl<GraphMapper?, GraphEntity?>(), GraphSe
                     /** id 赋值 */
                     nodes.nodeId = UUID.randomUUID().toString().replace("-", "")
                 }
-                addNodesList.add(BeanUtil.copyProperties(nodes,NodeEntity::class.java))
+                addNodesList.add(nodes)
                 val anchorList = nodes.anchorList
                 /** 列表不能为空 */
                 if (anchorList.isNullOrEmpty()) {
@@ -123,7 +548,7 @@ open class GraphServiceImpl : ServiceImpl<GraphMapper?, GraphEntity?>(), GraphSe
                         /** id赋值 */
                         anchor.anchorId = UUID.randomUUID().toString().replace("-", "")
                     }
-                    addAnchorsList.add(BeanUtil.copyProperties(anchor,AnchorEntity::class.java))
+                    addAnchorsList.add(anchor)
                 }
             }
             if (CollUtil.isNotEmpty(addNodesList)){
@@ -151,7 +576,7 @@ open class GraphServiceImpl : ServiceImpl<GraphMapper?, GraphEntity?>(), GraphSe
                     /** id赋值 */
                     markers.markerId = UUID.randomUUID().toString().replace("-", "")
                 }
-                addMarkerList.add(BeanUtil.copyProperties(markers,MarkerEntity::class.java))
+                addMarkerList.add(markers)
             }
             if (CollUtil.isNotEmpty(addMarkerList)){
                 markerService.saveBatch(CollUtil.newArrayList(addMarkerList))
@@ -175,7 +600,7 @@ open class GraphServiceImpl : ServiceImpl<GraphMapper?, GraphEntity?>(), GraphSe
                     /** id 赋值 */
                     relations.relationId = UUID.randomUUID().toString().replace("-", "")
                 }
-                addRelationList.add(BeanUtil.copyProperties(relations,RelationEntity::class.java))
+                addRelationList.add(relations)
             }
             if (CollUtil.isNotEmpty(addRelationList)){
                 relationService.saveBatch(CollUtil.newArrayList(addRelationList))
@@ -188,7 +613,7 @@ open class GraphServiceImpl : ServiceImpl<GraphMapper?, GraphEntity?>(), GraphSe
      *
      * @param  graph   图对象
      */
-    private fun delOldData(graph: Graph) {
+    private fun delOldData(graph: GraphEntity) {
         val graphWrapper= KtQueryWrapper(GraphEntity())
         val nodeWrapper=KtQueryWrapper(NodeEntity())
         val markerWrapper=KtQueryWrapper(MarkerEntity())

+ 14 - 14
labsl/src/main/resources/application.yml

@@ -45,20 +45,20 @@ spring:
     url:                                jdbc:mysql://192.168.100.91:9934/labsl?allowMultiQueries=true&serverTimezone=UTC&useUnicode=true&useSSL=false&characterEncoding=UTF-8
     username:                           root
     password:                           persagy@2021
-    dynamic:
-      datasource:
-        master:
-          password: ${spring.datasource.password}
-          username: ${spring.datasource.username}
-          driver-class-name: com.mysql.cj.jdbc.Driver
-          url: ${spring.datasource.url}
-        second:
-          password: ${spring.second-datasource.password}
-          username: ${spring.second-datasource.username}
-          driver-class-name: com.mysql.cj.jdbc.Driver
-          url: ${spring.second-datasource.url}
-      primary: master
-      strict: false
+#    dynamic:
+#      datasource:
+#        master:
+#          password: ${spring.datasource.password}
+#          username: ${spring.datasource.username}
+#          driver-class-name: com.mysql.cj.jdbc.Driver
+#          url: ${spring.datasource.url}
+#        second:
+#          password: ${spring.second-datasource.password}
+#          username: ${spring.second-datasource.username}
+#          driver-class-name: com.mysql.cj.jdbc.Driver
+#          url: ${spring.second-datasource.url}
+#      primary: master
+#      strict: false
 
   second-datasource:
     name: labsl