package com.ruoyi.integration.mongodb.service.impl; import com.mongodb.client.result.DeleteResult; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.iotda.constant.IotConstant; import com.ruoyi.integration.api.model.Ping; import com.ruoyi.integration.mongodb.service.PingService; import org.springframework.beans.factory.annotation.Autowired; 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.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; @Service public class PingServiceImpl implements PingService { @Autowired private MongoTemplate mongoTemplate; @Override public int create(Ping ping) { mongoTemplate.save(ping); return IotConstant.SUCCESS; } @Override public Ping findById(String id) { return mongoTemplate.findById(id, Ping.class); } @Override public List findAll() { return mongoTemplate.findAll(Ping.class); } @Override public void delPing() { mongoTemplate.remove(new Query().addCriteria(Criteria.where("create_time").lt(LocalDateTime.now().minusDays(1))), Ping.class); } @Override public void save(Ping ping) { Query query = new Query(); if (StringUtils.isNotEmpty(ping.getCharging_pile_code())) { query.addCriteria(Criteria.where("charging_pile_code").is(ping.getCharging_pile_code())); } if (StringUtils.isNotEmpty(ping.getCharging_gun_code())){ query.addCriteria(Criteria.where("charging_gun_code").is(ping.getCharging_gun_code())); } List pings = mongoTemplate.find(query, Ping.class); if(pings.size() > 0){ Ping ping1 = pings.get(0); ping1.setLast_time(new Date()); ping1.setCharging_gun_status(ping.getCharging_gun_status()); mongoTemplate.save(ping1); }else{ mongoTemplate.save(ping); } } }