Browse Source

对象类型 接口实现

yucheng 3 years ago
parent
commit
1ed097b4e0
31 changed files with 977 additions and 73 deletions
  1. 4 0
      dc-business/dc-digital/pom.xml
  2. 25 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/basic/constant/DigitalDataCategory.java
  3. 32 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/basic/constant/DigitalDataType.java
  4. 27 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/basic/constant/DigitalMessageConstant.java
  5. 32 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/basic/constant/DigitalObjectType.java
  6. 33 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/basic/model/DigitalManageMessage.java
  7. 2 1
      dc-business/dc-digital/src/main/java/com/persagy/dc/common/model/QueryCriteria.java
  8. 101 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/basic/utils/DigitalCommonUtils.java
  9. 1 1
      dc-business/dc-digital/src/main/java/com/persagy/dc/common/model/JsonNodeUtils.java
  10. 64 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/GraphDefineController.java
  11. 62 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/ObjectInfoController.java
  12. 34 15
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/ObjectTypeController.java
  13. 63 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/RelationDefineController.java
  14. 12 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/dao/GraphDefineMapper.java
  15. 12 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/dao/ObjectInfoMapper.java
  16. 12 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/dao/RelationDefineMapper.java
  17. 9 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/entity/GraphDefine.java
  18. 17 2
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/entity/ObjectType.java
  19. 50 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/IGraphDefineService.java
  20. 50 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/IObjectInfoService.java
  21. 6 5
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/IObjectTypeService.java
  22. 50 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/IRelationDefineService.java
  23. 55 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/impl/GraphDefineServiceImpl.java
  24. 55 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/impl/ObjectInfoServiceImpl.java
  25. 94 10
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/impl/ObjectTypeServiceImpl.java
  26. 55 0
      dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/impl/RelationDefineServiceImpl.java
  27. 0 6
      dc-common/pom.xml
  28. 0 25
      dc-common/src/main/java/com/persagy/dc/common/config/SpringCommonConfig.java
  29. 5 6
      dc-common/src/main/java/com/persagy/dc/common/handler/AppContextHandler.java
  30. 15 1
      dc-comp/dc-mybatis/src/main/java/com/persagy/dc/mybatis/config/MybatisPlusConfig.java
  31. 0 1
      dc-server/src/main/java/com/persagy/ServerApplication.java

+ 4 - 0
dc-business/dc-digital/pom.xml

@@ -26,5 +26,9 @@
             <groupId>com.persagy</groupId>
             <artifactId>dc-mybatis</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.persagy</groupId>
+            <artifactId>dc-amqp-starter</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 25 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/basic/constant/DigitalDataCategory.java

@@ -0,0 +1,25 @@
+package com.persagy.dc.basic.constant;
+
+import lombok.Getter;
+
+/**
+ * 数据分类
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+@Getter
+public enum DigitalDataCategory {
+    /** 数据类型 */
+    STATIC("STATIC", "静态量"),
+    PULSE("PULSE", "脉冲量"),
+    GRADATION("GRADATION", "阶段量"),
+    SEQUENTIAL("SEQUENTIAL", "时序量");
+
+    private String index;
+    private String name;
+
+    DigitalDataCategory(String index, String name) {
+        this.index = index;
+        this.name = name;
+    }
+}

+ 32 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/basic/constant/DigitalDataType.java

@@ -0,0 +1,32 @@
+package com.persagy.dc.basic.constant;
+
+import lombok.Getter;
+
+/**
+ * 数据类型
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+@Getter
+public enum DigitalDataType {
+    /** 数据类型 */
+    INTEGER("INTEGER", "整数"),
+    DOUBLE("DOUBLE", "数值"),
+    BOOLEAN("BOOLEAN", "布尔"),
+    STRING("STRING", "字符"),
+    DATETIME("DATETIME", "日期"),
+    ENUM("ENUM", "枚举"),
+    MENUM("MENUM", "多选枚举"),
+    ATTACHMENT("ATTACHMENT", "附件"),
+    PIC("PIC", "图片"),
+    OBJECT("OBJECT", "对象"),
+    REFENUM("REFENUM", "参照枚举");
+
+    private String index;
+    private String name;
+
+    DigitalDataType(String index, String name) {
+        this.index = index;
+        this.name = name;
+    }
+}

+ 27 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/basic/constant/DigitalMessageConstant.java

@@ -0,0 +1,27 @@
+package com.persagy.dc.basic.constant;
+
+/**
+ * 消息相关常量
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+public interface DigitalMessageConstant {
+
+    /** 消息-exchange */
+    String MESSAGE_EXCHANGE = "exchange-dmp";
+    /** 消息-路由Key */
+    String MESSAGE_ROUTING = "routing-dmp-data-change";
+
+    /** 新增前 */
+    String OPERATE_BEFORE_INSERT = "BeforeInsert";
+    /** 修改前 */
+    String OPERATE_BEFORE_UPDATE = "BeforeInsert";
+    /** 删除前 */
+    String OPERATE_BEFORE_DELETE = "BeforeInsert";
+    /** 新增后 */
+    String OPERATE_AFTER_INSERT = "BeforeInsert";
+    /** 修改后 */
+    String OPERATE_AFTER_UPDATE = "BeforeInsert";
+    /** 删除后 */
+    String OPERATE_AFTER_DELETE = "BeforeInsert";
+}

