Browse Source

超级apibug

2024年12月19日14:14:26
thing_master
lishuai 1 year ago
parent
commit
b95006369f
  1. 41
      modules/thing/src/main/java/com/thing/thing/api/service/impl/IotThingApiServiceImpl.java
  2. 22
      modules/thing/src/main/java/com/thing/thing/dict/service/impl/IotThingDictServiceImpl.java
  3. 44
      modules/thing/src/main/java/com/thing/thing/dictRelation/service/impl/IotThingDictRelationServiceImpl.java

41
modules/thing/src/main/java/com/thing/thing/api/service/impl/IotThingApiServiceImpl.java

@ -424,7 +424,18 @@ public class IotThingApiServiceImpl extends BaseServiceImpl<IotThingApiMapper, I
return Maps.newHashMap();
}
//todo 这里主要是组态设计的websocket请求可能需要修改
return encapsulationQuery(dto.getThingCondition(), dto.getAttrCondition(), dto.getTimeCondition(), dto.getReqParams(), null, null, dto.getSort(), null);
String remark = dto.getRemark();
Long tenantCode = dto.getTenantCode();
if (StringUtils.equals(remark, "0")) {
tenantCode = UserContext.getRealTenantCode();
}
// Map<String, Object> params = new HashMap<>();
// params.put("id", id);
// params.put("reqParams", dto.getReqParams());
// Map<String, Object> stringObjectMap1 = telemetryById(params);
// Map<String, Object> stringObjectMap = encapsulationQuery(dto.getThingCondition(), dto.getAttrCondition(), dto.getTimeCondition(), dto.getReqParams(), null, null, dto.getSort(), tenantCode);
return encapsulationQuery(dto.getThingCondition(), dto.getAttrCondition(), dto.getTimeCondition(), dto.getReqParams(), null, null, dto.getSort(), tenantCode);
}
@Override
@ -489,19 +500,25 @@ public class IotThingApiServiceImpl extends BaseServiceImpl<IotThingApiMapper, I
parmsMap.put("sort", sort);
resultMap.put("param", parmsMap);
resultMap.put("filterParam", reqParams);
//属性查询类型
Map<String, Object> entityResultMap = new HashMap<>();
Map<String, IotThingViewDTO> entityInfoMap = new HashMap<>();
ApiEntityAttrDTO attrsEntity = ApiEntityAttrDTO.createFromJson(attrCondition);
String type = attrsEntity.getType();
//过滤条件的封装
if (StringUtils.isNotBlank(reqParams)) {
reqParams = packageQueryFilterParams(reqParams);
Map<String, Object> conditionMap = BeanUtil.jsonConvertMap(reqParams);
// thingCondition = (String)conditionMap.get("entitys");
attrCondition = (String) conditionMap.get("attrs");
if (StringUtils.equalsAnyIgnoreCase(type, ApiSeparateAttr.SEPARATE.getValue())) {
attrCondition = conditionMap.get("splitAttrs").toString();
}else{
attrCondition = conditionMap.get("attrs").toString();
}
//timeCondition = (String)conditionMap.get("times");TODO 暂时时间没有过滤
}
//属性查询类型
Map<String, Object> entityResultMap = new HashMap<>();
Map<String, IotThingViewDTO> entityInfoMap = new HashMap<>();
ApiEntityAttrDTO attrsEntity = ApiEntityAttrDTO.createFromJson(attrCondition);
String type = attrsEntity.getType();
//查询物和属性的参数
Map<String, Collection<String>> paramMap = Maps.newHashMap();
//分属性
@ -563,7 +580,7 @@ public class IotThingApiServiceImpl extends BaseServiceImpl<IotThingApiMapper, I
Map<String, IotThingDictRelationDTO> collect = dictRelationDTOS.stream()
.collect(Collectors.toMap(IotThingDictRelationParamDTO::getCode,
s-> ConvertUtils.sourceToTarget(s,IotThingDictRelationDTO.class)
,(existing, replacement) -> existing));
,(existing, replacement) -> existing));
optional.get().setAttrs(collect);
entityInfoMap.put(entityCode, optional.get());
}
@ -665,8 +682,8 @@ public class IotThingApiServiceImpl extends BaseServiceImpl<IotThingApiMapper, I
Optional<List<IotThingDictRelationDTO>> dictRelationDTOList = thingManageContextService.findDictRelationAllByIds(attrIds);
Collection<String> dictCodes = dictRelationDTOList.orElseGet(Collections::emptyList).stream().map(IotThingDictRelationDTO::getCode).toList();
paramMap.put(code, dictCodes);
// Map<String, IotThingDictRelationDTO> collect = dictRelationDTOList.orElseGet(Collections::emptyList).stream().collect(Collectors.toMap(IotThingDictRelationDTO::getCode, Function.identity(),(existing, replacement) -> existing));
// optional.get().setAttrs(collect);
// Map<String, IotThingDictRelationDTO> collect = dictRelationDTOList.orElseGet(Collections::emptyList).stream().collect(Collectors.toMap(IotThingDictRelationDTO::getCode, Function.identity(),(existing, replacement) -> existing));
// optional.get().setAttrs(collect);
entityInfoMap.put(code, optional.get());
}
});
@ -681,7 +698,7 @@ public class IotThingApiServiceImpl extends BaseServiceImpl<IotThingApiMapper, I
List<String> dictCodes = dictRelationDTOS.stream().map(IotThingDictRelationDTO::getCode).toList();
paramMap.put(code, dictCodes);
//Map<String, IotThingDictRelationDTO> collect = dictRelationDTOS.stream().collect(Collectors.toMap(IotThingDictRelationDTO::getCode, Function.identity()));
// optional.get().setAttrs(collect);
// optional.get().setAttrs(collect);
entityInfoMap.put(code, optional.get());
}
});

