package com.zswl.dataservice.dao.mqtt.impl; import com.zswl.dataservice.dao.mqtt.extend.GateWayInfoDaoExtend; import com.zswl.dataservice.domain.mqtt.GateWayInfo; import com.zswl.dataservice.helper.DBHelper; import com.zswl.dataservice.model.mqtt.GateWayInfoSearchParam; import org.apache.commons.lang3.ObjectUtils; 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 GateWayInfoDaoImpl implements GateWayInfoDaoExtend { @Autowired private MongoTemplate mongoTemplate; @Autowired private DBHelper dbHelper; @Override public Page page(Pageable pageable, GateWayInfoSearchParam param) { Criteria criteria = new Criteria(); if (StringUtils.isNotEmpty(param.getGateWayId())) { criteria.and("gateWayId").is(param.getGateWayId()); } if (StringUtils.isNotEmpty(param.getEpId())) { criteria.and("epId").is(param.getEpId()); } // 模糊搜索 List criterias = new ArrayList<>(); if (StringUtils.isNotEmpty(param.getGateWayName())) { Pattern pattern = Pattern.compile("^.*" + param.getGateWayName() + ".*$"); criterias.add(Criteria.where("gateWayName").is(pattern)); } if (!CollectionUtils.isEmpty(criterias)) { criteria.andOperator(criterias.toArray(new Criteria[]{})); } criteria.and("isDelete").is(Boolean.FALSE); Sort sort = param.getSort(); if (ObjectUtils.isEmpty(sort)) { sort = Sort.by(Sort.Order.desc("createTime")); } Query query = Query.query(criteria); query.with(sort); return dbHelper.pages(query, pageable, GateWayInfo.class); } }