package com.gunshi.project.ss.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.IdWorker; 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.gunshi.project.ss.entity.so.TyYearRainfallPageSo; import com.gunshi.project.ss.entity.vo.TyYearRainfallVo; import com.gunshi.project.ss.mapper.TyYearRainfallMapper; import com.gunshi.project.ss.model.TyYearRainfall; import com.gunshi.project.ss.util.MyBeanUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; /** * 描述: 典型年降雨资料表 * author: xusan * date: 2024-07-08 17:30:38 */ @Service @Slf4j @Transactional(rollbackFor = Exception.class) public class TyYearRainfallService extends ServiceImpl { public boolean saveData(TyYearRainfallVo dto) { checkParam(dto); TyYearRainfall tyYearRainfall = new TyYearRainfall(); BeanUtils.copyProperties(dto,tyYearRainfall); tyYearRainfall.setId(IdWorker.getId()); List list = dto.getList(); if(CollectionUtils.isNotEmpty(list)){ list.stream().map(o->{ o.setId(IdWorker.getId()); return o; }).collect(Collectors.toList()); } list.add(tyYearRainfall); return this.saveBatch(list); } private void checkParam(TyYearRainfallVo dto) { Long id = dto.getId(); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(TyYearRainfall::getYear,dto.getYear()) .eq(TyYearRainfall::getType,1); if(id != null){ queryWrapper.ne(TyYearRainfall::getId,id); } if(this.count(queryWrapper ) > 0){ throw new IllegalArgumentException("该年份已存在典型年降雨资料"); } Long len = dto.getList().stream().map(TyYearRainfall::getMonth).distinct().collect(Collectors.counting()); if(dto.getList().size() != len.intValue()){ throw new IllegalArgumentException("月份不可重复"); } } public Page pageQuery(TyYearRainfallPageSo tyYearRainfallPageSo) { Page page = baseMapper.pageQuery(tyYearRainfallPageSo.getPageSo().toPage(), tyYearRainfallPageSo); fillList(page); return page; } private void fillList(Page ret) { if (ret.getRecords() != null) { queryChild(ret.getRecords()); } } private void queryChild(List records) { for (TyYearRainfallVo record : records) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(TyYearRainfall::getYear,record.getYear()) .eq(TyYearRainfall::getType,2) .orderByAsc(TyYearRainfall::getMonth); record.setList(this.list(queryWrapper)); } } public boolean updateData(TyYearRainfallVo dto) { checkParam(dto); TyYearRainfall tyYearRainfall = new TyYearRainfall(); BeanUtils.copyProperties(dto,tyYearRainfall); this.updateById(tyYearRainfall); deleteMonthData(dto.getYear()); List list = dto.getList(); if(CollectionUtils.isNotEmpty(list)){ list.stream().map(o->{ o.setId(IdWorker.getId()); return o; }).collect(Collectors.toList()); } return this.saveBatch(list); } private void deleteMonthData(Integer year) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(TyYearRainfall::getYear,year) .eq(TyYearRainfall::getType,2); this.remove(queryWrapper); } public Boolean removeData(Long id) { TyYearRainfall tyYearRainfall = this.getById(id); deleteMonthData(tyYearRainfall.getYear()); return this.removeById(id); } public List queryList() { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(TyYearRainfall::getType,1); queryWrapper.orderByDesc(TyYearRainfall::getYear); List list = this.list(queryWrapper); List resList = MyBeanUtil.collectionCopy(list,TyYearRainfallVo.class); queryChild(resList); return resList; } }