From 5849e146a6caf63455b6d6474d6e158c9cf17097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=82=85=E5=93=A5?= Date: Wed, 22 Dec 2021 17:03:02 +0800 Subject: [PATCH] =?UTF-8?q?V2.1.0=20=E6=94=AF=E6=8C=81=E7=94=9F=E6=88=90?= =?UTF-8?q?=E7=88=B6=E7=B1=BB=E5=AF=B9=E8=B1=A1=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GenerateVo2DtoImpl.java | 46 +++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/guide-idea-plugin-vo2dto/src/main/java/cn/bugstack/guide/idea/plugin/domain/service/impl/GenerateVo2DtoImpl.java b/guide-idea-plugin-vo2dto/src/main/java/cn/bugstack/guide/idea/plugin/domain/service/impl/GenerateVo2DtoImpl.java index 825b3ba..746ca7a 100644 --- a/guide-idea-plugin-vo2dto/src/main/java/cn/bugstack/guide/idea/plugin/domain/service/impl/GenerateVo2DtoImpl.java +++ b/guide-idea-plugin-vo2dto/src/main/java/cn/bugstack/guide/idea/plugin/domain/service/impl/GenerateVo2DtoImpl.java @@ -19,6 +19,7 @@ import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.PsiShortNamesCache; +import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; import java.util.*; @@ -108,22 +109,23 @@ protected SetObjConfigDO getSetObjConfigDO(GenerateContext generateContext) { repair += psiClass.getName().length(); } - Pattern setMtd = Pattern.compile(setRegex); - // 获取类的set方法并存放起来 List paramList = new ArrayList<>(); Map paramMtdMap = new HashMap<>(); - PsiMethod[] methods = psiClass.getMethods(); - for (PsiMethod method : methods) { - String methodName = method.getName(); - if (Pattern.matches(setRegex, methodName)) { - // 替换属性 - String param = setMtd.matcher(methodName).replaceAll("$1").toLowerCase(); - - // 保存获取的属性信息 - paramMtdMap.put(param, methodName); - paramList.add(param); + + List psiClassLinkList = getPsiClassLinkList(psiClass); + for (PsiClass psi : psiClassLinkList) { + PsiMethod[] methods = psi.getMethods(); + for (PsiMethod method : methods) { + String methodName = method.getName(); + if (Pattern.matches(setRegex, methodName)) { + // 替换属性 + String param = setMtd.matcher(methodName).replaceAll("$1").toLowerCase(); + // 保存获取的属性信息 + paramMtdMap.put(param, methodName); + paramList.add(param); + } } } @@ -138,23 +140,29 @@ protected GetObjConfigDO getObjConfigDOByClipboardText(GenerateContext generateC // 按照默认规则提取信息,例如:UserDto userDto String[] split = systemClipboardText.split("\\s"); - assert 2 == split.length; + if (split.length < 2) { + return new GetObjConfigDO(null, null, new HashMap<>()); + } String clazzName = split[0].trim(); String clazzParam = split[1].trim(); // 获取类 PsiClass[] psiClasses = PsiShortNamesCache.getInstance(generateContext.getProject()).getClassesByName(clazzName, GlobalSearchScope.projectScope(generateContext.getProject())); + PsiClass psiClass = psiClasses[0]; + List psiClassLinkList = getPsiClassLinkList(psiClass); Map paramMtdMap = new HashMap<>(); - PsiMethod[] methodsDTO = psiClasses[0].getMethods(); Pattern getM = Pattern.compile(getRegex); - for (PsiMethod method : methodsDTO) { - String methodName = method.getName(); - if (Pattern.matches(getRegex, methodName)) { - String param = getM.matcher(methodName).replaceAll("$1").toLowerCase(); - paramMtdMap.put(param, methodName); + for (PsiClass psi : psiClassLinkList) { + PsiMethod[] methodsDTO = psi.getMethods(); + for (PsiMethod method : methodsDTO) { + String methodName = method.getName(); + if (Pattern.matches(getRegex, methodName)) { + String param = getM.matcher(methodName).replaceAll("$1").toLowerCase(); + paramMtdMap.put(param, methodName); + } } }