gunshi-project-ss/src/main/java/com/gunshi/project/hsz/service/PrePlaceService.java

82 lines
3.0 KiB
Java

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<PrePlaceMapper, PrePlace> {
@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<PrePlace> tree(PrePlacePageSo dto) {
LambdaQueryWrapper<PrePlace> wrapper = new LambdaQueryWrapper<>();
if(!StringUtils.isBlank(dto.getPreName())){
wrapper.eq(PrePlace::getPreName, dto.getPreName());
}
List<PrePlace> prePlaces = prePlaceMapper.selectList(wrapper);
Iterator<PrePlace> iterator = prePlaces.iterator();
while(iterator.hasNext()){
PrePlace prePlace = iterator.next();
LambdaQueryWrapper<PrePlaceDetail> queryWrapper = new LambdaQueryWrapper<>();
if(!StringUtils.isBlank(dto.getPreDetailName())){
queryWrapper.like(PrePlaceDetail::getDetailName, dto.getPreDetailName());
}
queryWrapper.eq(PrePlaceDetail::getPreId, prePlace.getId());
List<PrePlaceDetail> 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<PrePlace> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PrePlace::getPreName, dto.getPreName());
PrePlace prePlace = prePlaceMapper.selectOne(queryWrapper);
if(prePlace != null){
throw new IllegalArgumentException("该防治点已存在");
}
save(dto);
return true;
}
}