add [@CompanyNameTranslate]注解,解决查询单位名称判断是否已审核

This commit is contained in:
lijiarao
2021-09-28 22:23:56 +08:00
parent 32fcfebbb2
commit 765cfc85ba
3 changed files with 143 additions and 5 deletions
@@ -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<Object>) result).getResult();
String jsonStr = JSONUtil.toJsonStr(result1);
if (((Result) result).getResult() instanceof IPage) {
List<PayCompanyManagement> 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<Object>) result).setResult(translate);
} else {
List<PayCompanyManagement> items = new ArrayList<>();
for (Object o : (List<Object>) result1) {
PayCompanyManagement translate = translate(o, companyNameTranslate);
items.add(translate);
}
((Result<Object>) 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);
}
}
@@ -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 " (待审核)";
}
@@ -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<PayCompanyMan
* @param req
* @return
*/
@CompanyNameTranslate(fieldId = "id")
@RequiresPermissions("company:search")
@ApiOperation(value="企业管理-分页列表查询", notes="企业管理-分页列表查询")
@GetMapping(value = "/list")