From 765cfc85ba2b223511bbbb5744e661f54944212b Mon Sep 17 00:00:00 2001 From: lijiarao Date: Tue, 28 Sep 2021 22:23:48 +0800 Subject: [PATCH] =?UTF-8?q?add=20[@CompanyNameTranslate]=E6=B3=A8=E8=A7=A3?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E6=9F=A5=E8=AF=A2=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E5=B7=B2?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jero/aspect/CompanyNameAspect.java | 114 ++++++++++++++++++ .../annotation/CompanyNameTranslate.java | 27 +++++ .../PayCompanyManagementController.java | 7 +- 3 files changed, 143 insertions(+), 5 deletions(-) create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/aspect/CompanyNameAspect.java create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/aspect/annotation/CompanyNameTranslate.java diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/aspect/CompanyNameAspect.java b/jero-boot-incoming-payment/src/main/java/com/jero/aspect/CompanyNameAspect.java new file mode 100644 index 00000000..b3b7dca8 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/aspect/CompanyNameAspect.java @@ -0,0 +1,114 @@ +package com.jero.aspect; + +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.jero.aspect.annotation.CompanyNameTranslate; +import com.jero.common.api.vo.Result; +import com.jero.common.util.oConvertUtils; +import com.jero.company.entity.PayCompanyManagement; +import com.jero.company.service.IPayCompanyManagementService; +import lombok.extern.slf4j.Slf4j; +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.aspectj.lang.reflect.MethodSignature; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +/** + * @author liJiaRao + * @date 2021-09-28 21:10 + */ +@Aspect +@Component +@Slf4j +public class CompanyNameAspect { + + @Resource + private IPayCompanyManagementService payCompanyManagementService; + + @Pointcut("@annotation(com.jero.aspect.annotation.CompanyNameTranslate)") + public void dictPointCut() { + } + @Around("dictPointCut()") + public Object arround(ProceedingJoinPoint point) throws Throwable { + MethodSignature signature = (MethodSignature) point.getSignature(); + Method method = signature.getMethod(); + + CompanyNameTranslate companyNameTranslate = method.getAnnotation(CompanyNameTranslate.class); + + long time1 = System.currentTimeMillis(); + Object result = point.proceed(); + long time2 = System.currentTimeMillis(); + log.debug("获取JSON数据 耗时:" + (time2 - time1) + "ms"); + long start = System.currentTimeMillis(); + this.parseMethodCompanyNameText(result, companyNameTranslate); + long end = System.currentTimeMillis(); + log.debug("解析注入JSON数据 耗时" + (end - start) + "ms"); + return result; + } + + private void parseMethodCompanyNameText(Object result, CompanyNameTranslate companyNameTranslate) { + if (result instanceof Result) { + Object result1 = ((Result) result).getResult(); + String jsonStr = JSONUtil.toJsonStr(result1); + if (((Result) result).getResult() instanceof IPage) { + List items = new ArrayList<>(); + for (Object record : ((IPage) ((Result) result).getResult()).getRecords()) { + + PayCompanyManagement translate = translate(record, companyNameTranslate); + items.add(translate); + } + ((IPage) ((Result) result).getResult()).setRecords(items); + } else if (JSONUtil.isJsonObj(jsonStr)) { + PayCompanyManagement translate = translate(result1, companyNameTranslate); + ((Result) result).setResult(translate); + } else { + List items = new ArrayList<>(); + for (Object o : (List) result1) { + PayCompanyManagement translate = translate(o, companyNameTranslate); + items.add(translate); + } + ((Result) result).setResult(items); + } + } + } + + private PayCompanyManagement translate(Object record, CompanyNameTranslate companyNameTranslate) { + ObjectMapper mapper = new ObjectMapper(); + String json = "{}"; + try { + //解决@JsonFormat注解解析不了的问题详见SysAnnouncement类的@JsonFormat + json = mapper.writeValueAsString(record); + } catch (JsonProcessingException e) { + log.error("json解析失败" + e.getMessage(), e); + } + JSONObject item = JSONObject.parseObject(json); + String fieldId = companyNameTranslate.fieldId(); + String fieldName = companyNameTranslate.fieldName(); + String splicing = companyNameTranslate.Splicing(); + + for (Field field : oConvertUtils.getAllFields(record)) { + + if (Objects.equals(field.getName(),fieldId)) { + String companyManagementId = String.valueOf(item.get(field.getName())); + PayCompanyManagement companyManagement = payCompanyManagementService.getById(companyManagementId); + if (Objects.equals(companyManagement.getStatus(),2)) { + String value = String.valueOf(item.get(fieldName)); + item.put(fieldName,value+splicing); + } + } + } + return JSONObject.parseObject(String.valueOf(item),PayCompanyManagement.class); + } +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/aspect/annotation/CompanyNameTranslate.java b/jero-boot-incoming-payment/src/main/java/com/jero/aspect/annotation/CompanyNameTranslate.java new file mode 100644 index 00000000..aa9a2138 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/aspect/annotation/CompanyNameTranslate.java @@ -0,0 +1,27 @@ +package com.jero.aspect.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author liJiaRao + * @date 2021-09-28 21:13 + */ +@Target({ElementType.FIELD,ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface CompanyNameTranslate { + /** + * 主字段 + */ + String fieldId() default "companyId"; + /** + * 拼接字段 + */ + String fieldName() default "companyName"; + /** + * 拼接内容 + */ + String Splicing() default " (待审核)"; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayCompanyManagementController.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayCompanyManagementController.java index 1405a2f4..17b41a88 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayCompanyManagementController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/PayCompanyManagementController.java @@ -4,15 +4,13 @@ import java.util.*; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.aspect.annotation.CompanyNameTranslate; import com.jero.common.api.vo.Result; import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.common.RoleCommon; @@ -26,13 +24,11 @@ import com.jero.common.util.PasswordUtil; import com.jero.common.util.ValidUtil; import com.jero.common.util.oConvertUtils; import com.jero.company.common.PayCompanyManagementCommon; -import com.jero.company.common.PayContactsManagementCommon; import com.jero.company.entity.PayCompanyManagement; import com.jero.company.service.IPayCompanyManagementService; import com.jero.company.service.ProjectCountService; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.service.ISysUserService; -import com.jero.pack.common.PackCommon; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import lombok.extern.slf4j.Slf4j; @@ -85,6 +81,7 @@ public class PayCompanyManagementController extends JeroController