package com.ruoyi.jianguan.mongodb.service.impl;
|
|
import com.ruoyi.common.core.dto.MongoChargingOrderQuery;
|
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.integration.api.model.UpdateBalance;
|
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
|
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData;
|
import com.ruoyi.jianguan.constant.IotConstant;
|
import com.ruoyi.jianguan.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.data.mongodb.core.query.Update;
|
import org.springframework.stereotype.Service;
|
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Objects;
|
|
@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<UploadRealTimeMonitoringData> findAll() {
|
return mongoTemplate.findAll(UploadRealTimeMonitoringData.class);
|
}
|
|
|
/**
|
* 根据订单号查询监控数据
|
* @param code
|
* @return
|
*/
|
@Override
|
public List<UploadRealTimeMonitoringData> getDataByOrderCode(String code) {
|
Query query = new Query();
|
if(StringUtils.isNotEmpty(code)){
|
query.addCriteria(Criteria.where("transaction_serial_number").is(code));
|
}
|
List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = mongoTemplate.find(
|
query.with(Sort.by(Sort.Order.desc("create_time")))
|
, UploadRealTimeMonitoringData.class);
|
return uploadRealTimeMonitoringData;
|
}
|
|
@Override
|
public UploadRealTimeMonitoringPageData getDataAll(MongoChargingOrderQuery mongoChargingOrderQuery) throws ParseException {
|
Query query = new Query();
|
// if (!values.isEmpty()){
|
// query.addCriteria(Criteria.where("transaction_serial_number").in(values));
|
// }
|
if (mongoChargingOrderQuery.getCode() != null && !mongoChargingOrderQuery.getCode().isEmpty()) {
|
query.addCriteria(Criteria.where("transaction_serial_number").regex(mongoChargingOrderQuery.getCode(),"i")); // "i" 表示不区分大小写
|
}
|
if (mongoChargingOrderQuery.getOrderType() !=null){
|
query.addCriteria(Criteria.where("orderType").is(mongoChargingOrderQuery.getOrderType()));
|
}
|
if (mongoChargingOrderQuery.getSiteId() != null){
|
query.addCriteria(Criteria.where("siteId").is(mongoChargingOrderQuery.getSiteId()));
|
}
|
if (!mongoChargingOrderQuery.getSiteIds().isEmpty()){
|
query.addCriteria(Criteria.where("siteId").in(mongoChargingOrderQuery.getSiteIds()));
|
}
|
if (mongoChargingOrderQuery.getChargingPileCode() != null && !mongoChargingOrderQuery.getChargingPileCode().isEmpty()) {
|
query.addCriteria(Criteria.where("charging_pile_code").is(mongoChargingOrderQuery.getChargingPileCode()));
|
}
|
if (mongoChargingOrderQuery.getChargingGunCode() != null && !mongoChargingOrderQuery.getChargingGunCode().isEmpty()){
|
query.addCriteria(Criteria.where("charging_gun_code").is(mongoChargingOrderQuery.getChargingGunCode()));
|
}
|
if (mongoChargingOrderQuery.getStatus() != null){
|
query.addCriteria(Criteria.where("status").is(mongoChargingOrderQuery.getStatus()));
|
}
|
|
if (mongoChargingOrderQuery.getCreateTime() != null) {
|
String[] split = mongoChargingOrderQuery.getCreateTime().split(" - ");
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
Date start = dateFormat.parse(split[0]);
|
Date end = dateFormat.parse(split[1]);
|
query.addCriteria(Criteria.where("create_time").gte(start).lt(end));
|
}
|
|
if (mongoChargingOrderQuery.getLastTime() != null && mongoChargingOrderQuery.getLastTime() != null) {
|
String[] split = mongoChargingOrderQuery.getLastTime().split(" - ");
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
Date start = dateFormat.parse(split[0]);
|
Date end = dateFormat.parse(split[1]);
|
query.addCriteria(Criteria.where("last_time").gte(start).lt(end));
|
}
|
|
|
|
|
|
|
|
|
|
long totalElements = mongoTemplate.count(query, UploadRealTimeMonitoringData.class);
|
|
// 创建带有排序的 Pageable 对象
|
Pageable pageable = PageRequest.of(
|
mongoChargingOrderQuery.getPageCurr()-1,
|
mongoChargingOrderQuery.getPageSize(),
|
Sort.by(Sort.Direction.DESC, "create_time")
|
);
|
|
// 设置分页和排序
|
query.with(pageable);
|
|
// 执行查询并获取 Page 对象
|
List<UploadRealTimeMonitoringData> page = mongoTemplate.find(query, UploadRealTimeMonitoringData.class,"upload_real_time_monitoring_data");
|
|
// 设置分页
|
// Pageable pageable = PageRequest.of(mongoChargingOrderQuery.getPageSize()*(mongoChargingOrderQuery.getPageCurr()-1), mongoChargingOrderQuery.getPageSize());
|
// query.with(pageable);
|
// query.with(Sort.by(Sort.Direction.DESC,"create_time"));
|
List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = mongoTemplate.find(
|
query
|
, UploadRealTimeMonitoringData.class);
|
|
UploadRealTimeMonitoringPageData uploadRealTimeMonitoringPageData = new UploadRealTimeMonitoringPageData();
|
uploadRealTimeMonitoringPageData.setCount(totalElements);
|
uploadRealTimeMonitoringPageData.setRecords(page);
|
return uploadRealTimeMonitoringPageData;
|
}
|
|
@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);
|
}
|
|
@Override
|
public void delete(String id) {
|
UploadRealTimeMonitoringData byId = findById(id.toString());
|
mongoTemplate.remove(byId);
|
}
|
|
@Override
|
public void updateById(String id) {
|
// 创建查询条件
|
Query query = new Query(Criteria.where("_id").is(id));
|
// 创建更新对象
|
Update update = new Update().set("last_time", new Date());
|
// 执行更新操作
|
mongoTemplate.updateFirst(query, update, UploadRealTimeMonitoringData.class);
|
}
|
|
@Override
|
public List<UploadRealTimeMonitoringData> getRangeTimeData(Date startTime, Date endTime) {
|
Query query = new Query();
|
// 根据时间范围查询
|
if (Objects.nonNull(startTime) && Objects.nonNull(endTime)) {
|
query.addCriteria(Criteria.where("create_time").gte(startTime).lte(endTime));
|
}
|
List<UploadRealTimeMonitoringData> list = mongoTemplate.find(
|
query.with(Sort.by(Sort.Order.desc("create_time")))
|
, UploadRealTimeMonitoringData.class);
|
return list;
|
}
|
|
}
|