@AfterReturning(
      value = "@annotation(com.kcp.platform.common.log.annotation.Log)",
      returning = "returnVal")
  public void logAfterReturning(JoinPoint pjp, Object returnVal) throws Throwable {
    try {
      if (pjp.toLongString().equals(SqlContextHolder.getJoinPoint())) {
        MethodSignature joinPointObject = (MethodSignature) pjp.getSignature();
        Method method = joinPointObject.getMethod();
        MethodSysLogDefinition definition = parser.parseLogAnnotation(method);

        String logType = definition.getType();
        String moduleName = definition.getModuleName();
        String operateDesc = definition.getOperateDesc();
        String operateContent = SqlContextHolder.getSql();
        if (definition.isUseSpel()) {
          /** 对日志描述和日志备注加入SPEL支持 */
          LogOperationContext context =
              getOperationContext(definition, method, pjp.getArgs(), pjp.getClass());
          operateDesc = context.desc();
        }
        Logger.getInstance().addSysLog(logType, operateContent, moduleName, operateDesc);
        SqlContextHolder.clear();
      }
    } catch (Exception e) {
      logger.error("记录系统操作日志失败", e);
    }
  }
 @Before(value = "execution(* com.kcp*..*Service.*(..))")
 public void clearBeforeExcute(JoinPoint pjp) {
   if (StringUtils.isEmpty(SqlContextHolder.getJoinPoint())) {
     // 清空sql上下文信息
     SqlContextHolder.clear();
     SqlContextHolder.setJoinPoint(pjp.toLongString());
   }
 }
 @AfterThrowing(value = "execution(* com.kcp*..*Service.*(..))", throwing = "ex")
 public void logAfterThrowing(JoinPoint pjp, Exception ex) {
   SqlContextHolder.clear();
 }
 @AfterReturning(value = "execution(* com.kcp*..*Service.*(..))")
 public void clearAfterReturning(JoinPoint pjp) throws Throwable {
   if (pjp.toLongString().equals(SqlContextHolder.getJoinPoint())) {
     SqlContextHolder.clearJoinPoint();
   }
 }