+ 32 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/basic/constant/DigitalObjectType.java

@@ -0,0 +1,32 @@
+package com.persagy.dc.basic.constant;
+
+import lombok.Getter;
+
+/**
+ * 对象类型
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+@Getter
+public enum DigitalObjectType {
+    /** 对象类型 */
+    PROJECT("project", "项目"),
+    BUILDING("building", "楼"),
+    FLOOR("floor", "楼层"),
+    SPACE("space", "空间"),
+    SYSTEM("system", "系统"),
+    EQUIPMENT("equipment", "设备"),
+    SHAFT("shaft", "竖井"),
+    COMPONENT("component", "部件"),
+    VIRTUAL("virtual", "虚拟对象"),
+    TOOL("tool", "工具"),
+    MATERIAL("material", "耗材");
+
+    private String index;
+    private String name;
+
+    DigitalObjectType(String index, String name) {
+        this.index = index;
+        this.name = name;
+    }
+}

+ 33 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/basic/model/DigitalManageMessage.java

@@ -0,0 +1,33 @@
+package com.persagy.dc.basic.model;
+
+import com.persagy.dc.common.model.entity.BaseEntity;
+import lombok.Data;
+
+/**
+ * 数据字典 维护消息体
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+@Data
+public class DigitalManageMessage {
+
+    /** 操作类型 */
+    private String operatorType;
+    /** 操作实体 */
+    private String operatorObj;
+    /** 原数据 */
+    private BaseEntity oldObj;
+    /** 现数据 */
+    private BaseEntity newObj;
+
+    public DigitalManageMessage(){
+        super();
+    }
+
+    public DigitalManageMessage(String operatorType, String operatorObj, BaseEntity oldObj, BaseEntity newObj) {
+        this.operatorType = operatorType;
+        this.operatorObj = operatorObj;
+        this.oldObj = oldObj;
+        this.newObj = newObj;
+    }
+}

+ 2 - 1
dc-business/dc-digital/src/main/java/com/persagy/dc/common/model/QueryCriteria.java

@@ -1,4 +1,4 @@
-package com.persagy.dc.common.model;
+package com.persagy.dc.basic.model;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dc.common.model.entity.BaseEntity;
+import com.persagy.dc.basic.utils.JsonNodeUtils;
 import lombok.Data;
 
 import java.util.Iterator;

+ 101 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/basic/utils/DigitalCommonUtils.java

@@ -0,0 +1,101 @@
+package com.persagy.dc.basic.utils;
+
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.persagy.dc.basic.constant.DigitalObjectType;
+import com.persagy.dc.common.constant.CommonConstant;
+import com.persagy.dc.common.context.AppContext;
+import com.persagy.dc.common.model.entity.BaseEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 数据孪生通用工具
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+public class DigitalCommonUtils {
+
+    /**
+     * 确认项目范围条件
+     * @param wrapper 查询条件
+     */
+    public static <T extends BaseEntity> void ensureProjectCriteria(QueryWrapper<T> wrapper) {
+        List<String> inSql = new ArrayList<>();
+        // 0-平台级数据
+        inSql.add(CommonConstant.DEFAULT_ID);
+        // groupCode-集团级数据
+        if(StrUtil.isNotBlank(AppContext.getContext().getGroupCode())) {
+            inSql.add(AppContext.getContext().getGroupCode());
+        }
+        // projectId-项目级数据
+        if(StrUtil.isNotBlank(AppContext.getContext().getProjectId())) {
+            inSql.add(AppContext.getContext().getProjectId());
+        }
+        wrapper.in(AppContext.PROJECT_ID, inSql);
+    }
+
+    /**
+     * 获取数据范围ID
+     * @return 0-平台级数据,groupCode-集团级数据,projectId-项目级数据
+     */
+    public static String getProjectId() {
+        // projectId-项目级数据
+        if(StrUtil.isNotBlank(AppContext.getContext().getProjectId())) {
+            return AppContext.getContext().getProjectId();
+        } else if(StrUtil.isNotBlank(AppContext.getContext().getGroupCode())) {
+            // groupCode-集团级数据
+            return AppContext.getContext().getGroupCode();
+        } else {
+            return CommonConstant.DEFAULT_ID;
+        }
+    }
+
+    /**
+     * 生成对象主键
+     * @param projectId 项目ID
+     * @param category 对象类型
+     * @return 两位prefix + 无前缀projectId + simpleUUID
+     */
+    public static String fetchObjectId(String projectId, String category) {
+        if (DigitalObjectType.PROJECT.getIndex().equalsIgnoreCase(category)) {
+            return projectId;
+        }
+        String prefix = getIdPrefix(category);
+        if(StrUtil.isBlank(prefix)) {
+            return IdUtil.simpleUUID();
+        }
+        return prefix + projectId.substring(2) + IdUtil.simpleUUID();
+    }
+
+    /**
+     * 根据对象类型获取Id前缀
+     * @param category 对象类型
+     * @return 两位的前缀 - 空字符串表示无效的对象类型
+     */
+    private static String getIdPrefix(String category) {
+        if(DigitalObjectType.PROJECT.getIndex().equalsIgnoreCase(category)) {
+            return "Pj";
+        } else if (DigitalObjectType.BUILDING.getIndex().equalsIgnoreCase(category)) {
+            return "Bd";
+        } else if (DigitalObjectType.FLOOR.getIndex().equalsIgnoreCase(category)) {
+            return "Fl";
+        } else if (DigitalObjectType.SPACE.getIndex().equalsIgnoreCase(category)) {
+            return "Sp";
+        } else if (DigitalObjectType.SYSTEM.getIndex().equalsIgnoreCase(category)) {
+            return "Sy";
+        } else if (DigitalObjectType.EQUIPMENT.getIndex().equalsIgnoreCase(category)) {
+            return "Eq";
+        } else if (DigitalObjectType.SHAFT.getIndex().equalsIgnoreCase(category)) {
+            return "Sh";
+        } else if (DigitalObjectType.COMPONENT.getIndex().equalsIgnoreCase(category)) {
+            return "Ec";
+        } else if (DigitalObjectType.VIRTUAL.getIndex().equalsIgnoreCase(category)) {
+            return "Vo";
+        } else {
+            return "";
+        }
+    }
+}

