Quellcode durchsuchen

对象处理中删除关系处理有误。改用调接口方式执行。

yucheng vor 3 Jahren
Ursprung
Commit
7d9fbba9aa

+ 1 - 13
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/dao/ObjectRelationMapper.java

@@ -8,7 +8,6 @@ import com.persagy.dmp.rwd.digital.domain.SpaceCalDTO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
-import java.util.Set;
 
 /**
  * 关系数据 DAO
@@ -23,17 +22,6 @@ public interface ObjectRelationMapper extends BaseMapper<ObjectRelation> {
      * @return
      */
     void save(@Param("vos") List<ObjectRelation> vos);
-
-    /***
-     * Description: 根据对象id查询关系
-     * @param objIds : 对象id
-     * @param relCode : 关系code
-     * @return : java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>
-     * @author : lijie
-     * @date :2021/8/26 12:07
-     * Update By lijie 2021/8/26 12:07
-     */
-    List<ObjectDigital> selectRelCodesByObjToIdsAndRelCode(@Param("objIds") Set<String> objIds,@Param("relCode") String relCode);
     /***
      * Description: 根据对象id查询关系
      * @param objIds : 对象id
@@ -43,7 +31,7 @@ public interface ObjectRelationMapper extends BaseMapper<ObjectRelation> {
      * @date :2021/8/26 12:07
      * Update By lijie 2021/8/26 12:07
      */
-    List<ObjectDigital> selectRelCodesByObjIdsAndRelCodes(@Param("objIds") Set<String> objIds,@Param("relCodes") Set<String> relCodes);
+    List<ObjectDigital> queryRelatedObjects(Iterable<String> objIds, Iterable<String> relCodes);
     /***
      * Description: 根据关系链新增对象关系
      * @param calculating : 请求参数

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

@@ -1,7 +1,8 @@
 package com.persagy.dmp.rwd.digital.service;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
 
 import java.util.List;
@@ -25,5 +26,13 @@ public interface IObjectRelationService extends IService<ObjectRelation> {
      * @param wrapper 删除条件
      * @return 已删除的数据
      */
-    List<ObjectRelation> delete(QueryWrapper wrapper);
+    List<ObjectRelation> delete(Wrapper<ObjectRelation> wrapper);
+
+    /**
+     * 查询关联的对象IDs - 只有relCode会查多吧?
+     * @param objIds 来源对象Ids
+     * @param relCodes 关系编码
+     * @return
+     */
+    List<ObjectDigital> queryRelatedObjects(Iterable<String> objIds, Iterable<String> relCodes);
 }

+ 0 - 6
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/calstrategy/SysBlockCalculateServiceImpl.java

@@ -5,7 +5,6 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.persagy.dmp.basic.dto.RelationCalRuleDTO;
-import com.persagy.dmp.basic.dto.RequestData;
 import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.define.entity.DigitalEquipClassRel;
 import com.persagy.dmp.define.entity.RelationDefine;
@@ -14,19 +13,16 @@ import com.persagy.dmp.rwd.basic.constant.EquipmentTypeEnum;
 import com.persagy.dmp.rwd.define.service.DigitalEquipClassRelService;
 import com.persagy.dmp.rwd.define.service.IRelationDefineService;
 import com.persagy.dmp.rwd.digital.dao.ObjectDigitalMapper;
