package com.aps.core.service.impl.ApsPlate; import cn.hutool.core.util.IdUtil; import com.aps.common.security.utils.SecurityUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.aps.core.domain.ApsPlate.ApsPlateRequireDate; import com.aps.core.service.ApsPlate.ApsPlateRequireDateService; import com.aps.core.mapper.ApsPlateRequireDateMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * @author zhl * @description 针对表【aps_plate_require_date(工单计划需求日期表)】的数据库操作Service实现 * @createDate 2025-05-19 16:51:36 */ @Service public class ApsPlateRequireDateServiceImpl extends ServiceImpl implements ApsPlateRequireDateService { @Resource private ApsPlateRequireDateMapper apsPlateRequireDateMapper; @Transactional @Override public void batchSave(List list) { if (!list.isEmpty()) { list.forEach(apsPlateRequireDate -> { apsPlateRequireDate.setId(IdUtil.getSnowflakeNextId()); apsPlateRequireDate.setCreateBy(SecurityUtils.getUsername()); }); int batchSize = 1000; for (int i = 0; i < list.size(); i += batchSize) { int end = Math.min(i + batchSize, list.size()); List batch = list.subList(i, end); List docNoList = batch.stream().map(ApsPlateRequireDate::getDocNo).distinct().toList(); apsPlateRequireDateMapper.deleteByDocNoList(docNoList, SecurityUtils.getUsername()); apsPlateRequireDateMapper.batchInsert(batch); } } } @Override public int batchDelete(List idList){ //TODO: 根据idList批量删除 LambdaUpdateWrapper queryWrapper = new LambdaUpdateWrapper<>(); queryWrapper.in(ApsPlateRequireDate::getId, idList); queryWrapper.set(ApsPlateRequireDate::getDelFlag, 1); return apsPlateRequireDateMapper.update(queryWrapper); } @Override public Page pagingList(Page page, ApsPlateRequireDate requireDate){ LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.eq(ApsPlateRequireDate::getDelFlag,0); queryWrapper.like( null!=requireDate.getDocNo(), ApsPlateRequireDate::getDocNo,requireDate.getDocNo()); return apsPlateRequireDateMapper.selectPage(page, queryWrapper); } }