+ 1 - 1
dc-business/dc-digital/src/main/java/com/persagy/dc/common/model/JsonNodeUtils.java

@@ -1,4 +1,4 @@
-package com.persagy.dc.common.model;
+package com.persagy.dc.basic.utils;
 
 import com.fasterxml.jackson.databind.JsonNode;
 

+ 64 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/GraphDefineController.java

@@ -0,0 +1,64 @@
+package com.persagy.dc.define.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.common.exception.BusinessException;
+import com.persagy.dc.basic.model.QueryCriteria;
+import com.persagy.dc.basic.utils.DigitalCommonUtils;
+import com.persagy.dc.common.constant.ResponseCode;
+import com.persagy.dc.common.model.response.CommonResult;
+import com.persagy.dc.common.model.response.PageList;
+import com.persagy.dc.common.utils.ResultHelper;
+import com.persagy.dc.define.entity.GraphDefine;
+import com.persagy.dc.define.entity.ObjectType;
+import com.persagy.dc.define.service.IGraphDefineService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 对象类型 Controller
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+@RestController
+@RequestMapping("/rwd/def/funcid")
+public class GraphDefineController {
+
+    @Autowired
+    private IGraphDefineService service;
+
+    @PostMapping("")
+    public CommonResult<PageList<ObjectType>> queryClass(@RequestBody QueryCriteria criteria) {
+        if(criteria == null) {
+            throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
+        }
+        QueryWrapper<GraphDefine> wrapper = new QueryWrapper<>();
+        // 添加所属项目条件
+        DigitalCommonUtils.ensureProjectCriteria(wrapper);
+        // 转换查询条件
+        criteria.toWrapper(wrapper);
+        Page page = service.queryByCondition(criteria.toPage(), wrapper);
+        return ResultHelper.multi(page.getRecords());
+    }
+
+    @PostMapping("/create")
+    public CommonResult<GraphDefine> create(@RequestBody GraphDefine vo){
+        vo.setProjectId(DigitalCommonUtils.getProjectId());
+        vo = service.insert(vo);
+        return ResultHelper.single(vo);
+    }
+
+    @PostMapping("/update")
+    public CommonResult<GraphDefine> update(@RequestBody GraphDefine vo){
+        vo = service.update(vo);
+        return ResultHelper.single(vo);
+    }
+
+    @PostMapping("/delete")
+    public void delete(@RequestBody String id){
+        service.delete(id);
+    }
+}

+ 62 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/ObjectInfoController.java

@@ -0,0 +1,62 @@
+package com.persagy.dc.define.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.common.exception.BusinessException;
+import com.persagy.dc.common.constant.ResponseCode;
+import com.persagy.dc.basic.utils.DigitalCommonUtils;
+import com.persagy.dc.basic.model.QueryCriteria;
+import com.persagy.dc.common.model.response.CommonResult;
+import com.persagy.dc.common.model.response.PageList;
+import com.persagy.dc.common.utils.ResultHelper;
+import com.persagy.dc.define.entity.ObjectInfo;
+import com.persagy.dc.define.service.IObjectInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 对象类型 Controller
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+@RestController
+@RequestMapping("/rwd/def/class")
+public class ObjectInfoController {
+
+    @Autowired
+    private IObjectInfoService service;
+
+    @PostMapping("")
+    public CommonResult<PageList<ObjectInfo>> queryClass(@RequestBody QueryCriteria criteria) {
+        if(criteria == null) {
+            throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
+        }
+        QueryWrapper<ObjectInfo> wrapper = new QueryWrapper<>();
+        // 添加所属项目条件
+        DigitalCommonUtils.ensureProjectCriteria(wrapper);
+        // 转换查询条件
+        criteria.toWrapper(wrapper);
+        Page page = service.queryByCondition(criteria.toPage(), wrapper);
+        return ResultHelper.multi(page.getRecords());
+    }
+
+    @PostMapping("/create")
+    public CommonResult<ObjectInfo> create(@RequestBody ObjectInfo vo){
+        vo = service.insert(vo);
+        return ResultHelper.single(vo);
+    }
+
+    @PostMapping("/update")
+    public CommonResult<ObjectInfo> update(@RequestBody ObjectInfo vo){
+        vo = service.update(vo);
+        return ResultHelper.single(vo);
+    }
+
+    @PostMapping("/delete")
+    public void delete(@RequestBody String id){
+        service.delete(id);
+    }
+}

