diff --git a/plugin.xml b/plugin.xml index 8495b14..e0408f1 100644 --- a/plugin.xml +++ b/plugin.xml @@ -59,6 +59,12 @@ name="提取属性到Word、Excel" id="com.langtech.plm.tqsx.PropertyToWordOrExcelCommand"> + + + + + + @@ -117,9 +128,11 @@ id="com.langtech.plm.synchronize.SynchronizeHandler" mnemonic="S"> - - - + + @@ -141,8 +154,6 @@ - - - - diff --git a/src/com/langtech/plm/bg/QDRWRWFPDialog.java b/src/com/langtech/plm/bg/QDRWRWFPDialog.java index 0160b3e..2e8b9a4 100644 --- a/src/com/langtech/plm/bg/QDRWRWFPDialog.java +++ b/src/com/langtech/plm/bg/QDRWRWFPDialog.java @@ -5,6 +5,7 @@ import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.File; @@ -65,6 +66,7 @@ import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentListOfValues; import com.teamcenter.rac.kernel.TCComponentListOfValuesType; import com.teamcenter.rac.kernel.TCComponentProject; +import com.teamcenter.rac.kernel.TCComponentUser; import com.teamcenter.rac.kernel.TCException; import com.teamcenter.rac.kernel.TCProperty; import com.teamcenter.rac.kernel.TCSession; @@ -73,6 +75,8 @@ import com.teamcenter.rac.util.MessageBox; import com.teamcenter.rac.util.PropertyLayout; import com.teamcenter.soa.client.model.LovValue; +import k.util.KOrgDialog; + public class QDRWRWFPDialog extends JFrame implements ActionListener { private Map textMap = new HashMap<>(); @@ -86,7 +90,8 @@ public class QDRWRWFPDialog extends JFrame implements ActionListener { 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 }; + // 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("Ӧ"); @@ -97,19 +102,27 @@ public class QDRWRWFPDialog extends JFrame implements ActionListener { private static ArrayList dateConnList = new ArrayList(); private String type; private String id; + private String objectString; + private boolean readOnly; private ArrayList canWriteColume = new ArrayList(); - - public QDRWRWFPDialog(TCSession session,String type,String id) { + private ArrayList choosePersonColume = new ArrayList(); + public QDRWRWFPDialog(TCSession session, String type, String id) { // TODO Auto-generated constructor stub this.session = session; this.type = type; this.id = id; + //this.objectString = objectString; + //this.readOnly = readOnly; initUI(); } public void initUI() { // TODO Auto-generated method stub - this.setTitle(""); + + yyButton.setEnabled(false); + tzsjButton.setEnabled(false); + + this.setTitle(objectString+""); this.setLayout(new BorderLayout()); String[] cfdj = session.getPreferenceService().getStringValues("Connor_ChangeTaskForm_TriggerLevelMapping"); @@ -118,7 +131,7 @@ public class QDRWRWFPDialog extends JFrame implements ActionListener { return; } -for (int i = 0; i < cfdj.length; i++) { + for (int i = 0; i < cfdj.length; i++) { String[] split = cfdj[i].split("="); if(split[0].equals(type)) { @@ -131,7 +144,8 @@ for (int i = 0; i < cfdj.length; i++) { break; } - } + } + //ȡѡƥ String[] fields = session.getPreferenceService().getStringValues("Connor_ECRECNForm_Datbase_Config"); if (fields == null || fields.length <= 0) { @@ -153,6 +167,11 @@ for (int i = 0; i < cfdj.length; i++) { String[] split4 = split3[2].split("%"); widtheMap.put(j, Integer.parseInt(split4[0])); canWriteColume.add(j); + }else if(split3[2].contains("#")) { + String[] split4 = split3[2].split("#"); + widtheMap.put(j, Integer.parseInt(split4[0])); + choosePersonColume.add(j); + canWriteColume.add(j); }else { widtheMap.put(j, Integer.parseInt(split3[2])); } @@ -165,6 +184,11 @@ for (int i = 0; i < cfdj.length; i++) { widtheMap.put(j, Integer.parseInt(split4[0])); System.out.println("split4[0]========"+split4[0]); canWriteColume.add(j); + }else if(split3[2].contains("#")) { + String[] split4 = split3[2].split("#"); + widtheMap.put(j, Integer.parseInt(split4[0])); + choosePersonColume.add(j); + canWriteColume.add(j); }else { widtheMap.put(j, Integer.parseInt(split3[2])); } @@ -175,11 +199,16 @@ for (int i = 0; i < cfdj.length; i++) { } } - + System.out.println("choosePersonColume====="+choosePersonColume.size()); System.out.println("canWriteColume====="+canWriteColume.size()); System.out.println("fieldsMap====="+fieldsMap); System.out.println("positionMap====="+lovPositionMap); System.out.println("widtheMap====="+widtheMap); + if(fieldsMap.size() == 0) { + + MessageBox.post("δƥ䵽ѡ", "ʾ ", MessageBox.INFORMATION); + return; + } Collection valuesCollection = fieldsMap.values(); // תΪ @@ -241,7 +270,7 @@ for (int i = 0; i < cfdj.length; i++) { 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)); + //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])); @@ -266,7 +295,6 @@ for (int i = 0; i < cfdj.length; i++) { } } - public void createActionEvent() { this.yyButton.addActionListener(this); this.gbButton.addActionListener(this); @@ -278,14 +306,14 @@ for (int i = 0; i < cfdj.length; i++) { // 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.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); @@ -294,17 +322,17 @@ for (int i = 0; i < cfdj.length; i++) { } // ѯ - 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 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); @@ -318,16 +346,38 @@ for (int i = 0; i < cfdj.length; i++) { for (Entry map : lovPositionMap.entrySet()) { JComboBox jComboBox = new JComboBox(); String value = map.getValue(); - if(value.contains(",")) { + if (value.contains(",")) { String[] split = value.split(","); for (int i = 0; i < split.length; i++) { jComboBox.addItem(split[i]); } - }else { + } else { jComboBox.addItem(value); } table.getColumnModel().getColumn(map.getKey()).setCellEditor(new DefaultCellEditor(jComboBox)); } + table.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() == 2 || e.getClickCount() == 1) { // жǷ˫ڵڶ + int row = table.rowAtPoint(e.getPoint()); + int column = table.columnAtPoint(e.getPoint()); + System.out.println("column========"+column); + if (choosePersonColume.contains(column)) { + System.out.println("1111111111111111111111111111111"); + try { + TCComponentUser user = new KOrgDialog("").getUser(); + System.out.println("user============"+user.getUserName()); + table.setValueAt(user.getUserName()+"("+user.getUserId()+")", row, column); + } catch (TCException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + } + } + }); + pane.setPreferredSize(new Dimension(1800, 850)); pane.setViewportView(table);// ΪscrollPaneָʾΪtable return pane; @@ -373,16 +423,15 @@ for (int i = 0; i < cfdj.length; i++) { dtm1 = new DefaultTableModel(values, titleNames) { @Override public boolean isCellEditable(int row, int column) { - if(canWriteColume.size() > 0) { + if (canWriteColume.size() > 0) { for (int i = 0; i < canWriteColume.size(); i++) { - if(canWriteColume.get(i) == column) { - System.out.println("row=========="+row); + if (canWriteColume.get(i) == column) { return true; } } } return false; - + } }; } @@ -397,183 +446,194 @@ for (int i = 0; i < cfdj.length; i++) { if (source.equals(this.gbButton)) { dispose(); - } - else if(source.equals(this.yyButton)){ - // + } else if (source.equals(this.yyButton)) { + // Connection conn = getConn(); PreparedStatement stmt = null; - for(int i = 0; i < table.getRowCount(); i++){ + + //һжǷ漰 + Integer sfsjgg = positionFieldMap.get("SFSJGG"); + for (int i = 0; i < table.getRowCount(); i++) { + String valueAt = (String)table.getValueAt(i, sfsjgg); + System.out.println("valueAt============="+valueAt); + if(valueAt == null || valueAt.isEmpty()) { + int row = i+1; + MessageBox.post(""+row+"еǷ漰δд", "ʾ", 2); + return; + } + } + + 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()) { + String valueAt = (String) table.getValueAt(i, map.getValue()); + if (valueAt == null || valueAt.isEmpty()) { updateSql.append("="); updateSql.append("null,"); - }else { + } else { updateSql.append("='"); - updateSql.append(table.getValueAt(i,map.getValue())); + 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)+"'"); + updateSql.append(" where ID='" + id + "' and XH='" + table.getValueAt(i, 0) + "'"); try { stmt = conn.prepareStatement(updateSql.toString()); - System.out.println("updateSql========="+updateSql.toString()); + System.out.println("updateSql=========" + updateSql.toString()); stmt.execute(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } - + } - - + try { - if(stmt != null) { + if (stmt != null) { stmt.close(); } - if(conn != null) { + if (conn != null) { conn.close(); } - - + } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } - }else if(source.equals(this.tzsjButton)){ + MessageBox.post("Ӧɣ", "ʾ", 2); + } else if (source.equals(this.tzsjButton)) { gsPrefTopLine = new ArrayList(); - String selectedItem = (String)cfdJComboBox.getSelectedItem(); - if(selectedItem == null || selectedItem.isEmpty()) { + String selectedItem = (String) cfdJComboBox.getSelectedItem(); + if (selectedItem == null || selectedItem.isEmpty()) { MessageBox.post("ѡ񴥷ȼ", "ʾ", 2); return; } - + Date date = cfsjButton.getDate(); - - if(date == null) { + + if (date == null) { MessageBox.post("ѡ񴥷ʱ䣡", "ʾ", 2); return; } String cfsjDate = dateFormat.format(date); String pref = cfdjPref.get(selectedItem); - if(pref == null || pref.isEmpty()) { + 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); + MessageBox.post("ѡ" + pref + "", "ʾ ", MessageBox.INFORMATION); return; } - + for (int i = 0; i < calculateTime.length; i++) { String[] split = calculateTime[i].split("\\|"); - if(i == 0) { - + if (i == 0) { + for (int j = 0; j < split.length; j++) { gsPrefTopLine.add(split[j]); - } - }else { - gsPrefMap.put(split[0],calculateTime[i]); + } + } else { + gsPrefMap.put(split[0], calculateTime[i]); } - + } - - System.out.println(positionFieldMap+"==================positionFieldMap"); - System.out.println("gsPrefTopLine----------------"+gsPrefTopLine.size()); + + 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); - } - } - - + // 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); + } + + } + // Ӧðť + 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 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(); } - - 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; - } - } + 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/modifyEffectiveTime/DatePickerEditor.java b/src/com/langtech/plm/modifyEffectiveTime/DatePickerEditor.java new file mode 100644 index 0000000..0029cd4 --- /dev/null +++ b/src/com/langtech/plm/modifyEffectiveTime/DatePickerEditor.java @@ -0,0 +1,94 @@ +package com.langtech.plm.modifyEffectiveTime; + +import org.jdesktop.swingx.JXDatePicker; + +import javax.swing.*; +import javax.swing.table.TableCellEditor; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.EventObject; + +public class DatePickerEditor extends AbstractCellEditor implements TableCellEditor { + + private JXDatePicker datePicker; + private JTable table; + private int row; + private int column; + + public DatePickerEditor() { + datePicker = new JXDatePicker(); + // ڸʽ + datePicker.setFormats(new SimpleDateFormat("yyyy-MM-dd")); + datePicker.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + fireEditingStopped(); + } + }); + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + this.table = table; + this.row = row; + this.column = column; + + System.out.println("getTableCellEditorComponent: "+value); + if (value instanceof Date) { + datePicker.setDate((Date) value); + } else { + datePicker.setDate(null); + } + return datePicker; + } + + @Override + public Object getCellEditorValue() { + try { + // ȡûı + String text = datePicker.getEditor().getText(); + + if (text.trim().isEmpty()) { + return null; + } + + // ԽΪ + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + format.setLenient(false); // ϸڸʽ + return format.parse(text); + } catch (Exception e) { + // ʧܣӡϢصǰѡֵ + System.err.println("Invalid date format: " + e.getMessage()); + } + + // ѡǰֵ + return datePicker.getDate(); + } + + + + @Override + public boolean isCellEditable(EventObject anEvent) { + return true; + } + + @Override + public boolean stopCellEditing() { + System.out.println("stopCellEditing: " + datePicker.getDate()); + fireEditingStopped(); + return true; + } + + @Override + public boolean shouldSelectCell(EventObject anEvent) { + return true; + } + + @Override + public void cancelCellEditing() { + super.cancelCellEditing(); + } +} diff --git a/src/com/langtech/plm/modifyEffectiveTime/ModifyEffectiveTimeDialog.java b/src/com/langtech/plm/modifyEffectiveTime/ModifyEffectiveTimeDialog.java new file mode 100644 index 0000000..4b68bf4 --- /dev/null +++ b/src/com/langtech/plm/modifyEffectiveTime/ModifyEffectiveTimeDialog.java @@ -0,0 +1,265 @@ +package com.langtech.plm.modifyEffectiveTime; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.SwingConstants; +import javax.swing.border.EmptyBorder; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumnModel; + +import org.jdesktop.swingx.JXDatePicker; + +import com.teamcenter.rac.aifrcp.AIFUtility; +import com.teamcenter.rac.kernel.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.kernel.TCUserService; +import com.teamcenter.rac.util.MessageBox; + +public class ModifyEffectiveTimeDialog extends JFrame implements Runnable { + private JTable table; + + private JButton okButton; + private boolean flag; + + private final String title; + private final String[] columnNames; + private Object[][] data; + private int[] dateIndex; + private boolean pass; + + public static void main(String[] args) { + + } + + public ModifyEffectiveTimeDialog(String title, Object... args) { + this.title = title; + this.columnNames = (String[]) args[0]; + this.data = (Object[][]) args[1]; + this.dateIndex = (int[]) args[2]; + this.pass = (boolean) args[3]; + } + + @Override + public void run() { + // TODO Auto-generated method stub + initUI(); + } + + public void setWithHeight(int with, int height) { + this.setSize(with, height); + } + + public void initUI() { + this.setTitle(title); + // ʼϢ + initializationComponent(); + + // ݵJFrame λ + JPanel bottomPanel = getBottomPanel(); + // ͹ + JPanel tableScrollPane = createTable(); + tableScrollPane.setPreferredSize(new Dimension(700, 200)); // ùĴС + + this.getContentPane().add(tableScrollPane, BorderLayout.CENTER); + this.getContentPane().add(bottomPanel, BorderLayout.SOUTH); + // ôھ + this.setLocationRelativeTo(null); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + // ÿɼ + this.setVisible(true); + } + + public void initializationComponent() { + okButton = new JButton("Ӧ"); + okButton.setEnabled(pass); + } + + public JPanel createTable() { + JPanel panel = new JPanel(new BorderLayout(10, 10)); + panel.setBorder(new EmptyBorder(20, 20, 10, 20)); + + // DefaultTableModel ʵ + DefaultTableModel model = new DefaultTableModel(data, columnNames) { + @Override + public boolean isCellEditable(int row, int column) { + if (column == 0) { + return false; + } + return true; + } + + @Override + public Class getColumnClass(int columnIndex) { + if (columnIndex == 1) { + return Date.class; + } + return super.getColumnClass(columnIndex); + } + }; + table = new JTable(model); + + // и + table.setRowHeight(25); // иΪ30 + table.setFont(new Font("΢ź", Font.PLAIN, 12)); + // + table.getTableHeader().setReorderingAllowed(false); + // Զп +// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + // ñӿڸ߶ +// table.setFillsViewportHeight(true); + + // п + TableColumnModel columnModel = table.getColumnModel(); + columnModel.getColumn(0).setPreferredWidth(300); + columnModel.getColumn(1).setPreferredWidth(143); + + table.removeColumn(columnModel.getColumn(columnModel.getColumnCount() - 1)); + + // ԶȾʹож + DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer() { + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, + boolean hasFocus, int row, int column) { + Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + ((JLabel) c).setHorizontalAlignment(SwingConstants.CENTER); // ıж + return c; + } + }; + + // ӦþжȾ + for (int i = 0; i < columnModel.getColumnCount(); i++) { + columnModel.getColumn(i).setCellRenderer(centerRenderer); + } + + // ԶȾ + TableCellRenderer dateRenderer = (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, + int column) -> { + JXDatePicker datePicker = new JXDatePicker(); + if (value instanceof Date) { + datePicker.setFormats(new SimpleDateFormat("yyyy-MM-dd")); + datePicker.setDate((Date) value); + } + return datePicker; + }; + // Զ༭ + TableCellEditor dateEditor = new DatePickerEditor(); + + // Ϊ IssueDate MaterialDeliveryTime ѡ + for (int index : dateIndex) { + // Ⱦͱ༭ + table.getColumnModel().getColumn(index).setCellRenderer(dateRenderer); + table.getColumnModel().getColumn(index).setCellEditor(dateEditor); + } + + // JScrollPane ˮƽʼտɼ + JScrollPane scrollPane = new JScrollPane(table); +// scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); + + // ӱ + panel.add(scrollPane, BorderLayout.CENTER); + return panel; + } + + public JPanel getBottomPanel() { + // TODO Auto-generated method stub + JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 70, 10)); + bottomPanel.setBorder(BorderFactory.createEmptyBorder(-10, 0, 10, 0)); + bottomPanel.add(this.okButton); + // Ӽ + okButton.addActionListener(e -> { + flag = true; + List tableData = getTableData(); + if (tableData != null) { + tableData.forEach(rowData -> { + System.out.println(Arrays.toString(rowData)); + }); + } + + if (flag) { + MessageBox.post("޸ijɹ! ", "Info", MessageBox.INFORMATION); + this.dispose(); // رմ + } else { + MessageBox.post("Чʱ䲻", "Error", MessageBox.ERROR); + } + }); + return bottomPanel; + } + + public List getTableData() { + DefaultTableModel model = (DefaultTableModel) table.getModel(); + int rowCount = model.getRowCount(); + int columnCount = model.getColumnCount(); + + List tableData = new ArrayList<>(); + + int count = 0; + for (int row = 0; row < rowCount; row++) { + Object obj = model.getValueAt(row, 1); + if (obj instanceof Date && obj != null) { + count++; + if (count == 3) { + flag = false; + return null; + } + } + } + + setByPass(true); + try { + for (int row = 0; row < rowCount; row++) { + String name = (String) model.getValueAt(row, 0); + Object obj = model.getValueAt(row, 1); + System.out.println("name: " + name + " || date: " + obj); + TCComponentItemRevision rev = (TCComponentItemRevision) model.getValueAt(row, 2); + rev.setDateProperty("ly6_deadline", (Date) obj); + } + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + MessageBox.post(e.getMessage(), "Error", MessageBox.ERROR); + } + setByPass(false); + return tableData; + } + + @SuppressWarnings("deprecation") + public void setByPass(boolean pass) { + TCUserService userservice = null; + if (userservice == null) { + userservice = ((TCSession) AIFUtility.getCurrentApplication().getSession()).getUserService(); + } + Object[] obj = new Object[1]; + obj[0] = "origin"; + try { + if (pass) { + userservice.call("CONNOR_open_bypass", obj); + System.out.println("·ѿ"); + } else { + userservice.call("CONNOR_close_bypass", obj); + System.out.println("·ѹر"); + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/com/langtech/plm/modifyEffectiveTime/ModifyEffectiveTimeHandler.java b/src/com/langtech/plm/modifyEffectiveTime/ModifyEffectiveTimeHandler.java new file mode 100644 index 0000000..7b68ad5 --- /dev/null +++ b/src/com/langtech/plm/modifyEffectiveTime/ModifyEffectiveTimeHandler.java @@ -0,0 +1,165 @@ +package com.langtech.plm.modifyEffectiveTime; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import com.teamcenter.rac.aif.AbstractAIFApplication; +import com.teamcenter.rac.aif.kernel.AIFComponentContext; +import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; +import com.teamcenter.rac.aifrcp.AIFUtility; +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.TCComponentItemRevision; +import com.teamcenter.rac.kernel.TCException; +import com.teamcenter.rac.kernel.TCPreferenceService; +import com.teamcenter.rac.kernel.TCSession; +import com.teamcenter.rac.util.MessageBox; + +public class ModifyEffectiveTimeHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent arg0) throws ExecutionException { + AbstractAIFApplication app = AIFUtility.getCurrentApplication(); + TCSession session = (TCSession) app.getSession(); + + TCPreferenceService preferenceService = session.getPreferenceService(); + String[] preValues = preferenceService.getStringValues("LY__FormulaDeadLine_Config"); + if ((preValues != null && preValues.length < 3) || preValues == null) { + MessageBox.post("LY__FormulaDeadLine_Configô", "Error", MessageBox.ERROR); + return null; + } + + String[] types = preValues[0].split(";"); + String[] childTypes = preValues[1].split(";"); + String[] permissionPeo = preValues[2].split(";"); + + TCComponent targetComponent = (TCComponent)app.getTargetComponent(); + + String targetType = ""; + try { + if(targetComponent instanceof TCComponentItemRevision) { + targetType = targetComponent.getType(); + }else if(targetComponent instanceof TCComponentBOMLine) { + targetType = ((TCComponentBOMLine) targetComponent).getItemRevision().getType(); + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + boolean isExist = false; + System.out.println("ǰͣ" + targetType); + for (String type : types) { + System.out.println("ǰͣ" + type); + if (type.equals(targetType)) { + isExist = true; + break; + } + } + if (!isExist) { + MessageBox.post("ѡָ͵ƺŰ汾ִ޸䷽Чڹ", "Error", MessageBox.ERROR); + return null; + } + + boolean pass = false; + String userName = session.getUserName(); + System.out.println("ǰû" + userName); + for (String name : permissionPeo) { + System.out.println("ǰû" + name); + if (userName.equals(name)) { + pass = true; + break; + } + } + + Object[][] data = null; + try { + List revList = getChildBom(session, targetComponent, childTypes); + data = new Object[revList.size()][]; + + for (int i = 0; i < revList.size(); i++) { + TCComponentItemRevision tempRev = revList.get(i); + Object[] tempData = new Object[3]; + tempData[0] = tempRev.getProperty("object_string"); + tempData[1] = parseDate(tempRev.getProperty("ly6_deadline")); + tempData[2] = tempRev; + + data[i] = tempData; + } + } catch (TCException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + // б + String[] columnNames = new String[] { "", "Чʱ", "TCComponent" }; + int[] dateIndex = new int[] { 1 }; + ModifyEffectiveTimeDialog dialog = new ModifyEffectiveTimeDialog("޸䷽Чʱ", columnNames, data, dateIndex, + pass); + dialog.setWithHeight(500, 300); + + new Thread(dialog).start(); + + return null; + } + + public List getChildBom(TCSession session, TCComponent targetComponent, + String[] childTypes) throws TCException { + // TODO Auto-generated method stub + TCComponentBOMLine topLine = null; + if (targetComponent instanceof TCComponentItemRevision) { + TCComponentItemRevision rev = (TCComponentItemRevision) targetComponent; + TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow"); + TCComponentBOMWindow view = winType.create(null); + topLine = view.setWindowTopLine(rev.getItem(), rev, null, null); + } else if (targetComponent instanceof TCComponentBOMLine) { + topLine = ((TCComponentBOMLine) targetComponent); + } + + boolean hasChildren = topLine.hasChildren(); + List revList = new ArrayList(); + if (!hasChildren) { + return revList; + } + + String revType = ""; + AIFComponentContext[] childrena = topLine.getChildren(); + for (AIFComponentContext children : childrena) { + TCComponentBOMLine component = (TCComponentBOMLine) children.getComponent(); + TCComponentItemRevision itemRevision = component.getItemRevision(); +// revType = itemRevision.getProperty("object_type"); + revType = itemRevision.getType(); + System.out.println("getType()ȡֵ" + revType); + for (String type : childTypes) { + System.out.println("öͣ" + type); + if (revType.equals(type)) { + revList.add(itemRevision); + break; + } + } + } + return revList; + } + + public Date parseDate(String dateString) { + if (dateString == null || dateString.isEmpty()) { + return null; + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + try { + return sdf.parse(dateString); + } catch (ParseException e) { + e.printStackTrace(); + return null; + } + } + +} diff --git a/src/com/langtech/plm/mpart/MpartDialog.java b/src/com/langtech/plm/mpart/MpartDialog.java index 6955c71..7cb422d 100644 --- a/src/com/langtech/plm/mpart/MpartDialog.java +++ b/src/com/langtech/plm/mpart/MpartDialog.java @@ -595,6 +595,7 @@ public class MpartDialog extends JFrame implements ActionListener { ArrayList tempList = new ArrayList(); tempList.add(tempMrevList.get(k)); tempList.add(sl); + //tempList.add("1"); revMap.put(stringProperty, tempList); jComboBox.addItem(stringProperty); } diff --git a/src/com/langtech/plm/project/CalculateDialog.java b/src/com/langtech/plm/project/CalculateDialog.java index e282d7e..bcaf88c 100644 --- a/src/com/langtech/plm/project/CalculateDialog.java +++ b/src/com/langtech/plm/project/CalculateDialog.java @@ -7,6 +7,12 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; @@ -308,7 +314,6 @@ public class CalculateDialog extends JFrame implements ActionListener { topBomLine.unlock(); view.close(); - this.zjdTextField.setText(outlineDiameter != null ? outlineDiameter : ""); this.lkcTextField.setText(outlineLength != null ? outlineLength : ""); this.qdycdTextField.setText(cuttingLength != null ? cuttingLength : ""); @@ -342,8 +347,9 @@ public class CalculateDialog extends JFrame implements ActionListener { // double result = (lkcValue + qdycdValue + cdmycdValue) * kzljsValue + jtycdValue; System.out.println("ͼֽ"+lkcValue+"жóȣ"+qdycdValue+"óȣ"+cdmycdValue+""+kzljsValue+"ͷóȣ"+jtycdValue); - - return String.valueOf(result); +// double cm = result / 10.0; + String formattedCm = String.format("%.2f", result); + return formattedCm; } /** @@ -361,8 +367,39 @@ public class CalculateDialog extends JFrame implements ActionListener { } double result = zcValue / kzljsValue; System.out.println("ܳ"+zcValue+""+kzljsValue); - return String.valueOf(result); +// double cm = result / 10.0; + String format = String.format("%.2f", result); + return format; } + + private void downLoadFile(File file) throws Exception { + FileInputStream inputStream = new FileInputStream(file); + // ָļı· + String localFilePath = "C:\\"+file.getName(); + + try { + // Ŀ· + Path path = Paths.get(localFilePath); + + // д뵽ļ + Files.copy(inputStream, path); + + System.out.println("ļѳɹ: "+localFilePath); + } catch (Exception e) { + e.printStackTrace(); + System.out.println("ļʱ"); + } finally { + // رͷԴ + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + /** * ѡеuidȡݼEXCEL @@ -393,28 +430,43 @@ public class CalculateDialog extends JFrame implements ActionListener { //ȡǰ汾Ĺ淶ϵµݼ TCComponent[] referenceListProperty = tcComponentItemRevision.getReferenceListProperty("IMAN_specification"); if(referenceListProperty.length>0) { - //ȡݼ¾ļ + System.out.println("淶ϵµݼ"+referenceListProperty.length); + //ȡһݼ¾ļ TCComponentTcFile[] tcFiles = ((TCComponentDataset)referenceListProperty[0]).getTcFiles(); - File file = tcFiles[0].getFmsFile(); - // ݺȡݼ-excelУӦĿݣʱ䡢̶ʱ䡢иʱ - FileInputStream fis = new FileInputStream(file); - Workbook workbook = new HSSFWorkbook(fis); - Sheet sheet = workbook.getSheetAt(0); - //ӵ3ʼ(ǰDZ) - for (int i = 2; i < sheet.getPhysicalNumberOfRows(); i++) { - Row row = sheet.getRow(i); - //ȡÿеĵһֱֵ - double diam = row.getCell(0).getNumericCellValue(); - // ݹƥݼеֱ - if (diam == Double.parseDouble(this.ggTextField.getText())){ - System.out.println("=========ֱƥɹʼȡʱͱ׼ʱ"+"=========ǰкţ"+(i+1)+"ǰеֱ"+diam); - //ȡ11еֵ׼ʱ - this.bzgsTextField.setText(row.getCell(10).getStringCellValue()); - //ȡ12еֵʱ - this.fzgsTextField.setText(row.getCell(11).getStringCellValue()); - break; + if (tcFiles.length > 0) { +// System.out.println("ݼļ" + tcFiles.length); + File file = tcFiles[0].getFmsFile(); +// if (file.exists()) { +// System.out.println("ʼأ"); +// downLoadFile(file); +// } + System.out.println("ȡݼļ"+file.getName()); + // ݺȡݼ-excelУӦĿݣʱ䡢̶ʱ䡢иʱ + FileInputStream fis = new FileInputStream(file); + Workbook workbook = new HSSFWorkbook(fis); + Sheet sheet = workbook.getSheetAt(0); + //ӵ3ʼ(ǰDZ) + for (int i = 2; i < sheet.getPhysicalNumberOfRows(); i++) { + Row row = sheet.getRow(i); + //ȡÿеĵһֱֵ +// double diam = row.getCell(0).getNumericCellValue(); + String diam = row.getCell(0).getStringCellValue(); + // ݹƥݼеֱ + if (diam.equals(this.ggTextField.getText())){ +// if (diam == Double.parseDouble(this.ggTextField.getText())){ + System.out.println("=========ֱƥɹʼȡʱͱ׼ʱ"+"=========ǰкţ"+(i+1)+"ǰеֱ"+diam); + //ȡ11еֵ׼ʱ + this.bzgsTextField.setText(row.getCell(10).getStringCellValue()); + //ȡ12еֵʱ + this.fzgsTextField.setText(row.getCell(11).getStringCellValue()); + break; + } } + workbook.close(); + }else { + System.out.println("ȡݼļʧܣ"); } + } } @@ -536,10 +588,11 @@ public class CalculateDialog extends JFrame implements ActionListener { densityNum = Double.parseDouble(this.density); } double siglengthNum = Double.parseDouble(this.djcdTextField.getText()); - System.out.println("53456"); double result = crossSectionNum * densityNum * siglengthNum; System.out.println("棺"+crossSectionNum+"ܶȣ"+densityNum+"ȣ"+siglengthNum); - return String.valueOf(result); + double kg = result / 10000.0; + String formattedKg = String.format("%.2f", kg); + return formattedKg; } /**