package com.ruoyi.integration.mongodb.service.impl; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.iotda.constant.IotConstant; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; 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.stereotype.Service; import java.util.List; import java.util.Set; @Service public class UploadRealTimeMonitoringDataServiceImpl implements UploadRealTimeMonitoringDataService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(UploadRealTimeMonitoringData uploadRealTimeMonitoringData) { mongoTemplate.save(uploadRealTimeMonitoringData); return IotConstant.SUCCESS; } @Override public UploadRealTimeMonitoringData findById(String id) { return mongoTemplate.findById(id, UploadRealTimeMonitoringData.class); } @Override public List findAll() { return mongoTemplate.findAll(UploadRealTimeMonitoringData.class); } /** * 根据订单号查询监控数据 * @param code * @return */ @Override public List getDataByOrderCode(String code) { Query query = new Query(); if(StringUtils.isNotEmpty(code)){ query.addCriteria(Criteria.where("transaction_serial_number").is(code)); } List uploadRealTimeMonitoringData = mongoTemplate.find( query.with(Sort.by("create_time")) , UploadRealTimeMonitoringData.class); return uploadRealTimeMonitoringData; } @Override public List getDataAll(Set values, Integer page, Integer size) { Query query = new Query(); if (!values.isEmpty()){ query.addCriteria(Criteria.where("transaction_serial_number").in(values)); } // 设置分页 Pageable pageable = PageRequest.of(page, size); query.with(pageable); List uploadRealTimeMonitoringData = mongoTemplate.find( query.with(Sort.by("create_time")) , UploadRealTimeMonitoringData.class); return uploadRealTimeMonitoringData; } @Override public UploadRealTimeMonitoringData getLastDataById(String transaction_serial_number) { Query query = new Query(); if (StringUtils.isNotEmpty(transaction_serial_number)){ query.addCriteria(Criteria.where("transaction_serial_number").is(transaction_serial_number)); } // 按照 createdAt 字段降序排序 query.with(Sort.by(Sort.Direction.DESC, "create_time")); // 限制结果只返回一条记录 query.limit(1); return mongoTemplate.findOne(query, UploadRealTimeMonitoringData.class); } }