|
|
@@ -0,0 +1,90 @@
|
|
|
+package com.zhongshu.card.server.core.dao.devices.impl;
|
|
|
+
|
|
|
+import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
|
|
|
+import com.zhongshu.card.client.model.devices.deviceProduct.DeviceProductBindDeviceSearch;
|
|
|
+import com.zhongshu.card.server.core.dao.BaseImpl;
|
|
|
+import com.zhongshu.card.server.core.dao.devices.extend.DeviceProductBindDeviceDaoExtend;
|
|
|
+import com.zhongshu.card.server.core.domain.devices.DeviceProductBindDevice;
|
|
|
+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 java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.regex.Pattern;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Author TRX
|
|
|
+ * @CreateDate: 2023/4/12
|
|
|
+ * @Version: 1.0
|
|
|
+ */
|
|
|
+public class DeviceProductBindDeviceDaoImpl extends BaseImpl implements DeviceProductBindDeviceDaoExtend {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MongoTemplate mongoTemplate;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private DBHelper dbHelper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<DeviceProductBindDevice> page(Pageable pageable, DeviceProductBindDeviceSearch param) {
|
|
|
+ Criteria criteria = buildFilterCriteria(param);
|
|
|
+
|
|
|
+ Sort sort = buildSort(param);
|
|
|
+ Query query = Query.query(criteria);
|
|
|
+ query.with(sort);
|
|
|
+ return dbHelper.pages(query, pageable, DeviceProductBindDevice.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public long count(DeviceProductBindDeviceSearch param) {
|
|
|
+ Criteria criteria = buildFilterCriteria(param);
|
|
|
+
|
|
|
+ Query query = Query.query(criteria);
|
|
|
+ return mongoTemplate.count(query, DeviceProductBindDevice.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Criteria buildFilterCriteria(DeviceProductBindDeviceSearch param) {
|
|
|
+ param.setOid("");
|
|
|
+ Criteria criteria = buildCriteria(param);
|
|
|
+
|
|
|
+ // 项目oid
|
|
|
+ if (StringUtils.isNotEmpty(param.getProjectOid())) {
|
|
|
+ criteria.and("projectOid").is(param.getProjectOid());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotEmpty(param.getDeviceProductId())) {
|
|
|
+ criteria.and("deviceProductId").is(param.getDeviceProductId());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设备类型
|
|
|
+ if (param.getDeviceType() != null) {
|
|
|
+ criteria.and("deviceType").is(param.getDeviceType());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设备型号
|
|
|
+ if (param.getDeviceModel() != null) {
|
|
|
+ criteria.and("deviceModel").is(param.getDeviceModel());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 模糊搜索
|
|
|
+ List<Criteria> criterias = new ArrayList<>();
|
|
|
+
|
|
|
+ if (StringUtils.isNotEmpty(param.getDeviceId())) {
|
|
|
+ Pattern pattern = Pattern.compile("^.*" + param.getDeviceId() + ".*$");
|
|
|
+ criterias.add(Criteria.where("deviceId").is(pattern));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotEmpty(param.getDeviceName())) {
|
|
|
+ Pattern pattern = Pattern.compile("^.*" + param.getDeviceName() + ".*$");
|
|
|
+ criterias.add(Criteria.where("deviceName").is(pattern));
|
|
|
+ }
|
|
|
+ return criteria;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|