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<CustomStorage> 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);
|
}
|
}
|
}
|
|
}
|
|
}
|