diff --git a/plugin.xml b/plugin.xml index dd2af2b..9df6b01 100644 --- a/plugin.xml +++ b/plugin.xml @@ -9,6 +9,18 @@ id="com.langtech.plm.performancemanagement.commands.category" name="Sample Category"> + + + + + + + + + + + + + + @@ -88,9 +112,29 @@ id="com.langtech.plm.template.TemplateHandler" mnemonic="S"> + + + + + + + + + + + textMap = new HashMap<>(); + private TCSession session; + private JTable table; + private String[] header; + private ArrayList gsPrefTopLine; + private LinkedHashMap gsPrefMap = new LinkedHashMap(); + private LinkedHashMap fieldsMap = new LinkedHashMap(); + private LinkedHashMap cfdjPref = new LinkedHashMap(); + private LinkedHashMap lovPositionMap = new LinkedHashMap(); + private LinkedHashMap positionFieldMap = new LinkedHashMap(); + private LinkedHashMap widtheMap = new LinkedHashMap(); + //public static final int[] HEADERWIDTH = new int[] { 50, 100, 200, 200, 100, 100, 80, 80, 100, 150, 150, 150, 150,150, 150, 150, 150, 150, 150 }; + private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + private DefaultTableModel dtm1; + private JButton yyButton = new JButton("Ӧ"); + private JButton gbButton = new JButton("ر"); + private JComboBox cfdJComboBox = new JComboBox(); + private DateButton cfsjButton; + private JButton tzsjButton = new JButton("ʱ"); + private static ArrayList dateConnList = new ArrayList(); + private String type; + private String id; + private ArrayList canWriteColume = new ArrayList(); + + public RWFPDialog(TCSession session,String type,String id) { + // TODO Auto-generated constructor stub + this.session = session; + this.type = type; + this.id = id; + initUI(); + } + + public void initUI() { + // TODO Auto-generated method stub + this.setTitle(""); + this.setLayout(new BorderLayout()); + + String[] cfdj = session.getPreferenceService().getStringValues("Connor_ChangeTaskForm_TriggerLevelMapping"); + if (cfdj == null || cfdj.length <= 0) { + MessageBox.post("ѡConnor_ChangeTaskForm_TriggerLevelMapping", "ʾ ", MessageBox.INFORMATION); + return; + } + + for (int i = 0; i < cfdj.length; i++) { + String[] split = cfdj[i].split("="); + cfdjPref.put(split[0],split[1]); + cfdJComboBox.addItem(split[0]); + } + + //ȡѡƥ + String[] fields = session.getPreferenceService().getStringValues("Connor_ECRECNForm_Datbase_Config"); + if (fields == null || fields.length <= 0) { + MessageBox.post("ѡConnor_ECRECNForm_Datbase_Config", "ʾ ", MessageBox.INFORMATION); + return; + } + + for (int i = 0; i < fields.length; i++) { + if(fields[i].contains(type)) { + String[] split = fields[i].split("\\|"); + if(split.length == 2) { + String[] split2 = split[1].split(";"); + for (int j = 0; j < split2.length; j++) { + String[] split3 = split2[j].split("="); + positionFieldMap.put(split3[0],j); + if(split3.length == 3) { + fieldsMap.put(split3[0],split3[1]); + if(split3[2].contains("%")) { + String[] split4 = split3[2].split("%"); + widtheMap.put(j, Integer.parseInt(split4[0])); + canWriteColume.add(j); + }else { + widtheMap.put(j, Integer.parseInt(split3[2])); + } + + }else if(split3.length == 4) { + fieldsMap.put(split3[0],split3[1]); + System.out.println("split3[2]========"+split3[2]); + if(split3[2].contains("%")) { + String[] split4 = split3[2].split("%"); + widtheMap.put(j, Integer.parseInt(split4[0])); + System.out.println("split4[0]========"+split4[0]); + canWriteColume.add(j); + }else { + widtheMap.put(j, Integer.parseInt(split3[2])); + } + lovPositionMap.put(j,split3[3]); + } + } + } + + } + } + + System.out.println("canWriteColume====="+canWriteColume.size()); + System.out.println("fieldsMap====="+fieldsMap); + System.out.println("positionMap====="+lovPositionMap); + System.out.println("widtheMap====="+widtheMap); + Collection valuesCollection = fieldsMap.values(); + + // תΪ + header = valuesCollection.toArray(new String[0]); + + JPanel topPanel = getTopPanel(); + + JScrollPane pane = getTablePanel(); + pane.setBorder(BorderFactory.createTitledBorder("")); +// JPanel btnPanel = getRightPanel(); + + JPanel bottomPane = getBottomPanel(); + this.add(topPanel, BorderLayout.NORTH); + this.add(pane, BorderLayout.CENTER); + this.add(bottomPane, BorderLayout.SOUTH); + this.createActionEvent(); + this.pack(); + this.setPreferredSize(new Dimension(1850, 1000)); + this.validate(); + this.setVisible(true); + // ôĻ +// Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize(); +// int x = (int) screensize.getWidth() / 2 - window.getWidth() / 2; +// int y = (int) screensize.getHeight() / 2 - window.getHeight() / 2; + this.setLocationRelativeTo(null); + + //п + TableColumnModel colModel = table.getColumnModel(); + for (Entry map : widtheMap.entrySet()) { + colModel.getColumn(map.getKey()).setPreferredWidth(map.getValue()); + } + + + + + String[] value = session.getPreferenceService().getStringValues("LD_dbinfo2"); + + if (value == null || value.length == 0) { + MessageBox.post("ѡLD_dbinfo2顣", "ʾ", 2); + return; + } else { + Collections.addAll(dateConnList, value); + } + + Set keySet = fieldsMap.keySet(); + String fieldsSql = ""; + for (String string : keySet) { + fieldsSql += string + ","; + } + fieldsSql = fieldsSql.substring(0, fieldsSql.length() - 1); + System.out.println("fieldsSql=========="+fieldsSql); + String sqlString = "SELECT " + fieldsSql + " FROM LY_CHANGETASSKFORM_DETAILS where ID='" + id + "'"; + System.out.println(sqlString); + Connection conn = getConn(); + PreparedStatement stmt = null; + try{ + stmt = conn.prepareStatement(sqlString); + ResultSet result = stmt.executeQuery(); + while (result.next()) { + ArrayList arList = new ArrayList(); + for (int i = 0; i < fieldsMap.size(); i++) { + System.out.println("result.getString(i+1)==========="+result.getString(i+1)); + arList.add(result.getString(i+1) == null? result.getString(i+1) : validateAndFormatDate(result.getString(i+1))); + } + dtm1.addRow(arList.toArray(new Object[0])); + } + + } catch (SQLException e1) { + e1.printStackTrace(); + } + + try { + if(stmt != null) { + stmt.close(); + } + if(conn != null) { + conn.close(); + } + + + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + + public void createActionEvent() { + this.yyButton.addActionListener(this); + this.gbButton.addActionListener(this); + this.tzsjButton.addActionListener(this); + } + + // ѯ + private JPanel getTopPanel() { + // TODO Auto-generated method stub + JPanel topPanel = new JPanel(); + topPanel.setLayout(new PropertyLayout()); + + topPanel.add("1.1.left.center", new JLabel("ȼ ")); + topPanel.add("1.2.left.center",cfdJComboBox); + topPanel.add("1.3.left.center", new JLabel(" ʱ ")); + + cfsjButton = new DateButton(null, "yyyy-MM-dd", false, false, false); + cfsjButton.setDate("δ"); + + topPanel.add("1.4.left.center", cfsjButton); + topPanel.add("1.5.left.center", new JLabel(" ")); + topPanel.add("1.6.left.center", tzsjButton); + topPanel.add("2.1.left.center", new JLabel(" ")); + return topPanel; + } + + // ѯ + private JPanel getBottomPanel() { + // TODO Auto-generated method stub + JPanel bottomPanel = new JPanel(); + bottomPanel.setLayout(new PropertyLayout()); + bottomPanel.add("1.1.left.center", new JLabel(" ")); + bottomPanel.add("1.2.left.center", yyButton); + bottomPanel.add("1.3.left.center", new JLabel(" ")); + bottomPanel.add("1.4.left.center", gbButton); + return bottomPanel; + } + + private JScrollPane getTablePanel() { + // TODO Auto-generated method stub + table = getjTable(null, null, header, null, false); + table.setRowHeight(30); +// table.setPreferredSize(new Dimension(1500,400)); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // ñԶģʽΪرԶ +// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);//JTableпбݵĴСе +// table.setPreferredSize(new Dimension(1200,400)); + JScrollPane pane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, + JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); + for (Entry map : lovPositionMap.entrySet()) { + JComboBox jComboBox = new JComboBox(); + String value = map.getValue(); + if(value.contains(",")) { + String[] split = value.split(","); + for (int i = 0; i < split.length; i++) { + jComboBox.addItem(split[i]); + } + }else { + jComboBox.addItem(value); + } + table.getColumnModel().getColumn(map.getKey()).setCellEditor(new DefaultCellEditor(jComboBox)); + } + pane.setPreferredSize(new Dimension(1800, 850)); + pane.setViewportView(table);// ΪscrollPaneָʾΪtable + return pane; + } + + /*** + * Jtableͨ÷ + * + * @param partsTable + * @param dtm + * @param titleNames + * @param values + * @return + */ + public JTable getjTable(JTable partsTable, DefaultTableModel dtm, Object[] titleNames, Object[][] values, + Boolean isTable2) { +// int simpleLen = 100; +// int totleLen = 1000; + if (partsTable == null) { + partsTable = new JTable(this.getTableModel(dtm, titleNames, values)); + partsTable.setRowHeight(20); + partsTable.getTableHeader().setReorderingAllowed(false); + partsTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + RowSorter sorter = new TableRowSorter(partsTable.getModel()); + partsTable.setRowSorter(sorter); +// for (int i = 0; i < titleNames.length; i++) { +// if(i==2) { +// partsTable.getColumnModel().getColumn(i).setPreferredWidth(200); +// }else { +// partsTable.getColumnModel().getColumn(i).setPreferredWidth(120); +// } +// +// } + + } + return partsTable; + } + + public DefaultTableModel getTableModel(DefaultTableModel dtm, Object[] titleNames, Object[][] values) { + + dtm1 = null; + if (dtm == null) { + dtm1 = new DefaultTableModel(values, titleNames) { + @Override + public boolean isCellEditable(int row, int column) { + if(canWriteColume.size() > 0) { + for (int i = 0; i < canWriteColume.size(); i++) { + if(canWriteColume.get(i) == column) { + System.out.println("row=========="+row); + return true; + } + } + } + return false; + + } + }; + } + return dtm1; + } + + @Override + public void actionPerformed(ActionEvent e) { + // TODO Auto-generated method stub + Object source = e.getSource(); + System.out.println("source==>+" + source); + + if (source.equals(this.gbButton)) { + dispose(); + } + else if(source.equals(this.yyButton)){ + // + Connection conn = getConn(); + PreparedStatement stmt = null; + for(int i = 0; i < table.getRowCount(); i++){ + StringBuilder updateSql = new StringBuilder(); + updateSql.append("update LY_CHANGETASSKFORM_DETAILS set "); + for (Entry map : positionFieldMap.entrySet()) { + updateSql.append(map.getKey()); + String valueAt = (String)table.getValueAt(i,map.getValue()); + if(valueAt == null || valueAt.isEmpty()) { + updateSql.append("="); + updateSql.append("null,"); + }else { + updateSql.append("='"); + updateSql.append(table.getValueAt(i,map.getValue())); + updateSql.append("',"); + } + } + //ȥһ, + updateSql.deleteCharAt(updateSql.length() - 1); + updateSql.append(" where ID='"+id+"' and XH='"+table.getValueAt(i,0)+"'"); + try { + stmt = conn.prepareStatement(updateSql.toString()); + System.out.println("updateSql========="+updateSql.toString()); + stmt.execute(); + } catch (SQLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + } + + + try { + if(stmt != null) { + stmt.close(); + } + if(conn != null) { + conn.close(); + } + + + } catch (SQLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + }else if(source.equals(this.tzsjButton)){ + gsPrefTopLine = new ArrayList(); + String selectedItem = (String)cfdJComboBox.getSelectedItem(); + if(selectedItem == null || selectedItem.isEmpty()) { + MessageBox.post("ѡ񴥷ȼ", "ʾ", 2); + return; + } + + Date date = cfsjButton.getDate(); + + if(date == null) { + MessageBox.post("ѡ񴥷ʱ䣡", "ʾ", 2); + return; + } + String cfsjDate = dateFormat.format(date); + String pref = cfdjPref.get(selectedItem); + if(pref == null || pref.isEmpty()) { + MessageBox.post("δôȼصѡ", "ʾ", 2); + return; + } + + String[] calculateTime = session.getPreferenceService().getStringValues(pref); + if (calculateTime == null || calculateTime.length <= 0) { + MessageBox.post("ѡ"+pref+"", "ʾ ", MessageBox.INFORMATION); + return; + } + + for (int i = 0; i < calculateTime.length; i++) { + String[] split = calculateTime[i].split("\\|"); + if(i == 0) { + + for (int j = 0; j < split.length; j++) { + gsPrefTopLine.add(split[j]); + } + }else { + gsPrefMap.put(split[0],calculateTime[i]); + } + + } + + System.out.println(positionFieldMap+"==================positionFieldMap"); + System.out.println("gsPrefTopLine----------------"+gsPrefTopLine.size()); + Integer xh = positionFieldMap.get(gsPrefTopLine.get(0)); + //table ʼ + for(int i = 0; i < table.getRowCount(); i++){ + String xhStr = table.getValueAt(i, xh).toString(); + String gsStr = gsPrefMap.get(xhStr); + if(gsStr != null && !gsStr.isEmpty() ) { + String[] split = gsStr.split("\\|"); + for (int j = 1; j < gsPrefTopLine.size(); j++) { + //ֵ + System.out.println("gsPrefTopLine.get(j)========"+gsPrefTopLine.get(j)); + Integer colume = positionFieldMap.get(gsPrefTopLine.get(j)); + if(colume != null) { + System.out.println(positionFieldMap.get(gsPrefTopLine.get(j))+"=================positionFieldMap.get(gsPrefTopLine.get(j))"); + //ʽ + String gs = split[j]; + System.out.println("gs========"+gs); + if(gs.equals("N")) { + table.setValueAt(cfsjDate,i, colume); + }else { + String[] split2 = gs.split("N"); + String time = calculateDate(cfsjDate, Integer.parseInt(split2[1])); + System.out.println("time============"+time); + table.setValueAt(time,i, colume); + } + } + + + } + } + + } + //Ӧðť + yyButton.doClick(); + MessageBox.post("ʱɣ", "ʾ", 2); + } + + } + + // ȡݿ + public static Connection getConn() { + Connection conn = null; + try { + conn = DbPool.getConnection(dateConnList.get(0), dateConnList.get(1)); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return conn; + } + + public static String calculateDate(String dateString, int daysToAdd) { + // ڸʽ + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + // ַ + LocalDate date; + try { + date = LocalDate.parse(dateString, formatter); + } catch (DateTimeParseException e) { + throw new IllegalArgumentException("Invalid date format. Please use yyyy-MM-dd.", e); + } + + // ӻ + LocalDate resultDate = date.plusDays(daysToAdd); + + // ʽΪַ + return resultDate.format(formatter); + } + + public String validateAndFormatDate(String input) { + // ڸʽ + DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"); + DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + try { + // Խʱַ + LocalDateTime dateTime = LocalDateTime.parse(input, inputFormatter); + + // תΪֻڵLocalDate + LocalDate date = dateTime.toLocalDate(); + + // ʽΪַ + return date.format(outputFormatter); + } catch (DateTimeParseException e) { + // ʧܣ˵벻ָʽԭʼַ + return input; + } + } + +} \ No newline at end of file diff --git a/src/com/langtech/plm/bg/RWFPHandler.java b/src/com/langtech/plm/bg/RWFPHandler.java new file mode 100644 index 0000000..facdf92 --- /dev/null +++ b/src/com/langtech/plm/bg/RWFPHandler.java @@ -0,0 +1,66 @@ +package com.langtech.plm.bg; + +import javax.swing.SwingUtilities; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.teamcenter.rac.aif.AbstractAIFUIApplication; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.TCComponentItem; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + + +public class RWFPHandler extends AbstractHandler { + + private AbstractAIFUIApplication app; + private TCSession session; +// private InterfaceAIFComponent target; + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + app = AIFUtility.getCurrentApplication(); + session = (TCSession) app.getSession(); +// target = app.getTargetComponent(); +// if (target == null || !(target instanceof TCComponentFolder)) { +// MessageBox.post(app.getDesktop(), "ѡϵͳĿ¼ļне룡", "λѡ", MessageBox.WARNING); +// return null; +// } + InterfaceAIFComponent target = app.getTargetComponent(); + if(target instanceof TCComponentItem) { + TCComponentItem item = (TCComponentItem)target; + String type = item.getType(); + try { + String id = item.getStringProperty("item_id"); + + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + try { + new RWFPDialog(session,type,id); + //d.setModal(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + }else { + MessageBox.post(app.getDesktop(), "ѡȷ", "ʾ", MessageBox.WARNING); + return null; + } + + + return null; + } + +} diff --git a/src/com/langtech/plm/createProjectStruct/CreateProjectStructDialog.java b/src/com/langtech/plm/createProjectStruct/CreateProjectStructDialog.java index 9c900c7..3a84a9f 100644 --- a/src/com/langtech/plm/createProjectStruct/CreateProjectStructDialog.java +++ b/src/com/langtech/plm/createProjectStruct/CreateProjectStructDialog.java @@ -94,7 +94,7 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{ } } } - nameLabel = new JLabel("Ʒͼţ"); + nameLabel = new JLabel("Ŀƣ"); nameField = new JTextField(); nameField.setPreferredSize(new Dimension(200,30)); JPanel topPanel = new JPanel(); @@ -215,7 +215,7 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{ public void actionPerformed(ActionEvent e) { String name = nameField.getText(); if (name.isEmpty()) { - MessageBox.post("дƷͼţ", "ʾ ", MessageBox.INFORMATION); + MessageBox.post("дĿƣ", "ʾ ", MessageBox.INFORMATION); } else { TCComponentFolderType folderType; try { diff --git a/src/com/langtech/plm/mpart/MpartDialog.java b/src/com/langtech/plm/mpart/MpartDialog.java index a0ea2d7..730951f 100644 --- a/src/com/langtech/plm/mpart/MpartDialog.java +++ b/src/com/langtech/plm/mpart/MpartDialog.java @@ -467,6 +467,9 @@ public class MpartDialog extends JFrame implements ActionListener { } // ly6_homemadeStatus mRev.setProperty("ly6_homemadeStatus", ""); + String personId = tm_part.getValueAt(i, 8).toString(); + System.out.println("personId========"+personId); + mRev.setProperty("ly6_assignUser", personId == null || personId.isEmpty() ? "" : personId); // if (workflowTemplate != null || !workflowTemplate.isEmpty()) { CreateProcess(session, item, workflowTemplate); @@ -593,6 +596,7 @@ public class MpartDialog extends JFrame implements ActionListener { String newRev = type.getNewRev(null); TCComponentItem item = type.create(newID, newRev, typesMap.get(eType), "", "", null); + TCComponentItemRevision mRev = item.getLatestItemRevision(); item.setProperty("ly6_company", tm_part.getValueAt(i, 7).toString()); if (ly6_sequenceNum.isEmpty() || ly6_sequenceNum.equals("0")) { item.setProperty("ly6_sequenceNum", "01"); @@ -613,6 +617,104 @@ public class MpartDialog extends JFrame implements ActionListener { delItem2.delete(); } + + // Ըֵ + String fiedsStr = fieldsMap.get(eType + ":" + typesMap.get(eType)); + System.out.println("fiedsStr===================" + fiedsStr); + if (fiedsStr != null && !fiedsStr.isEmpty()) { + if (fiedsStr.contains(",")) { + String[] split = fiedsStr.split(","); + System.out.println("split.length===========" + split.length); + for (int j = 0; j < split.length; j++) { + // :ָ + String[] split2 = split[j].split(":"); + System.out.println("split2.length=================" + split2.length); + if (split2.length == 2) { + // .ָ + String[] split3 = split2[0].split("\\."); + System.out.println("split3.length=================" + split3.length); + if (split3.length == 2) { + if (split3[0].equals("item")) { + String[] split4 = split2[1].split("\\."); + if (split4.length == 2) { + if (split4[0].equals("item")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + + item.setProperty(split4[1], eItem.getProperty(split3[1])); + } else if (split4[0].equals("rev")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + mRev.setProperty(split4[1], eItem.getProperty(split3[1])); + } + } + + } else if (split3[0].equals("rev")) { + String[] split4 = split2[1].split("\\."); + if (split4.length == 2) { + if (split4[0].equals("item")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + item.setProperty(split4[1], rev.getProperty(split3[1])); + } else if (split4[0].equals("rev")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + System.out.println("value==========================="+rev.getProperty(split3[1])); + mRev.setProperty(split4[1], rev.getProperty(split3[1])); + } + } + } + } + } + } + } else { + + // :ָ + String[] split2 = fiedsStr.split(":"); + if (split2.length == 2) { + // .ָ + String[] split3 = split2[0].split("\\."); + System.out.println("split3.length=================" + split3.length); + if (split3.length == 2) { + if (split3[0].equals("item")) { + String[] split4 = split2[1].split("\\."); + if (split4.length == 2) { + if (split4[0].equals("item")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + item.setProperty(split4[1], eItem.getProperty(split3[1])); + } else if (split4[0].equals("rev")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + mRev.setProperty(split4[1], eItem.getProperty(split3[1])); + } + } + + } else if (split3[0].equals("rev")) { + String[] split4 = split2[1].split("\\."); + if (split4.length == 2) { + if (split4[0].equals("item")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + item.setProperty(split4[1], rev.getProperty(split3[1])); + } else if (split4[0].equals("rev")) { + System.out.println("split4[1]========" + split4[1] + + "split3[1]======" + split3[1]); + mRev.setProperty(split4[1], rev.getProperty(split3[1])); + } + } + } + } + } + } + } + // ly6_homemadeStatus + mRev.setProperty("ly6_homemadeStatus", ""); + String personId = tm_part.getValueAt(i, 8).toString(); + System.out.println("personId========"+personId); + mRev.setProperty("ly6_assignUser", personId == null || personId.isEmpty() ? "" : personId); + + // Ѷŵļ rev.add("LY6_relatedMPart", item); item.getLatestItemRevision().refresh(); diff --git a/src/com/langtech/plm/project/ProjectECRDialog.java b/src/com/langtech/plm/project/ProjectECRDialog.java index 9bfba05..bcc15c9 100644 --- a/src/com/langtech/plm/project/ProjectECRDialog.java +++ b/src/com/langtech/plm/project/ProjectECRDialog.java @@ -27,7 +27,6 @@ import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.jdesktop.swingx.JXDatePicker; -import com.connor.sbplm.plm1.util.TCUtil; import com.teamcenter.rac.aif.AbstractAIFDialog; import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.aifrcp.AIFUtility; diff --git a/src/com/langtech/plm/project/TCUtil.java b/src/com/langtech/plm/project/TCUtil.java new file mode 100644 index 0000000..6353d7f --- /dev/null +++ b/src/com/langtech/plm/project/TCUtil.java @@ -0,0 +1,376 @@ +package com.langtech.plm.project; + +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Toolkit; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Vector; + +import javax.swing.JFileChooser; +import javax.swing.JTable; +import javax.swing.filechooser.FileNameExtensionFilter; +import javax.swing.filechooser.FileSystemView; + +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import com.teamcenter.rac.aif.AbstractAIFDialog; +import com.teamcenter.rac.aif.kernel.AIFComponentContext; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.commands.open.OpenFormDialog; +import com.teamcenter.rac.kernel.ListOfValuesInfo; +import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentBOMLine; +import com.teamcenter.rac.kernel.TCComponentBOMWindow; +import com.teamcenter.rac.kernel.TCComponentBOMWindowType; +import com.teamcenter.rac.kernel.TCComponentContextList; +import com.teamcenter.rac.kernel.TCComponentDataset; +import com.teamcenter.rac.kernel.TCComponentDatasetType; +import com.teamcenter.rac.kernel.TCComponentForm; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCComponentListOfValues; +import com.teamcenter.rac.kernel.TCComponentListOfValuesType; +import com.teamcenter.rac.kernel.TCComponentPseudoFolder; +import com.teamcenter.rac.kernel.TCComponentQuery; +import com.teamcenter.rac.kernel.TCComponentQueryType; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCQueryClause; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +public class TCUtil { + public static final int MINWIDTH = 1280; + public static final int MINHEIGHT = 768; + + public static void fitToScreen(AbstractAIFDialog abstractAIFDialog) { + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + double screenWidth = screenSize.getWidth(); + double screenHeight = screenSize.getHeight(); + Dimension dialogSize = abstractAIFDialog.getSize(); + if (screenWidth < MINWIDTH && dialogSize.getWidth() > screenWidth) { + abstractAIFDialog.setSize(new Dimension((int) Math.floor(screenWidth - 20), (int) Math.floor(dialogSize.getHeight()))); + abstractAIFDialog.setLocation(10, (int) Math.floor(abstractAIFDialog.getLocation().getY())); + } + if (screenHeight < MINHEIGHT && dialogSize.getHeight() > screenHeight) { + abstractAIFDialog.setSize(new Dimension((int) Math.floor(dialogSize.getWidth()), (int) Math.floor(screenHeight - 20))); + abstractAIFDialog.setLocation((int) Math.floor(abstractAIFDialog.getLocation().getX()), 10); + } + /* + * if((screenWidth + * MINWIDTH||dialogSize.getHeight()>MINHEIGHT)) { abstractAIFDialog.setSize(new + * Dimension((int)Math.floor(screenWidth-20),(int)Math.floor(screenHeight-20))); + * abstractAIFDialog.setLocation(10, 10); } + */ + } + + public static void fitToScreen(OpenFormDialog openFormDialog) { + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + double screenWidth = screenSize.getWidth(); + double screenHeight = screenSize.getHeight(); + Dimension dialogSize = openFormDialog.getSize(); + if (screenWidth < MINWIDTH && dialogSize.getWidth() > screenWidth) { + openFormDialog.setSize(new Dimension((int) Math.floor(screenWidth - 20), (int) Math.floor(dialogSize.getHeight()))); + openFormDialog.setLocation(10, (int) Math.floor(openFormDialog.getLocation().getY())); + } + if (screenHeight < MINHEIGHT && dialogSize.getHeight() > screenHeight) { + openFormDialog.setSize(new Dimension((int) Math.floor(dialogSize.getWidth()), (int) Math.floor(screenHeight - 20))); + openFormDialog.setLocation((int) Math.floor(openFormDialog.getLocation().getX()), 10); + } + /* + * if((screenWidth + * MINWIDTH||dialogSize.getHeight()>MINHEIGHT)) { openFormDialog.setSize(new + * Dimension((int)Math.floor(screenWidth-20),(int)Math.floor(screenHeight-20))); + * openFormDialog.setLocation(10, 10); } + */ + } + + public static TCComponentBOMWindow getWindow(TCSession session) throws Exception{ + TCComponentBOMWindow window = null; + TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); + window = bomWinType.create(null); + return window; + } + + @SuppressWarnings("deprecation") + public static TCComponentBOMLine getBOMLine(TCSession session,TCComponentBOMWindow window, TCComponentItemRevision revision) + throws Exception { + window.lock(); + TCComponentBOMLine bomLine = window.setWindowTopLine(null, revision, null, null); + window.save(); + window.unlock(); + return bomLine; + } + public static TCComponentPseudoFolder getPseudoFolder(TCComponent parent, String relation) + throws Exception { + TCComponentPseudoFolder pseudoFolder = null; + AIFComponentContext[] comps = parent.getChildren(); + if (comps != null && comps.length > 0 && comps[0] != null) { + for (int i = 0; i < comps.length; i++) { + TCComponent comp = (TCComponent) comps[i].getComponent(); + if (comp instanceof TCComponentPseudoFolder) { + if (comp.isTypeOf("PseudoFolder")) { +// System.out.println("PseudoFolder type:" + comp.getDefaultPasteRelation()); + if (comp.getDefaultPasteRelation().equalsIgnoreCase(relation)) { + pseudoFolder = (TCComponentPseudoFolder) comp; + break; + } + } + } + } + } + return pseudoFolder; + } + public static TCComponentForm getItemRevisionMasterForm(TCComponentItemRevision revision) throws Exception { + if (revision != null) { + AIFComponentContext[] contexts = revision.getChildren("IMAN_master_form_rev"); + if (contexts != null && contexts.length > 0) { + InterfaceAIFComponent component = contexts[0].getComponent(); + if (component instanceof TCComponentForm) { + return (TCComponentForm) component; + } + } + } + return null; + } + + public static LinkedHashMap getlovValues(TCSession session, String lovName) throws TCException { + LinkedHashMap lovVal = new LinkedHashMap(); + TCComponentListOfValuesType lovType = (TCComponentListOfValuesType) session.getTypeComponent("ListOfValues"); + TCComponentListOfValues[] lovs = lovType.find(lovName); + if (lovs != null && lovs.length > 0) { + TCComponentListOfValues lov = lovs[0]; + ListOfValuesInfo lovInfo = lov.getListOfValues(); + String[] code = lovInfo.getStringListOfValues(); + String[] name = lovInfo.getLOVDisplayValues(); + if (code != null && name != null) { + for (int i = 0; i < code.length; i++) { + // System.out.printf("code[%d]=%s name[%d]=%s \n", i, code[i], i, name[i]); + lovVal.put(code[i], name[i]); + } + } + return lovVal; + } + return null; + } + + public static String getTableValue(JTable table, int row, int col){ + Object val = table.getValueAt(row, col); + if(val==null) + return ""; + else + return val.toString(); + } + public static TCComponent[] query(TCSession session, String queryName, String[] aKey, String[] aVal) throws Exception { + TCComponentQueryType imanQueryType = (TCComponentQueryType) session.getTypeComponent("ImanQuery"); + TCComponentQuery imancomponentquery = (TCComponentQuery) imanQueryType.find(queryName); + if (imancomponentquery == null) { + throw new Exception("δҵѯ " + queryName + "!"); + } + aKey = session.getTextService().getTextValues(aKey); +// for (int i = 0; i < aKey.length; i++) { +// System.out.println(aKey[i] + "===============" + aVal[i]); +// } + TCComponentContextList componentContextList = imancomponentquery.getExecuteResultsList(aKey, aVal); + return componentContextList.toTCComponentArray(); + } + public static TCComponent[] query(TCSession session, String queryName, Vector Keys, Vector Vals) throws Exception { + TCComponentQueryType imanQueryType = (TCComponentQueryType) session.getTypeComponent("ImanQuery"); + TCComponentQuery imancomponentquery = (TCComponentQuery) imanQueryType.find(queryName); + if (imancomponentquery == null) { + System.out.println("δҵѯ" + queryName); + throw new Exception("Query:"+queryName+" cannot find"); + } + TCQueryClause[] qc = imancomponentquery.describe(); +// Map clauseMap = new HashMap<>(); + for(TCQueryClause c : qc) { + String key = c.getUserEntryNameDisplay(); + String value = c.getDefaultValue(); +// System.out.println(key + "==>" + c.getAttributeName()); + if(!value.trim().isEmpty() && !Keys.contains(key)) { + if(key.isEmpty()) + Keys.add(c.getAttributeName()); + else + Keys.add(key); + Vals.add(value); + } + } + int size = Keys.size(); + String[] keyA = new String[size]; + String[] valueA = new String[size]; + for(int i=0; i 0) { + Integer maxId = 0; + for (TCComponent comp : comps) { + String pid = comp.getProperty("item_id"); + System.out.println("pid:" + pid); + String pidSuffix = pid.substring(pid.length() - 3); + if (Integer.parseInt(pidSuffix) > maxId) { + maxId = Integer.parseInt(pidSuffix); + } + } + return String.format("%03d", maxId + 1); + } + return "001"; + } + + public static File saveExcelChooser() { + File dir = null; + JFileChooser chooser = new JFileChooser(); + chooser.setAcceptAllFileFilterUsed(false); +// File currentDir = FileSystemView.getFileSystemView().getDefaultDirectory(); + File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory(); + chooser.setCurrentDirectory(desktopDir); + String saveType[] = { "xlsx" }; + chooser.setFileFilter(new FileNameExtensionFilter("Excel", saveType)); + int returnVal = chooser.showSaveDialog(new Frame()); + if (returnVal == JFileChooser.APPROVE_OPTION) { + dir = chooser.getSelectedFile(); + String path = dir.getPath(); + if(!path.toLowerCase().endsWith(".xlsx")) { + path += ".xlsx"; + dir = new File(path); + } + System.out.println("saveExcelChooser1:" + path); + } + return dir; + } + + public static File saveExcelChooser(String defaultFile) { + File dir = null; + JFileChooser chooser = new JFileChooser(); + chooser.setAcceptAllFileFilterUsed(false); +// File currentDir = FileSystemView.getFileSystemView().getDefaultDirectory(); + File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory(); + chooser.setCurrentDirectory(desktopDir); + chooser.setSelectedFile(new File(defaultFile)); + String saveType[] = { "xlsx" }; + chooser.setFileFilter(new FileNameExtensionFilter("Excel", saveType)); + int returnVal = chooser.showSaveDialog(new Frame()); + if (returnVal == JFileChooser.APPROVE_OPTION) { + dir = chooser.getSelectedFile(); + String path = dir.getPath(); + if(!path.toLowerCase().endsWith(".xlsx")) { + path += ".xlsx"; + dir = new File(path); + } + if(dir.exists()) + dir.delete(); +// System.out.println("saveExcelChooser1:" + dir.getPath()); + } + return dir; + } + + public static boolean contains(String[] array, String str) { + for(String s : array) { +// System.out.println("contains:"+s+"="+str); + if(s.equals(str)) + return true; + } + return false; + } + + public static Map executeToMap(InputStream in){ + System.out.println("Read properties file"); + try { + BufferedReader reader = new BufferedReader(new InputStreamReader(in, "utf-8")); + String line = null; + Map resultMap = new LinkedHashMap<>(16); + if (reader.ready()) { + while (null != (line = reader.readLine())) { + if (line.length() <= 0 || line.contains("#") || !line.contains("=")) { + continue; + } + resultMap.put(line.substring(0, line.indexOf("=")), line.substring(line.indexOf("=") + 1)); + } + } + in.close(); + reader.close(); + return resultMap; + } catch (Exception e) { + e.printStackTrace(); + MessageBox.post("Find properties file failed", "ERROR", MessageBox.ERROR); + } + return null; + } + + public static TCComponentDataset createExcelDataset(TCSession session, File file, String datasetName) throws Exception { + String refType = null, objType = null, fileName = null; + fileName = file.getName().toLowerCase(); + if (fileName.endsWith("xls")) { + refType = "excel"; + objType = "MSExcel"; + } else if (fileName.endsWith("xlsx")) { + refType = "excel"; + objType = "MSExcelX"; + } + TCComponentDatasetType compType = (TCComponentDatasetType) session.getTypeService().getTypeComponent("Dataset"); + TCComponentDataset dataset = compType.create(datasetName, "description", objType); + dataset.setFiles(new String[] { file.getAbsolutePath() }, new String[] { refType }); + return dataset; + } + + public static void deleteWarning(File file) throws IOException { + FileInputStream input = null; + FileOutputStream output = null; + try { + input = new FileInputStream(file); + XWPFDocument doc = new XWPFDocument(input); +// XWPFParagraph para = doc.getParagraphs().get(0); +// System.out.println("para.getRuns:"+para.getRuns().size()); +// for(XWPFRun run : para.getRuns()) { +// System.out.println("run:"+run.getText(0)); +// } + doc.removeBodyElement(0); +// para.removeRun(0); +// System.out.println("para.getRuns:"+para.getRuns().size()+" getParagraphs:"+doc.getParagraphs().get(0).getText()); +// para.setPageBreak(false); + output = new FileOutputStream(file.getPath()); + doc.write(output); + doc.close(); + }catch (Exception e) { + throw e; + }finally { + if(input!=null) + input.close(); + if(output!=null) + output.close(); + } + } + + public static Vector getChildren(TCComponent parent, String relation, String name) throws Exception { + Vector result = new Vector<>(); + AIFComponentContext[] children; + if(relation==null || relation.isEmpty()) + children = parent.getChildren(); + else + children = parent.getChildren(relation); + for(AIFComponentContext c : children) { + TCComponent comp = (TCComponent) c.getComponent(); + if(comp.getProperty("object_name").equals(name)) + result.add(comp); + } + return result; + } + +} diff --git a/src/com/langtech/plm/template/TemplateDialog.java b/src/com/langtech/plm/template/TemplateDialog.java index 76db51f..4129e75 100644 --- a/src/com/langtech/plm/template/TemplateDialog.java +++ b/src/com/langtech/plm/template/TemplateDialog.java @@ -25,6 +25,7 @@ import javax.swing.table.DefaultTableModel; import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.kernel.TCComponent; +import com.teamcenter.rac.kernel.TCComponentDataset; import com.teamcenter.rac.kernel.TCComponentForm; import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItemRevision; @@ -47,20 +48,21 @@ public class TemplateDialog extends JFrame implements ActionListener { private JButton concelButton = new JButton("ȡ"); private HashMap map = new HashMap(); HashMap objectMap = new HashMap(); + private String type; - public TemplateDialog(TCSession session, TCComponentItemRevision rev) throws TCException { + public TemplateDialog(TCSession session, TCComponentItemRevision rev, String type) throws TCException { // TODO Auto-generated constructor stub this.session = session; this.rev = rev; - + this.type = type; initUI(); } private void initUI() { // TODO Auto-generated method stub try { - company.setPreferredSize(new Dimension(200,30)); - template.setPreferredSize(new Dimension(200,30)); + company.setPreferredSize(new Dimension(200, 30)); + template.setPreferredSize(new Dimension(200, 30)); this.setTitle("ģ"); this.setLayout(new BorderLayout()); @@ -88,40 +90,52 @@ public class TemplateDialog extends JFrame implements ActionListener { // this.setAlwaysOnTop(true); - - String[] pref = session.getPreferenceService().getStringValues("LY6_MEOP_TemplateType"); for (int i = 0; i < pref.length; i++) { - String[] split = pref[i].split(":"); - company.addItem(split[0]); - map.put(split[0], split[1]); + + if (pref[i].contains(type)) { + System.out.println("pref[i]======="+pref[i]+"type========="+type); + String[] split10 = pref[i].split("\\|"); + System.out.println("split10========"+split10.length); + if (split10.length == 2) { + String[] split11 = split10[1].split(";"); + System.out.println("split11==============="+split11.length); + for (int j = 0; j < split11.length; j++) { + String[] split = split11[j].split(":"); + System.out.println("split=============="+split.length); + company.addItem(split[0]); + map.put(split[0], split[1]); + } + } + } + } - String mrselectitem = (String)company.getSelectedItem(); + String mrselectitem = (String) company.getSelectedItem(); String mrValue = map.get(mrselectitem); String[] split = mrValue.split(","); for (int i = 0; i < split.length; i++) { template.addItem(split[i]); } - - //ֵ + + // ֵ company.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - template.removeAllItems(); - String selectedItem = (String) company.getSelectedItem(); - System.out.println("Selected Item: " + selectedItem); - // ִ - String value = map.get(selectedItem); - String[] split = value.split(","); - for (int i = 0; i < split.length; i++) { - template.addItem(split[i]); + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + template.removeAllItems(); + String selectedItem = (String) company.getSelectedItem(); + System.out.println("Selected Item: " + selectedItem); + // ִ + String value = map.get(selectedItem); + String[] split = value.split(","); + for (int i = 0; i < split.length; i++) { + template.addItem(split[i]); + } } - } - } - }); - + } + }); + } catch (Exception e) { e.printStackTrace(); return; @@ -142,33 +156,41 @@ public class TemplateDialog extends JFrame implements ActionListener { Object source = e.getSource(); System.out.println("source==>+" + source); if (this.okButton.equals(source)) { - String templateString = (String)template.getSelectedItem(); - String companyString = (String)company.getSelectedItem(); - System.out.println("templateString==="+templateString); - System.out.println("companyString==="+companyString); - if(companyString.isEmpty()) { + String templateString = (String) template.getSelectedItem(); + String companyString = (String) company.getSelectedItem(); + System.out.println("templateString===" + templateString); + System.out.println("companyString===" + companyString); + if (companyString.isEmpty()) { MessageBox.post("ѡ˾", "ʾ ", MessageBox.INFORMATION); return; } - - if(templateString.isEmpty()) { + + if (templateString.isEmpty()) { MessageBox.post("ѡģ壡", "ʾ ", MessageBox.INFORMATION); return; } - - //òѯȡģdwgݼ + + // òѯȡģdwgݼ try { - TCComponent[] items = session.search("...", new String[] { " ID" }, new String[] {templateString}); - System.out.println("items.length===="+items.length); + TCComponent[] items = session.search("...", new String[] { " ID" }, + new String[] { templateString }); + System.out.println("items.length====" + items.length); TCComponentItem item = null; - if(items.length > 0) { - item = (TCComponentItem)items[0]; + + if (items.length > 0) { + item = (TCComponentItem) items[0]; } TCComponentItemRevision latestItemRevision = item.getLatestItemRevision(); TCComponent[] relatedComponent = latestItemRevision.getRelatedComponents("IMAN_specification"); - System.out.println("relatedComponent========"+relatedComponent.length); + System.out.println("relatedComponent========" + relatedComponent.length); for (int i = 0; i < relatedComponent.length; i++) { - rev.add("IMAN_specification",relatedComponent[i]); + if(relatedComponent[i] instanceof TCComponentDataset) { + TCComponentDataset dataset = (TCComponentDataset)relatedComponent[i]; + TCComponentDataset saveAs = dataset.saveAs(rev.getStringProperty("item_id")); + rev.add("IMAN_specification", saveAs); + } + + } MessageBox.post("ģɹ", "ʾ ", MessageBox.INFORMATION); this.dispose(); @@ -176,8 +198,8 @@ public class TemplateDialog extends JFrame implements ActionListener { } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); - } - //ݼ + } + // ݼ } else if (this.concelButton.equals(source)) { this.dispose(); } @@ -213,7 +235,7 @@ public class TemplateDialog extends JFrame implements ActionListener { topPanel.add("6.1.left.center", new JLabel("")); topPanel.add("7.1.left.center", new JLabel("")); topPanel.add("8.1.left.center", new JLabel(" ģ壺")); - + topPanel.add("8.2.left.center", template); return topPanel; diff --git a/src/com/langtech/plm/template/TemplateHandler.java b/src/com/langtech/plm/template/TemplateHandler.java index 4ced53a..d2af76d 100644 --- a/src/com/langtech/plm/template/TemplateHandler.java +++ b/src/com/langtech/plm/template/TemplateHandler.java @@ -43,7 +43,7 @@ public class TemplateHandler extends AbstractHandler{ TCComponentItemRevision rev = (TCComponentItemRevision)targetComponent; String object_type = rev.getStringProperty("object_type"); if(types.contains(object_type)) { - new TemplateDialog(session,rev); + new TemplateDialog(session,rev,object_type); }else { MessageBox.post("ѡѡLY6_MEOP_TemplateObjectƥĶ","ʾ",2); return;