package com.ruoyi.procurementrecord.aspect; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd; import com.ruoyi.procurementrecord.mapper.CustomStorageMapper; import com.ruoyi.procurementrecord.pojo.CustomStorage; import com.ruoyi.procurementrecord.pojo.CustomStorageWarningRecord; import com.ruoyi.procurementrecord.service.CustomStorageWarningRecordService; import com.ruoyi.procurementrecord.service.ProcurementRecordService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; /** * 库存预警切面 */ @Aspect @Slf4j @Component public class CustomStorageWarningAspect { @Autowired private ProcurementRecordService procurementRecordService; @Autowired private CustomStorageWarningRecordService customStorageWarningRecordService; // @AfterReturning(value = "execution(* com.ruoyi.procurementrecord.service.impl.ProcurementRecordOutServiceImpl.stockout(*)) || execution(* com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl.updateManagementByCustom(*))") @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED) public void doAfterReturning(JoinPoint joinPoint) { Object[] args = joinPoint.getArgs(); if(Objects.nonNull(args) && args.length>0) { ProcurementRecordOutAdd procurementRecordOutAdd = new ProcurementRecordOutAdd(); BeanUtil.copyProperties(args[0],procurementRecordOutAdd); //查询库存数量 List records = procurementRecordService.listPageCopyByCustom(new Page<>(-1, -1), new CustomStorage()).getRecords(); if(CollUtil.isNotEmpty(records)){ CustomStorage customStorage = records.stream().filter(f -> Objects.equals(f.getId(), procurementRecordOutAdd.getId())).findFirst().orElse(new CustomStorage()); //判断库存是否到达预警值 if(ObjectUtils.anyNotNull(customStorage.getInboundNum0(),customStorage.getWarnNum())&&customStorage.getInboundNum0().compareTo(customStorage.getWarnNum())<0){ CustomStorageWarningRecord customStorageWarningRecord = new CustomStorageWarningRecord(); customStorageWarningRecord.setCustomStorageId(customStorage.getId()); customStorageWarningRecordService.saveRecord(customStorageWarningRecord); } } } } }