22
modules/thing/src/main/java/com/thing/thing/dict/service/impl/IotThingDictServiceImpl.java

@ -198,7 +198,7 @@ public class IotThingDictServiceImpl extends BaseServiceImpl<IotThingDictMapper,
public Integer findMaxSort(Integer isDefault) {
QueryWrapper queryWrapper = QueryWrapper
.create()
.select(max(IOT_THING_DICT_ENTITY.SORT)).eq(String.valueOf(IOT_THING_DICT_ENTITY.IS_DEFAULT), 1);
.select(max(IOT_THING_DICT_ENTITY.SORT)).eq(IotThingDictEntity::getIsDefault,1);
Integer sort = mapper.selectOneByQueryAs(queryWrapper, Integer.class);
return Objects.isNull(sort) ? 0 : sort;
}
@ -269,7 +269,7 @@ public class IotThingDictServiceImpl extends BaseServiceImpl<IotThingDictMapper,
/*.setTenantCode(SecurityUser.getUser().getTenantCode())
.setCompanyId(SecurityUser.getUser().getCompanyId())
.setDeptId(SecurityUser.getUser().getDeptId())*/
).toList();
).toList();
mapper.insertBatch(list);
});
}
@ -293,8 +293,8 @@ public class IotThingDictServiceImpl extends BaseServiceImpl<IotThingDictMapper,
//过滤完已经存在的字典
.filter(d-> iotThingDictDTOList.stream().noneMatch(iotThingDictDTO ->
StringUtils.equals(groupName,iotThingDictDTO.getGroupName())
&& StringUtils.equals(d.getCode(),iotThingDictDTO.getCode())
&& StringUtils.equals(d.getDataType(),iotThingDictDTO.getDataType())
&& StringUtils.equals(d.getCode(),iotThingDictDTO.getCode())
&& StringUtils.equals(d.getDataType(),iotThingDictDTO.getDataType())
))
//构建字典对象
.peek(e -> {
@ -421,14 +421,14 @@ public class IotThingDictServiceImpl extends BaseServiceImpl<IotThingDictMapper,
.and(IOT_THING_DICT_ENTITY.SORT.ge(iotThingDictEntity.getSort()))
.and(IOT_THING_DICT_ENTITY.ID.ne(id))
)
.or(IOT_THING_DICT_ENTITY.IS_DEFAULT.eq(1)
.and(IOT_THING_DICT_ENTITY.TENANT_CODE.eq(UserContext.getRealTenantCode()))
.and(
IOT_THING_DICT_ENTITY.SORT.le(toDictEntity.getSort())
.and(IOT_THING_DICT_ENTITY.SORT.ge(iotThingDictEntity.getSort()))
.or(IOT_THING_DICT_ENTITY.IS_DEFAULT.eq(1)
.and(IOT_THING_DICT_ENTITY.TENANT_CODE.eq(UserContext.getRealTenantCode()))
.and(
IOT_THING_DICT_ENTITY.SORT.le(toDictEntity.getSort())
.and(IOT_THING_DICT_ENTITY.SORT.ge(iotThingDictEntity.getSort()))
)
.and(IOT_THING_DICT_ENTITY.ID.ne(id))
)
.and(IOT_THING_DICT_ENTITY.ID.ne(id))
)
);
aLong.set(iotThingDictEntity.getSort()-1);
}

44
modules/thing/src/main/java/com/thing/thing/dictRelation/service/impl/IotThingDictRelationServiceImpl.java

