Parcourir la source

发票管理列表

dengsixing il y a 3 ans
Parent
commit
ff25738913

+ 2 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/service/impl/InvoiceServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fdkankan.manage.service.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.annotation.Dict;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.manage.entity.Invoice;
 import com.fdkankan.manage.mapper.IInvoiceMapper;
@@ -21,6 +22,7 @@ import org.springframework.stereotype.Service;
 @Service
 public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> implements IInvoiceService {
 
+    @Dict
     @Override
     public Page<InvoiceVO> pageInvoice(InvoicePageParamVO param) {
         return baseMapper.pageInvoice(new Page(param.getPageNum(), param.getPageSize()), param);

+ 5 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/vo/InvoiceVO.java

@@ -1,5 +1,7 @@
 package com.fdkankan.manage.vo;
 
+import com.fdkankan.common.annotation.Dict;
+import com.fdkankan.common.constant.InvoiceType;
 import java.util.Date;
 import lombok.Data;
 
@@ -39,8 +41,11 @@ public class InvoiceVO {
     /**
      * 发票类型 2-普通发票, 3-专用发票
      */
+    @Dict(enumClazz = InvoiceType.class)
     private Integer type;
 
+    private String typeStr;
+
     /**
      * 发票抬头
      */

+ 28 - 0
4dkankan-common/src/main/java/com/fdkankan/common/annotation/Dict.java

@@ -0,0 +1,28 @@
+package com.fdkankan.common.annotation;
+
+import com.fdkankan.common.constant.CommonStatus;
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * <p>
+        此注解用于对方法返回对象做字典转换
+        使用方法:
+        1、在你需要做字段转换的service函数或者dao函数上添加此注解
+        2、在你的返回的数据模型类中需要做字典转换的字段上添加此注解,并且enumClazz值为你对应的字典枚举类
+            注意你的字段必须要有一个相应的字段作为接收字段,比如你的字段名为type,那你必须有个typeStr作为接收字段
+ * </p>
+ * @author dengsixing
+ * @date 2022/6/2
+ * @param null
+ * @return null
+ **/
+@Target({ElementType.FIELD, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface Dict {
+    Class<?> enumClazz() default CommonStatus.class;
+}

+ 92 - 0
4dkankan-common/src/main/java/com/fdkankan/common/interceptor/DictAspect.java

@@ -0,0 +1,92 @@
+package com.fdkankan.common.interceptor;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.annotation.Dict;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Objects;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+/**
+ * 记录注册用户操作记录、异常记录
+ */
+@Slf4j
+@Aspect
+@Order(100)
+@Component
+public class DictAspect {
+
+	@Pointcut("@annotation(com.fdkankan.common.annotation.Dict)")
+	public void dictAspect() {
+	}
+
+	@AfterReturning(pointcut = "dictAspect()", returning = "res")
+	public void afterReturning(JoinPoint joinPoint, Object res) throws Exception {
+		if(Objects.isNull(res)){
+			return;
+		}
+		if(res instanceof Page){
+			Page page = (Page)res;
+			List records = page.getRecords();
+			if(CollUtil.isEmpty(records)){
+				return;
+			}
+			records.stream().forEach(obj->{
+				try {
+					this.handler(obj);
+				} catch (Exception e) {
+					log.info("类型转换名称报错", e);
+				}
+			});
+		}else if(res instanceof Iterable){
+			((Iterable<?>) res).forEach(obj ->{
+				try {
+					this.handler(obj);
+				} catch (Exception e) {
+					log.info("类型转换名称报错", e);
+				}
+			});
+		}else{
+			this.handler(res);
+		}
+	}
+
+	private void handler(Object obj) throws Exception{
+		Class<?> clazz = obj.getClass();
+		Field[] declaredFields = clazz.getDeclaredFields();
+		for (Field field : declaredFields) {
+			Dict annotation = field.getAnnotation(Dict.class);
+			if(Objects.isNull(annotation)){
+				continue;
+			}
+			String name = field.getName();
+			Field strField = clazz.getDeclaredField(name + "Str");
+			if(Objects.isNull(strField)){
+				continue;
+			}
+			field.setAccessible(true);
+			Class<?> enumClazz = annotation.enumClazz();
+			Method getCode = enumClazz.getMethod("code");
+			Method getMessage = enumClazz.getMethod("message");
+			Object[] enumConstants = enumClazz.getEnumConstants();
+			for (Object enumConstant : enumConstants) {
+				Object code = getCode.invoke(enumConstant);
+				if(code.equals(field.get(obj))){
+					Object message = getMessage.invoke(enumConstant);
+					strField.setAccessible(true);
+					strField.set(obj, message);
+				}
+			}
+
+		}
+	}
+
+}

4dkankan-common/src/main/java/com/fdkankan/common/aop/FeignInterceptor.java → 4dkankan-common/src/main/java/com/fdkankan/common/interceptor/FeignInterceptor.java


4dkankan-common/src/main/java/com/fdkankan/common/aop/VisitLogInterceptor.java → 4dkankan-common/src/main/java/com/fdkankan/common/interceptor/VisitLogInterceptor.java