package com.gunshi.project.ss.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gunshi.project.ss.common.mapper.JcskGnssRMapper; import com.gunshi.project.ss.common.model.JcskGnssR; import com.gunshi.project.ss.common.model.StationNormalVo; import com.gunshi.project.ss.common.model.so.JcskGnssBPageSo; import com.gunshi.project.ss.common.model.vo.HomeJcskGnssBVo; import com.gunshi.project.ss.common.mapper.JcskGnssBMapper; import com.gunshi.project.ss.common.model.JcskGnssB; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.Duration; import java.time.LocalDateTime; import java.util.List; @Service @Slf4j @Transactional(rollbackFor = Exception.class) public class JcskGnssBService extends ServiceImpl { private final JcskGnssRMapper jcskGnssRMapper; public JcskGnssBService(JcskGnssRMapper jcskGnssRMapper) { this.jcskGnssRMapper = jcskGnssRMapper; } public Page pageQuery(JcskGnssBPageSo page) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if(ObjectUtils.isNotNull(page.getStationCode())){ queryWrapper.like(JcskGnssB::getCd, page.getStationCode()); } Page res = this.page(page.getPageSo().toPage(), queryWrapper); return res; } public HomeJcskGnssBVo getDetailsById(String id) { return baseMapper.getDetailsById(id); } public List getDetailsAndMonitoringDataList() { return baseMapper.getDetailsAndMonitoringDataList(); } public List listDms() { return this.baseMapper.listDms(); } public List artificialTree() { return baseMapper.selectArtificial(); } public void checkStatus(List list){ for (JcskGnssB jcskGnssB : list) { //N+1 就N+1把 无所谓了 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(JcskGnssR::getCd, jcskGnssB.getCd()); queryWrapper.orderByDesc(JcskGnssR::getTm) .last("limit 1"); JcskGnssR jcskGnssR = jcskGnssRMapper.selectOne(queryWrapper); if(jcskGnssR == null){ jcskGnssB.setStatus(0); }else if(jcskGnssR != null){ LocalDateTime tm = jcskGnssR.getTm(); LocalDateTime now = LocalDateTime.now(); Duration between = Duration.between(tm, now); if(between.toHours() > 24){ jcskGnssB.setStatus(0); }else{ jcskGnssB.setStatus(1); } } } } public List queryNormalList() { return baseMapper.queryNormalList(); } }