|
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.persagy.dmp.basic.dto.DefineRequestData;
|
|
|
import com.persagy.dmp.basic.dto.RequestData;
|
|
|
import com.persagy.dmp.basic.model.QueryCriteria;
|
|
|
import com.persagy.dmp.basic.utils.QueryCriteriaHelper;
|
|
@@ -72,10 +73,7 @@ implements DigitalEquipClassRelService {
|
|
|
Map<String, RelationDefine> relationDefineMap = new HashMap<>();
|
|
|
if (CollUtil.isNotEmpty(calcNames)){
|
|
|
// 根据名称查询图类型编码和关系类型编码
|
|
|
- LambdaQueryWrapper<RelationDefine> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.in(RelationDefine::getName,calcNames);
|
|
|
- queryWrapper.eq(RelationDefine::getValid,true);
|
|
|
- List<RelationDefine> defines = relationDefineService.queryByCondition(queryWrapper);
|
|
|
+ List<RelationDefine> defines = queryRelationDefinesByRelNames(calcNames);
|
|
|
if (CollUtil.isEmpty(defines)){
|
|
|
throw new BusinessException(ResponseCode.A0402.getCode(),"关系类型编码不存在");
|
|
|
}
|
|
@@ -100,6 +98,7 @@ implements DigitalEquipClassRelService {
|
|
|
vo.setRelCode(relationDefine.getCode());
|
|
|
}
|
|
|
vo.setProjectId(AppContext.getContext().getProjectId());
|
|
|
+ vo.setGroupCode(AppContext.getContext().getGroupCode());
|
|
|
vo.setCreator(AppContext.getContext().getAccountId());
|
|
|
updateWrapper.or(wrapper->{
|
|
|
wrapper.eq(DigitalEquipClassRel::getGraphCode,vo.getGraphCode());
|
|
@@ -116,6 +115,23 @@ implements DigitalEquipClassRelService {
|
|
|
this.saveBatch(voList);
|
|
|
return voList;
|
|
|
}
|
|
|
+ /***
|
|
|
+ * Description: 根据边名称查询边定义数据
|
|
|
+ * @param calcNames :边名称列表
|
|
|
+ * @return : java.util.List<com.persagy.dmp.define.entity.RelationDefine>
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/15 11:41
|
|
|
+ * Update By lijie 2021/9/15 11:41
|
|
|
+ */
|
|
|
+ private List<RelationDefine> queryRelationDefinesByRelNames(Set<String> calcNames) {
|
|
|
+ if (CollUtil.isEmpty(calcNames)){
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<RelationDefine> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(RelationDefine::getName,calcNames);
|
|
|
+ queryWrapper.eq(RelationDefine::getValid,true);
|
|
|
+ return relationDefineService.queryByCondition(queryWrapper);
|
|
|
+ }
|
|
|
|
|
|
/***
|
|
|
* Description: 根据条件查询设备类关系对象列表
|
|
@@ -160,8 +176,72 @@ implements DigitalEquipClassRelService {
|
|
|
});
|
|
|
return ResultHelper.multi(page.getRecords(), page.getTotal());
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+ /***
|
|
|
+ * Description: 根据边关系名称查询项目对象类型关系列表
|
|
|
+ * @param defineRequestData : 请求参数
|
|
|
+ * @return : com.persagy.dmp.common.model.response.CommonResult<java.util.List<com.persagy.dmp.define.entity.DigitalEquipClassRel>>
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/15 11:38
|
|
|
+ * Update By lijie 2021/9/15 11:38
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public CommonResult<List<DigitalEquipClassRel>> queryListByRelNames(DefineRequestData defineRequestData) {
|
|
|
+ Map<String, RelationDefine> defineMap = queryRelationDefineMapByRelNames(defineRequestData.getRelNames());
|
|
|
+ LambdaQueryWrapper<DigitalEquipClassRel> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(DigitalEquipClassRel::getValid,true);
|
|
|
+ queryWrapper.eq(DigitalEquipClassRel::getGroupCode,AppContext.getContext().getGroupCode());
|
|
|
+ if (StrUtil.isNotBlank(AppContext.getContext().getProjectId())){
|
|
|
+ queryWrapper.eq(DigitalEquipClassRel::getProjectId,AppContext.getContext().getProjectId());
|
|
|
+ }
|
|
|
+ Map<String, String> relNameMap = new HashMap<>();
|
|
|
+ if (CollUtil.isNotEmpty(defineRequestData.getRelNames())){
|
|
|
+ queryWrapper.and(wrapper->{
|
|
|
+ Set<String> relNames = defineRequestData.getRelNames();
|
|
|
+ for (String relName : relNames) {
|
|
|
+ if (!defineMap.containsKey(relName)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ RelationDefine relationDefine = defineMap.get(relName);
|
|
|
+ relNameMap.put(relationDefine.getGraphCode()+StrUtil.UNDERLINE+relationDefine.getCode(),relationDefine.getName());
|
|
|
+ wrapper.or(subWrapper->{
|
|
|
+ subWrapper.eq(DigitalEquipClassRel::getGraphCode,relationDefine.getGraphCode());
|
|
|
+ subWrapper.eq(DigitalEquipClassRel::getRelCode,relationDefine.getCode());
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ List<DigitalEquipClassRel> digitalEquipClassRels = this.list(queryWrapper);
|
|
|
+ if (CollUtil.isEmpty(digitalEquipClassRels)){
|
|
|
+ return ResultHelper.multi(new ArrayList<>(),0L);
|
|
|
+ }
|
|
|
+ // 填充名称
|
|
|
+ digitalEquipClassRels.forEach(digitalEquipClassRel ->
|
|
|
+ digitalEquipClassRel.setCalcName(relNameMap
|
|
|
+ .getOrDefault(digitalEquipClassRel.getGraphCode()+StrUtil.UNDERLINE+digitalEquipClassRel.getRelCode(),"")));
|
|
|
+ return ResultHelper.multi(digitalEquipClassRels,digitalEquipClassRels.size());
|
|
|
+ }
|
|
|
+ /***
|
|
|
+ * Description: 根据边类型名称
|
|
|
+ * @param relNames :
|
|
|
+ * @return : java.util.Map<java.lang.String,com.persagy.dmp.define.entity.RelationDefine>
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/9/15 12:01
|
|
|
+ * Update By lijie 2021/9/15 12:01
|
|
|
+ */
|
|
|
+ private Map<String, RelationDefine> queryRelationDefineMapByRelNames(Set<String> relNames) {
|
|
|
+ if (CollUtil.isEmpty(relNames)){
|
|
|
+ return new HashMap<>();
|
|
|
+ }
|
|
|
+ // 1.根据边类型名称查询边类型定义
|
|
|
+ List<RelationDefine> defines = queryRelationDefinesByRelNames(relNames);
|
|
|
+ if (CollUtil.isEmpty(defines)){
|
|
|
+ return new HashMap<>();
|
|
|
+ }
|
|
|
+ // 获得名称与边类型的映射
|
|
|
+ return defines.stream()
|
|
|
+ .collect(Collectors
|
|
|
+ .toMap(RelationDefine::getName,define->define,(k1,k2)->k1));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|