+ 34 - 15
dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/ObjectTypeController.java

@@ -1,13 +1,12 @@
 package com.persagy.dc.define.controller;
 
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.persagy.common.exception.BusinessException;
-import com.persagy.dc.common.constant.CommonConstant;
+import com.persagy.dc.basic.model.QueryCriteria;
+import com.persagy.dc.basic.utils.DigitalCommonUtils;
 import com.persagy.dc.common.constant.ResponseCode;
-import com.persagy.dc.common.context.AppContext;
-import com.persagy.dc.common.model.QueryCriteria;
+import com.persagy.dc.common.exception.BusinessException;
 import com.persagy.dc.common.model.response.CommonResult;
 import com.persagy.dc.common.model.response.PageList;
 import com.persagy.dc.common.utils.ResultHelper;
@@ -19,6 +18,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
+import java.util.List;
+
 /**
  * 对象类型 Controller
  * @author Charlie Yu
@@ -29,7 +31,7 @@ import org.springframework.web.bind.annotation.RestController;
 public class ObjectTypeController {
 
     @Autowired
-    private IObjectTypeService typeService;
+    private IObjectTypeService service;
 
     @PostMapping("")
     public CommonResult<PageList<ObjectType>> queryClass(@RequestBody QueryCriteria criteria) {
@@ -38,29 +40,46 @@ public class ObjectTypeController {
         }
         QueryWrapper<ObjectType> wrapper = new QueryWrapper<>();
         // 添加所属项目条件
-        if(StrUtil.isNotBlank(AppContext.getContext().getProjectId())) {
-            wrapper.in(AppContext.PROJECT_ID, CommonConstant.DEFAULT_ID, AppContext.getContext().getProjectId());
-        }
+        DigitalCommonUtils.ensureProjectCriteria(wrapper);
         // 转换查询条件
         criteria.toWrapper(wrapper);
-        Page page = typeService.queryByCondition(criteria.toPage(), wrapper);
+        Page page = service.queryByCondition(criteria.toPage(), wrapper);
         return ResultHelper.multi(page.getRecords());
     }
 
     @PostMapping("/create")
-	public CommonResult<ObjectType> create(@RequestBody ObjectType vo){
-        vo = typeService.insert(vo);
+	public CommonResult<ObjectType> create(@Valid @RequestBody ObjectType vo){
+        List<ObjectType> voList = CollUtil.newArrayList(vo);
+        service.insert(voList);
 		return ResultHelper.single(vo);
 	}
 
+    @PostMapping("/createBatch")
+    public CommonResult<PageList<ObjectType>> createBatch(@Valid @RequestBody List<ObjectType> voList){
+        voList = service.insert(voList);
+        return ResultHelper.multi(voList);
+    }
+
 	@PostMapping("/update")
-	public CommonResult<ObjectType> update(@RequestBody ObjectType vo){
-        vo = typeService.update(vo);
+	public CommonResult<ObjectType> update(@Valid @RequestBody ObjectType vo){
+        List<ObjectType> voList = CollUtil.newArrayList(vo);
+        service.update(voList);
 		return ResultHelper.single(vo);
 	}
 
+    @PostMapping("/updateBatch")
+    public CommonResult<PageList<ObjectType>> updateBatch(@Valid @RequestBody List<ObjectType> voList){
+        voList = service.update(voList);
+        return ResultHelper.multi(voList);
+    }
+
 	@PostMapping("/delete")
 	public void delete(@RequestBody String id){
-        typeService.delete(id);
+        service.delete(CollUtil.newArrayList(id));
 	}
+
+    @PostMapping("/deleteBatch")
+    public void deleteBatch(@RequestBody List<String> id){
+        service.delete(id);
+    }
 }

+ 63 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/RelationDefineController.java

@@ -0,0 +1,63 @@
+package com.persagy.dc.define.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.common.exception.BusinessException;
+import com.persagy.dc.common.constant.ResponseCode;
+import com.persagy.dc.basic.utils.DigitalCommonUtils;
+import com.persagy.dc.basic.model.QueryCriteria;
+import com.persagy.dc.common.model.response.CommonResult;
+import com.persagy.dc.common.model.response.PageList;
+import com.persagy.dc.common.utils.ResultHelper;
+import com.persagy.dc.define.entity.ObjectType;
+import com.persagy.dc.define.entity.RelationDefine;
+import com.persagy.dc.define.service.IRelationDefineService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 对象类型 Controller
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+@RestController
+@RequestMapping("/rwd/def/rel")
+public class RelationDefineController {
+
+    @Autowired
+    private IRelationDefineService service;
+
+    @PostMapping("")
+    public CommonResult<PageList<ObjectType>> queryClass(@RequestBody QueryCriteria criteria) {
+        if(criteria == null) {
+            throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
+        }
+        QueryWrapper<RelationDefine> wrapper = new QueryWrapper<>();
+        // 添加所属项目条件
+        DigitalCommonUtils.ensureProjectCriteria(wrapper);
+        // 转换查询条件
+        criteria.toWrapper(wrapper);
+        Page page = service.queryByCondition(criteria.toPage(), wrapper);
+        return ResultHelper.multi(page.getRecords());
+    }
+
+    @PostMapping("/create")
+    public CommonResult<RelationDefine> create(@RequestBody RelationDefine vo){
+        vo = service.insert(vo);
+        return ResultHelper.single(vo);
+    }
+
+    @PostMapping("/update")
+    public CommonResult<RelationDefine> update(@RequestBody RelationDefine vo){
+        vo = service.update(vo);
+        return ResultHelper.single(vo);
+    }
+
+    @PostMapping("/delete")
+    public void delete(@RequestBody String id){
+        service.delete(id);
+    }
+}

+ 12 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/dao/GraphDefineMapper.java

@@ -0,0 +1,12 @@
+package com.persagy.dc.define.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.dc.define.entity.GraphDefine;
+
+/**
+ * 图定义 DAO
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+public interface GraphDefineMapper extends BaseMapper<GraphDefine> {
+}

+ 12 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/dao/ObjectInfoMapper.java

@@ -0,0 +1,12 @@
+package com.persagy.dc.define.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.dc.define.entity.ObjectInfo;
+
+/**
+ * 信息点 DAO
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+public interface ObjectInfoMapper extends BaseMapper<ObjectInfo> {
+}

+ 12 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/dao/RelationDefineMapper.java

@@ -0,0 +1,12 @@
+package com.persagy.dc.define.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.dc.define.entity.RelationDefine;
+
+/**
+ * 关系定义 DAO
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+public interface RelationDefineMapper extends BaseMapper<RelationDefine> {
+}

+ 9 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/entity/GraphDefine.java

@@ -3,6 +3,9 @@ package com.persagy.dc.define.entity;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.persagy.dc.common.model.entity.AuditableEntity;
 import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * 图例定义
@@ -13,9 +16,15 @@ import lombok.Data;
 @TableName("dt_define_graph")
 public class GraphDefine extends AuditableEntity {
     /** 编码 */
