From 2403900a306e7d510d68c28190e745a3ce308380 Mon Sep 17 00:00:00 2001 From: xiongcz Date: Tue, 13 May 2025 13:20:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(CreateTempDrawingDialog):=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=20LOV=20=E5=B1=9E=E6=80=A7=E7=9A=84=E9=80=92=E5=BD=92?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E5=92=8C=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增递归加载 LOV 子项的功能,将 LOV 属性的显示值和真实值映射保存在 rMap 中 - 重构 getLovTrueValue 方法,支持通过 LOV 子项集合获取真实值- 使用 JTreeComboBox 替代 JComboBox 展示 LOV 属性,支持多级 LOV 的展示 - 优化 LOV 属性的获取和处理逻辑,提高代码可维护性和性能 --- .../dialogs/CreateTempDrawingDialog.java | 149 ++++++++++++++---- 1 file changed, 121 insertions(+), 28 deletions(-) diff --git a/src/cn/net/connor/createTempDrawings/dialogs/CreateTempDrawingDialog.java b/src/cn/net/connor/createTempDrawings/dialogs/CreateTempDrawingDialog.java index 2ea2262..d8c7c9b 100644 --- a/src/cn/net/connor/createTempDrawings/dialogs/CreateTempDrawingDialog.java +++ b/src/cn/net/connor/createTempDrawings/dialogs/CreateTempDrawingDialog.java @@ -17,6 +17,7 @@ import java.util.regex.Pattern; import javax.mail.Folder; import javax.swing.*; +import javax.swing.tree.DefaultMutableTreeNode; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; @@ -30,6 +31,7 @@ import com.teamcenter.rac.kernel.TCComponentFolder; import com.teamcenter.rac.kernel.TCComponentForm; import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCComponentItemType; import com.teamcenter.rac.kernel.TCComponentListOfValues; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCPreferenceService; @@ -51,8 +53,12 @@ import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateIn; import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateInput; import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateOut; import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateResponse; +import com.teamcenter.soaictstubs.BooleanHolder; +import com.teamcenter.soaictstubs.ICCTItem; +import com.teamcenter.soaictstubs.StringHolder; import cn.net.connor.createTempDrawings.pojo.LovProperty; +import cn.net.connor.createTempDrawings.utils.JTreeComboBox; import cn.net.connor.createTempDrawings.utils.TCLOVUtil; public class CreateTempDrawingDialog extends JFrame implements ActionListener{ @@ -76,6 +82,7 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{ private List showPropsInfoList = new ArrayList<>(); private JButton closeButton; private JButton buildButton; + private TCComponentItemType tccomponentitemtype; // ڸʽ private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); /** @@ -94,6 +101,13 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{ * lovԶ */ private List lovPropertyList = new ArrayList<>(); + + /** + * רڴlovmap + * @key:lovʵֵlovƣ + * @Value:lovʾֵ-ʵֵ + */ + private static Map> rMap = new HashMap>(); /** @@ -357,7 +371,6 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{ String trueValue = getLovTrueValue(trueName,value,this.lovPropertyList); itemRevisionDef.stringProps.put(trueName, trueValue); } -// itemRevisionDef.stringProps.put(trueName, value); }else if (location.equals("Form")) { //˴Աʱֵݴ浽һMap // itemRevisionDef.stringProps.put(trueName, value); @@ -417,19 +430,21 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{ } else if (obj instanceof TCComponentItemRevision) { itemRev = (TCComponentItemRevision) obj; + String[] formPropInfos = {"sb6_ifls","","lov"}; + formList.add(formPropInfos); if (!setFormProperty(itemRev,formList)) { System.out.println("ʧܣ"); } - itemRev.lock(); - try { - itemRev.setStringProperty("sb6_ifls", ""); - } catch (Exception e) { - System.out.println("itemRev쳣"); - e.printStackTrace(); - }finally { - itemRev.save(); - itemRev.unlock(); - } +// itemRev.lock(); +// try { +// itemRev.setStringProperty("sb6_ifls", ""); +// } catch (Exception e) { +// System.out.println("itemRev쳣"); +// e.printStackTrace(); +// }finally { +// itemRev.save(); +// itemRev.unlock(); +// } } else if (obj instanceof TCComponentForm) { form = (TCComponentForm) obj; @@ -437,7 +452,7 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{ * form.lock(); try { if (formList.size()>0) { System.out.println("ʼ"); * for (String[] forms : formList) { if (forms.length == 3) { String tNameString * = forms[0]; String tValueString = forms[1]; String tTypeString = forms[2]; - * + * * setTCPropertyValue(form,tNameString,tValueString); } } } } catch (Exception * e) { System.out.println("쳣"); e.printStackTrace(); }finally { * form.save(); form.unlock(); } @@ -450,27 +465,47 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{ } /** - * ʵlovԼgetӦlovϣͨlovʾֵȡlovӦʵֵ - * @param configName ѡõʵ + * ʵlovԼgetӦlov - ͨlovʾֵȡlovӦʵֵ + * @param configName ʵ * @param lovShowName lovʾֵ * @param lovPropertyList2 lovԼ * @return lovʵֵ */ private String getLovTrueValue(String configName, String lovShowName, List lovPropertyList2) { String trueNameString = null; + //ͨlovԼϱȡlovʵֵ for (LovProperty lovProperty : lovPropertyList2) { String propName = lovProperty.getPropTrueName(); - if (configName.equals(propName)) { + if (configName.equals(propName)) {//ʵlovԼƥ Map lovMap = lovProperty.getLovMap(); - return lovMap.get(lovShowName); + trueNameString = lovMap.get(lovShowName); + break; } } - System.out.println("δȡlov-["+lovShowName+"]ʵֵ"); - return null; + //ͨlovϱȡlovʵֵ + if (trueNameString == null && rMap != null && rMap.size()>0){ + for (Map.Entry> entry : rMap.entrySet()){ + Map childLovMaps = entry.getValue();//ȡlovʾֵ-ʵֵ + if (childLovMaps != null && childLovMaps.size()>0){ + for (Map.Entry entry1 : childLovMaps.entrySet()){ + String showValueString = entry1.getKey(); + String realValueString = entry1.getValue(); + if (lovShowName.equals(showValueString)) { + trueNameString = realValueString; + break; + } + } + } + } + } + if (trueNameString == null) { + System.out.println("δȡlov-[" + lovShowName + "]ʵֵ"); + } + return trueNameString; } /** - * + * Ϊ * @param component * @param formList * @return @@ -686,6 +721,8 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{ } + + /** * Уԣʾ * @return @@ -771,7 +808,10 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{ this.idTextField = new JTextField(idValue); } this.revLabel = new JLabel("汾"); - String[] revs = {"S01"};//汾 +// String[] revs = {"S01"};//汾 + //οȡµİ汾 + String newRev = tccomponentitemtype.getNewRev(null); + String[] revs = {newRev}; this.revComboBox = new JComboBox(revs); // this.revComboBox.setEditable(true); @@ -902,16 +942,21 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{ System.out.println("δȡ["+name+"]õlovƣ!"); return null; } + + rMap.clear(); Map lovMap = getLOVDisplay_value(tcSession, lovName); String[] displayLovName = lovMap.keySet().toArray(new String[0]);//lovʾֵ - LovProperty lovProperty = new LovProperty(); + LovProperty lovProperty = new LovProperty();//Զlov͵ lovProperty.setPropName(name); lovProperty.setPropTrueName(trueName); lovProperty.setLov(true); lovProperty.setLovMap(lovMap); this.lovPropertyList.add(lovProperty); - JComboBox propComboBox = new JComboBox(displayLovName); +// JComboBox propComboBox = new JComboBox(displayLovName); + DefaultMutableTreeNode root = generateLovTreeNode(lovMap,rMap); + JTreeComboBox propComboBox = new JTreeComboBox(root); + GridBagConstraints gbcPropCombo = new GridBagConstraints(); @@ -970,6 +1015,47 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{ } + + + /** + * + * @param lovMap lovһ<ʾֵ-ʵֵ>Map + * @param rMap2 һlov<ʵֵ>Ӧlov + * @return + */ + private DefaultMutableTreeNode generateLovTreeNode(Map lovMap, Map> rMap2) { + // ĸڵ + DefaultMutableTreeNode root = new DefaultMutableTreeNode(" "); + + // ΪÿLOV + for (Map.Entry entry : lovMap.entrySet()) { + DefaultMutableTreeNode subTree = createLovSubTree(entry.getKey(), entry.getValue(), rMap2); + root.add(subTree); + } + + return root; + } + /** + * ݹ鴴LOV + */ + private DefaultMutableTreeNode createLovSubTree(String displayValue, String realValue, Map> rMap2) { + // ǰڵ + DefaultMutableTreeNode node = new DefaultMutableTreeNode(displayValue); + + // ȡǰڵӽڵ + Map childLovMap = rMap2.get(realValue); + + if (childLovMap != null && !childLovMap.isEmpty()) { + // Ϊÿӽڵݹ鴴 + for (Map.Entry childEntry : childLovMap.entrySet()) { + DefaultMutableTreeNode childNode = createLovSubTree(childEntry.getKey(), childEntry.getValue(), rMap2); + node.add(childNode); + } + } + + return node; + } + /** * ѡж(ҵ߼)ȡIDеĬֵ * @param selectComponent2 ѡж @@ -1007,28 +1093,35 @@ public class CreateTempDrawingDialog extends JFrame implements ActionListener{ // 滻е * return str.replaceAll("\\*", ""); } - + + /** * TC LOVֵʾֵ-ʵֵ * @param seesion + * @param lovProp lov / ʵֵ * @return * @throws TCException */ public static Map getLOVDisplay_value(TCSession seesion,String lovProp) throws TCException { Map Display_values = new HashMap(); + TCComponentListOfValues unitLov = TCLOVUtil.findLOVByName(seesion, lovProp); - if(unitLov !=null) + if(unitLov != null) { - ListOfValuesInfo listOfValues = unitLov.getListOfValues(); - String[] realval = listOfValues.getStringListOfValues(); + String[] realval = unitLov.getListOfValues().getStringListOfValues(); + String value=""; boolean flag = false; for (int i = 0; i < realval.length; i++) { - String disval = listOfValues.getDisplayableValue(realval[i]); - Display_values.put(disval, realval[i]); + String disval = unitLov.getListOfValues().getDisplayableValue(realval[i]); + Display_values.put(disval, realval[i]); + //ݹ飺lovʵֵΪlovƣȡlovʾֵ-ʵֵ + Map lovDisplay_value = getLOVDisplay_value(seesion, realval[i]); + } } + rMap.put(lovProp, Display_values); return Display_values; }