package com.ruoyi.procurementrecord.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.procurementrecord.dto.ProcurementDto; import com.ruoyi.procurementrecord.dto.ProcurementPageDto; import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper; import com.ruoyi.procurementrecord.pojo.CustomStorage; import com.ruoyi.procurementrecord.pojo.CustomStorageWarningRecord; import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut; import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; import com.ruoyi.procurementrecord.service.CustomStorageWarningRecordService; import com.ruoyi.procurementrecord.mapper.CustomStorageWarningRecordMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.List; import java.util.stream.Collectors; /** * @author 27233 * @description 针对表【custom_storage_warning_record(库存预警表)】的数据库操作Service实现 * @createDate 2026-01-19 17:29:31 */ @Service public class CustomStorageWarningRecordServiceImpl extends ServiceImpl implements CustomStorageWarningRecordService{ @Autowired private ProcurementRecordOutMapper procurementRecordOutMapper; @Override public IPage listPage(Page page, ProcurementPageDto procurementPageDto) { IPage pageList = baseMapper.selectCustomStorageWarning(page, procurementPageDto); List procurementPageDtoCopyList = pageList.getRecords(); // 计算待入库数量 // 查询采购记录已入库数量 List collect = procurementPageDtoCopyList.stream().map(CustomStorage::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty( collect)){ return pageList; } LambdaQueryWrapper procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect); procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 3); List procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper); if(CollectionUtils.isEmpty( procurementRecords)){ return pageList; } for (CustomStorage dto : procurementPageDtoCopyList) { // 根据采购台账ID筛选对应的出库记录 List collect1 = procurementRecords.stream() .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId())) .collect(Collectors.toList()); // 如果没有相关的出库记录,跳过该条数据 if(CollectionUtils.isEmpty(collect1)){ dto.setInboundNum0(dto.getInboundNum()); dto.setTotalInboundNum(BigDecimal.ZERO); continue; } // 计算已出库数量总和,并设置待出库数量 BigDecimal totalInboundNum = collect1.stream() .map(ProcurementRecordOut::getInboundNum) .reduce(BigDecimal.ZERO, BigDecimal::add); // 出库数量 = 总数量 - 待出库数量 dto.setTotalInboundNum(totalInboundNum); // 待出库数量 = 总数量 - 已出库数量 dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum)); // 库存价值 if(dto.getTaxInclusiveUnitPrice() != null){ dto.setTaxInclusiveTotalPrice(dto.getInboundNum0().multiply(dto.getTaxInclusiveUnitPrice())); } } pageList.setRecords(procurementPageDtoCopyList); return pageList; } @Override public boolean saveRecord(CustomStorageWarningRecord customStorageWarningRecord) { return baseMapper.insert(customStorageWarningRecord)>0; } }