Procházet zdrojové kódy

Merge branch 'develop' of http://39.106.8.246:3003/BDTP/digital-twin into develop

 Conflicts:
	dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/iservice/ObjectRelationIService.java
	dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/iservice/impl/ObjectRelationIServiceImpl.java
	dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/IObjectRelationService.java
	dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ObjectRelationServiceImpl.java
lijie před 3 roky
rodič
revize
52f125c25d
33 změnil soubory, kde provedl 535 přidání a 86 odebrání
  1. 35 2
      dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/controller/DictDataController.java
  2. 30 2
      dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/controller/DictDataMapController.java
  3. 30 2
      dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/controller/DictTypeController.java
  4. 10 0
      dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/entity/DictData.java
  5. 11 0
      dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/entity/DictDataMap.java
  6. 7 0
      dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/entity/DictType.java
  7. 2 2
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/constant/DigitalMessageConstant.java
  8. 8 2
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/utils/DigitalMessageHelper.java
  9. 7 2
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/define/controller/GraphDefineController.java
  10. 45 2
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/define/controller/ObjectInfoController.java
  11. 45 2
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/define/controller/ObjectTypeController.java
  12. 7 2
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/define/controller/RelationDefineController.java
  13. 86 6
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/controller/ObjectDigitalController.java
  14. 35 4
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/controller/ObjectRelationController.java
  15. 0 13
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/iservice/ObjectRelationIService.java
  16. 0 16
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/iservice/impl/ObjectRelationIServiceImpl.java
  17. 1 1
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/IObjectRelationService.java
  18. 0 4
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ObjectDigitalServiceImpl.java
  19. 5 2
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ObjectRelationServiceImpl.java
  20. 55 14
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/utils/ObjectDigitalCriteriaHelper.java
  21. 3 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/controller/IotController.java
  22. 9 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/CurrentDataModel.java
  23. 7 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/DataInfo.java
  24. 13 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/SettingDataModel.java
  25. 5 1
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/history/DataModel.java
  26. 10 2
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/history/InfoCodeModel.java
  27. 7 1
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/history/RequestModel.java
  28. 21 0
      dmp-comp/dmp-amqp-starter/README.md
  29. 4 4
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/basic/model/DigitalManageMessage.java
  30. 12 0
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/define/entity/ObjectInfoDefine.java
  31. 9 0
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/define/entity/RelationDefine.java
  32. 6 0
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ObjectDigital.java
  33. 10 0
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ObjectRelation.java

+ 35 - 2
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/controller/DictDataController.java

@@ -12,12 +12,14 @@ import com.persagy.dmp.common.utils.ResultHelper;
 import com.persagy.dmp.dic.entity.DictData;
 import com.persagy.dmp.dic.entity.DictType;
 import com.persagy.dmp.dic.service.DictDataService;
+import org.apache.commons.lang.StringUtils;
 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;
 
+import javax.validation.Valid;
 import java.util.Iterator;
 import java.util.List;
 