+    @NotNull(message = "编码不允许为空")
+    @Length(max = 40)
     private String code;
     /** 名称 */
+    @NotNull(message = "名称不允许为空")
+    @Length(max = 200)
     private String name;
+    /** 项目ID */
+    private String projectId;
     /** 一级分类 */
     private String firstTag;
     /** 二级分类 */

+ 17 - 2
dc-business/dc-digital/src/main/java/com/persagy/dc/define/entity/ObjectType.java

@@ -3,6 +3,9 @@ package com.persagy.dc.define.entity;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.persagy.dc.common.model.entity.AuditableEntity;
 import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * 对象类型定义
@@ -13,17 +16,29 @@ import lombok.Data;
 @TableName("dt_define_type")
 public class ObjectType extends AuditableEntity {
     /** 编码 */
+    @NotNull(message = "编码不允许为空")
+    @Length(max = 40)
     private String code;
     /** 名称 */
+    @NotNull(message = "名称不允许为空")
+    @Length(max = 200)
     private String name;
     /** 别名编码 */
+    @NotNull(message = "别名编码不允许为空")
+    @Length(max = 40)
     private String aliasCode;
     /** 别名名称 */
+    @NotNull(message = "别名名称不允许为空")
+    @Length(max = 200)
     private String aliasName;
-    /** 大类:project-项目, building-建筑, floor-楼层, space-空间, system-系统, equipment-设备, shaft-竖井, component-部件, virtual-虚拟, tool-工具, material-耗材 */
+    /** 大类:project-项目, building-建筑, floor-楼层, space-空间,
+     * system-系统, equipment-设备, shaft-竖井, component-部件,
+     * virtual-虚拟, tool-工具, material-耗材
+     **/
+    @NotNull
     private String objType;
     /** 管理层级:common-平台级,group-集团级,project-项目级 */
-    private String type;
+///    private String type;
     /** 项目ID */
     private String projectId;
     /** 专业编码:上级类型是系统/设备时该字段有值 */

+ 50 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/IGraphDefineService.java

@@ -0,0 +1,50 @@
+package com.persagy.dc.define.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dc.define.entity.GraphDefine;
+
+import java.util.List;
+
+/**
+ * 图定义 接口
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+public interface IGraphDefineService {
+
+    /**
+     * 按条件查询
+     * @param queryWrapper 查询条件
+     * @return 列表
+     */
+    List<GraphDefine> queryByCondition(Wrapper<GraphDefine> queryWrapper);
+
+    /**
+     * 按条件查询
+     * @param page 分页条件
+     * @param queryWrapper 查询条件
+     * @return 分页结果
+     */
+    Page queryByCondition(Page page, Wrapper<GraphDefine> queryWrapper);
+
+    /**
+     * 新增
+     * @param vo 待新增数据
+     * @return 新增后数据
+     */
+    GraphDefine insert(GraphDefine vo);
+
+    /**
+     * 修改
+     * @param vo 待修改数据
+     * @return 修改后数据
+     */
+    GraphDefine update(GraphDefine vo);
+
+    /**
+     * 删除
+     * @param id 主键
+     */
+    void delete(String id);
+}

+ 50 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/IObjectInfoService.java

