【注解】注解实现更新商品总库存数-实例

注解实现更新库存总数

1.serviceImpl添加注解

在这里插入图片描述

2.定义注解接口

在这里插入图片描述

3.切面编程-实现注解接口

在这里插入图片描述

代码:

UpdateStockAspect.java


package com.tn.grms.stock.aspect;
import com.tn.grms.common.core.domain.ServiceResponse;
import com.tn.grms.stock.domain.GrmsStockRecordItem;
import com.tn.grms.stock.service.IGrmsProductService;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 数据过滤处理
 *
 * @author  panb
 */
@Aspect
@Component
public class UpdateStockAspect
{
    @Autowired
    private IGrmsProductService iGrmsProductService;

    // Service层切点
    @Pointcut("@annotation(com.tn.grms.common.annotation.UpdateStockAnnotation)")
    public void servicePointcut() {}

    @Around("servicePointcut()")
    public Object  doAround(ProceedingJoinPoint jointPoint) throws Throwable {
        // 获取方法所有参数及其类型
        Object[] args = jointPoint.getArgs();
        List<GrmsStockRecordItem> itemList = new ArrayList<>();
        for (Object obj :args){
            if(obj instanceof List && !((List<?>)obj).isEmpty() && ((List<?>)obj).get(0) instanceof GrmsStockRecordItem){
                itemList  =(List<GrmsStockRecordItem>) obj;
            }
        }
        // 执行目标方法
        Object object= jointPoint.proceed();

        ServiceResponse response = (ServiceResponse)object;
        if(response.ok()){
            //更新实时库存
            if(!CollectionUtils.isEmpty(itemList)){
                iGrmsProductService.updateProductTotalStock(itemList);
            }
        }
        return object;
    }
}

更新商品总库存

在这里插入图片描述
service.java

    public ServiceResponse updateProductTotalStock(List<GrmsStockRecordItem> list);

serviceImpl.java

    @Override
    public ServiceResponse updateProductTotalStock(List<GrmsStockRecordItem> list) {
        for (GrmsStockRecordItem item:list) {
            grmsProductMapper.updateGrmsProductStock(item.getProCode());
        }
        return ServiceResponse.success();
    }

mapper.java

    public int updateGrmsProductStock(@Param("proCode")String proCode);

mapper.xml

    <update id="updateGrmsProductStock" parameterType="String">
        UPDATE tn_grms_product set total_inventory =
               (
                   SELECT COALESCE( SUM( remain_quantity ),0 ) FROM tn_grms_stock_record a, tn_grms_stock_record_item b
                   where a.status=1  and b.status =1 and b.pro_code = #{proCode} and a.batch_no = b.batch_no
               )
        where pro_code = #{proCode}
    </update>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋大米Pro

感谢小主大赏,留言可进互助群~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值