@ -46,6 +46,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -153,17 +154,17 @@ public class IotThingDictRelationServiceImpl extends BaseServiceImpl<IotThingDic
@Override
public List<ObjectNode> findList(String orderField,String order,
String entityName,String groupName, String entityIds,String name,
String templateMark,String dataType,Long tenantCode)
String entityName,String groupName, String entityIds,String name,
String templateMark,String dataType,Long tenantCode)
{
List<ObjectNode> dictRelationList = cache.getTopicMap(CacheNameEnum.THING_DICT_RELATION);
if(CollectionUtils.isEmpty(dictRelationList)){
List<IotThingDictRelationDTO> dictRelationDTOList = mapper.selectListByQueryAs(getWrapper(orderField,order,null,null,null,null,
null,null,null),
IotThingDictRelationDTO.class);
if(CollectionUtils.isEmpty(dictRelationDTOList)) {
return new ArrayList<>();
}
List<IotThingDictRelationDTO> dictRelationDTOList = mapper.selectListByQueryAs(getWrapper(orderField,order,null,null,null,null,
null,null,null),
IotThingDictRelationDTO.class);
if(CollectionUtils.isEmpty(dictRelationDTOList)) {
return new ArrayList<>();
}
dictRelationList = JsonConverter.convertToJsonObjectListObjectNode(dictRelationDTOList);
//更新缓存
CacheInit.dictRelationMap(dictRelationList,cache);
@ -536,10 +537,23 @@ public class IotThingDictRelationServiceImpl extends BaseServiceImpl<IotThingDic
).toList();
dictService.saveBatch(dictEntities);
}
List<IotThingDictRelationEntity> iotThingDictRelationEntities = ConvertUtils.sourceToTarget(list, IotThingDictRelationEntity.class);
mapper.insertBatch(iotThingDictRelationEntities);
iotThingDictRelationEntities.forEach(entity -> cache.updateAccurateKeyEntity(CacheNameEnum.THING_DICT_RELATION,
List<IotThingDictRelationEntity> iotThingDictRelationEntities = mapper.selectListByQuery(QueryWrapper.create().eq(IotThingDictRelationEntity::getEntityId, optional.get().getId())
.in(IotThingDictRelationEntity::getCode, codes));
Long maxSort = 0L;
if(CollectionUtils.isNotEmpty(iotThingDictRelationEntities)){
list = list.stream().filter(e -> iotThingDictRelationEntities.stream().noneMatch(d -> StringUtils.equals(d.getCode(), e.getCode()))).toList();
maxSort = iotThingDictRelationEntities.stream().mapToLong(IotThingDictRelationEntity::getSort).max().getAsLong();
}
AtomicLong sort = new AtomicLong(maxSort);
List<IotThingDictRelationEntity> insertList = ConvertUtils.sourceToTarget(list, IotThingDictRelationEntity.class);
insertList.forEach(e -> {
e.setSort(sort.incrementAndGet());
e.setEntityId(optional.get().getId());
e.setTemplateMark(optional.get().getTemplateMark());
});
mapper.insertBatch(insertList);
insertList.forEach(entity -> cache.updateAccurateKeyEntity(CacheNameEnum.THING_DICT_RELATION,
entity.getTenantCode()+CacheInit.KEY+entity.getEntityCode()+CacheInit.KEY+entity.getCode()+CacheInit.KEY+entity.getId(),ConvertUtils.sourceToTarget(entity, IotThingDictRelationDTO.class)));
}
}
@ -573,7 +587,7 @@ public class IotThingDictRelationServiceImpl extends BaseServiceImpl<IotThingDic
.setId(null);
return iotThingDictRelationEntity;
})).toList());
//同步
//同步
if(StringUtils.equals(SyncUpdateEnum.SYNC.getValue(),dto.getSyncOrUpdate())){
QueryWrapper in = QueryWrapper.create().in(IotThingDictRelationEntity::getEntityId, entityIds);
List<IotThingDictRelationEntity> dictRelationEntities = mapper.selectListByQuery(in);
@ -588,9 +602,9 @@ public class IotThingDictRelationServiceImpl extends BaseServiceImpl<IotThingDic
if(CollectionUtils.isNotEmpty(relationDTOList)){
insertList.
removeIf(s-> relationDTOList.stream().anyMatch(r->
StringUtils.equals(r.getCode(),s.getCode())
&& StringUtils.equals(r.getDataType(),s.getDataType())
&& Objects.equals(r.getEntityId(),s.getEntityId())
StringUtils.equals(r.getCode(),s.getCode())
&& StringUtils.equals(r.getDataType(),s.getDataType())
&& Objects.equals(r.getEntityId(),s.getEntityId())
));
}
if(CollectionUtils.isNotEmpty(insertList)){

Loading…
Cancel
Save