123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- package com.fuzamei.aspect;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Arrays;
- import java.util.Date;
- import org.aspectj.lang.JoinPoint;
- import org.aspectj.lang.ProceedingJoinPoint;
- import org.aspectj.lang.annotation.After;
- import org.aspectj.lang.annotation.AfterReturning;
- import org.aspectj.lang.annotation.Around;
- import org.aspectj.lang.annotation.Aspect;
- import org.aspectj.lang.annotation.Before;
- import org.aspectj.lang.annotation.Pointcut;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import com.fuzamei.dao.BillOrderActDao;
- import com.fuzamei.dto.OrderDto;
- import com.fuzamei.dto.billInfoDto;
- import com.fuzamei.entity.BillOrderAct;
- import com.fuzamei.enums.LogTypeEnum;
- import com.fuzamei.po.LogAct;
- import com.fuzamei.service.LoggerService;
- import com.fuzamei.util.TimeStampUtil;
- @Component
- @Aspect
- public class AnnotationTest {
-
- @Autowired
- LoggerService loggerService;
- @Autowired
- BillOrderActDao billOrderActDao;
- //定义切点
- // execution意思是当某方法执行时触发。
- // 第一个 * 意思配备任何一个perform方法,是不在乎方法返回类型是什么。
- // concert.Performance是为了定位perform()方法再哪个类中。
- // .. 代表配备任何一个perform方法,不在意他的参数列表是啥。
- // @Pointcut("execution(* *.findLogActById(..))")
- // public void sayings() {}
- //
- //
- //
- // @Before("sayings()")
- // public void sayHello(JoinPoint point) {
- // System.out.println("注解类型前置通知:我还要输出参数:" + Arrays.toString(point.getArgs())); //
- // }
- //后置通知
- //开单日志记录
- @AfterReturning(pointcut="execution(* *.insertOrder(..)) && args(orderDto)")
- public void logForMakeBill(OrderDto orderDto) throws ParseException{
- System.out.println("注解类型后置通知" + orderDto);
- //获取当前时间当做用户操作的操作时间
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String dateString = formatter.format(new Date());
- //封装LogAct
- LogAct logAct = new LogAct();
- logAct.setOrderId(orderDto.getOrderId());
- logAct.setOperatorType(LogTypeEnum.ENTERING.getStateInfo());//'录入'枚举
- logAct.setOperatorTime(TimeStampUtil.dateToStamp(dateString));
- logAct.setOperatorEnterpriseId(orderDto.getOutEnterpriseId());
- logAct.setOperatorEnterpriseName(orderDto.getOutEnterprise());
- logAct.setBillTotalMoney(orderDto.getSummary());
- logAct.setPaymentEnterpriseName(orderDto.getOutEnterprise());
- //logact存入数据库
- try {
- loggerService.inputLogAct(logAct);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println("操作记录存入数据库失败,请检查日志");
- }
-
- }
- //撤销单据日志记录
- @AfterReturning(pointcut="execution(* *.cancelBill(..)) && args(billId)")
- public void logForCancelBill(String billId) throws ParseException{
- System.out.println("注解类型后置通知" + billId);
- //获取当前时间当做用户操作的操作时间
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String dateString = formatter.format(new Date());
-
- //billId临时转换成int
- int intBillId = Integer.parseInt(billId);
- //根据流转表id查询流转表信息
- BillOrderAct billOrderAct = billOrderActDao.selectByOrderActId(intBillId);
- //封装LogAct
- LogAct logAct = new LogAct();
- logAct.setOrderId(billOrderAct.getOrderId());
- logAct.setOperatorType(LogTypeEnum.REVOKE_ENTERING.getStateInfo());//'撤销录入'枚举
- logAct.setOperatorTime(TimeStampUtil.dateToStamp(dateString));
- logAct.setOperatorEnterpriseId(billOrderAct.getOwnEnterpriseId());
- logAct.setOperatorEnterpriseName(billOrderAct.getOwnEnterprise());
- logAct.setBillTotalMoney(billOrderAct.getMoney());
- logAct.setPaymentEnterpriseName(billOrderAct.getOperatorEnterprise());
- //logact存入数据库
- try {
- loggerService.inputLogAct(logAct);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println("操作记录存入数据库失败,请检查日志");
- }
- }
-
- //编辑修改单据日志记录
- @AfterReturning(pointcut="execution(* *.editBill(..)) && args(orderDto)")
- public void logForEditBill(OrderDto orderDto) throws ParseException{
- System.out.println("注解类型后置通知" + orderDto);
- //获取当前时间当做用户操作的操作时间
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String dateString = formatter.format(new Date());
- //封装LogAct
- LogAct logAct = new LogAct();
- logAct.setOrderId(orderDto.getOrderId());
- logAct.setOperatorType(LogTypeEnum.REVISE.getStateInfo());//'编辑修改'枚举
- logAct.setOperatorTime(TimeStampUtil.dateToStamp(dateString));
- logAct.setOperatorEnterpriseId(orderDto.getOutEnterpriseId());
- logAct.setOperatorEnterpriseName(orderDto.getOutEnterprise());
- logAct.setBillTotalMoney(orderDto.getSummary());
- logAct.setPaymentEnterpriseName(orderDto.getOutEnterprise());
- //logact存入数据库
- try {
- loggerService.inputLogAct(logAct);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println("操作记录存入数据库失败,请检查日志");
- }
-
- }
- // //环绕通知。注意要有ProceedingJoinPoint参数传入。
- // @Around("sayings()")
- // public void sayAround(ProceedingJoinPoint pjp) throws Throwable{
- // System.out.println("注解类型环绕通知..环绕前");
- // pjp.proceed();//执行方法
- // System.out.println("注解类型环绕通知..环绕后");
- // }
- }
|