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.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gunshi.core.result.R; import com.gunshi.project.hsz.entity.so.ByPlanPageSo; import com.gunshi.project.hsz.mapper.AlarmSetMapper; import com.gunshi.project.hsz.mapper.ByPlanDetailMapper; import com.gunshi.project.hsz.mapper.ByPlanMapper; import com.gunshi.project.hsz.model.AlarmSet; import com.gunshi.project.hsz.model.ByPlan; import com.gunshi.project.hsz.model.ByPlanDetail; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.BatchResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Objects; @Service @Slf4j @Transactional(rollbackFor = Exception.class) public class ByPlanService extends ServiceImpl { @Autowired private ByPlanDetailMapper byPlanDetailMapper; public boolean update(ByPlan dto) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ByPlan::getPlanId, dto.getPlanId()); ByPlan one = getOne(queryWrapper); if(Objects.isNull(one)){ throw new RuntimeException("该计划不存在,请检查"); } boolean save = updateById(dto); List byPlanDetail = dto.getByPlanDetail(); byPlanDetail.forEach(detail -> { detail.setId(IdWorker.getId()); }); LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); //先删除,再新增 queryWrapper2.eq(ByPlanDetail::getPlanId, dto.getPlanId()); int delete = byPlanDetailMapper.delete(queryWrapper2); List insert = byPlanDetailMapper.insert(byPlanDetail); return true; } public Page pageQuery(ByPlanPageSo dto) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if(!StringUtils.isBlank(dto.getPlanName())){ queryWrapper.like(ByPlan::getPlanName,dto.getPlanName()); } queryWrapper.orderByDesc(ByPlan::getPlanDateStart); Page byPlanPage = baseMapper.selectPage(dto.getPageSo().toPage(), queryWrapper); List records = byPlanPage.getRecords(); Iterator iterator = records.iterator(); while(iterator.hasNext()){ ByPlan entity = iterator.next(); List details = byPlanDetailMapper.selectList(entity.getPlanId(),dto); if(details.isEmpty()){ iterator.remove(); continue; } entity.setByPlanDetail(details); } return byPlanPage; } }