@@ -0,0 +1,50 @@
+package com.persagy.dc.define.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dc.define.entity.ObjectInfo;
+
+import java.util.List;
+
+/**
+ * 信息点 接口
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+public interface IObjectInfoService {
+
+    /**
+     * 按条件查询
+     * @param queryWrapper 查询条件
+     * @return 列表
+     */
+    List<ObjectInfo> queryByCondition(Wrapper<ObjectInfo> queryWrapper);
+
+    /**
+     * 按条件查询
+     * @param page 分页条件
+     * @param queryWrapper 查询条件
+     * @return 分页结果
+     */
+    Page queryByCondition(Page page, Wrapper<ObjectInfo> queryWrapper);
+
+    /**
+     * 新增
+     * @param vo 待新增数据
+     * @return 新增后数据
+     */
+    ObjectInfo insert(ObjectInfo vo);
+
+    /**
+     * 修改
+     * @param vo 待修改数据
+     * @return 修改后数据
+     */
+    ObjectInfo update(ObjectInfo vo);
+
+    /**
+     * 删除
+     * @param id 主键
+     */
+    void delete(String id);
+}

+ 6 - 5
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/IObjectTypeService.java

@@ -30,20 +30,21 @@ public interface IObjectTypeService {
 
     /**
      * 新增
-     * @param vo 待新增数据
+     * @param voList 待新增数据
      * @return 新增后数据
      */
-    ObjectType insert(ObjectType vo);
+    List<ObjectType> insert(List<ObjectType> voList);
 
     /**
      * 修改
-     * @param vo 待修改数据
+     * @param voList 待修改数据
      * @return 修改后数据
      */
-    ObjectType update(ObjectType vo);
+    List<ObjectType> update(List<ObjectType> voList);
 
     /**
      * 删除
+     * @param idList 主键
      */
-    void delete(String id);
+    void delete(List<String> idList);
 }

+ 50 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/IRelationDefineService.java

@@ -0,0 +1,50 @@
+package com.persagy.dc.define.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dc.define.entity.RelationDefine;
+
+import java.util.List;
+
+/**
+ * 关系定义 接口
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+public interface IRelationDefineService {
+
+    /**
+     * 按条件查询
+     * @param queryWrapper 查询条件
+     * @return 列表
+     */
+    List<RelationDefine> queryByCondition(Wrapper<RelationDefine> queryWrapper);
+
+    /**
+     * 按条件查询
+     * @param page 分页条件
+     * @param queryWrapper 查询条件
+     * @return 分页结果
+     */
+    Page queryByCondition(Page page, Wrapper<RelationDefine> queryWrapper);
+
+    /**
+     * 新增
+     * @param vo 待新增数据
+     * @return 新增后数据
+     */
+    RelationDefine insert(RelationDefine vo);
+
+    /**
+     * 修改
+     * @param vo 待修改数据
+     * @return 修改后数据
+     */
+    RelationDefine update(RelationDefine vo);
+
+    /**
+     * 删除
+     * @param id 主键
+     */
+    void delete(String id);
+}

+ 55 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/impl/GraphDefineServiceImpl.java

@@ -0,0 +1,55 @@
+package com.persagy.dc.define.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dc.common.constant.ValidEnum;
+import com.persagy.dc.define.dao.GraphDefineMapper;
+import com.persagy.dc.define.entity.GraphDefine;
+import com.persagy.dc.define.service.IGraphDefineService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 图定义 实现类
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class GraphDefineServiceImpl implements IGraphDefineService {
+
+    @Resource
+    private GraphDefineMapper dao;
+
+    @Override
+    public List<GraphDefine> queryByCondition(Wrapper<GraphDefine> queryWrapper) {
+        return dao.selectList(queryWrapper);
+    }
+
+    @Override
+    public Page queryByCondition(Page page, Wrapper<GraphDefine> queryWrapper) {
+        return dao.selectPage(page, queryWrapper);
+    }
+
+    @Override
+    public GraphDefine insert(GraphDefine vo) {
+        dao.insert(vo);
+        return vo;
+    }
+
+    @Override
+    public GraphDefine update(GraphDefine vo) {
+        dao.updateById(vo);
+        return vo;
+    }
+
+    @Override
+    public void delete(String id) {
+        GraphDefine vo = dao.selectById(id);
+        vo.setValid(ValidEnum.FALSE.getType());
+        dao.updateById(vo);
+    }
+}

+ 55 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/impl/ObjectInfoServiceImpl.java

@@ -0,0 +1,55 @@
+package com.persagy.dc.define.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dc.common.constant.ValidEnum;
+import com.persagy.dc.define.dao.ObjectInfoMapper;
+import com.persagy.dc.define.entity.ObjectInfo;
+import com.persagy.dc.define.service.IObjectInfoService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 信息点 实现类
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ObjectInfoServiceImpl implements IObjectInfoService {
+
+    @Resource
+    private ObjectInfoMapper dao;
+
+    @Override
+    public List<ObjectInfo> queryByCondition(Wrapper<ObjectInfo> queryWrapper) {
+        return dao.selectList(queryWrapper);
+    }
+
+    @Override
+    public Page queryByCondition(Page page, Wrapper<ObjectInfo> queryWrapper) {
+        return dao.selectPage(page, queryWrapper);
+    }
+
+    @Override
+    public ObjectInfo insert(ObjectInfo vo) {
+        dao.insert(vo);
+        return vo;
+    }
+
+    @Override
+    public ObjectInfo update(ObjectInfo vo) {
+        dao.updateById(vo);
+        return vo;
+    }
+
+    @Override
+    public void delete(String id) {
+        ObjectInfo vo = dao.selectById(id);
+        vo.setValid(ValidEnum.FALSE.getType());
+        dao.updateById(vo);
+    }
+}

