|
@@ -3,12 +3,10 @@ package com.persagy.dmp.rwd.digital.service.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
-import cn.hutool.core.util.BooleanUtil;
|
|
|
|
import cn.hutool.core.util.NumberUtil;
|
|
import cn.hutool.core.util.NumberUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
|
import com.persagy.dmp.basic.dto.RelationCalDTO;
|
|
import com.persagy.dmp.basic.dto.RelationCalDTO;
|
|
import com.persagy.dmp.basic.dto.RelationCalRuleDTO;
|
|
import com.persagy.dmp.basic.dto.RelationCalRuleDTO;
|
|
import com.persagy.dmp.basic.dto.RequestData;
|
|
import com.persagy.dmp.basic.dto.RequestData;
|
|
@@ -26,11 +24,13 @@ import com.persagy.dmp.digital.entity.ObjectRelationProjectCal;
|
|
import com.persagy.dmp.rwd.basic.constant.BusinessErrorRwdCode;
|
|
import com.persagy.dmp.rwd.basic.constant.BusinessErrorRwdCode;
|
|
import com.persagy.dmp.rwd.basic.constant.CalRuleTypeEnum;
|
|
import com.persagy.dmp.rwd.basic.constant.CalRuleTypeEnum;
|
|
import com.persagy.dmp.rwd.basic.constant.ComputationalStateEnum;
|
|
import com.persagy.dmp.rwd.basic.constant.ComputationalStateEnum;
|
|
-import com.persagy.dmp.rwd.basic.utils.DigitalCommonUtils;
|
|
|
|
import com.persagy.dmp.rwd.define.service.IRelationDefineService;
|
|
import com.persagy.dmp.rwd.define.service.IRelationDefineService;
|
|
import com.persagy.dmp.rwd.digital.dao.ObjectDigitalMapper;
|
|
import com.persagy.dmp.rwd.digital.dao.ObjectDigitalMapper;
|
|
import com.persagy.dmp.rwd.digital.domain.CalculatingDTO;
|
|
import com.persagy.dmp.rwd.digital.domain.CalculatingDTO;
|
|
-import com.persagy.dmp.rwd.digital.service.*;
|
|
|
|
|
|
+import com.persagy.dmp.rwd.digital.service.CalculateService;
|
|
|
|
+import com.persagy.dmp.rwd.digital.service.IObjectRelationService;
|
|
|
|
+import com.persagy.dmp.rwd.digital.service.RelationCalService;
|
|
|
|
+import com.persagy.dmp.rwd.digital.service.RelationProjectCalService;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -81,96 +81,41 @@ public class RelationCalServiceImpl implements RelationCalService {
|
|
checkSlaveObjValid(resultList,requestData);
|
|
checkSlaveObjValid(resultList,requestData);
|
|
// 4.插入关系from_id,to_id,图类型编码,边类型编码,项目id,如果rel_value有值则加上,结束
|
|
// 4.插入关系from_id,to_id,图类型编码,边类型编码,项目id,如果rel_value有值则加上,结束
|
|
// 4.1 获得主对象
|
|
// 4.1 获得主对象
|
|
- ObjectDigital masterObjectDigital = resultList
|
|
|
|
- .stream()
|
|
|
|
- .filter(ObjectDigital::getMainFlag)
|
|
|
|
- .collect(Collectors.toList())
|
|
|
|
- .get(0);
|
|
|
|
|
|
+ ObjectDigital masterObjectDigital = resultList.stream().filter(ObjectDigital::getMainFlag).collect(Collectors.toList()).get(0);
|
|
// 校验传感器类型
|
|
// 校验传感器类型
|
|
checkSensor(masterObjectDigital,requestData);
|
|
checkSensor(masterObjectDigital,requestData);
|
|
// 校验对象类型
|
|
// 校验对象类型
|
|
checkClassCode(masterObjectDigital,requestData);
|
|
checkClassCode(masterObjectDigital,requestData);
|
|
// 4.2 获得从对象
|
|
// 4.2 获得从对象
|
|
- List<ObjectDigital> slaveObjectDigitals = resultList
|
|
|
|
- .stream()
|
|
|
|
- .filter(objectDigital -> !objectDigital.getMainFlag())
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
|
+ List<ObjectDigital> slaveObjectDigitals = resultList.stream().filter(objectDigital -> !objectDigital.getMainFlag()).collect(Collectors.toList());
|
|
// 4.3 根据主对象id和从对象id数组查询已经存在的关系
|
|
// 4.3 根据主对象id和从对象id数组查询已经存在的关系
|
|
Map<String, ObjectRelation> relationMap =
|
|
Map<String, ObjectRelation> relationMap =
|
|
queryObjectRelationMapByFromIdAndToIds(masterObjectDigital.getId(),slaveObjectDigitals
|
|
queryObjectRelationMapByFromIdAndToIds(masterObjectDigital.getId(),slaveObjectDigitals
|
|
.stream().map(BaseEntity::getId).collect(Collectors.toList()));
|
|
.stream().map(BaseEntity::getId).collect(Collectors.toList()));
|
|
// 4.3 创建关系
|
|
// 4.3 创建关系
|
|
- List<ObjectRelation> addRelations = new ArrayList<>();
|
|
|
|
- List<ObjectRelation> updateRelations = new ArrayList<>();
|
|
|
|
|
|
+ List<ObjectRelation> relations = new ArrayList<>();
|
|
//List<RelationCalSign> relationCalSigns = new ArrayList<>();
|
|
//List<RelationCalSign> relationCalSigns = new ArrayList<>();
|
|
boolean flag = StrUtil.isNotBlank(requestData.getSign()) && NumberUtil.isInteger(requestData.getSign());
|
|
boolean flag = StrUtil.isNotBlank(requestData.getSign()) && NumberUtil.isInteger(requestData.getSign());
|
|
|
|
+ // 生成插入关系
|
|
for (ObjectDigital slaveObjectDigital : slaveObjectDigitals) {
|
|
for (ObjectDigital slaveObjectDigital : slaveObjectDigitals) {
|
|
- // 当已经存在关系,仅更新一下操作记录
|
|
|
|
- String uniqueKey = StrUtil
|
|
|
|
- .format(CommonConstant.RELATION_UNIQUE_KEY_FORMAT,
|
|
|
|
- requestData.getGraphCode(),
|
|
|
|
- requestData.getRelCode(),
|
|
|
|
- masterObjectDigital.getId(),
|
|
|
|
- slaveObjectDigital.getId());
|
|
|
|
- if (relationMap.containsKey(uniqueKey)){
|
|
|
|
- ObjectRelation objectRelation = relationMap.get(uniqueKey);
|
|
|
|
- objectRelation.setUpdateApp(AppContext.getContext().getAppId());
|
|
|
|
- objectRelation.setModifier(AppContext.getContext().getAccountId());
|
|
|
|
- if (requestData.getHasRelValue()){
|
|
|
|
- objectRelation.setRelValue(masterObjectDigital.getClassCode());
|
|
|
|
- }
|
|
|
|
- updateRelations.add(objectRelation);
|
|
|
|
-// if (flag){
|
|
|
|
-// // 因为lombok的SuperBuilder注解还处于实验性,所以暂时不用
|
|
|
|
-// RelationCalSign relationCalSign = RelationCalSign
|
|
|
|
-// .builder()
|
|
|
|
-// .sign(NumberUtil.parseInt(requestData.getSign()))
|
|
|
|
-// .build();
|
|
|
|
-// relationCalSign.setId(objectRelation.getId());
|
|
|
|
-// relationCalSigns.add(relationCalSign);
|
|
|
|
-// }
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- // 生成插入关系
|
|
|
|
ObjectRelation objectRelation = new ObjectRelation();
|
|
ObjectRelation objectRelation = new ObjectRelation();
|
|
- objectRelation.setId(IdWorker.getIdStr());
|
|
|
|
objectRelation.setGraphCode(requestData.getGraphCode());
|
|
objectRelation.setGraphCode(requestData.getGraphCode());
|
|
- objectRelation.setGroupCode(AppContext.getContext().getGroupCode());
|
|
|
|
- objectRelation.setProjectId(AppContext.getContext().getProjectId());
|
|
|
|
- objectRelation.setCreateApp(AppContext.getContext().getAppId());
|
|
|
|
- objectRelation.setUpdateApp(AppContext.getContext().getAppId());
|
|
|
|
- objectRelation.setGraphId(DigitalCommonUtils.getDefaultGraphIdByGraphCode(requestData.getGraphCode()));
|
|
|
|
objectRelation.setObjFrom(masterObjectDigital.getId());
|
|
objectRelation.setObjFrom(masterObjectDigital.getId());
|
|
objectRelation.setObjTo(slaveObjectDigital.getId());
|
|
objectRelation.setObjTo(slaveObjectDigital.getId());
|
|
objectRelation.setRelCode(requestData.getRelCode());
|
|
objectRelation.setRelCode(requestData.getRelCode());
|
|
if (requestData.getHasRelValue()){
|
|
if (requestData.getHasRelValue()){
|
|
objectRelation.setRelValue(masterObjectDigital.getClassCode());
|
|
objectRelation.setRelValue(masterObjectDigital.getClassCode());
|
|
}
|
|
}
|
|
- objectRelation.setCreator(AppContext.getContext().getAccountId());
|
|
|
|
- objectRelation.setModifier(AppContext.getContext().getAccountId());
|
|
|
|
- objectRelation.setValid(1);
|
|
|
|
- addRelations.add(objectRelation);
|
|
|
|
-// if (flag){
|
|
|
|
-// RelationCalSign relationCalSign = RelationCalSign
|
|
|
|
-// .builder()
|
|
|
|
-// .sign(NumberUtil.parseInt(requestData.getSign()))
|
|
|
|
-// .build();
|
|
|
|
-// relationCalSign.setId(objectRelation.getId());
|
|
|
|
-// relationCalSigns.add(relationCalSign);
|
|
|
|
-// }
|
|
|
|
- }
|
|
|
|
- if (CollUtil.isNotEmpty(updateRelations)){
|
|
|
|
- objectRelationService.updateBatchById(updateRelations);
|
|
|
|
|
|
+ relations.add(objectRelation);
|
|
}
|
|
}
|
|
- if (CollUtil.isNotEmpty(addRelations)){
|
|
|
|
- objectRelationService.saveBatch(addRelations);
|
|
|
|
|
|
+ if (CollUtil.isNotEmpty(relations)){
|
|
|
|
+ objectRelationService.save(relations);
|
|
}
|
|
}
|
|
// 5.处理sign:计算标记 1 为手动 2为自动
|
|
// 5.处理sign:计算标记 1 为手动 2为自动
|
|
// if (CollUtil.isNotEmpty(relationCalSigns)){
|
|
// if (CollUtil.isNotEmpty(relationCalSigns)){
|
|
// relationCalSignService.saveOrUpdateBatch(relationCalSigns);
|
|
// relationCalSignService.saveOrUpdateBatch(relationCalSigns);
|
|
// }
|
|
// }
|
|
- addRelations.addAll(updateRelations);
|
|
|
|
- return ResultHelper.multi(addRelations,addRelations.size());
|
|
|
|
|
|
+ return ResultHelper.multi(relations, relations.size());
|
|
}
|
|
}
|
|
|
|
|
|
/***
|
|
/***
|