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

129 lines
4.7 KiB
Java
Raw Normal View History

2025-07-17 15:26:39 +08:00
package com.gunshi.project.hsz.service;
2024-07-08 17:47:02 +08:00
2024-07-15 16:13:05 +08:00
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;
2024-07-08 17:47:02 +08:00
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
2025-07-17 15:26:39 +08:00
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;
2024-07-08 17:47:02 +08:00
import lombok.extern.slf4j.Slf4j;
2024-07-15 16:13:05 +08:00
import org.springframework.beans.BeanUtils;
2024-07-08 17:47:02 +08:00
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
2024-07-15 16:13:05 +08:00
import java.util.List;
import java.util.stream.Collectors;
2024-07-08 17:47:02 +08:00
/**
* :
* author: xusan
* date: 2024-07-08 17:30:38
*/
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class TyYearRainfallService extends ServiceImpl<TyYearRainfallMapper, TyYearRainfall>
{
2024-07-15 16:13:05 +08:00
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) {
2024-07-17 11:49:48 +08:00
Page<TyYearRainfallVo> page = baseMapper.pageQuery(tyYearRainfallPageSo.getPageSo().toPage(), tyYearRainfallPageSo);
2024-07-15 16:13:05 +08:00
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));
2024-07-15 16:13:05 +08:00
}
}
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;
}
2024-07-08 17:47:02 +08:00
}