zouyu
13 小时以前 75b7a414ef821a07426790cb79c37811ae2f07ac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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);
                }
            }
        }
 
    }
 
}