+ 94 - 10
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/impl/ObjectTypeServiceImpl.java

@@ -1,16 +1,26 @@
 package com.persagy.dc.define.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dc.amqp.handler.RabbitMessageSender;
+import com.persagy.dc.basic.constant.DigitalMessageConstant;
+import com.persagy.dc.basic.model.DigitalManageMessage;
 import com.persagy.dc.common.constant.ValidEnum;
+import com.persagy.dc.common.model.entity.BaseEntity;
 import com.persagy.dc.define.dao.ObjectTypeMapper;
 import com.persagy.dc.define.entity.ObjectType;
 import com.persagy.dc.define.service.IObjectTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 对象类型 实现类
@@ -23,6 +33,8 @@ public class ObjectTypeServiceImpl implements IObjectTypeService {
 
     @Resource
     private ObjectTypeMapper dao;
+    @Autowired
+    private RabbitMessageSender messageSender;
 
     @Override
     public List<ObjectType> queryByCondition(Wrapper<ObjectType> queryWrapper) {
@@ -35,21 +47,93 @@ public class ObjectTypeServiceImpl implements IObjectTypeService {
     }
 
     @Override
-    public ObjectType insert(ObjectType vo) {
-        dao.insert(vo);
-        return vo;
+    public List<ObjectType> insert(List<ObjectType> voList) {
+        if(CollUtil.isEmpty(voList)) {
+            return null;
+        }
+        voList.forEach(vo -> {
+            // 新增前消息
+            DigitalManageMessage message = new DigitalManageMessage();
+            message.setOperatorType(DigitalMessageConstant.OPERATE_BEFORE_INSERT);
+            message.setOperatorObj(vo.getClass().getSimpleName());
+            message.setNewObj(vo);
+            sendMessage(message, true);
+            // 新增
+            dao.insert(vo);
+            // 新增后消息
+            message.setOperatorType(DigitalMessageConstant.OPERATE_AFTER_INSERT);
+            sendMessage(message, false);
+        });
+        return voList;
     }
 
     @Override
-    public ObjectType update(ObjectType vo) {
-        dao.updateById(vo);
-        return vo;
+    public List<ObjectType> update(List<ObjectType> voList) {
+        if(CollUtil.isEmpty(voList)) {
+            return null;
+        }
+        List<String> idList = CollUtil.getFieldValues(voList, BaseEntity.PROP_ID, String.class);
+        List<ObjectType> dbList = dao.selectBatchIds(idList);
+        Map<String, ObjectType> dbMap = CollectionUtil.fieldValueMap(dbList, BaseEntity.PROP_ID);
+        voList.forEach(vo -> {
+            // 修改前消息
+            DigitalManageMessage message = new DigitalManageMessage();
+            message.setOperatorType(DigitalMessageConstant.OPERATE_BEFORE_UPDATE);
+            message.setOperatorObj(vo.getClass().getSimpleName());
+            message.setOldObj(MapUtil.get(dbMap, vo.getId(), ObjectType.class));
+            message.setNewObj(vo);
+            sendMessage(message, true);
+            // 修改
+            dao.updateById(vo);
+            // 修改后消息
+            message.setOperatorType(DigitalMessageConstant.OPERATE_AFTER_UPDATE);
+            sendMessage(message, false);
+        });
+        return voList;
     }
 
     @Override
-    public void delete(String id) {
-        ObjectType vo = dao.selectById(id);
-        vo.setValid(ValidEnum.FALSE.getType());
-        dao.updateById(vo);
+    public void delete(List<String> idList) {
+        if(CollUtil.isEmpty(idList)) {
+            return;
+        }
+        List<ObjectType> dbList = dao.selectBatchIds(idList);
+        Map<String, ObjectType> dbMap = CollectionUtil.fieldValueMap(dbList, BaseEntity.PROP_ID);
+        idList.forEach(id -> {
+            // 删除前消息
+            DigitalManageMessage message = new DigitalManageMessage();
+            message.setOperatorType(DigitalMessageConstant.OPERATE_BEFORE_DELETE);
+            message.setOperatorObj(ObjectType.class.getSimpleName());
+            message.setNewObj(MapUtil.get(dbMap, id, ObjectType.class));
+            sendMessage(message, true);
+            ObjectType vo = new ObjectType();
+            vo.setId(id);
+            vo.setValid(ValidEnum.FALSE.getType());
+            // 删除
+            dao.updateById(vo);
+            // 删除后消息
+            message.setOperatorType(DigitalMessageConstant.OPERATE_AFTER_DELETE);
+            message.getNewObj().setValid(ValidEnum.FALSE.getType());
+            sendMessage(message, true);
+        });
+    }
+
+    /**
+     * 发送消息
+     * @param message
+     * @param syncFlag
+     */
+    private void sendMessage(DigitalManageMessage message, boolean syncFlag) {
+        // 同步消息
+        if(syncFlag) {
+            messageSender.sendAndReceive(DigitalMessageConstant.MESSAGE_EXCHANGE,
+                    DigitalMessageConstant.MESSAGE_ROUTING,
+                    JSONUtil.toJsonStr(message));
+        } else {
+            // 异步消息
+            messageSender.send(DigitalMessageConstant.MESSAGE_EXCHANGE,
+                    DigitalMessageConstant.MESSAGE_ROUTING,
+                    JSONUtil.toJsonStr(message));
+        }
     }
 }

+ 55 - 0
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/impl/RelationDefineServiceImpl.java

@@ -0,0 +1,55 @@
+package com.persagy.dc.define.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dc.common.constant.ValidEnum;
+import com.persagy.dc.define.dao.RelationDefineMapper;
+import com.persagy.dc.define.entity.RelationDefine;
+import com.persagy.dc.define.service.IRelationDefineService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 关系定义 实现类
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RelationDefineServiceImpl implements IRelationDefineService {
+
+    @Resource
+    private RelationDefineMapper dao;
+
+    @Override
+    public List<RelationDefine> queryByCondition(Wrapper<RelationDefine> queryWrapper) {
+        return dao.selectList(queryWrapper);
+    }
+
+    @Override
+    public Page queryByCondition(Page page, Wrapper<RelationDefine> queryWrapper) {
+        return dao.selectPage(page, queryWrapper);
+    }
+
+    @Override
+    public RelationDefine insert(RelationDefine vo) {
+        dao.insert(vo);
+        return vo;
+    }
+
+    @Override
+    public RelationDefine update(RelationDefine vo) {
+        dao.updateById(vo);
+        return vo;
+    }
+
+    @Override
+    public void delete(String id) {
+        RelationDefine vo = dao.selectById(id);
+        vo.setValid(ValidEnum.FALSE.getType());
+        dao.updateById(vo);
+    }
+}

+ 0 - 6
dc-common/pom.xml

@@ -32,11 +32,5 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
-
-        <!-- integrated -->
-        <dependency>
-            <groupId>com.persagy</groupId>
-            <artifactId>integrated-common-core</artifactId>
-        </dependency>
     </dependencies>
 </project>

+ 0 - 25
dc-common/src/main/java/com/persagy/dc/common/config/SpringCommonConfig.java

@@ -1,25 +0,0 @@
-package com.persagy.dc.common.config;
-
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * 通用配置
- * @author Charlie Yu
- * @date 2021-06-02
- */
-@Configuration
-public class SpringCommonConfig implements CommandLineRunner {
-
-    @Autowired
-    private ObjectMapper objectMapper;
-
-    @Override
-    public void run(String... args) throws Exception {
-        // 注入objectMapper,处理Java对象转JsonString
-        JacksonTypeHandler.setObjectMapper(objectMapper);
-    }
-}

+ 5 - 6
dc-common/src/main/java/com/persagy/dc/common/handler/AppContextHandler.java

@@ -1,10 +1,9 @@
 package com.persagy.dc.common.handler;
 
 import cn.hutool.core.util.StrUtil;
-import com.alibaba.fastjson.JSONObject;
+import cn.hutool.json.JSONObject;
 import com.persagy.dc.common.context.AppContext;
 import com.persagy.dc.common.helper.SpringHelper;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
@@ -24,7 +23,7 @@ public class AppContextHandler extends HandlerInterceptorAdapter {
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         String requestURI = request.getRequestURI();
-        if (StringUtils.containsAny(requestURI, IGNORE_URL)) {
+        if (StrUtil.containsAny(requestURI, IGNORE_URL)) {
             return true;
         }
         // 运维平台token认证
@@ -59,9 +58,9 @@ public class AppContextHandler extends HandlerInterceptorAdapter {
 //            throw new AESDecryptException("token解析异常");
 //        }
         // 获取值
-        String accountId = tokenObj.getString("accountId");
-        String groupCode = tokenObj.getString("groupCode");
-        String appId = tokenObj.getString("appId");
+        String accountId = tokenObj.getStr("accountId");
+        String groupCode = tokenObj.getStr("groupCode");
+        String appId = tokenObj.getStr("appId");
         AppContext.getContext().setAccountId(accountId);
         AppContext.getContext().setGroupCode(groupCode);
         AppContext.getContext().setAppId(appId);

+ 15 - 1
dc-comp/dc-mybatis/src/main/java/com/persagy/dc/mybatis/config/MybatisPlusConfig.java

@@ -1,12 +1,17 @@
 package com.persagy.dc.mybatis.config;
 
 import com.baomidou.mybatisplus.autoconfigure.MybatisPlusPropertiesCustomizer;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.CommandLineRunner;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
+import javax.annotation.Resource;
+
 /**
  * MybatisPlus公共配置
  * @author lixing
@@ -16,7 +21,16 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @MapperScan(value = "com.persagy.**.dao")
 @Configuration
 @EnableTransactionManagement
-public class MybatisPlusConfig {
+public class MybatisPlusConfig implements CommandLineRunner {
+
+    @Resource
+    private ObjectMapper objectMapper;
+
+    @Override
+    public void run(String... args) throws Exception {
+        // 注入objectMapper,处理Java对象转JsonString
+        JacksonTypeHandler.setObjectMapper(objectMapper);
+    }
 
     /**
      * 注册分页插件

+ 0 - 1
dc-server/src/main/java/com/persagy/ServerApplication.java

@@ -2,7 +2,6 @@ package com.persagy;
 
 import cn.hutool.extra.spring.EnableSpringUtil;
 import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
-import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.Banner;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;