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<CustomStorageWarningRecordMapper, CustomStorageWarningRecord>
|
implements CustomStorageWarningRecordService{
|
|
@Autowired
|
private ProcurementRecordOutMapper procurementRecordOutMapper;
|
|
@Override
|
public IPage<CustomStorage> listPage(Page page, ProcurementPageDto procurementPageDto) {
|
IPage<CustomStorage> pageList = baseMapper.selectCustomStorageWarning(page, procurementPageDto);
|
|
List<CustomStorage> procurementPageDtoCopyList = pageList.getRecords();
|
// 计算待入库数量
|
// 查询采购记录已入库数量
|
List<Integer> collect = procurementPageDtoCopyList.stream().map(CustomStorage::getId).collect(Collectors.toList());
|
if(CollectionUtils.isEmpty( collect)){
|
return pageList;
|
}
|
LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
|
procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType, 3);
|
List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
|
if(CollectionUtils.isEmpty( procurementRecords)){
|
return pageList;
|
}
|
for (CustomStorage dto : procurementPageDtoCopyList) {
|
// 根据采购台账ID筛选对应的出库记录
|
List<ProcurementRecordOut> 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;
|
}
|
}
|