-import com.persagy.dmp.rwd.digital.dao.ObjectRelationMapper;
 import com.persagy.dmp.rwd.digital.domain.CalculatingDTO;
 import com.persagy.dmp.rwd.digital.domain.FloorCalDTO;
 import com.persagy.dmp.rwd.digital.service.*;
 import com.persagy.dmp.rwd.digital.utils.ObjectDigitalCriteriaHelper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.locationtech.jts.math.Vector2D;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /***
  * Description: 管网系统设备分块关系计算
@@ -40,7 +36,6 @@ import java.util.stream.Stream;
 public class SysBlockCalculateServiceImpl implements CalculateService {
 
     private final IObjectRelationService objectRelationService;
-    private final ObjectRelationMapper objectRelationMapper;
     private final ObjectDigitalMapper objectDigitalMapper;
     private final RelationProjectCalService relationProjectCalService;
     private final IRelationDefineService relationDefineService;
@@ -48,7 +43,6 @@ public class SysBlockCalculateServiceImpl implements CalculateService {
     private final ConnectedBlockService connectedBlockService;
     private final DigitalEquipClassRelService digitalEquipClassRelService;
 
-
     /***
      * Description: 空间连通关系计算
      * @param calRule : 计算规则

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

@@ -35,11 +35,12 @@ import com.persagy.dmp.rwd.basic.utils.DigitalMessageHelper;
 import com.persagy.dmp.rwd.define.service.IObjectInfoService;
 import com.persagy.dmp.rwd.define.service.IObjectTypeService;
 import com.persagy.dmp.rwd.digital.dao.ObjectDigitalMapper;
-import com.persagy.dmp.rwd.digital.dao.ObjectRelationMapper;
 import com.persagy.dmp.rwd.digital.service.IObjectDigitalService;
+import com.persagy.dmp.rwd.digital.service.IObjectRelationService;
 import com.persagy.dmp.rwd.parser.service.InfoDataFactory;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -58,30 +59,35 @@ import java.util.stream.Collectors;
 @Slf4j
 public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, ObjectDigital> implements IObjectDigitalService {
 
-    private final ObjectDigitalMapper objectDigitalMapper;
-    private final DigitalMessageHelper messageSender;
-    private final IObjectInfoService infoService;
-    private final IObjectTypeService typeService;
-    private final ObjectRelationMapper objectRelationMapper;
+    @Autowired
+    private ObjectDigitalMapper dao;
+    @Autowired
+    private DigitalMessageHelper messageSender;
+    @Autowired
+    private IObjectInfoService infoService;
+    @Autowired
+    private IObjectTypeService typeService;
+    @Autowired
+    private IObjectRelationService relationService;
 
     @Override
     public ObjectDigital load(String id) {
-        return objectDigitalMapper.selectById(id);
+        return dao.selectById(id);
     }
 
     @Override
     public List<ObjectDigital> queryByCondition(Wrapper<ObjectDigital> queryWrapper) {
-        return objectDigitalMapper.selectList(queryWrapper);
+        return list(queryWrapper);
     }
 
     @Override
     public Integer queryCount(Wrapper<ObjectDigital> queryWrapper) {
-        return objectDigitalMapper.selectCount(queryWrapper);
+        return count(queryWrapper);
     }
 
     @Override
     public Page queryByCondition(Page page, Wrapper<ObjectDigital> queryWrapper) {
-        return objectDigitalMapper.selectPage(page, queryWrapper);
+        return page(page, queryWrapper);
     }
 
     @Override
@@ -105,7 +111,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
             vo.setObjType(typeMap.get(vo.getClassCode()));
             vo.setValid(ValidEnum.TRUE.getType());
             // 新增
-            objectDigitalMapper.insert(vo);
+            dao.insert(vo);
             // 新增后消息
             messageSender.sendMessage(DigitalMessageConstant.OPERATE_AFTER_INSERT, null, vo, false);
         });
@@ -121,7 +127,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         Map<String, Set<String>> removeMap = convertRemoveInfo(voList);
         //查询数据库中存在的数据
         List<String> idList = CollUtil.getFieldValues(voList, BaseEntity.PROP_ID, String.class);
-        List<ObjectDigital> dbList = objectDigitalMapper.selectBatchIds(idList);
+        List<ObjectDigital> dbList = listByIds(idList);
         Map<String, ObjectDigital> dbMap = CollectionUtil.fieldValueMap(dbList, BaseEntity.PROP_ID);
 
         //填充classCode
@@ -140,7 +146,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
             // 更新数据的属性合并和删除
             ensureUpdateInfos(vo, dbVO, removeMap.get(vo.getId()));
             // 修改
-            objectDigitalMapper.updateById(vo);
+            dao.updateById(vo);
             // 修改后消息
             messageSender.sendMessage(DigitalMessageConstant.OPERATE_AFTER_UPDATE, dbVO, vo, false);
         });
@@ -223,16 +229,16 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         vo.setValid(ValidEnum.FALSE.getType());
         LambdaQueryWrapper<ObjectDigital> objQueryWrapper = new LambdaQueryWrapper<>();
         objQueryWrapper.in(ObjectDigital::getId,idList);
-        this.update(vo,objQueryWrapper);
+        update(vo, objQueryWrapper);
         // 2.批量删除关系
-        LambdaQueryWrapper<ObjectRelation> relationQueryWrapper = new LambdaQueryWrapper<>();
-        relationQueryWrapper.in(ObjectRelation::getObjFrom,idList);
-        relationQueryWrapper.or(wrapper->wrapper.in(ObjectRelation::getObjTo,idList));
+        LambdaQueryWrapper<ObjectRelation> relWrapper = new LambdaQueryWrapper<>();
+        relWrapper.in(ObjectRelation::getObjFrom, idList);
+        relWrapper.or(wrapper->wrapper.in(ObjectRelation::getObjTo, idList));
         ObjectRelation objectRelation = new ObjectRelation();
         objectRelation.setValid(ValidEnum.FALSE.getType());
-        objectRelationMapper.update(objectRelation,relationQueryWrapper);
+        relationService.delete(relWrapper);
         // 3.发送删除消息
-        List<ObjectDigital> dbList = objectDigitalMapper.selectBatchIds(idList);
+        List<ObjectDigital> dbList = listByIds(idList);
         Map<String, ObjectDigital> dbMap = CollectionUtil.fieldValueMap(dbList, BaseEntity.PROP_ID);
         idList.forEach(id -> {
             ObjectDigital dbVO = MapUtil.get(dbMap, id, ObjectDigital.class);
@@ -266,7 +272,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         // 3.1 获取关系code列表
         fillSubordinateRelCode(requestData);
         // 3.2 调用查询语句查询相关内容
-        return analysisQueryResultList(objectDigitalMapper
+        return analysisQueryResultList(dao
                 .queryObjectListBySuperiorId(DigitalCommonUtils
                         .computePageObject(requestData),requestData),requestData,false,true);
     }
@@ -284,7 +290,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         requestData.setRelCode(DigitalRelCode.FL_2_SP.getIndex());
         requestData.setObjType(DigitalObjectType.SPACE.getIndex());
         requestData.setRelId(requestData.getFloorId());
-        Page<ObjectDigital> dataResult = objectDigitalMapper
+        Page<ObjectDigital> dataResult = dao
                 .queryObjectListByFloorIdAndRoomFuncType(DigitalCommonUtils.computePageObject(requestData),requestData);
         return commonAnalysisPageResult(dataResult);
     }
@@ -302,7 +308,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         requestData.setRelCode(DigitalRelCode.EQ_2_SP.getIndex());
         requestData.setObjType(DigitalObjectType.EQUIPMENT.getIndex());
         requestData.setRelId(requestData.getSpaceId());
-        Page<ObjectDigital> dataResult = objectDigitalMapper
+        Page<ObjectDigital> dataResult = dao
                 .queryObjectListByRelIdAndClassCode(DigitalCommonUtils.computePageObject(requestData),requestData);
         return ResultHelper.multi(dataResult.getRecords(),dataResult.getTotal());
     }
@@ -318,7 +324,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
     public CommonResult<List<ObjectDigital>> queryEquipListByClassCode(RequestData requestData) {
         // 2.使用Fl2Sp关系查询楼层下的空间
         requestData.setObjType(DigitalObjectType.EQUIPMENT.getIndex());
-        Page<ObjectDigital> dataResult = objectDigitalMapper
+        Page<ObjectDigital> dataResult = dao
                 .queryEquipListByClassCode(DigitalCommonUtils.computePageObject(requestData),requestData);
         return commonAnalysisPageResult(dataResult);
     }
@@ -336,7 +342,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         requestData.setRelId(requestData.getSystemId());
         requestData.setObjType(DigitalObjectType.EQUIPMENT.getIndex());
         requestData.setRelCode(DigitalRelCode.SY_2_EQ.getIndex());
-        Page<ObjectDigital> dataResult = objectDigitalMapper
+        Page<ObjectDigital> dataResult = dao
                 .queryObjectListByRelIdAndClassCode(DigitalCommonUtils.computePageObject(requestData),requestData);
         return ResultHelper.multi(dataResult.getRecords(),dataResult.getTotal());
     }
@@ -378,7 +384,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         }
         queryWrapper.in("JSON_UNQUOTE(JSON_EXTRACT(infos,'$.roomFuncType'))",codes);
         Page<ObjectDigital> page = new Page<>(requestData.getPage(), requestData.getSize(), true);
-        Page<ObjectDigital> digitalPage = objectDigitalMapper.selectPage(page, queryWrapper);
+        Page<ObjectDigital> digitalPage = dao.selectPage(page, queryWrapper);
         return ResultHelper.multi(digitalPage.getRecords(),digitalPage.getTotal());
     }
 
@@ -392,7 +398,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
      */
     @Override
     public CommonResult<List<ObjectDigital>> queryObjectListByGraphCodeAndRelCode(RequestData requestData) {
-        Page<ObjectDigital> objList = objectDigitalMapper
+        Page<ObjectDigital> objList = dao
                 .queryObjectListByGraphCodeAndRelCode(DigitalCommonUtils.computePageObject(requestData),requestData);
         return analysisQueryResultList(objList,requestData,false,false);
     }