@@ -36,6 +38,11 @@ public class DictDataController {
     private static final String STATUS="status";
     private static final String VALID="valid";
 
+    /**
+     * 查询字典数据
+     * @param criteria
+     * @return
+     */
     @Deprecated
     @PostMapping("/query")
     public CommonResult<List<DictData>> query(@RequestBody QueryCriteria criteria) {
@@ -57,27 +64,53 @@ public class DictDataController {
         return ResultHelper.multi(page.getRecords(), page.getTotal());
     }
 
+    /**
+     * 创建字典数据
+     * @param vo
+     * @return
+     */
     @Deprecated
     @PostMapping("/create")
-    public CommonResult<DictData> create(@RequestBody DictData vo){
+    public CommonResult<DictData> create(@Valid @RequestBody DictData vo){
         vo = service.insert(vo);
         return ResultHelper.single(vo);
     }
 
+    /**
+     * 修改字典数据
+     * @param vo
+     * @return
+     */
     @Deprecated
     @PostMapping("/update")
-    public CommonResult<DictData> update(@RequestBody DictData vo){
+    public CommonResult<DictData> update(@Valid @RequestBody DictData vo){
         vo = service.update(vo);
         return ResultHelper.single(vo);
     }
 
+    /**
+     * 删除字典数据
+     * @param vo
+     * @return
+     */
     @Deprecated
     @PostMapping("/delete")
     public CommonResult<DictData> delete(@RequestBody DictData vo){
+        if(vo == null){
+            throw new BusinessException(ResponseCode.A0400.getCode(),ResponseCode.A0400.getCode());
+        }
+        if(StringUtils.isEmpty(vo.getId())){
+            throw new BusinessException(ResponseCode.A0400.getCode(), "id不能为空");
+        }
         service.delete(vo);
         return ResultHelper.success();
     }
 
+    /**
+     * 查询映射表替代字典数据的数据集
+     * @param dictType
+     * @return
+     */
     @Deprecated
     @PostMapping("/result")
     public CommonResult<List<DictData>> query(@RequestBody DictType dictType) {

+ 30 - 2
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/controller/DictDataMapController.java

@@ -10,12 +10,14 @@ import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ResultHelper;
 import com.persagy.dmp.dic.entity.DictDataMap;
 import com.persagy.dmp.dic.service.DictDataMapService;
+import org.apache.commons.lang.StringUtils;
 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;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -30,6 +32,11 @@ public class DictDataMapController {
     @Autowired
     private DictDataMapService service;
 
+    /**
+     * 查询字典数据映射
+     * @param criteria
+     * @return
+     */
     @Deprecated
     @PostMapping("/query")
     public CommonResult<List<DictDataMap>> query(@RequestBody QueryCriteria criteria) {
@@ -43,23 +50,44 @@ public class DictDataMapController {
         return ResultHelper.multi(page.getRecords(), page.getTotal());
     }
 
+    /**
+     * 创建字典数据映射
+     * @param vo
+     * @return
+     */
     @Deprecated
     @PostMapping("/create")
-    public CommonResult<DictDataMap> create(@RequestBody DictDataMap vo){
+    public CommonResult<DictDataMap> create(@Valid @RequestBody DictDataMap vo){
         vo = service.insert(vo);
         return ResultHelper.single(vo);
     }
 
+    /**
+     * 修改字典数据映射
+     * @param vo
+     * @return
+     */
     @Deprecated
     @PostMapping("/update")
-    public CommonResult<DictDataMap> update(@RequestBody DictDataMap vo){
+    public CommonResult<DictDataMap> update(@Valid @RequestBody DictDataMap vo){
         vo = service.update(vo);
         return ResultHelper.single(vo);
     }
 
+    /**
+     * 删除字典数据映射
+     * @param vo
+     * @return
+     */
     @Deprecated
     @PostMapping("/delete")
     public CommonResult<DictDataMap> delete(@RequestBody DictDataMap vo){
+        if(vo == null){
+            throw new BusinessException(ResponseCode.A0400.getCode(),ResponseCode.A0400.getCode());
+        }
+        if(StringUtils.isEmpty(vo.getId())){
+            throw new BusinessException(ResponseCode.A0400.getCode(), "id不能为空");
+        }
         service.delete(vo);
         return ResultHelper.success();
     }

+ 30 - 2
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/controller/DictTypeController.java

@@ -10,12 +10,14 @@ import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ResultHelper;
 import com.persagy.dmp.dic.entity.DictType;
 import com.persagy.dmp.dic.service.DictTypeService;
+import org.apache.commons.lang.StringUtils;
 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;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -30,6 +32,11 @@ public class DictTypeController {
     @Autowired
     private DictTypeService service;
 
+    /**
+     * 字典类型查询
+     * @param criteria
+     * @return
+     */
     @Deprecated
     @PostMapping("/query")
     public CommonResult<List<DictType>> query(@RequestBody QueryCriteria criteria) {
@@ -43,23 +50,44 @@ public class DictTypeController {
         return ResultHelper.multi(page.getRecords(), page.getTotal());
     }
 
+    /**
+     * 字典类型创建
+     * @param vo
+     * @return
+     */
     @Deprecated
     @PostMapping("/create")
-    public CommonResult<DictType> create(@RequestBody DictType vo){
+    public CommonResult<DictType> create(@Valid @RequestBody DictType vo){
         vo = service.insert(vo);
         return ResultHelper.single(vo);
     }
 
+    /**
+     * 字典类型修改
+     * @param vo
+     * @return
+     */
     @Deprecated
     @PostMapping("/update")
-    public CommonResult<DictType> update(@RequestBody DictType vo){
+    public CommonResult<DictType> update(@Valid @RequestBody DictType vo){
         vo = service.update(vo);
         return ResultHelper.single(vo);
     }
 
+    /**
+     * 字典类型删除
+     * @param vo
+     * @return
+     */
     @Deprecated
     @PostMapping("/delete")
     public CommonResult<DictType> delete(@RequestBody DictType vo){
+        if(vo == null){
+            throw new BusinessException(ResponseCode.A0400.getCode(),ResponseCode.A0400.getCode());
+        }
+        if(StringUtils.isEmpty(vo.getId())){
+            throw new BusinessException(ResponseCode.A0400.getCode(), "id不能为空");
+        }
         service.delete(vo);
         return ResultHelper.success();
     }

+ 10 - 0
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/entity/DictData.java

@@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * 字典数据
@@ -16,18 +19,25 @@ import lombok.EqualsAndHashCode;
 @TableName(value = "dic_dt_data", autoResultMap = true)
 public class DictData extends AuditableEntity {
 	/** 字典类型ID */
+
 	private String dictTypeId;
 
 	/** 父节点 */
 	private String parentId;
 
 	/** 字典类型 */
+	@NotNull(message = "字典类型不允许为空")
+	@Length(max = 40)
 	private String type;
 
 	/** 字典数据编码 */
+	@NotNull(message = "字典数据编码不允许为空")
+	@Length(max = 40)
 	private String code;
 
 	/** 字典数据标签 */
+	@NotNull(message = "字典数据标签不允许为空")
+	@Length(max = 200)
 	private String label;
 
 	/** 状态 0:停用,1:正常 */

+ 11 - 0
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/entity/DictDataMap.java

@@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * 字典数据
@@ -19,18 +22,26 @@ public class DictDataMap extends AuditableEntity {
 	private String dictDataId;
 
 	/** 字典类型 */
+	@NotNull(message = "字典类型不允许为空")
+	@Length(max = 40)
 	private String type;
 
 	/** 集团编码 */
 	private String groupCode;
 
 	/** 映射字典数据表code */
+	@NotNull(message = "映射字典code不允许为空")
+	@Length(max = 40)
 	private String targetCode;
 
 	/** 字典数据标签 */
+	@NotNull(message = "字典数据标签不允许为空")
+	@Length(max = 200)
 	private String label;
 
 	/** 字典数据编码 */
+	@NotNull(message = "字典数据编码不允许为空")
+	@Length(max = 40)
 	private String code;
 
 	/** 状态 0:停用,1:正常 */

+ 7 - 0
dmp-business/dmp-dic/src/main/java/com/persagy/dmp/dic/entity/DictType.java

@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * 字典类型
@@ -21,9 +24,13 @@ public class DictType extends AuditableEntity {
     private String groupCode;
 
     /** 字典类型 */
+    @NotNull(message = "字典类型不允许为空")
+    @Length(max = 40)
     private String type;
 
     /** 字典类型名称 */
+    @NotNull(message = "字典类型名称不允许为空")
+    @Length(max = 200)
     private String name;
 
     /** 描述 */

+ 2 - 2
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/constant/DigitalMessageConstant.java

@@ -8,9 +8,9 @@ package com.persagy.dmp.rwd.basic.constant;
 public interface DigitalMessageConstant {
 
     /** 消息-exchange */
-    String MESSAGE_EXCHANGE = "exchange-digital";
+    String MESSAGE_EXCHANGE = "exchange-bdtp-digital";
     /** 消息-路由Key */
-    String MESSAGE_ROUTING = "routing-digital-change";
+    String MESSAGE_ROUTING = "routing-bdtp-digital-save";
 
     /** 新增前 */
     String OPERATE_BEFORE_INSERT = "BeforeInsert";

+ 8 - 2
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/utils/DigitalMessageHelper.java

@@ -2,8 +2,10 @@ package com.persagy.dmp.rwd.basic.utils;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.amqp.handler.RabbitMessageSender;
 import com.persagy.dmp.basic.model.DigitalManageMessage;
+import com.persagy.dmp.basic.utils.JsonNodeUtils;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.model.entity.BaseEntity;
 import com.persagy.dmp.rwd.basic.constant.DigitalMessageConstant;
@@ -33,11 +35,15 @@ public class DigitalMessageHelper {
      * @param syncFlag 同步消息标识
      */
     public void sendMessage(String operator, BaseEntity oldVO, BaseEntity newVO, boolean syncFlag) {
+        // 将扩展属性提取到外部
+        ObjectNode oldNode = JsonNodeUtils.toObjectNode(oldVO, "infos", null);
+        ObjectNode newNode = JsonNodeUtils.toObjectNode(newVO, "infos", null);
+        // 组装消息体
         DigitalManageMessage message = new DigitalManageMessage();
         message.setOperatorType(operator);
         message.setOperatorObj(newVO.getClass().getSimpleName());
-        message.setOldObj(oldVO);
-        message.setNewObj(newVO);
+        message.setOldObj(oldNode);
+        message.setNewObj(newNode);
         // 同步消息
         try {
             if(syncFlag) {

+ 7 - 2
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/define/controller/GraphDefineController.java

@@ -10,12 +10,14 @@ import com.persagy.dmp.common.utils.ResultHelper;
 import com.persagy.dmp.define.entity.GraphDefine;
 import com.persagy.dmp.basic.utils.QueryCriteriaHelper;
 import com.persagy.dmp.rwd.define.service.IGraphDefineService;
+import org.apache.commons.lang.StringUtils;
 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;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -49,19 +51,22 @@ public class GraphDefineController {
     }
 
     @PostMapping("/create")
-    public CommonResult<GraphDefine> create(@RequestBody GraphDefine vo){
+    public CommonResult<GraphDefine> create(@Valid @RequestBody GraphDefine vo){
         vo = service.insert(vo);
         return ResultHelper.single(vo);
     }
 
     @PostMapping("/update")
-    public CommonResult<GraphDefine> update(@RequestBody GraphDefine vo){
+    public CommonResult<GraphDefine> update(@Valid @RequestBody GraphDefine vo){
         vo = service.update(vo);
         return ResultHelper.single(vo);
     }
 
     @PostMapping("/delete")
     public void delete(@RequestBody String id){
+        if(StringUtils.isEmpty(id)){
+            throw new BusinessException(ResponseCode.A0400.getCode(), "id不能为空");
+        }
         service.delete(id);
     }
 }

+ 45 - 2
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/define/controller/ObjectInfoController.java

@@ -4,7 +4,10 @@ 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.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.basic.utils.QueryCriteriaHelper;
+import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.constant.ResponseCode;
+import com.persagy.dmp.common.context.AppContext;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ResultHelper;
@@ -12,6 +15,7 @@ import com.persagy.dmp.define.entity.ObjectInfoDefine;
 import com.persagy.dmp.mybatis.utils.ConditionUtil;
 import com.persagy.dmp.basic.utils.QueryCriteriaHelper;
 import com.persagy.dmp.rwd.define.service.IObjectInfoService;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -62,12 +66,18 @@ public class ObjectInfoController {
     @PostMapping("/create")
     public CommonResult<ObjectInfoDefine> create(@Valid @RequestBody ObjectInfoDefine vo){
         List<ObjectInfoDefine> voList = CollUtil.newArrayList(vo);
+        //创建默认条件
+        createDefaultValue(voList);
+        //新增信息点
         service.insert(voList);
         return ResultHelper.single(vo);
     }
 
     @PostMapping("/createBatch")
     public CommonResult<List<ObjectInfoDefine>> createBatch(@Valid @RequestBody List<ObjectInfoDefine> voList){
+        //创建默认条件
+        createDefaultValue(voList);
+        //批量新增信息点
         voList = service.insert(voList);
         return ResultHelper.multi(voList);
     }
@@ -75,25 +85,58 @@ public class ObjectInfoController {
     @PostMapping("/update")
     public CommonResult<ObjectInfoDefine> update(@Valid @RequestBody ObjectInfoDefine vo){
         List<ObjectInfoDefine> voList = CollUtil.newArrayList(vo);
+        //创建默认条件
+        createDefaultValue(voList);
+        //修改信息点
         service.update(voList);
         return ResultHelper.single(vo);
     }
 
     @PostMapping("/updateBatch")
     public CommonResult<List<ObjectInfoDefine>> updateBatch(@Valid @RequestBody List<ObjectInfoDefine> voList){
+        //创建默认条件
+        createDefaultValue(voList);
+        //修改信息点
         voList = service.update(voList);
         return ResultHelper.multi(voList);
     }
 
     @PostMapping("/delete")
     public CommonResult delete(@RequestBody String id){
+        if(StringUtils.isEmpty(id)){
+            throw new BusinessException(ResponseCode.A0400.getCode(), "id不能为空");
+        }
         service.delete(CollUtil.newArrayList(id));
         return ResultHelper.success();
     }
 
     @PostMapping("/deleteBatch")
-    public CommonResult deleteBatch(@RequestBody List<String> id){
-        service.delete(id);
+    public CommonResult deleteBatch(@RequestBody List<String> ids){
+        if(ids == null || ids.size()<=0){
+            throw new BusinessException(ResponseCode.A0400.getCode(), "id不能为空");
+        }
+        service.delete(ids);
         return ResultHelper.success();
     }
+
+    /**
+     * 创建默认条件
+     * @param voList
+     */
+    private void createDefaultValue(List<ObjectInfoDefine> voList){
+        String groupCode = AppContext.getContext().getGroupCode();
+        if(StringUtils.isEmpty(groupCode)){
+            //默认集团
+            groupCode = CommonConstant.DEFAULT_ID;
+        }
+        String projectId = AppContext.getContext().getProjectId();
+        if(StringUtils.isEmpty(projectId)){
+            //默认项目
+            projectId = CommonConstant.DEFAULT_ID;
+        }
+        for (ObjectInfoDefine vo : voList) {
+            vo.setGroupCode(groupCode);
+            vo.setProjectId(projectId);
+        }
+    }
 }

+ 45 - 2
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/define/controller/ObjectTypeController.java

@@ -5,7 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.basic.utils.QueryCriteriaHelper;
+import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.constant.ResponseCode;
+import com.persagy.dmp.common.context.AppContext;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ResultHelper;
@@ -13,6 +16,7 @@ import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.mybatis.utils.ConditionUtil;
 import com.persagy.dmp.basic.utils.QueryCriteriaHelper;
 import com.persagy.dmp.rwd.define.service.IObjectTypeService;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -64,12 +68,18 @@ public class ObjectTypeController {
     @PostMapping("/create")
 	public CommonResult<ObjectTypeDefine> create(@Valid @RequestBody ObjectTypeDefine vo){
         List<ObjectTypeDefine> voList = CollUtil.newArrayList(vo);
+        //创建默认条件
+        createDefaultValue(voList);
+        //新增类型定义
         service.insert(voList);
 		return ResultHelper.single(vo);
 	}
 
     @PostMapping("/createBatch")
     public CommonResult<List<ObjectTypeDefine>> createBatch(@Valid @RequestBody List<ObjectTypeDefine> voList){
+        //创建默认条件
+        createDefaultValue(voList);
+        //新增类型定义
         voList = service.insert(voList);
         return ResultHelper.multi(voList);
     }
@@ -77,25 +87,58 @@ public class ObjectTypeController {
 	@PostMapping("/update")
 	public CommonResult<ObjectTypeDefine> update(@Valid @RequestBody ObjectTypeDefine vo){
         List<ObjectTypeDefine> voList = CollUtil.newArrayList(vo);
+        //创建默认条件
+        createDefaultValue(voList);
+        //修改类型定义
         service.update(voList);
 		return ResultHelper.single(vo);
 	}
 
     @PostMapping("/updateBatch")
     public CommonResult<List<ObjectTypeDefine>> updateBatch(@Valid @RequestBody List<ObjectTypeDefine> voList){
+        //创建默认条件
+        createDefaultValue(voList);
+        //修改类型定义
         voList = service.update(voList);
         return ResultHelper.multi(voList);
     }
 
 	@PostMapping("/delete")
 	public CommonResult delete(@RequestBody String id){
+        if(StringUtils.isEmpty(id)){
+            throw new BusinessException(ResponseCode.A0400.getCode(), "id不能为空");
+        }
         service.delete(CollUtil.newArrayList(id));
         return ResultHelper.success();
 	}
 
     @PostMapping("/deleteBatch")
-    public CommonResult deleteBatch(@RequestBody List<String> id){
-        service.delete(id);
+    public CommonResult deleteBatch(@RequestBody List<String> ids){
+        if(ids == null || ids.size()<=0){
+            throw new BusinessException(ResponseCode.A0400.getCode(), "id不能为空");
+        }
+        service.delete(ids);
         return ResultHelper.success();
     }
+
+    /**
+     * 创建默认条件
+     * @param voList
+     */
+    private void createDefaultValue(List<ObjectTypeDefine> voList){
+        String groupCode = AppContext.getContext().getGroupCode();
+        if(StringUtils.isEmpty(groupCode)){
+            //默认集团
+            groupCode = CommonConstant.DEFAULT_ID;
+        }
+        String projectId = AppContext.getContext().getProjectId();
+        if(StringUtils.isEmpty(projectId)){
+            //默认项目
+            projectId = CommonConstant.DEFAULT_ID;
+        }
+        for (ObjectTypeDefine vo : voList) {
+            vo.setGroupCode(groupCode);
+            vo.setProjectId(projectId);
+        }
+    }
 }

+ 7 - 2
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/define/controller/RelationDefineController.java

@@ -10,12 +10,14 @@ import com.persagy.dmp.common.utils.ResultHelper;
 import com.persagy.dmp.define.entity.RelationDefine;
 import com.persagy.dmp.basic.utils.QueryCriteriaHelper;
 import com.persagy.dmp.rwd.define.service.IRelationDefineService;
+import org.apache.commons.lang.StringUtils;
 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;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -51,19 +53,22 @@ public class RelationDefineController {
     }
 
     @PostMapping("/create")
-    public CommonResult<RelationDefine> create(@RequestBody RelationDefine vo){
+    public CommonResult<RelationDefine> create(@Valid @RequestBody RelationDefine vo){
         vo = service.insert(vo);
         return ResultHelper.single(vo);
     }
 
     @PostMapping("/update")
-    public CommonResult<RelationDefine> update(@RequestBody RelationDefine vo){
+    public CommonResult<RelationDefine> update(@Valid @RequestBody RelationDefine vo){
         vo = service.update(vo);
         return ResultHelper.single(vo);
     }
 
     @PostMapping("/delete")
     public void delete(@RequestBody String id){
+        if(StringUtils.isEmpty(id)){
+            throw new BusinessException(ResponseCode.A0400.getCode(), "id不能为空");
+        }
         service.delete(id);
     }
 }

+ 86 - 6
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/controller/ObjectDigitalController.java

@@ -3,12 +3,14 @@ package com.persagy.dmp.rwd.digital.controller;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.basic.utils.JsonNodeUtils;
 import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.constant.ResponseCode;
+import com.persagy.dmp.common.context.AppContext;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ParamCheckUtil;
@@ -20,6 +22,7 @@ import com.persagy.dmp.rwd.basic.dto.RequestData;
 import com.persagy.dmp.rwd.digital.service.IObjectDigitalService;
 import com.persagy.dmp.rwd.digital.service.ProjectBusinessService;
 import com.persagy.dmp.rwd.digital.utils.ObjectDigitalCriteriaHelper;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -73,23 +76,30 @@ public class ObjectDigitalController{
 
     @PostMapping("/createOne")
     @Deprecated
-    public CommonResult<ObjectDigital> create(@Valid @RequestBody ObjectNode node){
+    public CommonResult<ObjectDigital> create(@RequestBody ObjectNode node){
         //基础参数校验
         ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE,CommonConstant.QUERY_PROJECTID);
-
         ObjectDigital vo = JsonNodeUtils.toEntity(node, ObjectDigital.class, ObjectDigital.EXTRA_COLUMN);
         List<ObjectDigital> voList = CollUtil.newArrayList(vo);
+        //创建默认条件
+        createDefaultValue(voList);
+        //新增对象信息
         service.insert(voList);
         return ResultHelper.single(vo);
     }
 
     @PostMapping("/create")
     @Deprecated
-    public CommonResult<List<ObjectDigital>> createBatch(@Valid @RequestBody ArrayNode array){
+    public CommonResult<List<ObjectDigital>> createBatch(@RequestBody ArrayNode array){
         //基础参数校验
         ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE,CommonConstant.QUERY_PROJECTID);
+        //创建对象入参校验
+        createInstanceParamVerify(array);
 
         List<ObjectDigital> voList = JsonNodeUtils.toEntity(array, ObjectDigital.class, ObjectDigital.EXTRA_COLUMN);
+        //创建默认条件
+        createDefaultValue(voList);
+        //批量新增对象信息
         voList = service.insert(voList);
         return ResultHelper.multi(voList);
     }
@@ -99,9 +109,11 @@ public class ObjectDigitalController{
     public CommonResult<ObjectDigital> update(@Valid @RequestBody ObjectNode node){
         //基础参数校验
         ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE,CommonConstant.QUERY_PROJECTID);
-
         ObjectDigital vo = JsonNodeUtils.toEntity(node, ObjectDigital.class, ObjectDigital.EXTRA_COLUMN);
         List<ObjectDigital> voList = CollUtil.newArrayList(vo);
+        //创建默认条件
+        createDefaultValue(voList);
+        //修改对象信息
         service.update(voList);
         return ResultHelper.single(vo);
     }
@@ -111,8 +123,13 @@ public class ObjectDigitalController{
     public CommonResult<List<ObjectDigital>> updateBatch(@Valid @RequestBody ArrayNode array){
         //基础参数校验
         ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE,CommonConstant.QUERY_PROJECTID);
+        //修改对象入参校验
+        updateInstanceParamVerify(array);
 
         List<ObjectDigital> voList = JsonNodeUtils.toEntity(array, ObjectDigital.class, ObjectDigital.EXTRA_COLUMN);
+        //创建默认条件
+        createDefaultValue(voList);
+        //批量修改对象信息
         voList = service.update(voList);
         return ResultHelper.multi(voList);
     }
@@ -120,14 +137,20 @@ public class ObjectDigitalController{
     @PostMapping("/deleteOne")
     @Deprecated
     public CommonResult delete(@RequestBody String id){
+        if(StringUtils.isEmpty(id)){
+            throw new BusinessException(ResponseCode.A0400.getCode(), "id不能为空");
+        }
         service.delete(CollUtil.newArrayList(id));
         return ResultHelper.success();
     }
 
     @PostMapping("/delete")
     @Deprecated
-    public CommonResult deleteBatch(@RequestBody List<String> id){
-        service.delete(id);
+    public CommonResult deleteBatch(@RequestBody List<String> ids){
+        if(ids == null || ids.size()<=0){
+            throw new BusinessException(ResponseCode.A0400.getCode(), "id不能为空");
+        }
+        service.delete(ids);
         return ResultHelper.success();
     }
     /***
@@ -159,4 +182,61 @@ public class ObjectDigitalController{
         return projectBusinessService.batchQueryProjectByGroupManageZoneIds(requestData.getGroupManageZoneIds());
     }
 
+
+    /**
+     * 创建默认条件
+     * @param voList
+     */
+    private void createDefaultValue(List<ObjectDigital> voList){
+        String groupCode = AppContext.getContext().getGroupCode();
+        if(StringUtils.isEmpty(groupCode)){
+            //默认集团
+            groupCode = CommonConstant.DEFAULT_ID;
+        }
+        String projectId = AppContext.getContext().getProjectId();
+        if(StringUtils.isEmpty(projectId)){
+            //默认项目
+            projectId = CommonConstant.DEFAULT_ID;
+        }
+        for (ObjectDigital vo : voList) {
+            vo.setGroupCode(groupCode);
+            vo.setProjectId(projectId);
+        }
+    }
+
+    /**
+     * 创建实例入参校验
+     * @param array
+     */
+    private void createInstanceParamVerify(ArrayNode array){
+        if(array == null || array.size()<=0){
+            throw new BusinessException(ResponseCode.A0400.getCode(),ResponseCode.A0400.getCode());
+        }
+        for (JsonNode jsonNode : array) {
+            JsonNode name = jsonNode.get("name");
+            if(name == null){
+                throw new BusinessException(ResponseCode.A0400.getCode(),"对象名称不能为空");
+            }
+            JsonNode classCode = jsonNode.get("classCode");
+            if(classCode == null){
+                throw new BusinessException(ResponseCode.A0400.getCode(),"类型编码不能为空");
+            }
+        }
+    }
+
+    /**
+     * 修改实例入参校验
+     * @param array
+     */
+    private void updateInstanceParamVerify(ArrayNode array){
+        if(array == null || array.size()<=0){
+            throw new BusinessException(ResponseCode.A0400.getCode(),ResponseCode.A0400.getCode());
+        }
+        for (JsonNode jsonNode : array) {
+            JsonNode id = jsonNode.get("id");
+            if(id == null){
+                throw new BusinessException(ResponseCode.A0400.getCode(),"id不能为空");
+            }
+        }
+    }
 }

+ 35 - 4
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/controller/ObjectRelationController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.constant.ResponseCode;
+import com.persagy.dmp.common.context.AppContext;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ParamCheckUtil;
@@ -14,6 +15,7 @@ import com.persagy.dmp.digital.entity.ObjectRelation;
 import com.persagy.dmp.mybatis.utils.ConditionUtil;
 import com.persagy.dmp.basic.utils.QueryCriteriaHelper;
 import com.persagy.dmp.rwd.digital.service.IObjectRelationService;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -62,8 +64,10 @@ public class ObjectRelationController {
     public CommonResult<ObjectRelation> create(@Valid @RequestBody ObjectRelation vo){
         //基础参数校验
         ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE,CommonConstant.QUERY_PROJECTID);
-
         List<ObjectRelation> voList = CollUtil.newArrayList(vo);
+        //创建默认条件
+        createDefaultValue(voList);
+        //新增对象关系
         service.insert(voList);
         return ResultHelper.single(vo);
     }
@@ -72,8 +76,10 @@ public class ObjectRelationController {
     public CommonResult<List<ObjectRelation>> createBatch(@Valid @RequestBody List<ObjectRelation> voList){
         //基础参数校验
         ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE,CommonConstant.QUERY_PROJECTID);
-
         voList = service.insert(voList);
+        //创建默认条件
+        createDefaultValue(voList);
+        //批量新增对象关系
         return ResultHelper.multi(voList);
     }
 
@@ -81,8 +87,10 @@ public class ObjectRelationController {
     public CommonResult<ObjectRelation> update(@Valid @RequestBody ObjectRelation vo){
         //基础参数校验
         ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE,CommonConstant.QUERY_PROJECTID);
-
         List<ObjectRelation> voList = CollUtil.newArrayList(vo);
+        //修改默认条件
+        createDefaultValue(voList);
+        //修改对象关系
         service.update(voList);
         return ResultHelper.single(vo);
     }
@@ -91,7 +99,9 @@ public class ObjectRelationController {
     public CommonResult<List<ObjectRelation>> updateBatch(@Valid @RequestBody List<ObjectRelation> voList){
         //基础参数校验
         ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE,CommonConstant.QUERY_PROJECTID);
-
+        //修改默认条件
+        createDefaultValue(voList);
+        //批量修改对象关系
         voList = service.update(voList);
         return ResultHelper.multi(voList);
     }
@@ -120,4 +130,25 @@ public class ObjectRelationController {
         List<ObjectRelation> delList = service.delete(wrapper);
         return ResultHelper.multi(delList,delList.size());
     }
+
+    /**
+     * 创建默认条件
+     * @param voList
+     */
+    private void createDefaultValue(List<ObjectRelation> voList){
+        String groupCode = AppContext.getContext().getGroupCode();
+        if(StringUtils.isEmpty(groupCode)){
+            //默认集团
+            groupCode = CommonConstant.DEFAULT_ID;
+        }
+        String projectId = AppContext.getContext().getProjectId();
+        if(StringUtils.isEmpty(projectId)){
+            //默认项目
+            projectId = CommonConstant.DEFAULT_ID;
+        }
+        for (ObjectRelation vo : voList) {
+            vo.setGroupCode(groupCode);
+            vo.setProjectId(projectId);
+        }
+    }
 }

+ 0 - 13
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/iservice/ObjectRelationIService.java

@@ -1,13 +0,0 @@
-package com.persagy.dmp.rwd.digital.iservice;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.persagy.dmp.digital.entity.ObjectRelation;
-
-/**
- * 对象关系-IService
- * @author linhuili
- * @date 2021-08-17
- */
-public interface ObjectRelationIService extends IService<ObjectRelation> {
-
-}

+ 0 - 16
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/iservice/impl/ObjectRelationIServiceImpl.java

@@ -1,16 +0,0 @@
-package com.persagy.dmp.rwd.digital.iservice.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.persagy.dmp.digital.entity.ObjectRelation;
-import com.persagy.dmp.rwd.digital.dao.ObjectRelationMapper;
-import com.persagy.dmp.rwd.digital.iservice.ObjectRelationIService;
-import org.springframework.stereotype.Service;
-
-/**
- * 对象关系-IService
- * @author linhuili
- * @date 2021-08-17
- */
-@Service
-public class ObjectRelationIServiceImpl extends ServiceImpl<ObjectRelationMapper, ObjectRelation> implements ObjectRelationIService {
-}

+ 1 - 1
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/IObjectRelationService.java

@@ -11,7 +11,7 @@ import java.util.List;
  * @author Charlie Yu
  * @date 2021-07-08
  */
-public interface IObjectRelationService {
+public interface IObjectRelationService extends IService<ObjectRelation> {
 
     /**
      * 按条件查询

+ 0 - 4
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ObjectDigitalServiceImpl.java

@@ -81,10 +81,6 @@ public class ObjectDigitalServiceImpl implements IObjectDigitalService {
         voList.forEach(vo -> {
             // 生成ID
             vo.setId(DigitalCommonUtils.fetchObjectId(vo.getProjectId(), vo.getObjType()));
-            //设置项目id
-            vo.setProjectId(AppContext.getContext().getProjectId());
-            //设置集团编码
-            vo.setGroupCode(AppContext.getContext().getGroupCode());
             //设置对象类型-objType
             vo.setObjType(typeMap.get(vo.getClassCode()));
             vo.setValid(ValidEnum.TRUE.getType());

+ 5 - 2
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ObjectRelationServiceImpl.java

@@ -3,6 +3,7 @@ package com.persagy.dmp.rwd.digital.service.impl;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.persagy.dmp.common.constant.ValidEnum;
 import com.persagy.dmp.digital.entity.ObjectRelation;
 import com.persagy.dmp.rwd.basic.utils.DigitalMessageHelper;
@@ -24,14 +25,16 @@ import java.util.List;
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
-public class ObjectRelationServiceImpl implements IObjectRelationService {
+public class ObjectRelationServiceImpl extends ServiceImpl<ObjectRelationMapper, ObjectRelation> implements IObjectRelationService  {
 
     @Resource
     private ObjectRelationMapper dao;
+
     @Autowired
     private DigitalMessageHelper messageSender;
+
     @Autowired
-    private ObjectRelationIService iService;
+    private IObjectRelationService iService;
 
     /**
      * 查询对象关系数据

+ 55 - 14
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/utils/ObjectDigitalCriteriaHelper.java

@@ -1,19 +1,18 @@
 package com.persagy.dmp.rwd.digital.utils;
 
 import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ReflectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryOperator;
 import com.persagy.dmp.basic.utils.JsonNodeUtils;
 import com.persagy.dmp.common.model.entity.BaseEntity;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 /**
  * 对象 查询条件 助手
@@ -62,7 +61,7 @@ public class ObjectDigitalCriteriaHelper {
                 processOrCond(value);
                 continue;
             }
-            // 如果值是对象
+            // 如果值是对象 先处理contains并移除
             if(value.isObject()) {
                 // 包含
                 if (value.has(QueryOperator.CONTAINS.getIndex())) {
@@ -70,23 +69,19 @@ public class ObjectDigitalCriteriaHelper {
                     String valueStr = valueNode.isTextual() ? value.asText():value.toString();
                     String key = StrUtil.format("#JSON#json_contains({}, {}, '$.{}')", ObjectDigital.EXTRA_COLUMN, valueStr, infoCode);
                     valueMap.put(key, criteria.numberNode(1));
+                    ((ObjectNode) value).remove(QueryOperator.CONTAINS.getIndex());
                 } else if (value.has(QueryOperator.NOT_CONTAINS.getIndex())) {
                     // 不包含
                     JsonNode valueNode = value.get(QueryOperator.NOT_CONTAINS.getIndex());
                     String valueStr = valueNode.isTextual() ? value.asText():value.toString();
                     String key = StrUtil.format("#JSON#json_contains({}, {}, '$.{}')", ObjectDigital.EXTRA_COLUMN, valueStr, infoCode);
                     valueMap.put(key, criteria.numberNode(0));
+                    ((ObjectNode) value).remove(QueryOperator.NOT_CONTAINS.getIndex());
                 }
-            } else if(value.isTextual()) {
-                String key = StrUtil.format("#JSON#json_unquote(json_extract({}, '$.{}'))", ObjectDigital.EXTRA_COLUMN, infoCode);
-                valueMap.put(key, value);
-            } else if(value.isInt()) {
-                String key = StrUtil.format("#JSON#ifnull(json_extract({}, '$.{}'), -9999)", ObjectDigital.EXTRA_COLUMN, infoCode);
-                valueMap.put(key, value);
-            } else if(value.isDouble()) {
-                String key = StrUtil.format("#JSON#ifnull(json_extract({}, '$.{}'), -9999.99)", ObjectDigital.EXTRA_COLUMN, infoCode);
-                valueMap.put(key, value);
             }
+            // 获取格式化的Key
+            String key = ensureFormatKey(infoCode, value);
+            valueMap.put(key, value);
             // 处理完成后删除
             fieldNames.remove();
         }
@@ -100,6 +95,52 @@ public class ObjectDigitalCriteriaHelper {
     }
 
     /**
+     * 格式化Key
+     * @param infoCode
+     * @param value
+     */
+    private static String ensureFormatKey(String infoCode, JsonNode value) {
+        if(StrUtil.isBlank(infoCode) || value == null) {
+            return null;
+        }
+        String format = null;
+        // 如果值是对象
+        if(value.isObject()) {
+            ObjectNode obj = (ObjectNode) value;
+            if (obj.has("$like")) {
+                format = "#JSON#json_unquote(json_extract({}, '$.{}'))";
+            } else {
+                for (String key : Arrays.asList("$gt", "$lt", "$gte", "$lte", "$ne")) {
+                    if (obj.has(key)) {
+                        // 递归处理
+                        return ensureFormatKey(infoCode, obj.get(key));
+                    }
+                }
+            }
+        } else if (value.isArray()) {
+            ArrayNode array = (ArrayNode) value;
+            if (ArrayUtil.isEmpty(array)) {
+                return null;
+            }
+            // 递归处理
+            return ensureFormatKey(infoCode, array.get(0));
+        } else if (value.isNull()) {
+            return null;
+        } else if (value.isTextual()) {
+            format = "#JSON#json_unquote(json_extract({}, '$.{}'))";
+        } else if (value.isDouble() || value.isFloat() || value.isBigDecimal()) {
+            format = "#JSON#ifnull(json_extract({}, '$.{}'), -9999.99)";
+        } else if (value.isInt() || value.isLong() || value.isShort() || value.isBigInteger()) {
+            format = "#JSON#ifnull(json_extract({}, '$.{}'), -9999)";
+        } else if (value.isBoolean()) {
+            format = "#JSON#ifnull(json_extract({}, '$.{}'), 0)";
+        } else if (value.isPojo()) {
+            format = "#JSON#json_unquote(json_extract({}, '$.{}'))";
+        }
+        return StrUtil.format(format, ObjectDigital.EXTRA_COLUMN, infoCode);
+    }
+
+    /**
      * 处理or条件
      * @param node
      */

+ 3 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/controller/IotController.java

@@ -65,6 +65,7 @@ public class IotController {
 	 * @return
 	 */
 	@PostMapping("/data/history")
+	@Deprecated
 	public CommonResult<List<InfoCodeModel>> history(@RequestBody RequestModel request) throws Exception{
 		//基础参数校验
 		ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE,CommonConstant.QUERY_PROJECTID);
@@ -84,6 +85,7 @@ public class IotController {
 	 * @return
 	 */
 	@PostMapping("/funcid/setting")
+	@Deprecated
 	public CommonResult<List<SettingDataModel>> setting(@RequestBody List<SettingDataModel> param) {
 		//基础参数校验
 		ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE,CommonConstant.QUERY_PROJECTID);
@@ -103,6 +105,7 @@ public class IotController {
 	 * @return
 	 */
 	@PostMapping("/funcid/settingQuery")
+	@Deprecated
 	public CommonResult<List<SettingDataModel>> settingQuery(@RequestBody List<String> param) {
 		//基础参数校验
 		ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE,CommonConstant.QUERY_PROJECTID);

+ 9 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/CurrentDataModel.java

@@ -4,15 +4,24 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Getter;
 import lombok.Setter;
 
+/**
+ * 查询实时数据Model类
+ */
 @Getter
 @Setter
 public class CurrentDataModel {
 
+	/** 对象ID */
 	private String objectId;
+	/** 信息点 */
 	private String infoCode;
+	/** 信息点值 */
 	private String infoValue;
+	/** 分精度数据时间点 */
 	private String time;
+	/** iot数据 */
 	private Object data;
+	/** 错误信息 */
 	private String error;
 
 	@JsonIgnore

+ 7 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/DataInfo.java

@@ -3,13 +3,20 @@ package com.persagy.dmp.rwd.iot.model;
 import lombok.Getter;
 import lombok.Setter;
 
+/**
+ * 对象数据
+ */
 @Getter
 @Setter
 public class DataInfo {
 
+	/** 对象ID */
 	private String objectId;
+	/** 对象编码 */
 	private String classCode;
+	/** 信息点 */
 	private String infoCode;
+	/** 信息点值 */
 	private String infoCodeValue;
 
 }

+ 13 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/SettingDataModel.java

@@ -3,18 +3,31 @@ package com.persagy.dmp.rwd.iot.model;
 import lombok.Getter;
 import lombok.Setter;
 
+/**
+ * 发送控制指令/设定动态参数Model类
+ */
 @Getter
 @Setter
 public class SettingDataModel {
 
+	/** 对象ID */
 	private String objectId;
+	/** 信息点编码 */
 	private String infoCode;
+	/** 信息点值 */
 	private Double value;
+	/** 返回状态 */
 	private String status;
+	/** 返回错误信息 */
 	private String error;
+	/** 表号 */
 	private String meter;
+	/** 功能号 */
 	private String function;
+	/** 指令编码 */
 	private String exeCode;
+	/** 执行指令结果 */
 	private String exeResult;
+	/** 指令接收时间 */
 	private String receivetime;
 }

+ 5 - 1
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/history/DataModel.java

@@ -2,12 +2,16 @@ package com.persagy.dmp.rwd.iot.model.history;
 
 import lombok.Getter;
 import lombok.Setter;
-
+/**
+ * 分精度数据Model类
+ */
 @Getter
 @Setter
 public class DataModel {
 
+	/** 时间点 */
 	private String time;
+	/** 数据 */
 	private Object data;
 
 	public DataModel() {

+ 10 - 2
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/history/InfoCodeModel.java

@@ -5,18 +5,26 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
 import lombok.Getter;
 import lombok.Setter;
 
+/**
+ * 信息点编码Model类
+ */
 @Getter
 @Setter
 public class InfoCodeModel {
 
+	/** 对象id */
 	private String objectId;
+	/** 信息点编码 */
 	private String infoCode;
+	/** 表号 */
 	private String meter;
+	/** 功能号 */
 	private String function;
+	/** 返回状态 */
 	private String status;
+	/** 错误信息 */
 	private String error;
-
+	/** 返回数据 */
 	private JSONArray data;
 
-
 }

+ 7 - 1
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/iot/model/history/RequestModel.java

@@ -5,14 +5,20 @@ import lombok.Setter;
 
 import java.util.List;
 
+/**
+ * 请求Model类型
+ */
 @Getter
 @Setter
 public class RequestModel {
 
+	/** 开始时间 */
 	private String startTime;
+	/** 结束时间 */
 	private String endTime;
+	/** 分精度类型,支持 1min、5min、15min、1h、1d */
 	private String period;
-
+	/** 查询的对象类型和信息点编码 */
 	private List<InfoCodeModel> params;
 
 }

+ 21 - 0
dmp-comp/dmp-amqp-starter/README.md

@@ -0,0 +1,21 @@
+消息队列客户端
+============ 
+集成了RabbitMQ消息队列
+
+说明
+---------------
+监听器实现参考示例:
+```
+@Component
+@RabbitListener(queues = DigitalRabbitConfig.PROJECT_QUEUE)
+public class ProjectMessageHandler extends AbstractRabbitHandlerTemplate {
+    @Override
+    protected void handler(String message, Channel channel, Message vo) {
+        // 模板类中已实现消息补偿,在此实现业务逻辑处理即可
+    }
+}
+```
+
+最新变化
+---------------
+

+ 4 - 4
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/basic/model/DigitalManageMessage.java

@@ -1,6 +1,6 @@
 package com.persagy.dmp.basic.model;
 
-import com.persagy.dmp.common.model.entity.BaseEntity;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import lombok.Data;
 
 /**
@@ -16,15 +16,15 @@ public class DigitalManageMessage {
     /** 操作实体 */
     private String operatorObj;
     /** 原数据 */
-    private BaseEntity oldObj;
+    private ObjectNode oldObj;
     /** 现数据 */
-    private BaseEntity newObj;
+    private ObjectNode newObj;
 
     public DigitalManageMessage(){
         super();
     }
 
-    public DigitalManageMessage(String operatorType, String operatorObj, BaseEntity oldObj, BaseEntity newObj) {
+    public DigitalManageMessage(String operatorType, String operatorObj, ObjectNode oldObj, ObjectNode newObj) {
         this.operatorType = operatorType;
         this.operatorObj = operatorObj;
         this.oldObj = oldObj;

+ 12 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/define/entity/ObjectInfoDefine.java

@@ -7,6 +7,9 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * 信息点定义
@@ -20,14 +23,23 @@ public class ObjectInfoDefine extends AuditableEntity {
     /** 项目ID */
     private String projectId;
     /** 信息点编码 */
+    @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;
     /** 类型编码 */
+    @NotNull(message = "类型编码不允许为空")
     private String classCode;
     /** 集团编码 */
     private String groupCode;

+ 9 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/define/entity/RelationDefine.java

@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * 关系定义
@@ -15,10 +18,16 @@ import lombok.EqualsAndHashCode;
 @TableName(value = "dt_define_rel", autoResultMap = true)
 public class RelationDefine 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 graphCode;
     /** 边方向性 */
     private Integer directional;

+ 6 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ObjectDigital.java

@@ -7,7 +7,9 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
 
 /**
@@ -28,6 +30,8 @@ public class ObjectDigital extends AuditableEntity {
     /** 项目ID */
     private String projectId;
     /** 名称 */
+    @NotNull(message = "名称不允许为空")
+    @Length(max = 200)
     private String name;
     /** 本地编码 */
     private String localId;
@@ -36,6 +40,8 @@ public class ObjectDigital extends AuditableEntity {
     /** 对象分类 */
     private String objType;
     /** 类型编码 */
+    @NotNull(message = "类型编码不允许为空")
+    @Length(max = 40)
     private String classCode;
     /** 集团编码 */
     private String groupCode;

+ 10 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ObjectRelation.java

@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.persagy.dmp.common.model.entity.AuditableEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * 对象数据
@@ -16,11 +19,18 @@ import lombok.EqualsAndHashCode;
 public class ObjectRelation extends AuditableEntity {
     /** 项目ID */
     private String projectId;
+    /** 集团编码 */
+    private String groupCode;
     /** 图例ID */
+    @Length(max = 40)
     private String graphId;
     /** 图例编码 */
+    @NotNull(message = "图例编码不允许为空")
+    @Length(max = 40)
     private String graphCode;
     /** 关系编码 */
+    @NotNull(message = "关系编码不允许为空")
+    @Length(max = 40)
     private String relCode;
     /** 关系值 */
     private String relValue;