package com.ruoyi.http.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.http.mapper.TqdianbiaoCollectorMapper; import com.ruoyi.http.pojo.TqdianbiaoCollector; import com.ruoyi.http.service.TqdianbiaoCollectorManageService; import com.ruoyi.http.service.TqdianbiaoCollectorSyncService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; import java.util.List; @Service @RequiredArgsConstructor public class TqdianbiaoCollectorManageServiceImpl extends ServiceImpl implements TqdianbiaoCollectorManageService { private final TqdianbiaoCollectorSyncService collectorSyncService; @Override public IPage listPage(Page page, TqdianbiaoCollector query) { return page(page, Wrappers.lambdaQuery() .and(StringUtils.isNotEmpty(query.getKeyword()), w -> w .like(TqdianbiaoCollector::getCollectorNo, query.getKeyword()) .or() .like(TqdianbiaoCollector::getCollectorId, query.getKeyword()) .or() .like(TqdianbiaoCollector::getDescription, query.getKeyword())) .eq(StringUtils.isNotEmpty(query.getCollectorId()), TqdianbiaoCollector::getCollectorId, query.getCollectorId()) .orderByDesc(TqdianbiaoCollector::getUpdateTime)); } @Override public boolean addCollector(TqdianbiaoCollector collector) { validateCollector(collector); if (existsCollectorId(collector.getCollectorId(), null)) { throw new ServiceException("采集器档案ID已存在"); } collector.setSyncTime(LocalDateTime.now()); return save(collector); } @Override public boolean updateCollector(TqdianbiaoCollector collector) { if (collector.getId() == null) { throw new ServiceException("ID不能为空"); } validateCollector(collector); if (existsCollectorId(collector.getCollectorId(), collector.getId())) { throw new ServiceException("采集器档案ID已存在"); } collector.setSyncTime(LocalDateTime.now()); return updateById(collector); } @Override public boolean deleteByIds(List ids) { if (CollectionUtils.isEmpty(ids)) { throw new ServiceException("请选择至少一条数据"); } return removeBatchByIds(ids); } @Override public int syncFromRemote() { return collectorSyncService.syncCollectors(); } private void validateCollector(TqdianbiaoCollector collector) { if (StringUtils.isEmpty(collector.getCollectorId())) { throw new ServiceException("采集器档案ID不能为空"); } if (StringUtils.isEmpty(collector.getCollectorNo())) { throw new ServiceException("采集器号不能为空"); } } private boolean existsCollectorId(String collectorId, Long excludeId) { return count(Wrappers.lambdaQuery() .eq(TqdianbiaoCollector::getCollectorId, collectorId) .ne(excludeId != null, TqdianbiaoCollector::getId, excludeId)) > 0; } }