@@ -417,22 +423,15 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         }
         // 2.校验对象是否都存在以及对象要更新的classCode是否符合
         // 2.1 获得对象id集合
-        Set<String> objIds = objectDigitals.stream()
-                .map(BaseEntity::getId)
-                .collect(Collectors.toSet());
-        Map<String, ObjectDigital> digitalMap = objectDigitals
-                .stream()
-                .collect(Collectors.toMap(ObjectDigital::getId, obj -> obj, (k1, k2) -> k1));
+        Set<String> objIds = objectDigitals.stream().map(BaseEntity::getId).collect(Collectors.toSet());
+        Map<String, ObjectDigital> digitalMap = objectDigitals.stream().collect(Collectors.toMap(ObjectDigital::getId, obj -> obj, (k1, k2) -> k1));
         // 2.2 根据对象id查询对象信息及对象的分类对应的classCode集合
-        List<ObjectDigital> queryObjs = objectDigitalMapper.queryObjectListByIds(objIds);
+        List<ObjectDigital> queryObjs = dao.queryObjectListByIds(objIds);
         if (CollUtil.isEmpty(queryObjs)){
-            throw new BusinessException(ResponseCode.A0400.getCode(),
-                    StrUtil.format("id不存在:{}",objIds));
+            throw new BusinessException(ResponseCode.A0400.getCode(), StrUtil.format("id不存在:{}",objIds));
         }
         // 2.3 校验对象是否都存在
