129 lines
4.7 KiB
Java
129 lines
4.7 KiB
Java
package com.gunshi.project.hsz.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.hsz.entity.so.TyYearRainfallPageSo;
|
|
import com.gunshi.project.hsz.entity.vo.TyYearRainfallVo;
|
|
import com.gunshi.project.hsz.mapper.TyYearRainfallMapper;
|
|
import com.gunshi.project.hsz.model.TyYearRainfall;
|
|
import com.gunshi.project.hsz.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<TyYearRainfallMapper, TyYearRainfall>
|
|
{
|
|
|
|
|
|
public boolean saveData(TyYearRainfallVo dto) {
|
|
checkParam(dto);
|
|
TyYearRainfall tyYearRainfall = new TyYearRainfall();
|
|
BeanUtils.copyProperties(dto,tyYearRainfall);
|
|
tyYearRainfall.setId(IdWorker.getId());
|
|
List<TyYearRainfall> 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<TyYearRainfall> 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<TyYearRainfallVo> pageQuery(TyYearRainfallPageSo tyYearRainfallPageSo) {
|
|
Page<TyYearRainfallVo> page = baseMapper.pageQuery(tyYearRainfallPageSo.getPageSo().toPage(), tyYearRainfallPageSo);
|
|
fillList(page);
|
|
return page;
|
|
}
|
|
|
|
private void fillList(Page<TyYearRainfallVo> ret) {
|
|
if (ret.getRecords() != null) {
|
|
queryChild(ret.getRecords());
|
|
}
|
|
}
|
|
|
|
private void queryChild(List<TyYearRainfallVo> records) {
|
|
for (TyYearRainfallVo record : records) {
|
|
LambdaQueryWrapper<TyYearRainfall> 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<TyYearRainfall> 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<TyYearRainfall> 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<TyYearRainfallVo> queryList() {
|
|
LambdaQueryWrapper<TyYearRainfall> queryWrapper = Wrappers.lambdaQuery();
|
|
queryWrapper.eq(TyYearRainfall::getType,1);
|
|
List<TyYearRainfall> list = this.list(queryWrapper);
|
|
List<TyYearRainfallVo> resList = MyBeanUtil.collectionCopy(list,TyYearRainfallVo.class);
|
|
queryChild(resList);
|
|
return resList;
|
|
}
|
|
}
|
|
|
|
|