package com.gunshi.project.hsz.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gunshi.project.hsz.entity.so.PrePlacePageSo; import com.gunshi.project.hsz.mapper.PrePlaceDetailMapper; import com.gunshi.project.hsz.mapper.PrePlaceMapper; import com.gunshi.project.hsz.model.PrePlace; import com.gunshi.project.hsz.model.PrePlaceDetail; import com.ruoyi.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; import java.util.Date; import java.util.Iterator; import java.util.List; @Service @Slf4j @Transactional(rollbackFor = Exception.class) public class PrePlaceService extends ServiceImpl { @Autowired private PrePlaceDetailMapper prePlaceDetailMapper; @Autowired private PrePlaceMapper prePlaceMapper; public boolean deleteById(Serializable id) { //先查看细节表还有数据没 int count = prePlaceDetailMapper.selectByPreId(id); if(count > 0){ throw new RuntimeException("该防治点,还有防治部位未删,请检查"); } boolean res = deleteById(id); return res; } public List tree(PrePlacePageSo dto) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if(!StringUtils.isBlank(dto.getPreName())){ wrapper.eq(PrePlace::getPreName, dto.getPreName()); } List prePlaces = prePlaceMapper.selectList(wrapper); Iterator iterator = prePlaces.iterator(); while(iterator.hasNext()){ PrePlace prePlace = iterator.next(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if(!StringUtils.isBlank(dto.getPreDetailName())){ queryWrapper.like(PrePlaceDetail::getDetailName, dto.getPreDetailName()); } queryWrapper.eq(PrePlaceDetail::getPreId, prePlace.getId()); List prePlaceDetails = prePlaceDetailMapper.selectList(queryWrapper); if(prePlaceDetails.isEmpty()){ iterator.remove(); continue; } prePlace.setChildrens(prePlaceDetails); } return prePlaces; } public boolean saveData(PrePlace dto) { dto.setId(IdWorker.getId()); dto.setCreateTime(new Date()); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(PrePlace::getPreName, dto.getPreName()); PrePlace prePlace = prePlaceMapper.selectOne(queryWrapper); if(prePlace != null){ throw new IllegalArgumentException("该防治点已存在"); } save(dto); return true; } }