-        Map<String, ObjectDigital> queryObjMap = queryObjs
-                .stream()
-                .collect(Collectors.toMap(BaseEntity::getId, obj -> obj, (k1, k2) -> k1));
+        Map<String, ObjectDigital> queryObjMap = queryObjs.stream().collect(Collectors.toMap(BaseEntity::getId, obj -> obj, (k1, k2) -> k1));
         List<ObjectDigital> updateObjs = new ArrayList<>();
         for (String objId : objIds) {
             if (!queryObjMap.containsKey(objId)){
@@ -465,7 +464,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
     @Override
     public List<String> queryObjectClassCode(QueryWrapper<ObjectDigital> queryWrapper) {
         queryWrapper.select("distinct class_code");
-        List<ObjectDigital> objectDigitals = objectDigitalMapper.selectList(queryWrapper);
+        List<ObjectDigital> objectDigitals = dao.selectList(queryWrapper);
         if(CollUtil.isEmpty(objectDigitals)){
             return new ArrayList<>();
         }
@@ -537,7 +536,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
     private CommonResult<List<ObjectDigital>> queryObjectListByProjectId(RequestData requestData) {
         // 1.查询结果集
         Page<ObjectDigital> resultList =
-                objectDigitalMapper.queryObjectDigitalsByProjectId(DigitalCommonUtils.computePageObject(requestData),requestData);
+                dao.queryObjectDigitalsByProjectId(DigitalCommonUtils.computePageObject(requestData),requestData);
         return analysisQueryResultList(resultList,requestData,true,true);
     }
     /***
@@ -571,15 +570,14 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
 
     /***
      * Description: 当只有项目时需要填充关系id
-     * @param pageResult : 查询的结果集
+     * @param vos : 查询的结果集
      * @param fillRelFlag : 0-不注入关系数据,1-注入关系数据
      * @return : void
      * @author : lijie
      * @date :2021/9/4 22:39
      * Update By lijie 2021/9/4 22:39
      */
-    private void fillRelIds(List<ObjectDigital> pageResult,
-                            Boolean fillRelFlag) {
+    private void fillRelIds(List<ObjectDigital> vos, Boolean fillRelFlag) {
         if (null==fillRelFlag || !fillRelFlag){
             return;
         }
@@ -589,30 +587,29 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         // 2.3 根据设备id查询建筑id
         // 2.4 根据系统id查询建筑id
         // 2.5 根据竖井id查询建筑id
-        Set<String> objIds = pageResult.stream()
+        Set<String> objIds = vos.stream()
                 .filter(object->!DigitalObjectType.BUILDING.getIndex().equals(object.getObjType()))
                 .map(ObjectDigital::getId)
                 .collect(Collectors.toSet());
         if (CollUtil.isEmpty(objIds)){
             return;
         }
-        List<ObjectDigital> objectDigitals = objectRelationMapper.selectRelCodesByObjIdsAndRelCodes(objIds, CollUtil
+        List<ObjectDigital> relVOs = relationService.queryRelatedObjects(objIds, CollUtil
                 .newHashSet(DigitalRelCode.EQ_2_EC.getIndex(), DigitalRelCode.BD_2_FL.getIndex(),
                         DigitalRelCode.BD_2_SP.getIndex(), DigitalRelCode.SY_2_BD.getIndex(),
                         DigitalRelCode.EQ_2_BD.getIndex(),DigitalRelCode.BD_2_SH.getIndex()));
-        if (CollUtil.isEmpty(objectDigitals)){
+        if (CollUtil.isEmpty(relVOs)){
             return;
         }
-        Map<String, ObjectDigital> digitalMap = objectDigitals.stream()
-                .collect(Collectors.toMap(ObjectDigital::getId, objectDigital -> objectDigital, (k1, k2) -> k1));
-        for (ObjectDigital objectDigital : pageResult) {
-            if (!digitalMap.containsKey(objectDigital.getId())){
+        Map<String, ObjectDigital> digitalMap = relVOs.stream()
+                .collect(Collectors.toMap(ObjectDigital::getId, relVO -> relVO, (k1, k2) -> k1));
+        for (ObjectDigital vo : vos) {
+            if (!digitalMap.containsKey(vo.getId())){
                 continue;
             }
-            objectDigital.setObjToIds(CollUtil
-                    .defaultIfEmpty(digitalMap.get(objectDigital.getId()).getObjToIds(),new HashSet<>()));
-            objectDigital.setObjFromIds(CollUtil
-                    .defaultIfEmpty(digitalMap.get(objectDigital.getId()).getObjFromIds(),new HashSet<>()));
+            ObjectDigital relVO = digitalMap.get(vo.getId());
+            vo.setObjToIds(CollUtil.defaultIfEmpty(relVO.getObjToIds(),new HashSet<>()));
+            vo.setObjFromIds(CollUtil.defaultIfEmpty(relVO.getObjFromIds(),new HashSet<>()));
         }
     }
 
@@ -636,7 +633,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         if (CollUtil.isEmpty(spaceIds)){
             return;
         }
-        List<ObjectDigital> relResult = objectRelationMapper.selectRelCodesByObjToIdsAndRelCode(spaceIds,DigitalRelCode.FL_2_SP.getIndex());
+        List<ObjectDigital> relResult = relationService.queryRelatedObjects(spaceIds, CollUtil.newHashSet(DigitalRelCode.FL_2_SP.getIndex()));
         if (CollUtil.isEmpty(relResult)){
             return;
         }

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

@@ -3,11 +3,12 @@ package com.persagy.dmp.rwd.digital.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.persagy.dmp.basic.constant.DigitalMessageConstant;
 import com.persagy.dmp.common.constant.ValidEnum;
 import com.persagy.dmp.common.context.AppContext;
+import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
 import com.persagy.dmp.rwd.basic.utils.DigitalCommonUtils;
 import com.persagy.dmp.rwd.basic.utils.DigitalMessageHelper;
@@ -36,11 +37,6 @@ public class ObjectRelationServiceImpl extends ServiceImpl<ObjectRelationMapper,
     @Autowired
     private DigitalMessageHelper messageSender;
 
-    /**
-     * 新增关系数据
-     * @param voList 待新增数据
-     * @return
-     */
     @Override
     public List<ObjectRelation> save(List<ObjectRelation> voList) {
         if(CollUtil.isEmpty(voList)) {
@@ -77,13 +73,8 @@ public class ObjectRelationServiceImpl extends ServiceImpl<ObjectRelationMapper,
         }
     }
 
-    /**
-     * 删除关系数据
-     * @param wrapper 删除条件
-     * @return
-     */
     @Override
-    public List<ObjectRelation> delete(QueryWrapper wrapper) {
+    public List<ObjectRelation> delete(Wrapper<ObjectRelation> wrapper) {
         List<ObjectRelation> list = dao.selectList(wrapper);
         if(CollUtil.isEmpty(list)){
             return new ArrayList<>();
@@ -97,4 +88,11 @@ public class ObjectRelationServiceImpl extends ServiceImpl<ObjectRelationMapper,
         return list;
     }
 
+    @Override
+    public List<ObjectDigital> queryRelatedObjects(Iterable<String> objIds, Iterable<String> relCodes) {
+        if(CollUtil.isEmpty(objIds) || CollUtil.isEmpty(relCodes)) {
+            return null;
+        }
+        return dao.queryRelatedObjects(objIds, relCodes);
+    }
 }

+ 45 - 68
dmp-business/dmp-rwd/src/main/resources/mapper/ObjectRelationMapper.xml

@@ -199,75 +199,52 @@
         </if>
         ) AS dtr
     </insert>
-    <select id="selectRelCodesByObjToIdsAndRelCode" resultMap="ObjectDigitalResultMap">
+    <select id="queryRelatedObjects" resultMap="ObjectDigitalResultMap">
         SELECT
-            dtr.obj_to AS id,IFNULL(JSON_ARRAYAGG(dtr.obj_from),JSON_ARRAY()) AS objFromIds
-        FROM
-            dt_relation dtr
-        WHERE 1=1
-        <if test="objIds!=null and objIds.size()>0">
-            <foreach collection="objIds" item="objId" open="AND dtr.obj_to IN (" close=")" separator=",">
-                #{objId}
-            </foreach>
-        </if>
-        <if test="relCode!=null and relCode.length>0">
-            AND dtr.rel_code = #{relCode}
-        </if>
-        AND dtr.valid=TRUE
-        GROUP BY dtr.obj_to;
-    </select>
-    <select id="selectRelCodesByObjIdsAndRelCodes" resultMap="ObjectDigitalResultMap">
-        SELECT
-        rdtr.*
-        FROM
-        (
-        (
-        SELECT
-        dtr.obj_to AS id,
-        IFNULL( JSON_ARRAYAGG( dtr.obj_to ), JSON_ARRAY( ) ) AS objToIds,
-        IFNULL( JSON_ARRAYAGG( dtr.obj_from ), JSON_ARRAY( ) ) AS objFromIds
-        FROM
-        dt_relation dtr
-        WHERE
-        1 = 1
-        <if test="objIds!=null and objIds.size()>0">
-            <foreach collection="objIds" item="objId" open="AND dtr.obj_to IN (" close=")" separator=",">
-                #{objId}
-            </foreach>
-        </if>
-        <if test="relCodes!=null and relCodes.size()>0">
-            <foreach collection="relCodes" item="relCode" open="AND dtr.rel_code IN (" close=")" separator=",">
-                #{relCode}
-            </foreach>
-        </if>
-        AND dtr.valid=TRUE
-        GROUP BY
-        dtr.obj_to
-        ) UNION
-        (
-        SELECT
-        dtr.obj_from AS id,
-        IFNULL( JSON_ARRAYAGG( dtr.obj_to ), JSON_ARRAY( ) ) AS objToIds,
-        IFNULL( JSON_ARRAYAGG( dtr.obj_from ), JSON_ARRAY( ) ) AS objFromIds
-        FROM
-        dt_relation dtr
-        WHERE
-        1 = 1
-        <if test="objIds!=null and objIds.size()>0">
-            <foreach collection="objIds" item="objId" open="AND dtr.obj_from IN (" close=")" separator=",">
-                #{objId}
-            </foreach>
-        </if>
-        <if test="relCodes!=null and relCodes.size()>0">
-            <foreach collection="relCodes" item="relCode" open="AND dtr.rel_code IN (" close=")" separator=",">
-                #{relCode}
-            </foreach>
-        </if>
-        AND dtr.valid=TRUE
-        GROUP BY
-        dtr.obj_from
-        )
-        ) AS rdtr;
+            rdtr.*
+        FROM (
+            (SELECT
+                dtr.obj_to AS id,
+                IFNULL( JSON_ARRAYAGG( dtr.obj_to ), JSON_ARRAY( ) ) AS objToIds,
+                IFNULL( JSON_ARRAYAGG( dtr.obj_from ), JSON_ARRAY( ) ) AS objFromIds
+            FROM
+                dt_relation dtr
+            WHERE
+                dtr.valid = TRUE
+                <if test="objIds!=null and objIds.size()>0">
+                    <foreach collection="objIds" item="objId" open="AND dtr.obj_to IN (" close=")" separator=",">
+                        #{objId}
+                    </foreach>
+                </if>
+                <if test="relCodes!=null and relCodes.size()>0">
+                    <foreach collection="relCodes" item="relCode" open="AND dtr.rel_code IN (" close=")" separator=",">
+                        #{relCode}
+                    </foreach>
+                </if>
+            GROUP BY
+                dtr.obj_to)
+            UNION
+            (SELECT
+                dtr.obj_from AS id,
+                IFNULL( JSON_ARRAYAGG( dtr.obj_to ), JSON_ARRAY( ) ) AS objToIds,
+                IFNULL( JSON_ARRAYAGG( dtr.obj_from ), JSON_ARRAY( ) ) AS objFromIds
+            FROM
+                dt_relation dtr
+            WHERE
+                dtr.valid = TRUE
+                <if test="objIds!=null and objIds.size()>0">
+                    <foreach collection="objIds" item="objId" open="AND dtr.obj_from IN (" close=")" separator=",">
+                        #{objId}
+                    </foreach>
+                </if>
+                <if test="relCodes!=null and relCodes.size()>0">
+                    <foreach collection="relCodes" item="relCode" open="AND dtr.rel_code IN (" close=")" separator=",">
+                        #{relCode}
+                    </foreach>
+                </if>
+            GROUP BY
+                dtr.obj_from)
+        ) AS rdtr
     </select>
     <insert id="insertObjectRelationForFlThroughFl">
         INSERT INTO dt_relation (