package com.zswl.dataservice.dao.iot.impl; import com.zswl.dataservice.dao.base.BaseImpl; import com.zswl.dataservice.dao.iot.extend.IotTopicDaoExtend; import com.zswl.dataservice.dao.mqtt.extend.DeviceInfoDaoExtend; import com.zswl.dataservice.domain.iot.IotTemplate; import com.zswl.dataservice.domain.iot.IotTopic; import com.zswl.dataservice.domain.mqtt.DeviceInfo; import com.zswl.dataservice.helper.DBHelper; import com.zswl.dataservice.model.iot.IotTopicSearch; import com.zswl.dataservice.model.mqtt.DeviceInfoSearchParam; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; /** * @Author TRX * @CreateDate: 2023/4/12 * @Version: 1.0 */ public class IotTopicDaoImpl extends BaseImpl implements IotTopicDaoExtend { @Autowired private MongoTemplate mongoTemplate; @Autowired private DBHelper dbHelper; @Override public Page page(Pageable pageable, IotTopicSearch param) { Criteria criteria = new Criteria(); if (StringUtils.isNotEmpty(param.getEpId())) { criteria.and("epId").is(param.getEpId()); } if (StringUtils.isNotEmpty(param.getIotTemplateId())) { criteria.and("iotTemplate").is(IotTemplate.build(param.getIotTemplateId())); } // 模糊搜索 List criterias = new ArrayList<>(); if (StringUtils.isNotEmpty(param.getTopic())) { Pattern pattern = Pattern.compile("^.*" + param.getTopic() + ".*$"); criterias.add(Criteria.where("topic").is(pattern)); } if (!CollectionUtils.isEmpty(criterias)) { criteria.andOperator(criterias.toArray(new Criteria[]{})); } criteria.and("isDelete").is(Boolean.FALSE); Sort sort = buildSort(param); Query query = Query.query(criteria); query.with(sort); return dbHelper.pages(query, pageable, IotTopic.class); } }