Compare commits

..

16 Commits
xcz ... main

@ -9,6 +9,24 @@
id="com.langtech.plm.performancemanagement.commands.category" id="com.langtech.plm.performancemanagement.commands.category"
name="Sample Category"> name="Sample Category">
</category> </category>
<command
categoryId="com.langtech.plm.project.CalculateHandler"
name="计算材料定额"
id="com.langtech.plm.project.CalculateHandler">
</command>
<command
categoryId="com.langtech.plm.bg.QDRWHandler"
name="变更任务分配表启动任务"
id="com.langtech.plm.bg.QDRWHandler">
</command>
<command
categoryId="com.langtech.plm.bg.RWFPHandler"
name="查看任务分配表"
id="com.langtech.plm.bg.RWFPHandler">
</command>
<command <command
categoryId="com.langtech.plm.batchRename.BatchRenameHandler" categoryId="com.langtech.plm.batchRename.BatchRenameHandler"
name="批量修改时间表任务名称" name="批量修改时间表任务名称"
@ -32,7 +50,7 @@
</command> </command>
<command <command
categoryId="com.langtech.plm.template.TemplateHandler" categoryId="com.langtech.plm.template.TemplateHandler"
name="插入模板" name="生成工序卡"
id="com.langtech.plm.template.TemplateHandler"> id="com.langtech.plm.template.TemplateHandler">
</command> </command>
@ -41,9 +59,31 @@
name="提取属性到Word、Excel" name="提取属性到Word、Excel"
id="com.langtech.plm.tqsx.PropertyToWordOrExcelCommand"> id="com.langtech.plm.tqsx.PropertyToWordOrExcelCommand">
</command> </command>
<command
categoryId="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeCommand"
name="修改配方生效时间"
id="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeCommand">
</command>
</extension> </extension>
<extension <extension
point="org.eclipse.ui.handlers"> point="org.eclipse.ui.handlers">
<handler
class="com.langtech.plm.bg.QDRWHandler"
commandId="com.langtech.plm.bg.QDRWHandler">
</handler>
<handler
class="com.langtech.plm.bg.RWFPHandler"
commandId="com.langtech.plm.bg.RWFPHandler">
</handler>
<handler
class="com.langtech.plm.project.CalculateHandler"
commandId="com.langtech.plm.project.CalculateHandler">
</handler>
<handler <handler
class="com.langtech.plm.batchRename.BatchRenameHandler" class="com.langtech.plm.batchRename.BatchRenameHandler"
commandId="com.langtech.plm.batchRename.BatchRenameHandler"> commandId="com.langtech.plm.batchRename.BatchRenameHandler">
@ -69,6 +109,11 @@
class="com.langtech.plm.tqsx.KHandler" class="com.langtech.plm.tqsx.KHandler"
commandId="com.langtech.plm.tqsx.PropertyToWordOrExcelCommand"> commandId="com.langtech.plm.tqsx.PropertyToWordOrExcelCommand">
</handler> </handler>
<handler
class="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeHandler"
commandId="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeCommand">
</handler>
</extension> </extension>
<extension <extension
point="org.eclipse.ui.menus"> point="org.eclipse.ui.menus">
@ -76,7 +121,7 @@
locationURI="menu:org.eclipse.ui.main.menu?after=additions"> locationURI="menu:org.eclipse.ui.main.menu?after=additions">
<menu <menu
id="com.langtech.plm.performancemanagement.menus.sampleMenu" id="com.langtech.plm.performancemanagement.menus.sampleMenu"
label="二开菜单" label="设计管理"
mnemonic="M"> mnemonic="M">
<command <command
commandId="com.langtech.plm.synchronize.SynchronizeHandler" commandId="com.langtech.plm.synchronize.SynchronizeHandler"
@ -84,13 +129,31 @@
mnemonic="S"> mnemonic="S">
</command> </command>
<command <command
commandId="com.langtech.plm.template.TemplateHandler" commandId="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeCommand"
id="com.langtech.plm.template.TemplateHandler" id="com.langtech.plm.modifyEffectiveTime.ModifyEffectiveTimeHandler"
mnemonic="S"> mnemonic="S">
</command> </command>
</menu> </menu>
<menu
id="com.langtech.plm.performancemanagement.menus.sampleMenu2"
label="变更管理"
mnemonic="M">
<command
commandId="com.langtech.plm.bg.RWFPHandler"
id="com.langtech.plm.bg.RWFPHandler"
mnemonic="S">
</command>
<command
commandId="com.langtech.plm.bg.QDRWHandler"
id="com.langtech.plm.bg.QDRWHandler"
mnemonic="S">
</command>
</menu>
<menu <menu
id="com.langtech.plm.performancemanagement.menus.sampleMenu1" id="com.langtech.plm.performancemanagement.menus.sampleMenu1"
label="项目管理" label="项目管理"
@ -106,15 +169,29 @@
id="com.langtech.plm.createProjectStruct.CreateProjectStructHandler" id="com.langtech.plm.createProjectStruct.CreateProjectStructHandler"
mnemonic="S"> mnemonic="S">
</command> </command>
</menu>
</menuContribution>
<command
<menuContribution locationURI="menu:cn.net.connor.std.processedit.mainmenu?after=additions">
<command
commandId="com.langtech.plm.mpart.MpartHandler" commandId="com.langtech.plm.mpart.MpartHandler"
id="com.langtech.plm.mpart.MpartHandler" id="com.langtech.plm.mpart.MpartHandler"
mnemonic="S"> mnemonic="S">
</command> </command>
</menu> <command
</menuContribution> commandId="com.langtech.plm.project.CalculateHandler"
id="com.langtech.plm.project.CalculateHandler"
mnemonic="S">
</command>
<command
commandId="com.langtech.plm.template.TemplateHandler"
id="com.langtech.plm.template.TemplateHandler"
mnemonic="S">
</command>
</menuContribution>
<menuContribution locationURI="popup:org.eclipse.ui.popup.any?after=additions"> <menuContribution locationURI="popup:org.eclipse.ui.popup.any?after=additions">
<command <command

@ -0,0 +1,72 @@
package com.langtech.plm.bg;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
public class CheckHeaderCellRenderer implements TableCellRenderer {
DefaultTableModel tableModel;
JTableHeader tableHeader;
final JCheckBox selectBox;
public CheckHeaderCellRenderer(final JTable table) {
this.tableModel = (DefaultTableModel) table.getModel();
this.tableHeader = table.getTableHeader();
selectBox = new JCheckBox(tableModel.getColumnName(0));
selectBox.setSelected(false);
tableHeader.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() > 0) {
// 获得选中列
int selectColumn = tableHeader.columnAtPoint(e.getPoint());
if (selectColumn == 0) {
boolean value = !selectBox.isSelected();
selectBox.setSelected(value);
// tableModel.selectAllOrNull(value);
tableHeader.repaint();
if(value) {
for(int i=0;i<table.getRowCount();i++) {
table.setValueAt("1", i, 0);
}
}else {
for(int i=0;i<table.getRowCount();i++) {
table.setValueAt("0", i, 0);
}
}
}
}
}
});
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
// TODO Auto-generated method stub
String valueStr = (String) value;
JLabel label = new JLabel(valueStr);
label.setHorizontalAlignment(SwingConstants.CENTER); // 表头标签剧中
selectBox.setHorizontalAlignment(SwingConstants.CENTER);// 表头标签剧中
selectBox.setBorderPainted(true);
JComponent component = (column == 0) ? selectBox : label;
component.setForeground(tableHeader.getForeground());
component.setBackground(tableHeader.getBackground());
component.setFont(tableHeader.getFont());
component.setBorder(UIManager.getBorder("TableHeader.cellBorder"));
return component;
}
}

@ -0,0 +1,250 @@
package com.langtech.plm.bg;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DbPool {
public static Connection connection = null;
public static PreparedStatement ps = null;
public static ResultSet rs = null;
private static DbPool instance = null;
public static synchronized Connection getConnection(String url, String name) {
if (instance == null) {
instance = new DbPool();
}
return instance._getConnection(url, name);
}
private Connection _getConnection(String url, String name) {
try {
String sDBDriver = null;
String sConnection = null;
String sUser = null;
String sPassword = null;
Properties p = new Properties();
// InputStream is = getClass().getResourceAsStream(
// "/sqlconn.properties");
// p.load(is);
sDBDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
sConnection = "jdbc:sqlserver://" + url + ":1433; DatabaseName=" + name;// p.getProperty("Connection", "2");
sUser = "infodba";// p.getProperty("User", "");
sPassword = "infodba";// p.getProperty("Password", "");
if (sDBDriver == null || sConnection == null || sUser == null || sPassword == null) {
System.out.println("请检查数据库首选项是否配置正确");
}
Class.forName(sDBDriver);
connection = DriverManager.getConnection(sConnection, sUser, sPassword);
return connection;
} catch (Exception se) {
System.out.println(se);
}
return null;
}
public final static ResultSet read(String sql, Object[] argments) throws SQLException {
return DbPool.rs = DbPool.getPs(argments, sql).executeQuery();
}
/**
* Statement
*/
public final static PreparedStatement getPs(Object[] argments, String sql) throws SQLException {
return getPs(sql, argments);
}
/**
* Statement
*/
public final static PreparedStatement getPs(String sql, Object[] argments) throws SQLException {
DbPool.ps = DbPool.connection.prepareStatement(sql);
if (argments != null) {
for (int i = 0; i < argments.length; i++) {
DbPool.ps.setObject(i + 1, argments[i]);
}
}
return DbPool.ps;
}
/**
*
*/
public final static ResultSet read(String sql) throws SQLException {
return read(sql, null);
}
public static void executeUpdateSql(String sql) throws SQLException {
Statement st = connection.createStatement();
try {
connection.setAutoCommit(false);
// System.out.println("sql===" + sql);
int i = st.executeUpdate(sql);
} catch (SQLException e) {
System.out.println(e.getMessage());
if (st != null)
st.close();
connection.rollback();
connection.close();
} finally {
if (st != null)
st.close();
// connection.close();
}
}
public static void executeDeleteSql(String sql) throws SQLException {
Statement st = connection.createStatement();
try {
connection.setAutoCommit(false);
// System.out.println("sql===" + sql);
st.executeUpdate(sql);
connection.commit();
} catch (SQLException e) {
if (st != null)
st.close();
connection.rollback();
connection.close();
} finally {
if (st != null)
st.close();
connection.close();
}
}
/**
*
*/
public final static int write(String sql, Object[] argments) {
return update(sql, argments);
}
/**
* (Connection)
*/
public final static int update(String sql, Object[] argments) {
int i = -1;
try {
i = DbPool.getPs(argments, sql).executeUpdate();
DbPool.connection.commit();
} catch (SQLException e) {
e.printStackTrace();
} finally {
free(DbPool.rs, DbPool.ps);
}
return i;
}
public static ResultSet executeSelectSql(String sql) throws SQLException {
Statement st = connection.createStatement();
try {
connection.setAutoCommit(false);
// System.out.println("sql===" + sql);
rs = st.executeQuery(sql);
// conn.commit();
} catch (SQLException e) {
if (st != null)
st.close();
connection.rollback();
connection.close();
}
return rs;
}
/**
*
*/
public final static void free(ResultSet resultSet) {
free(resultSet, null, null);
}
/**
*
*/
public final static void free(Statement statement) {
free(null, statement, null);
}
/**
*
*/
public final static void free(Connection connection) {
free(null, null, connection);
}
/**
*
*/
public final static void free(ResultSet resultSet, Statement statement) {
free(resultSet, statement, null);
}
/**
*
*/
public final static void free(Statement statement, Connection connection) {
free(null, statement, connection);
}
/**
* ()
*/
public final static void free() {
free(DbPool.rs, DbPool.ps);
}
/**
* ()
*/
public final static void freeAll() {
free(DbPool.rs, DbPool.ps, DbPool.connection);
}
/**
* ()
*/
public final static void free(ResultSet resultSet, Statement statement, Connection connection) {
try {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} finally {
try {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}

@ -0,0 +1,153 @@
package com.langtech.plm.bg;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map.Entry;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import com.teamcenter.rac.aif.AbstractAIFUIApplication;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentForm;
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;
import com.teamcenter.rac.util.PropertyLayout;
public class QDRWChooseDialog extends JFrame implements ActionListener {
private JComboBox<String> objectComboBox = new JComboBox<String>();
private JButton okButton = new JButton("确定");
private JButton concelButton = new JButton("取消");
private String[] strings;
private AbstractAIFUIApplication app;
private HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
public QDRWChooseDialog(String[] strings,AbstractAIFUIApplication app) {
// TODO Auto-generated constructor stub
this.strings = strings;
this.app = app;
initUI();
}
public void initUI() {
// TODO Auto-generated method stub
try {
this.setTitle("请选择变更模板");
this.setLayout(new BorderLayout());
JPanel topPanel = getTopPanel();
JPanel btnPanel = getBtnPanel();
this.add(topPanel, BorderLayout.NORTH);
// this.add(pane,BorderLayout.CENTER);
this.add(btnPanel, BorderLayout.SOUTH);
this.setPreferredSize(new Dimension(350, 150));
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); // 获取屏幕尺寸
int screenWidth = screenSize.width; // 获取屏幕宽度
int screenHeight = screenSize.height; // 获取屏幕高度
int x = (screenWidth - 350) / 2; // 计算Frame的左上角x坐标
int y = (screenHeight - 150) / 2; // 计算Frame的左上角y坐标
this.setLocation(x, y); // 设置Frame的位置
// this.setLocationRelativeTo(null);
this.createActionEvent();
this.pack();
// this.validate();
this.setVisible(true);
// this.setAlwaysOnTop(true);
//设置下拉值
for (int i = 0; i < strings.length; i++) {
String[] split = strings[i].split("=");
objectComboBox.addItem(split[0]);
ArrayList<String> list = new ArrayList<String>();
list.add(split[1]);
list.add(split[2]);
list.add(split[3]);
map.put(split[0], list);
}
} catch (Exception e) {
e.printStackTrace();
return;
}
}
// 添加监听
public void createActionEvent() {
this.okButton.addActionListener(this);
this.concelButton.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object source = e.getSource();
System.out.println("source==>+" + source);
if (this.okButton.equals(source)) {
String selectedItem = (String) objectComboBox.getSelectedItem();
ArrayList<String> arrayList = map.get(selectedItem);
new QDRWDialog((TCSession)app.getSession(),arrayList.get(0),arrayList.get(1),selectedItem,arrayList.get(2));
System.out.println("newnewnwenew");
this.dispose();
} else if (this.concelButton.equals(source)) {
this.dispose();
}
}
private JPanel getBtnPanel() {
JPanel topPanel = new JPanel();
topPanel.setLayout(new PropertyLayout());
topPanel.add("1.1.center", new JLabel(""));
topPanel.add("2.1.center", new JLabel(" "));
topPanel.add("2.2.center", okButton);
topPanel.add("2.3.center", new JLabel(""));
topPanel.add("2.4.center", concelButton);
topPanel.add("3.1.center", new JLabel(""));
topPanel.add("4.1.center", new JLabel(""));
return topPanel;
}
// 查询部分
private JPanel getTopPanel() {
// TODO Auto-generated method stub
JPanel topPanel = new JPanel();
topPanel.setLayout(new PropertyLayout());
topPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
topPanel.add("1.1.left.center", new JLabel(""));
topPanel.add("2.1.left.center", new JLabel(""));
topPanel.add("3.1.left.center", new JLabel(""));
topPanel.add("4.1.left.center", new JLabel(""));
topPanel.add("5.1.left.center", new JLabel(" 变更模板:"));
topPanel.add("5.2.left.center", objectComboBox);
return topPanel;
}
}

@ -0,0 +1,936 @@
package com.langtech.plm.bg;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
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;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.RowSorter;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.ListOfValuesInfo;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentListOfValues;
import com.teamcenter.rac.kernel.TCComponentListOfValuesType;
import com.teamcenter.rac.kernel.TCComponentProcessType;
import com.teamcenter.rac.kernel.TCComponentProject;
import com.teamcenter.rac.kernel.TCComponentTaskTemplate;
import com.teamcenter.rac.kernel.TCComponentTaskTemplateType;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCProperty;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.DateButton;
import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.rac.util.PropertyLayout;
import com.teamcenter.soa.client.model.LovValue;
public class QDRWDialog extends JFrame implements ActionListener {
private Map<String, JTextField> textMap = new HashMap<>();
private TCSession session;
private JTable table;
private String[] header;
private ArrayList<String> gsPrefTopLine;
private LinkedHashMap<Integer, String> colorMap = new LinkedHashMap<Integer, String>();
private LinkedHashMap<String, String> gsPrefMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> fieldsMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> cfdjPref = new LinkedHashMap<String, String>();
private LinkedHashMap<Integer, String> lovPositionMap = new LinkedHashMap<Integer, String>();
private LinkedHashMap<String, Integer> positionFieldMap = new LinkedHashMap<String, Integer>();
private LinkedHashMap<Integer, Integer> widtheMap = new LinkedHashMap<Integer, Integer>();
// 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 JComboBox<String> cfdJComboBox = new JComboBox<String>();
private DateButton jhksB;
private DateButton jhksS;
private DateButton jhwcB;
private DateButton jhwcS;
private JTextField idField = new JTextField(30);
private JButton ssButton = new JButton("搜索");
private JButton ckButton = new JButton("查看任务分配表");
private JButton qrqdButton = new JButton("确认启动");
private JButton gbButton = new JButton("关闭");
private static ArrayList<String> dateConnList = new ArrayList<String>();
private String pref;
private String taskName;
private ArrayList<Integer> canWriteColume = new ArrayList<Integer>();
private ArrayList<String> sqlField;
private QDRWTableColorRender QDRWTableColorRender;
LinkedHashMap<String, LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>> valueMap;
private Connection conn = null;
private String tamplateName;
private String chooseType;
public QDRWDialog(TCSession session, String pref, String taskName,String tamplateName,String chooseType) {
// TODO Auto-generated constructor stub
this.session = session;
this.pref = pref;
this.taskName = taskName;
this.tamplateName = tamplateName;
this.chooseType = chooseType;
initUI();
}
public void initUI() {
// TODO Auto-generated method stub
this.setTitle("任务分配表");
this.setLayout(new BorderLayout());
String[] prefs = session.getPreferenceService().getStringValues(pref);
if (prefs == null || prefs.length <= 0) {
MessageBox.post("首选项“" + pref + "”未配置!", "提示 ", MessageBox.INFORMATION);
return;
}
String[] split2 = prefs[0].split(";");
for (int j = 0; j < split2.length; j++) {
String[] split3 = split2[j].split("=");
positionFieldMap.put(split3[0], j);
if (split3.length == 3) {
if (split3[1].contains("#")) {
String[] split = split3[1].split("#");
fieldsMap.put(split3[0], split[1]);
colorMap.put(j + 1, split3[0]);
} else {
fieldsMap.put(split3[0], split3[1]);
}
if (split3[2].contains("%")) {
String[] split4 = split3[2].split("%");
widtheMap.put(j + 1, Integer.parseInt(split4[0]));
canWriteColume.add(j);
} else {
widtheMap.put(j + 1, 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<String> valuesCollection = fieldsMap.values();
// 创建一个新的列表来保存所有的值
List<String> valuesList = new ArrayList<>(valuesCollection);
// 在列表的第一个位置插入新的 String 值
valuesList.add(0, "");
// 如果需要,可以将列表转回集合
Collection<String> updatedValuesCollection = valuesList;
// 将集合转换为数组
header = updatedValuesCollection.toArray(new String[0]);
System.out.println("header===============" + header.length);
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<Integer, Integer> map : widtheMap.entrySet()) {
colModel.getColumn(map.getKey()).setPreferredWidth(map.getValue());
}
}
public void createActionEvent() {
this.ssButton.addActionListener(this);
this.ckButton.addActionListener(this);
this.gbButton.addActionListener(this);
this.qrqdButton.addActionListener(this);
}
// 查询部分
private JPanel getTopPanel() {
// TODO Auto-generated method stub
JPanel topPanel = new JPanel();
topPanel.setLayout(new PropertyLayout());
jhksB = new DateButton(null, "yyyy-MM-dd", false, false, false);
jhksB.setDate("未设置日期");
jhksS = new DateButton(null, "yyyy-MM-dd", false, false, false);
jhksS.setDate("未设置日期");
jhwcB = new DateButton(null, "yyyy-MM-dd", false, false, false);
jhwcB.setDate("未设置日期");
jhwcS = new DateButton(null, "yyyy-MM-dd", false, false, false);
jhwcS.setDate("未设置日期");
topPanel.add("1.1.left.center", new JLabel("ID "));
topPanel.add("1.2.left.center", idField);
topPanel.add("1.3.left.center", new JLabel(" 计划开始晚于 "));
topPanel.add("1.4.left.center", jhksB);
topPanel.add("1.5.left.center", new JLabel(" 计划开始早于 "));
topPanel.add("1.6.left.center", jhksS);
topPanel.add("1.7.left.center", new JLabel(" 计划完成晚于 "));
topPanel.add("1.8.left.center", jhwcB);
topPanel.add("1.9.left.center", new JLabel(" 计划完成早于 "));
topPanel.add("1.10.left.center", jhwcS);
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", ssButton);
bottomPanel.add("1.3.left.center", new JLabel(" "));
bottomPanel.add("1.4.left.center", ckButton);
bottomPanel.add("1.5.left.center", new JLabel(" "));
bottomPanel.add("1.6.left.center", qrqdButton);
bottomPanel.add("1.7.left.center", new JLabel(" "));
bottomPanel.add("1.8.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));
// 设置自定义渲染器
QDRWTableColorRender = new QDRWTableColorRender();
table.setDefaultRenderer(Object.class, QDRWTableColorRender);
JScrollPane pane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
table.getTableHeader().setDefaultRenderer(new CheckHeaderCellRenderer(table));
table.getColumnModel().getColumn(0).setCellRenderer(new TableCellCheckboxRenderer(table));
// for (Entry<Integer, String> map : lovPositionMap.entrySet()) {
// JComboBox<String> jComboBox = new JComboBox<String>();
// 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));
// }
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// 添加鼠标监听器
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 || e.getClickCount() == 1) {
// TODO Auto-generated method stub
int selectColumn = table.getTableHeader().columnAtPoint(e.getPoint());
int selectedRow = table.rowAtPoint(e.getPoint());
if (selectColumn == 0) {
Object valueAt = table.getValueAt(selectedRow, selectColumn);
if (valueAt.toString().equals("1")) {
table.setValueAt("0", selectedRow, selectColumn);
} else {
table.setValueAt("1", selectedRow, selectColumn);
}
}
}
}
});
}
});
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<TableModel> sorter = new TableRowSorter<TableModel>(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 (column == 0) {
return true;
} else {
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.ckButton)) {
int selectedRow = table.getSelectedRow();
if (selectedRow < 0) {
MessageBox.post("请选择某一行!", "提示", 2);
}
String selectId = (String) table.getValueAt(selectedRow, 1);
String selectType = (String) table.getValueAt(selectedRow, 2);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
new QDRWRWFPDialog(session, selectType, selectId);
// d.setModal(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} else if (source.equals(this.qrqdButton)) {
String[] value = session.getPreferenceService().getStringValues("LD_dbinfo2");
if (value == null || value.length == 0) {
MessageBox.post("首选项LD_dbinfo2配置有误请检查。", "提示", 2);
return;
} else {
Collections.addAll(dateConnList, value);
}
conn = getConn();
int count = 0;
for (int i = 0; i < table.getRowCount(); i++) {
if (table.getValueAt(i, 0).toString().equals("1")) {
String id = table.getValueAt(i, 1).toString();
TCComponentItemRevision rev = null;
try {
System.out.println("id============="+id);
TCComponent[] tcComponentsById = getTCComponentsById(session,id);
if(tcComponentsById != null && tcComponentsById.length > 0) {
System.out.println("tcComponentsById.length============="+tcComponentsById.length);
TCComponentItem item = (TCComponentItem)tcComponentsById[0];
rev = item.getLatestItemRevision();
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> linkedHashMap = valueMap.get(id);
for (Entry<Integer, String> map : colorMap.entrySet()) {
boolean isProsess = false;
String prefValue = map.getValue();
String[] split = prefValue.split("\\.");
ArrayList<LinkedHashMap<String, String>> arrayList = linkedHashMap.get(split[0]);
String RWXDSJ = "";
String QQRW = "";
String SFSJGG = "";
String GGPSNR = "";
for (int j = 0; j < arrayList.size(); j++) {
if (arrayList.get(j).containsKey("RWXDSJ")) {
RWXDSJ = arrayList.get(j).get("RWXDSJ");
}
if (arrayList.get(j).containsKey("QQRW")) {
QQRW = arrayList.get(j).get("QQRW");
}
if (arrayList.get(j).containsKey("SFSJGG")) {
SFSJGG = arrayList.get(j).get("SFSJGG");
}
if (arrayList.get(j).containsKey("GGPSNR")) {
GGPSNR = arrayList.get(j).get("GGPSNR");
}
}
System.out.println("RWXDSJ======="+RWXDSJ);
System.out.println("QQRW======="+QQRW);
System.out.println("SFSJGG======="+SFSJGG);
if (RWXDSJ == null || RWXDSJ.isEmpty()) {
if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("否")) {
isProsess = true;
} else if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("是")
&& (QQRW == null || QQRW.isEmpty())) {
isProsess = true;
} else if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("是")
&& (QQRW != null && !QQRW.isEmpty())) {
// 找前驱任务
ArrayList<Integer> judgeList = new ArrayList<Integer>();
dgRW(linkedHashMap, QQRW,judgeList);
if(judgeList.size() == 0) {
isProsess = true;
}
}
}
System.out.println("taskName========="+taskName);
System.out.println("isProsess========"+isProsess);
if(isProsess && taskName != null && !taskName.isEmpty() && rev != null) {
try {
CreateProcess(session,rev,taskName,GGPSNR,split[0],id);
} catch (TCException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
count++;
}
}
if (count == 0) {
MessageBox.post("请勾选数据!", "提示 ", MessageBox.INFORMATION);
if(conn != null) {
try {
conn.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
return;
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
MessageBox.post("启动完成!", "提示 ", MessageBox.INFORMATION);
} else if (source.equals(this.ssButton)) {
table.removeAll();
dtm1.setRowCount(0);
String condition = "";
String ids = idField.getText();
String jhksBStr = jhksB.getText();
String jhksSStr = jhksS.getText();
String jhwcBStr = jhwcB.getText();
String jhwcSStr = jhwcS.getText();
System.out.println("jhksBStr=======" + jhksBStr);
if (!jhksBStr.contains("未设置")) {
condition += "and JHKS >= '" + jhksBStr + "' ";
}
if (!jhksSStr.contains("未设置")) {
condition += "and JHKS <= '" + jhksSStr + "' ";
}
if (!jhwcBStr.contains("未设置")) {
condition += "and JHJS >= '" + jhwcBStr + "' ";
}
if (!jhwcSStr.contains("未设置")) {
condition += "and JHJS <= '" + jhwcSStr + "' ";
}
if (ids != null && !ids.isEmpty()) {
if (ids.contains(";")) {
String[] split = ids.split(";");
StringBuilder sqlIn = new StringBuilder();
sqlIn.append("(");
for (int i = 0; i < split.length; i++) {
sqlIn.append("'" + split[i] + "',");
}
// 去掉最后一个,
sqlIn.setLength(sqlIn.length() - 1);
sqlIn.append(")");
System.out.println("sqlIn======================" + sqlIn.toString());
condition += "and ID IN " + sqlIn.toString();
} else {
condition += "and ID='" + ids + "' ";
}
}
String[] value = session.getPreferenceService().getStringValues("LD_dbinfo2");
if (value == null || value.length == 0) {
MessageBox.post("首选项LD_dbinfo2配置有误请检查。", "提示", 2);
return;
} else {
Collections.addAll(dateConnList, value);
}
sqlField = new ArrayList<String>();
Set<String> keySet = fieldsMap.keySet();
String fieldsSql = "";
for (String string : keySet) {
String[] split = string.split("\\.");
fieldsSql += split[1] + ",";
sqlField.add(split[1]);
}
fieldsSql = fieldsSql.substring(0, fieldsSql.length() - 1);
System.out.println("fieldsSql==========" + fieldsSql);
//System.out.println("condition===================" + condition);
if (condition == null || condition.isEmpty()) {
MessageBox.post("请填写条件!", "提示", 2);
return;
}
String sqlIdString = "SELECT ID FROM LY_CHANGETASSKFORM_DETAILS where TEMPLATENAME = '"+tamplateName+ "' and OBJECTTYPE = '"+ chooseType + "' " + condition;
System.out.println("sqlIdString=========" + sqlIdString);
conn = getConn();
PreparedStatement stmt = null;
String selectIds = "";
String lastCondition = "";
// 查ID
try {
stmt = conn.prepareStatement(sqlIdString);
ResultSet result = stmt.executeQuery();
while (result.next()) {
String id = result.getString("ID");
if (!selectIds.contains(id)) {
selectIds += id + ";";
}
}
if (selectIds != null && !selectIds.isEmpty()) {
if (selectIds.contains(";")) {
String[] split = selectIds.split(";");
StringBuilder sqlIn = new StringBuilder();
sqlIn.append("(");
for (int i = 0; i < split.length; i++) {
sqlIn.append("'" + split[i] + "',");
}
// 去掉最后一个,
sqlIn.setLength(sqlIn.length() - 1);
sqlIn.append(")");
//System.out.println("sqlIn======================" + sqlIn.toString());
lastCondition += "and ID IN " + sqlIn.toString();
} else {
lastCondition += "and ID='" + ids + "' ";
}
}
} catch (SQLException e1) {
e1.printStackTrace();
}
// 存数据的map
valueMap = new LinkedHashMap<String, LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>>();
// String sqlString = "SELECT " + fieldsSql + " FROM LY_CHANGETASSKFORM_DETAILS
// where 1=1 "+lastCondition;
String sqlString = "SELECT * FROM LY_CHANGETASSKFORM_DETAILS where 1=1 " + lastCondition;
System.out.println("sqlString======" + sqlString);
if(lastCondition.isEmpty()) {
MessageBox.post("未查到数据!", "提示", 2);
return;
}else {
try {
stmt = conn.prepareStatement(sqlString);
ResultSet result = stmt.executeQuery();
ResultSetMetaData metaData = result.getMetaData();
int columnCount = metaData.getColumnCount();
while (result.next()) {
String id = result.getString("ID");
String xh = result.getString("XH");
LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> tempMap1 = null;
if (valueMap.containsKey(id)) {
tempMap1 = valueMap.get(id);
} else {
tempMap1 = new LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>();
}
ArrayList<LinkedHashMap<String, String>> tempList = new ArrayList<LinkedHashMap<String, String>>();
for (int i = 1; i <= columnCount; i++) {
// 获取列名
String columnName = metaData.getColumnName(i); // 获取实际的列名
// 获取列的值
String columnValue = result.getString(i); // 使用 getObject() 获取列的值
LinkedHashMap<String, String> fieldMap = new LinkedHashMap<String, String>();
fieldMap.put(columnName,
columnValue == null ? columnValue : validateAndFormatDate(columnValue));
tempList.add(fieldMap);
}
tempMap1.put(xh, tempList);
valueMap.put(id, tempMap1);
}
//System.out.println(valueMap.toString());
QDRWTableColorRender.valueMap = valueMap;
QDRWTableColorRender.colorMap = colorMap;
for (Entry<String, LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>> map : valueMap
.entrySet()) {
ArrayList<String> tableList = new ArrayList<String>();
tableList.add("0");
for (Entry<String, String> tempMap : fieldsMap.entrySet()) {
String pref = tempMap.getKey();
String[] split = pref.split("\\.");
LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> value2 = map.getValue();
ArrayList<LinkedHashMap<String, String>> arrayList = value2.get(split[0]);
if (arrayList != null) {
for (int i = 0; i < arrayList.size(); i++) {
LinkedHashMap<String, String> linkedHashMap = arrayList.get(i);
if (linkedHashMap.containsKey(split[1])) {
tableList.add(linkedHashMap.get(split[1]));
}
}
}
}
dtm1.addRow(tableList.toArray(new Object[0]));
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
// 获取数据库连接
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 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;
}
}
// // 自定义渲染器
// static class CustomColorRenderer extends DefaultTableCellRenderer {
// public LinkedHashMap<String,LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>> valueMap;
// public LinkedHashMap<Integer, String> colorMap;
//
//
// @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);
//
// String id = (String)table.getValueAt(row, 1);
// LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> linkedHashMap = valueMap.get(id);
// System.out.println("colorMap======"+colorMap.toString());
// for (Entry<Integer, String> map : colorMap.entrySet()) {
// Integer columnColor = map.getKey();
// if(column == 4 && row == 1) {
// System.out.println("columnColor========"+columnColor);
// String prefValue = map.getValue();
// String[] split = prefValue.split("\\.");
// ArrayList<LinkedHashMap<String, String>> arrayList = linkedHashMap.get(split[0]);
// String sjwcsj = "";
// String jhks = "";
// String jhjs = "";
//
// for (int i = 0; i < arrayList.size(); i++) {
//
// if(arrayList.get(i).containsKey("SJWCSJ")) {
// sjwcsj = arrayList.get(i).get("SJWCSJ");
// }
// if(arrayList.get(i).containsKey("JHKS")) {
// jhks = arrayList.get(i).get("JHKS");
// }
// if(arrayList.get(i).containsKey("JHJS")) {
// jhjs = arrayList.get(i).get("JHJS");
// }
// }
// System.out.println("sjwcsj========"+sjwcsj);
// System.out.println("jhks========"+jhks);
// System.out.println("jhjs========"+jhjs);
// if(sjwcsj != null && !sjwcsj.isEmpty()) {
// c.setBackground(Color.GREEN);
// }else {
// if(jhjs != null && !jhjs.isEmpty() && jhks != null && !jhks.isEmpty()) {
// if(isNotAfterCurrentDate(jhjs)) {
// c.setBackground(Color.RED);
//
//
// System.out.println("row==="+row+"===column==="+column);
// }else {
// //setBackground(Color.YELLOW);
// c.setBackground(Color.YELLOW);
// }
// }
// }
// }
//
// }
//
//
// return c;
// }
// }
//
public void dgRW(LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> linkedHashMap, String xhs,
ArrayList<Integer> judgeList) {
if (xhs.contains(",")) {
String[] split = xhs.split(",");
for (int z = 0; z < split.length; z++) {
ArrayList<LinkedHashMap<String, String>> arrayList = linkedHashMap.get(split[z]);
String SJWCSJ = "";
String SFSJGG = "";
String QQRW = "";
for (int i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).containsKey("SFSJGG")) {
SFSJGG = arrayList.get(i).get("SFSJGG");
}
if (arrayList.get(i).containsKey("SJWCSJ")) {
SJWCSJ = arrayList.get(i).get("SJWCSJ");
}
if (arrayList.get(i).containsKey("QQRW")) {
QQRW = arrayList.get(i).get("QQRW");
}
}
System.out.println("---SJWCSJ=======" + SFSJGG);
System.out.println("---SFSJGG=======" + SFSJGG);
System.out.println("---QQRW=======" + SFSJGG);
if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("是")) {
if (SJWCSJ == null || SJWCSJ.isEmpty()) {
judgeList.add(0);
}
} else if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("否") && QQRW != null
&& !QQRW.isEmpty()) {
dgRW(linkedHashMap, QQRW, judgeList);
}
}
} else {
ArrayList<LinkedHashMap<String, String>> arrayList = linkedHashMap.get(xhs);
String SJWCSJ = "";
String SFSJGG = "";
String QQRW = "";
for (int i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).containsKey("SFSJGG")) {
SFSJGG = arrayList.get(i).get("SFSJGG");
}
if (arrayList.get(i).containsKey("SJWCSJ")) {
SJWCSJ = arrayList.get(i).get("SJWCSJ");
}
if (arrayList.get(i).containsKey("QQRW")) {
QQRW = arrayList.get(i).get("QQRW");
}
}
System.out.println("---SJWCSJ=======" + SJWCSJ);
System.out.println("---SFSJGG=======" + SFSJGG);
System.out.println("---QQRW=======" + QQRW);
if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("是")) {
if (SJWCSJ == null || SJWCSJ.isEmpty()) {
judgeList.add(0);
}
} else if (SFSJGG != null && !SFSJGG.isEmpty() && SFSJGG.equals("否") && QQRW != null && !QQRW.isEmpty()) {
dgRW(linkedHashMap, QQRW, judgeList);
}
}
}
public void CreateProcess(TCSession session, TCComponent target, String processName, String rwmc,String xh,String id)
throws TCException {
try {
TCComponentProcessType processType = (TCComponentProcessType) session.getTypeComponent("Job");
TCComponentTaskTemplateType taskTemplateType = (TCComponentTaskTemplateType) session
.getTypeComponent("EPMTaskTemplate");
TCComponentTaskTemplate taskTemplate = taskTemplateType.find(processName, 0);
if (taskTemplate != null) {
String name = target.getProperty("object_string");
TCComponent create = processType.create(processName + "" + name + "_" + rwmc, "", taskTemplate,
new TCComponent[] { target }, new int[] { 1 });
//System.out.println("uid===================" + create.getUid());
//System.out.println("type==" + create.getType());
//System.out.println("type==" + create.getStringProperty("object_type"));
String updateSql = "update LY_CHANGETASSKFORM_DETAILS set WFUID = '"+create.getUid()+"' where ID = '"+id+"' and XH = '"+xh+"'";
try {
PreparedStatement prepareStatement = conn.prepareStatement(updateSql);
boolean execute = prepareStatement.execute();
System.out.println("execute=="+execute+"|updateSql===="+updateSql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (TCException var7) {
var7.printStackTrace();
throw var7;
}
}
public static TCComponent[] getTCComponentsById(TCSession session, String id) throws Exception {
return session.search("零组件...", new String[] { "零组件 ID" }, new String[] { id });
}
}

@ -0,0 +1,50 @@
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 QDRWHandler 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();
String[] templates = session.getPreferenceService().getStringValues("Connor_TaskFormSummary_Config");
if(templates != null && templates.length > 0) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
new QDRWChooseDialog(templates,app);
//d.setModal(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}else {
MessageBox.post("请配置首选项“Connor_TaskFormSummary_Config”", "提示 ", MessageBox.INFORMATION);
}
return null;
}
}

@ -0,0 +1,639 @@
package com.langtech.plm.bg;
import java.awt.BorderLayout;
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;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.RowSorter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.ListOfValuesInfo;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem;
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;
import com.teamcenter.rac.util.DateButton;
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<String, JTextField> textMap = new HashMap<>();
private TCSession session;
private JTable table;
private String[] header;
private ArrayList<String> gsPrefTopLine;
private LinkedHashMap<String, String> gsPrefMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> fieldsMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> cfdjPref = new LinkedHashMap<String, String>();
private LinkedHashMap<Integer, String> lovPositionMap = new LinkedHashMap<Integer, String>();
private LinkedHashMap<String, Integer> positionFieldMap = new LinkedHashMap<String, Integer>();
private LinkedHashMap<Integer, Integer> widtheMap = new LinkedHashMap<Integer, Integer>();
// 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<String> cfdJComboBox = new JComboBox<String>();
private DateButton cfsjButton;
private JButton tzsjButton = new JButton("调整时间");
private static ArrayList<String> dateConnList = new ArrayList<String>();
private String type;
private String id;
private String objectString;
private boolean readOnly;
private ArrayList<Integer> canWriteColume = new ArrayList<Integer>();
private ArrayList<Integer> choosePersonColume = new ArrayList<Integer>();
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
yyButton.setEnabled(false);
tzsjButton.setEnabled(false);
this.setTitle(objectString+"变更任务分配表");
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("=");
if(split[0].equals(type)) {
String[] split2 = split[1].split(";");
for (int j = 0; j < split2.length; j++) {
String[] split3 = split2[j].split("\\|");
cfdjPref.put(split3[0],split3[1]);
cfdJComboBox.addItem(split3[0]);
}
break;
}
}
//获取首选项匹配的类型
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 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]));
}
}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 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]));
}
lovPositionMap.put(j,split3[3]);
}
}
}
}
}
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<String> 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<Integer, Integer> 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<String> 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<String> arList = new ArrayList<String>();
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<Integer, String> map : lovPositionMap.entrySet()) {
JComboBox<String> jComboBox = new JComboBox<String>();
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));
}
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;
}
/***
* 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<TableModel> sorter = new TableRowSorter<TableModel>(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) {
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;
//遍历一遍判断是否涉及更改
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<String, Integer> 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();
}
MessageBox.post("应用完成!", "提示", 2);
} else if (source.equals(this.tzsjButton)) {
gsPrefTopLine = new ArrayList<String>();
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;
}
}
}

@ -0,0 +1,93 @@
package com.langtech.plm.bg;
import java.awt.Color;
import java.awt.Component;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import javax.swing.JTable;
public class QDRWTableColorRender extends TableColorRender {
public LinkedHashMap<String,LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>>> valueMap;
public LinkedHashMap<Integer, String> colorMap;
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component renderer = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
String id = (String)table.getValueAt(row, 1);
LinkedHashMap<String, ArrayList<LinkedHashMap<String, String>>> linkedHashMap = valueMap.get(id);
//System.out.println("colorMap======"+colorMap.toString());
for (Entry<Integer, String> map : colorMap.entrySet()) {
Integer columnColor = map.getKey();
if(column == columnColor) {
//System.out.println("columnColor========"+columnColor);
String prefValue = map.getValue();
String[] split = prefValue.split("\\.");
ArrayList<LinkedHashMap<String, String>> arrayList = linkedHashMap.get(split[0]);
String sjwcsj = "";
String RWXDSJ = "";
String jhjs = "";
for (int i = 0; i < arrayList.size(); i++) {
if(arrayList.get(i).containsKey("SJWCSJ")) {
sjwcsj = arrayList.get(i).get("SJWCSJ");
}
if(arrayList.get(i).containsKey("RWXDSJ")) {
RWXDSJ = arrayList.get(i).get("RWXDSJ");
}
if(arrayList.get(i).containsKey("JHJS")) {
jhjs = arrayList.get(i).get("JHJS");
}
}
//System.out.println("sjwcsj========"+sjwcsj);
//System.out.println("jhks========"+jhks);
//System.out.println("jhjs========"+jhjs);
if(sjwcsj != null && !sjwcsj.isEmpty()) {
renderer.setBackground(Color.GREEN);
}else {
if(jhjs != null && !jhjs.isEmpty() && RWXDSJ != null && !RWXDSJ.isEmpty()) {
if(isNotAfterCurrentDate(jhjs)) {
renderer.setBackground(Color.RED);
// System.out.println("row==="+row+"===column==="+column);
}else {
//setBackground(Color.YELLOW);
renderer.setBackground(Color.GRAY);
}
}
}
}
}
return renderer;
}
public static boolean isNotAfterCurrentDate(String dateStr) {
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
// 解析字符串为 LocalDate 对象
LocalDate inputDate = LocalDate.parse(dateStr, formatter);
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 比较两个日期
return !inputDate.isAfter(currentDate); // 返回 true 如果输入日期 <= 当前日期
} catch (DateTimeParseException e) {
// 处理解析异常
System.out.println("Invalid date format: " + e.getMessage());
return false; // 或者你也可以选择抛出异常,或者根据需求做其他处理
}
}
}

@ -0,0 +1,642 @@
package com.langtech.plm.bg;
import java.awt.BorderLayout;
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;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.RowSorter;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.ListOfValuesInfo;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem;
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;
import com.teamcenter.rac.util.DateButton;
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 RWFPDialog extends JFrame implements ActionListener {
private Map<String, JTextField> textMap = new HashMap<>();
private TCSession session;
private JTable table;
private String[] header;
private ArrayList<String> gsPrefTopLine;
private LinkedHashMap<String, String> gsPrefMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> fieldsMap = new LinkedHashMap<String, String>();
private LinkedHashMap<String, String> cfdjPref = new LinkedHashMap<String, String>();
private LinkedHashMap<Integer, String> lovPositionMap = new LinkedHashMap<Integer, String>();
private LinkedHashMap<String, Integer> positionFieldMap = new LinkedHashMap<String, Integer>();
private LinkedHashMap<Integer, Integer> widtheMap = new LinkedHashMap<Integer, Integer>();
// 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<String> cfdJComboBox = new JComboBox<String>();
private DateButton cfsjButton;
private JButton tzsjButton = new JButton("调整时间");
private static ArrayList<String> dateConnList = new ArrayList<String>();
private String type;
private String id;
private String objectString;
private boolean readOnly;
private ArrayList<Integer> canWriteColume = new ArrayList<Integer>();
private ArrayList<Integer> choosePersonColume = new ArrayList<Integer>();
public RWFPDialog(TCSession session, String type, String id, String objectString, boolean readOnly) {
// 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
if(readOnly) {
yyButton.setEnabled(false);
tzsjButton.setEnabled(false);
}
this.setTitle(objectString+"变更任务分配表");
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("=");
if(split[0].equals(type)) {
String[] split2 = split[1].split(";");
for (int j = 0; j < split2.length; j++) {
String[] split3 = split2[j].split("\\|");
cfdjPref.put(split3[0],split3[1]);
cfdJComboBox.addItem(split3[0]);
}
break;
}
}
//获取首选项匹配的类型
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 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]));
}
}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 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]));
}
lovPositionMap.put(j,split3[3]);
}
}
}
}
}
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<String> 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<Integer, Integer> 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<String> 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<String> arList = new ArrayList<String>();
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<Integer, String> map : lovPositionMap.entrySet()) {
JComboBox<String> jComboBox = new JComboBox<String>();
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));
}
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;
}
/***
* 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<TableModel> sorter = new TableRowSorter<TableModel>(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) {
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;
//遍历一遍判断是否涉及更改
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<String, Integer> 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();
}
MessageBox.post("应用完成!", "提示", 2);
} else if (source.equals(this.tzsjButton)) {
gsPrefTopLine = new ArrayList<String>();
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;
}
}
}

@ -0,0 +1,114 @@
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;
// }
//判断是否可编辑
boolean readOnly = true;
String userId = "";
try {
userId = session.getUser().getUserId();
} catch (TCException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}
String[] templates = session.getPreferenceService().getStringValues("Connor_TaskForm_ChangeDateButton_User");
if(templates != null && templates.length > 0 && userId != null && !userId.isEmpty()) {
if(templates[0].contains(userId)) {
readOnly = false;
}
}
final boolean readOnlyFinal = readOnly;
InterfaceAIFComponent target = app.getTargetComponent();
if(target instanceof TCComponentItem) {
TCComponentItem item = (TCComponentItem)target;
String type = item.getType();
try {
String id = item.getStringProperty("item_id");
String objectString = item.getStringProperty("object_string");
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
new RWFPDialog(session,type,id,objectString,readOnlyFinal);
//d.setModal(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} catch (TCException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}else if(target instanceof TCComponentItemRevision){
TCComponentItemRevision rev = (TCComponentItemRevision)target;
TCComponentItem item = null;
try {
item = rev.getItem();
} catch (TCException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
String type = item.getType();
try {
String id = item.getStringProperty("item_id");
String objectString = item.getStringProperty("object_string");
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
new RWFPDialog(session,type,id,objectString,readOnlyFinal);
//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;
}
}

@ -0,0 +1,54 @@
package com.langtech.plm.bg;
import java.awt.Component;
import java.util.List;
import javax.swing.JCheckBox;
import javax.swing.JRadioButton;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.EventListenerList;
import javax.swing.table.TableCellRenderer;
import com.teamcenter.rac.treetable.JTreeTable;
public class TableCellCheckboxRenderer extends JCheckBox implements
TableCellRenderer {
private List<Integer> processRows;
protected EventListenerList listenerList = new EventListenerList();
protected ChangeEvent changeEvent = new ChangeEvent(this);
//private TestTreeTableModel tableModel;
public List<Integer> getProcessRows() {
return processRows;
}
public void setProcessRows(List<Integer> processRows) {
this.processRows = processRows;
}
public TableCellCheckboxRenderer(final JTable table) {
}
public TableCellCheckboxRenderer(final JTreeTable table) {
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
// TODO Auto-generated method stub
this.setHorizontalAlignment(SwingConstants.CENTER);// ±íÍ·±êÇ©¾çÖÐ
// this.setBorderPainted(true);
if(value != null)
{
this.setSelected(value.toString().equals("1"));
}
else
{
this.setSelected(false);
}
return this;
}
}

@ -0,0 +1,71 @@
package com.langtech.plm.bg;
import java.awt.Color;
import java.awt.Component;
import java.util.HashMap;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
public class TableColorRender implements TableCellRenderer {
//
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
//IntegerÁÐ String±êʶ ColorÑÕÉ«
public HashMap<Integer, HashMap<String, Color>> allForegroundInfos = new HashMap<Integer, HashMap<String, Color>>();
public HashMap<Integer, Integer> allFColorColumn = new HashMap<Integer, Integer>();
//IntegerÁÐ String±êʶ ColorÑÕÉ«
public HashMap<Integer, HashMap<String, Color>> allBackgroundInfos = new HashMap<Integer, HashMap<String, Color>>();
public HashMap<Integer, Integer> allBColorColumn = new HashMap<Integer, Integer>();
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (value != null && value instanceof String) {
Color foreground = table.getForeground();
Color background = table.getBackground();
if (isSelected) {
background = new Color(10, 36, 106);
}
Boolean bSetFG = false;
Integer infoCol = allFColorColumn.get(column);
if (infoCol != null) {
HashMap<String, Color> fgc = allForegroundInfos.get(infoCol);
if (fgc != null) {
String infoValue = table.getValueAt(row, infoCol).toString();
Color color = fgc.get(infoValue);
if (color != null) {
foreground = color;
bSetFG = true;
}
}
}
Boolean bSetBG = false;
infoCol = allBColorColumn.get(column);
if (infoCol != null) {
HashMap<String, Color> bgc = allBackgroundInfos.get(infoCol);
if (bgc != null) {
String infoValue = table.getValueAt(row, infoCol).toString();
Color color = bgc.get(infoValue);
if (color != null) {
background = color;
bSetBG = true;
}
}
}
if (!bSetFG && !bSetBG && isSelected) {
foreground = Color.WHITE;
}
renderer.setForeground(foreground);
renderer.setBackground(background);
}
return renderer;
}
}

@ -17,11 +17,14 @@ public class CheckBoxTreeNodeSelectionListener extends MouseAdapter
int y = event.getY(); int y = event.getY();
int row = tree.getRowForLocation(x, y); int row = tree.getRowForLocation(x, y);
TreePath path = tree.getPathForRow(row); TreePath path = tree.getPathForRow(row);
System.out.println(path);
if(path != null) if(path != null)
{ {
CheckBoxTreeNode node = (CheckBoxTreeNode)path.getLastPathComponent(); CheckBoxTreeNode node = (CheckBoxTreeNode)path.getLastPathComponent();
System.out.println(node);
if(node != null) if(node != null)
{ {
boolean isSelected = !node.isSelected(); boolean isSelected = !node.isSelected();
node.setSelected(isSelected); node.setSelected(isSelected);
((DefaultTreeModel)tree.getModel()).nodeStructureChanged(node); ((DefaultTreeModel)tree.getModel()).nodeStructureChanged(node);

@ -7,6 +7,8 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import javax.swing.JButton; import javax.swing.JButton;
@ -44,7 +46,7 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{
private JTree jtree; private JTree jtree;
private JButton okButton; private JButton okButton;
private JButton celButton; private JButton celButton;
private HashMap<String, String> preMap = new HashMap<String, String>(); private HashMap<String, ArrayList<String>> preMap = new HashMap<String, ArrayList<String>>();
public static final String preName = "connor_LY6_FolderTemp"; public static final String preName = "connor_LY6_FolderTemp";
@ -90,11 +92,15 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{
if(prefVal.contains("=")) { if(prefVal.contains("=")) {
String[] split = prefVal.split("="); String[] split = prefVal.split("=");
modelBox.addItem(split[0]); modelBox.addItem(split[0]);
preMap.put(split[0], split[1]); ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add(split[1]);
arrayList.add(split[2]);
arrayList.add(split[3]);
preMap.put(split[0], arrayList);
} }
} }
} }
nameLabel = new JLabel("成品图号:"); nameLabel = new JLabel("项目名称");
nameField = new JTextField(); nameField = new JTextField();
nameField.setPreferredSize(new Dimension(200,30)); nameField.setPreferredSize(new Dimension(200,30));
JPanel topPanel = new JPanel(); JPanel topPanel = new JPanel();
@ -131,7 +137,8 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{
* @param tree * @param tree
*/ */
private void initTree(JTree tree){ private void initTree(JTree tree){
String puid = preMap.get(modelBox.getSelectedItem()); ArrayList<String> list = preMap.get(modelBox.getSelectedItem());
String puid = list.get(0);
TCComponent component; TCComponent component;
try { try {
component = session.stringToComponent(puid); component = session.stringToComponent(puid);
@ -214,18 +221,19 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
String name = nameField.getText(); String name = nameField.getText();
ArrayList<String> list = preMap.get(modelBox.getSelectedItem());
if (name.isEmpty()) { if (name.isEmpty()) {
MessageBox.post("请填写成品图号", "提示 ", MessageBox.INFORMATION); MessageBox.post("请填写项目名称", "提示 ", MessageBox.INFORMATION);
} else { } else {
TCComponentFolderType folderType; TCComponentFolderType folderType;
try { try {
KUtil.setByPass(true); KUtil.setByPass(true);
folderType = (TCComponentFolderType) session.getTypeComponent("LD6_CusProdFolder"); folderType = (TCComponentFolderType) session.getTypeComponent(list.get(1));
TCComponentFolder folder = KUtil.createFolderBySOA(folderType.getTypeName(), name); TCComponentFolder folder = KUtil.createFolderBySOA(folderType.getTypeName(), name);
//TCComponentFolder folder = folderType.create(name, "", "LD6_CusProdFolder"); //TCComponentFolder folder = folderType.create(name, "", "LD6_CusProdFolder");
target.add("contents", folder); target.add("contents", folder);
CheckBoxTreeNode root = (CheckBoxTreeNode) jtree.getModel().getRoot(); CheckBoxTreeNode root = (CheckBoxTreeNode) jtree.getModel().getRoot();
createFolderStruct(root,folder,(TCComponentFolderType) session.getTypeComponent("LD6_ProjMaFolder"),true); createFolderStruct(root,folder,(TCComponentFolderType) session.getTypeComponent(list.get(2)),true);
KUtil.setByPass(false); KUtil.setByPass(false);
disposeDialog(); disposeDialog();
} catch (Exception e1) { } catch (Exception e1) {
@ -239,6 +247,15 @@ public class CreateProjectStructDialog extends AbstractAIFDialog{
if(event.getStateChange() == ItemEvent.SELECTED) { if(event.getStateChange() == ItemEvent.SELECTED) {
//ÖØÐÂË¢ÐÂÊ÷ //ÖØÐÂË¢ÐÂÊ÷
jtree.setModel(null); jtree.setModel(null);
// 获取并移除所有的 MouseListener
MouseListener[] mouseListeners = jtree.getMouseListeners();
for (MouseListener listener : mouseListeners) {
jtree.removeMouseListener(listener);
}
// 重新验证和重绘
jtree.revalidate();
jtree.repaint();
initTree(jtree); initTree(jtree);
}else if(event.getStateChange() == ItemEvent.DESELECTED){ }else if(event.getStateChange() == ItemEvent.DESELECTED){

@ -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();
}
}

@ -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<String[]> tableData = getTableData();
if (tableData != null) {
tableData.forEach(rowData -> {
System.out.println(Arrays.toString(rowData));
});
}
if (flag) {
MessageBox.post("修改成功! ", "Info", MessageBox.INFORMATION);
this.dispose(); // 关闭窗口
} else {
MessageBox.post("生效时间不允许超出两行", "Error", MessageBox.ERROR);
}
});
return bottomPanel;
}
public List<String[]> getTableData() {
DefaultTableModel model = (DefaultTableModel) table.getModel();
int rowCount = model.getRowCount();
int columnCount = model.getColumnCount();
List<String[]> 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();
}
}
}

@ -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<TCComponentItemRevision> 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<TCComponentItemRevision> 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<TCComponentItemRevision> revList = new ArrayList<TCComponentItemRevision>();
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;
}
}
}

@ -15,7 +15,7 @@ public class DialogFrame extends JDialog {
private JComboBox<String> comboBox; private JComboBox<String> comboBox;
private Object syncObject; private Object syncObject;
public DialogFrame(JFrame owner,JComboBox<String> comboBox,ArrayList<String> list) { public DialogFrame(JFrame owner,JComboBox<String> comboBox,ArrayList<String> list) {
super(owner, "Dialog Window", true); // 模态对话框 super(owner, "选择已有M", true); // 模态对话框
this.comboBox = comboBox; this.comboBox = comboBox;
this.syncObject = syncObject; this.syncObject = syncObject;
JButton button = new JButton("È·¶¨"); JButton button = new JButton("È·¶¨");

File diff suppressed because it is too large Load Diff

@ -10,6 +10,7 @@ import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentBOMLine;
import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentSchedule; import com.teamcenter.rac.kernel.TCComponentSchedule;
import com.teamcenter.rac.kernel.TCComponentScheduleTask; import com.teamcenter.rac.kernel.TCComponentScheduleTask;
@ -62,6 +63,19 @@ public class MpartHandler extends AbstractHandler{
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
}else if(component instanceof TCComponentBOMLine) {
TCComponentBOMLine bomLine = (TCComponentBOMLine)component;
try {
TCComponentItemRevision itemRevision = bomLine.getItemRevision();
String type = itemRevision.getType();
System.out.println("type2================"+type);
if(types[0].contains(type)) {
arrayList.add((TCComponentItemRevision)itemRevision);
}
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
} }

@ -40,7 +40,7 @@ public class TableCellCheckboxRenderer extends JCheckBox implements
// TODO Auto-generated method stub // TODO Auto-generated method stub
this.setHorizontalAlignment(SwingConstants.CENTER);// 表头标签剧中 this.setHorizontalAlignment(SwingConstants.CENTER);// 表头标签剧中
// this.setBorderPainted(true); // this.setBorderPainted(true);
System.out.println("valuevaluevalue==="+value);
if(value != null) if(value != null)
{ {
this.setSelected(value.toString().equals("1")); this.setSelected(value.toString().equals("1"));

@ -0,0 +1,743 @@
package com.langtech.plm.project;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
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;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.teamcenter.rac.aif.AbstractAIFApplication;
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.TCComponentBOMLine;
import com.teamcenter.rac.kernel.TCComponentBOMWindow;
import com.teamcenter.rac.kernel.TCComponentBOMWindowType;
import com.teamcenter.rac.kernel.TCComponentDataset;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentMEOP;
import com.teamcenter.rac.kernel.TCComponentMEOPRevision;
import com.teamcenter.rac.kernel.TCComponentTcFile;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCPreferenceService;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.rac.util.PropertyLayout;
import com.teamcenter.rac.util.UIUtilities;
public class CalculateDialog extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private AbstractAIFApplication application;
private TCComponentMEOPRevision meop;
private TCSession session;
TCComponentItemRevision rawMaterialRevision;
//打印界面控件
//图纸零件轮廓直径D
private JLabel zjdLabel;
private JTextField zjdTextField;
//图纸零件轮廓长
private JLabel lkcLabel;
private JTextField lkcTextField;
//切断用长度
private JLabel qdycdLabel;
private JTextField qdycdTextField;
//车端面用长度
private JLabel cdmycdLabel;
private JTextField cdmycdTextField;
//夹头用长度
private JLabel jtycdLabel;
private JTextField jtycdTextField;
//可制零件数
private JLabel kzljsLabel;
private JTextField kzljsTextField;
//规格
private JLabel ggLabel;
private JTextField ggTextField;
//材料牌号
private JLabel clphLabel;
private JTextField clphTextField;
//计算结果控件
//总长
private JLabel zcLabel;
private JTextField zcTextField;
//单件长度
private JLabel djcdLabel;
private JTextField djcdTextField;
//单件重量
private JLabel djzlLabel;
private JTextField djzlTextField;
//标准工时
private JLabel bzgsLabel;
private JTextField bzgsTextField;
//辅助工时
private JLabel fzgsLabel;
private JTextField fzgsTextField;
//计算按钮
private JButton calculateButton;
//同步按钮
private JButton syncButton;
//取消按钮
private JButton celButton;
//密度
private String density;
//横截面
private String crossSection;
//辅助时间
private String auxiliaryTime;
//固定时间
private String fixedTime;
//切割时间
private String cuttingTime;
public CalculateDialog(AbstractAIFApplication application,TCComponentMEOPRevision meop) throws TCException {
this.application = application;
this.meop = meop;
this.session = (TCSession) application.getSession();
initUI();
getProperties(this.meop);
}
private JPanel getTopPanel() {
JPanel centerPanel = new JPanel(new PropertyLayout());
centerPanel.add("1.1.left.top",this.zjdLabel);
centerPanel.add("1.2.left.top",this.zjdTextField);
centerPanel.add("2.1.left.top",this.lkcLabel);
centerPanel.add("2.2.left.top",this.lkcTextField);
centerPanel.add("3.1.left.top",this.qdycdLabel);
centerPanel.add("3.2.left.top",this.qdycdTextField);
centerPanel.add("4.1.left.top",this.cdmycdLabel);
centerPanel.add("4.2.left.top",this.cdmycdTextField);
centerPanel.add("5.1.left.top",this.jtycdLabel);
centerPanel.add("5.2.left.top",this.jtycdTextField);
centerPanel.add("6.1.left.top",this.kzljsLabel);
centerPanel.add("6.2.left.top",this.kzljsTextField);
centerPanel.add("7.1.left.top",this.ggLabel);
centerPanel.add("7.2.left.top",this.ggTextField);
centerPanel.add("8.1.left.top",this.clphLabel);
centerPanel.add("8.2.left.top",this.clphTextField);
centerPanel.add("1.3.left.top",this.zcLabel);
centerPanel.add("1.4.left.top",this.zcTextField);
centerPanel.add("2.3.left.top",this.djcdLabel);
centerPanel.add("2.4.left.top",this.djcdTextField);
centerPanel.add("3.3.left.top",this.djzlLabel);
centerPanel.add("3.4.left.top",this.djzlTextField);
centerPanel.add("4.3.left.top",this.bzgsLabel);
centerPanel.add("4.4.left.top",this.bzgsTextField);
centerPanel.add("5.3.left.top",this.fzgsLabel);
centerPanel.add("5.4.left.top",this.fzgsTextField);
centerPanel.add("6.3.left.top",this.calculateButton);
return centerPanel;
}
/**
*
*/
private void setPanelProperties() {
this.zjdLabel = new JLabel("图纸零件轮廓直径D");
this.lkcLabel = new JLabel("图纸零件轮廓长");
this.qdycdLabel = new JLabel("切断用长度");
this.cdmycdLabel = new JLabel("车端面用长度");
this.jtycdLabel = new JLabel("夹头用长度");
this.kzljsLabel = new JLabel("可制零件数");
this.ggLabel = new JLabel("规格");
this.clphLabel = new JLabel("材料牌号");
this.zcLabel = new JLabel("总长");
this.djcdLabel = new JLabel("单件长度");
this.djzlLabel = new JLabel("单件重量");
this.bzgsLabel = new JLabel("标准工时");
this.fzgsLabel = new JLabel("辅助工时");
this.zjdTextField = new JTextField(32);
this.lkcTextField = new JTextField(32);
this.qdycdTextField = new JTextField(32);
this.cdmycdTextField = new JTextField(32);
this.jtycdTextField = new JTextField(32);
this.kzljsTextField = new JTextField(32);
this.ggTextField = new JTextField(32);
this.ggTextField.setEditable(false);
this.ggTextField.setBackground(new Color(200, 200, 200));
this.clphTextField = new JTextField(32);
this.clphTextField.setEditable(false);
this.ggTextField.setBackground(new Color(200, 200, 200));
this.zcTextField = new JTextField(32);
this.djcdTextField = new JTextField(32);
this.djzlTextField = new JTextField(32);
this.bzgsTextField = new JTextField(32);
this.fzgsTextField = new JTextField(32);
this.calculateButton = new JButton("计算");
this.syncButton = new JButton("同步");
this.celButton = new JButton("取消");
}
/**
*
* @return
*/
private JPanel getButtomPanel() {
JPanel bottomPanel = new JPanel(new FlowLayout(1));
// bottomPanel.add(this.calculateButton);
bottomPanel.add(this.syncButton);
bottomPanel.add(this.celButton);
return bottomPanel;
}
/**
*
*/
private void initUI() {
this.setTitle("材料定额及工时计算");
this.setSize(500, 500);
this.setLayout(new BorderLayout());
setPanelProperties();
JPanel centerPanel = getTopPanel();
JPanel bottomPanel = getButtomPanel();
this.add(centerPanel,BorderLayout.CENTER);
this.add(bottomPanel,BorderLayout.SOUTH);
//添加事件
this.calculateButton.addActionListener(this);
this.syncButton.addActionListener(this);
this.celButton.addActionListener(this);
//放到屏幕中央
UIUtilities.centerToScreen(this);
this.setVisible(true);
}
/**
* MEOP
* @param meop
* @throws TCException
*/
private void getProperties(TCComponentMEOPRevision meop) throws TCException {
String outlineDiameter = meop.getStringProperty("ly6_outlineDiameter");
String outlineLength = meop.getStringProperty("ly6_outlineLength");
String cuttingLength = meop.getStringProperty("ly6_cuttingLength");
String transverseLength = meop.getStringProperty("ly6_transverseLength");
String colletLength = meop.getStringProperty("ly6_colletLength");
String manufacturingQuantity =meop.getStringProperty("ly6_manufacturableQuantity");
//规格和牌号单独从bomline下的子项中取得
String specifications = null;
String brandNum = null;
// String specifications = meop.getStringProperty("ly6_specifications");
// String brandNum = meop.getStringProperty("ly6_material");
TCComponentItem item = meop.getItem();
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
// 创建视图:传入参数-版本规则(精确、具有状态···),不给则获取默认规则
TCComponentBOMWindow view = winType.create(null);
// 发送BOM创建BOM。将item对象发送到BOM即为创建了一个BOM行 args:item对象 版本对象 ...
TCComponentBOMLine topBomLine = view.setWindowTopLine(item, meop, null, null);
topBomLine.lock();
if (topBomLine.hasChildren()) {
System.out.println("dialog当前对象存在bom子行");
AIFComponentContext[] childrens = topBomLine.getChildren();
int tag = 0;
for (AIFComponentContext children : childrens) {
TCComponentBOMLine bomLine = (TCComponentBOMLine)children.getComponent();
TCComponentItemRevision itemRevision = bomLine.getItemRevision();
String childType = itemRevision.getType();
System.out.println("当前通过bomline子项获取到子项类型"+childType);
if (childType.equals("LY6_RawMaterial") || childType.equals("LY6_RawMaterialRevision")) {
System.out.println("成功获取到当前对象关联的“原材料”对象!");
specifications = itemRevision.getStringProperty("ly6_specifications");
brandNum = itemRevision.getStringProperty("ly6_material");
System.out.println("获取到规格:"+specifications);
System.out.println("获取到牌号:"+brandNum);
tag ++;
break;
}
}
if (tag == 0) {//bomline的子项中没有类型为LY6_RawMaterialRevision的对象
MessageBox.post("未绑定原材料对象","提示",MessageBox.INFORMATION);
//todo burangjisuan
topBomLine.unlock();
view.close();
//关闭
this.setVisible(false);
//释放
this.dispose();
return;
}
}else {
MessageBox.post("未绑定原材料对象","提示",MessageBox.INFORMATION);
//todo burangjisuan
topBomLine.unlock();
view.close();
//关闭
this.setVisible(false);
//释放
this.dispose();
return;
}
topBomLine.unlock();
view.close();
this.zjdTextField.setText(outlineDiameter != null ? outlineDiameter : "");
this.lkcTextField.setText(outlineLength != null ? outlineLength : "");
this.qdycdTextField.setText(cuttingLength != null ? cuttingLength : "");
this.cdmycdTextField.setText(transverseLength != null ? transverseLength : "");
this.jtycdTextField.setText(colletLength != null ? colletLength : "");
this.kzljsTextField.setText(manufacturingQuantity != null ? manufacturingQuantity : "");
this.ggTextField.setText(specifications != null ? specifications : "");
this.clphTextField.setText(brandNum != null ? brandNum : "");
}
/**
*
* @return
*/
private String calculateTotalLength() {
// 获取各个 TextField 的内容
String lkcText = this.lkcTextField.getText();
String qdycdText = this.qdycdTextField.getText();
String cdmycdText = this.cdmycdTextField.getText();
String kzljsText = this.kzljsTextField.getText();
String jtycdText = this.jtycdTextField.getText();
// 将字符串转换为数值
double lkcValue = Double.parseDouble(lkcText);
double qdycdValue = Double.parseDouble(qdycdText);
double cdmycdValue = Double.parseDouble(cdmycdText);
double kzljsValue = Double.parseDouble(kzljsText);
double jtycdValue = Double.parseDouble(jtycdText);
// 计算结果
double result = (lkcValue + qdycdValue + cdmycdValue) * kzljsValue + jtycdValue;
System.out.println("图纸轮廓长:"+lkcValue+"切断用长度:"+qdycdValue+"车端面用长度:"+cdmycdValue+"可制零件数:"+kzljsValue+"夹头用长度:"+jtycdValue);
// double cm = result / 10.0;
String formattedCm = String.format("%.2f", result);
return formattedCm;
}
/**
*
* @return
*/
private String calculateSingleLength(){
String zcText = this.zcTextField.getText();
String kzljsText = this.kzljsTextField.getText();
double zcValue = Double.parseDouble(zcText);
double kzljsValue = Double.parseDouble(kzljsText);
if (kzljsValue == 0){
System.out.println("可制零件数 is 0");
}
double result = zcValue / kzljsValue;
System.out.println("总长:"+zcValue+"可制零件数:"+kzljsValue);
// 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();
}
}
}
}
/**
* uidEXCEL
* uiditem
* EXCEL
* @throws Exception
*/
private void getDataset(){
System.out.println("getDataset");
TCPreferenceService preferenceService = session.getPreferenceService();
String itemId = preferenceService.getStringValue("LY6_MEOPTypeTime");
InterfaceAIFComponent[] resultComponents;
try {
resultComponents = session.search("零组件...", new String[] {"零组件 ID"}, new String[] {itemId});
InterfaceAIFComponent component = resultComponents[0];
if (component instanceof TCComponentItem){
TCComponentItem item = (TCComponentItem) component;
//读取item下已发布最新版本规范关系下的MSEXCEL数据集
TCComponentItemRevision[] releasedItemRevisions = item.getReleasedItemRevisions();
int releaseRevNum = releasedItemRevisions.length;
if (releaseRevNum == 0) {
System.out.println("错误:当前对象下不存在发布版本");
}
TCComponentItemRevision tcComponentItemRevision = releasedItemRevisions[releaseRevNum - 1];
//获取当前版本的规范关系下的数据集
TCComponent[] referenceListProperty = tcComponentItemRevision.getReferenceListProperty("IMAN_specification");
if(referenceListProperty.length>0) {
System.out.println("规范关系下的数据集数量:"+referenceListProperty.length);
//获取第一个数据集下具体的引用文件
TCComponentTcFile[] tcFiles = ((TCComponentDataset)referenceListProperty[0]).getTcFiles();
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条开始逐行数据(前两条是标题和首行栏)
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("获取数据集文件失败!");
}
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* @return
*/
private String calculateAssistTime() {
String result = null;
double kzljsNum = Double.parseDouble(this.kzljsTextField.getText());
if (kzljsNum > 0){
double auxiliaryTimeNum = Double.parseDouble(this.auxiliaryTime);
double fixedTimeNum = Double.parseDouble(this.fixedTime);
double resultNum = Math.round((auxiliaryTimeNum + fixedTimeNum) / kzljsNum / 60 * 100.0) / 100.0;
System.out.println("辅助时间:"+auxiliaryTimeNum+",固定时间:"+fixedTimeNum+",可制零件数:"+kzljsNum);
result = String.valueOf(resultNum);
}
return result;
}
/**
*
* @return
*/
private String calculateStandardTime() {
String result = null;
double kzljsNum = Double.parseDouble(this.kzljsTextField.getText());
if (kzljsNum > 0){
System.out.println("=========>获取到的切割时间:"+this.cuttingTime);
double cuttingTimeNum = Double.parseDouble(this.cuttingTime);
double resultNum = Math.round((cuttingTimeNum / kzljsNum / 60) * 100.0) / 100.0;
System.out.println("切割时间:"+cuttingTimeNum+",可制零件数:"+kzljsNum);
result = String.valueOf(resultNum);
}
return result;
}
/**
*
* @throws TCException
*/
private void getDensityAndCrossSection() throws TCException {
System.out.println("=========>开始获取密度和横截面getDensityAndCrossSection");
// 1.获取当前选中MEOP对象的BOM行
TCComponentMEOP meopItem = (TCComponentMEOP) meop.getItem();
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) this.session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null);
TCComponentBOMLine bomLine = view.setWindowTopLine(meopItem, meop, null, null);
// 2.遍历BOM行根据“规格”和“材料”检索符合要求的唯一原材料对象
throughBomline(bomLine);
view.close();
}
/**
* bomlinebom
* @param topBomLine BOM
*/
private void throughBomline(TCComponentBOMLine topBomLine) throws TCException{
// 3.获取原材料对象的密度和横截面
boolean hasChildren = topBomLine.hasChildren();
if (hasChildren) {
AIFComponentContext[] childrens = topBomLine.getChildren();
for (AIFComponentContext children : childrens) {
TCComponentBOMLine bomLine = (TCComponentBOMLine) children.getComponent();
//获取当前bom的事例类型若是投料则到当前bom对应的是原材料对象
String propertyValue = bomLine.getProperty("bl_occ_type");
if ("投料".equals(propertyValue)) {
//通过原材料对象获取密度和横截面
this.rawMaterialRevision = bomLine.getItemRevision();
String densityString = rawMaterialRevision.getProperty("ly6_density");
String crossSectionString = rawMaterialRevision.getProperty("ly6_crossSection");
System.out.println("==========》成功取得当前原材料对象对应的密度:"+densityString+",横截面:"+crossSectionString);
this.density = densityString != null ? densityString : "";
this.crossSection = crossSectionString != null ? crossSectionString : "";
System.out.println("000");
break;
}
throughBomline(bomLine);
}
}
}
/**
*
* @return
* @throws TCException
*/
private String calculateWeight(){
System.out.println("calculateWeight");
//通过获取当前选中对象的bom下关联的原材料对象获取其密度和横截面
try {
getDensityAndCrossSection();
} catch (TCException e) {
e.printStackTrace();
}
//获取横截面和密度、单件长度,计算单件重量
double crossSectionNum = Double.parseDouble(this.crossSection);
double densityNum = 0;
if (this.density.contentEquals("")) {
densityNum = 0;
}else {
densityNum = Double.parseDouble(this.density);
}
double siglengthNum = Double.parseDouble(this.djcdTextField.getText());
double result = crossSectionNum * densityNum * siglengthNum;
System.out.println("横截面:"+crossSectionNum+",密度:"+densityNum+",单件长度:"+siglengthNum);
double kg = result / 10000.0;
String formattedKg = String.format("%.2f", kg);
return formattedKg;
}
/**
*
* @throws TCException
*/
private void saveProperty() throws TCException {
try {
meop.setProperty("ly6_specifications", this.ggTextField.getText() == null ? "" : this.ggTextField.getText());
// rawMaterialRevision.setProperty("ly6_specifications", this.ggTextField.getText() == null ? "" : this.ggTextField.getText());
meop.setProperty("ly6_totalLenght", this.zcTextField.getText() == null ? "" : this.zcTextField.getText());
meop.setProperty("ly6_singleLength", this.djcdTextField.getText() == null ? "" : this.djcdTextField.getText());
meop.setProperty("ly6_weight", this.djzlTextField.getText() == null ? "" : this.djzlTextField.getText());
meop.setProperty("ly6_standardTime", this.bzgsTextField.getText() == null ? "" : this.bzgsTextField.getText());
meop.setProperty("ly6_auxiliaryTime", this.fzgsTextField.getText() == null ? "" : this.fzgsTextField.getText());
// rawMaterialRevision.setProperty("ly6_material", this.clphTextField.getText() == null ? "" : this.clphTextField.getText());
meop.setProperty("ly6_brandNum", this.clphTextField.getText() == null ? "" : this.clphTextField.getText());
meop.setProperty("ly6_outlineDiameter", this.zjdTextField.getText() == null ? "" : this.zjdTextField.getText());
meop.setProperty("ly6_outlineLength", this.lkcTextField.getText() == null ? "" : this.lkcTextField.getText());
meop.setProperty("ly6_cuttingLength", this.qdycdTextField.getText() == null ? "" : this.qdycdTextField.getText());
meop.setProperty("ly6_transverseLength", this.cdmycdTextField.getText()== null ? "" : this.cdmycdTextField.getText());
meop.setProperty("ly6_colletLength", this.jtycdTextField.getText() == null ? "" : this.jtycdTextField.getText());
meop.setProperty("ly6_manufacturableQuantity", this.kzljsTextField.getText() == null ? "" : this.kzljsTextField.getText());
}catch (Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
}
/**
* M
* @throws TCException
*/
private void checkMaterial() throws TCException {
try {
System.out.println("开始检查M物料下的挂载情况·········");
boolean isGZ=false;
TCComponent[] whereUsed = meop.whereUsed((short) 0);
for (TCComponent tcComponent : whereUsed) {
//获取到当前工序对象的父级对象-tcComponent
String mepRevisionType = tcComponent.getStringProperty("object_type");
//获取首选项中的工艺对象类型,进行匹配
TCSession session = (TCSession) this.application.getSession();
TCPreferenceService preferenceService = session.getPreferenceService();
//根据首选项的名称-C8MyPreference,获取首选项值
String value = preferenceService.getStringValue("LY6_MEPType");
String[] strings = value.split(",");
for (int i = 0; i < whereUsed.length; i++) {
//工艺对象类型匹配,进行:原材料对象比对
if (strings[i].equals(mepRevisionType)) {
System.out.println("========>工艺类型匹配成功");
if (tcComponent instanceof TCComponentItemRevision) {
System.out.println("====>获取到的工艺对象:"+tcComponent.getObjectString());
TCComponentItemRevision mepRevision = (TCComponentItemRevision) tcComponent;
//获取工艺对象下的物料/制造对象:relatedRevision\\relatedItem
TCComponent relatedComponent = mepRevision.getRelatedComponent("IMAN_METarget");
TCComponentItemRevision relatedRevision = (TCComponentItemRevision) relatedComponent;
TCComponentItem relatedItem = relatedRevision.getItem();
//检查当前物料对象下是否挂在了原材料对象
TCComponentBOMWindowType winType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow view = winType.create(null);
//获取物料对象/制造对象对应的bomline
TCComponentBOMLine bomLine = view.setWindowTopLine(relatedItem, relatedRevision, null, null);
//遍历该物料制造对象的bomline下是否挂在了原材料对象
if (bomLine.hasChildren()) {
AIFComponentContext[] childrens = bomLine.getChildren();
for(AIFComponentContext children:childrens) {
TCComponentBOMLine childrenBomLine = (TCComponentBOMLine) children.getComponent();
TCComponentItemRevision itemRevision = childrenBomLine.getItemRevision();
String uidTag = itemRevision.getUid();
String materialRevUid = this.rawMaterialRevision.getUid();
if (uidTag.equals(materialRevUid)) {
System.out.println("M物料对象下已经挂载原材料对象············");
//M物料对象下挂载了原材料对象
isGZ = true;
break;
}
}
}
//M物料对象下没有挂载原材料对象
if (!isGZ) {
System.out.println("M物料对象下没有挂载原材料对象开始挂载······");
view.lock();
TCComponentItem materialItem = this.rawMaterialRevision.getItem();
bomLine.add(materialItem,this.rawMaterialRevision,null,false,"");
bomLine.save();
view.unlock();
}
// BOMWindow用完后必须关闭
view.close();
}else {
System.out.println("非版本对象异常");
}
break;
}
}
}
}catch (Exception e){
e.printStackTrace();
System.out.println(e.getMessage());
}
}
/**
*
*/
@Override
public void actionPerformed(ActionEvent e) {
Object sourceObject = e.getSource();
//如果点击“计算”按钮
if(sourceObject.equals(this.calculateButton)) {
try {
//长度计算
this.zcTextField.setText(calculateTotalLength());
this.djcdTextField.setText(calculateSingleLength());
// 单件重量计算
this.djzlTextField.setText(calculateWeight());
// 工时计算
getDataset();
// this.bzgsTextField.setText(calculateStandardTime());
// this.fzgsTextField.setText(calculateAssistTime());
}catch (Exception e1){
MessageBox.post("计算失败,请检查属性或手动维护", "提示", MessageBox.ERROR);
e1.printStackTrace();
}
} else if (sourceObject.equals(this.syncButton)) {
//如果点击“同步”按钮,属性反写
try {
saveProperty();
//检查M物料
checkMaterial();
MessageBox.post("同步成功", "结果", MessageBox.INFORMATION);
this.setVisible(false);
this.dispose();
} catch (TCException e1) {
e1.printStackTrace();
}
}else {
//如果点击“取消”按钮
//关闭
this.setVisible(false);
//释放
this.dispose();
}
}
}

@ -0,0 +1,121 @@
package com.langtech.plm.project;
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.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentMEOP;
import com.teamcenter.rac.kernel.TCComponentMEOPRevision;
import com.teamcenter.rac.kernel.TCPreferenceService;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.List;
public class CalculateHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent arg0) throws ExecutionException {
AbstractAIFApplication app = AIFUtility.getCurrentApplication();
TCSession session = (TCSession) app.getSession();
try {
new Thread(){
@Override
public void run() {
// TODO 1.获取选中对象类型和工序名称
//获取选中对象的拼接字符串
InterfaceAIFComponent selectComponent = app.getTargetContext().getComponent();
// 获取选中对象的类型和名称
String type = selectComponent.getType();
String name;
boolean existTag = false;
InterfaceAIFComponent[] resultComponents = null;
System.out.println("当前选中对象类型type"+type);
try {
//TODO 获取选中对象的type如果是Mfg0BvrOperation则说明是工艺构建器下的对象可通过真实名称bl_item_item_id获取选中对象的零组件ID以此获得该零组件的类型
if (type.equals("Mfg0BvrOperation")) {
List<String> entryNames = new ArrayList<String>();
List<String> entryValues = new ArrayList<String>();
String lzj_id = selectComponent.getProperty("bl_item_item_id");
String lzj_rev = selectComponent.getProperty("bl_rev_item_revision_id");
System.out.println("工艺构建器下选中对象的零组件ID="+lzj_id);
entryNames.add("零组件 ID");
entryNames.add("版本");
entryValues.add(lzj_id);
entryValues.add(lzj_rev);
resultComponents = session.search(
"零组件版本...",
entryNames.toArray(new String[entryNames.size()]),
entryValues.toArray(new String[entryNames.size()]));
if(resultComponents != null) {
type = resultComponents[0].getType();
System.out.println("获取到制造工艺规划器下对象的类型="+type);
}else {
MessageBox.post("没有查询到制造工艺规划器下对象对应的零组件","查询结果",MessageBox.INFORMATION);
}
}
name = selectComponent.getProperty("object_name");
// 2.获取首选项字符串数组,并遍历比较(当前选中对象的类型+工序名称拼接字符串)
TCPreferenceService preferenceService = session.getPreferenceService();
//根据首选项的名称-C8MyPreference,获取首选项值
String[] preferenceValues = preferenceService.getStringValues("LY6_MEOPType");
if (preferenceValues == null) {
MessageBox.post("首选项为空,请先设置首选项!","提示",MessageBox.INFORMATION);
}
for (String string : preferenceValues){
System.out.println("首选项LY6_MEOPType配置的信息string"+string);
if (type.equals(string)){
System.out.println("当前选中对象的类型与首选项配置类型匹配:"+type+"==>"+string);
existTag = true;
break;
}
}
if (!existTag){
//3.如果和首选项中的值不匹配,则弹出提示框,提示“对象类型不正确”,并返回
System.out.println("对象类型不正确当前选中对象type="+type);
MessageBox.post("对象类型不正确","提示",MessageBox.INFORMATION);
}else {
System.out.println("选中对象类型匹配!");
TCComponentMEOPRevision rev = null;
if(selectComponent.getType().equals("Mfg0BvrOperation")) {
rev = (TCComponentMEOPRevision)resultComponents[0];
}else {
//判断选中对象的是item还是版本item则获取最新版本
if (selectComponent instanceof TCComponentMEOP) {
// System.out.println("当前选中对象为TCComponentMEOP");
TCComponentMEOP meopType = (TCComponentMEOP) selectComponent;
rev = (TCComponentMEOPRevision) meopType.getLatestItemRevision();
}else if (selectComponent instanceof TCComponentMEOPRevision) {
// System.out.println("当前选中对象为TCComponentMEOPRevision");
rev = (TCComponentMEOPRevision) selectComponent;
}
}
// System.out.println("========》选中的对象类型:"+type);
new CalculateDialog(app,rev);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

@ -1,700 +0,0 @@
package com.langtech.plm.project;
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Stroke;
import java.awt.Toolkit;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Popup;
import javax.swing.PopupFactory;
import javax.swing.SwingUtilities;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;
public class DateChooser extends JPanel {
private static final long serialVersionUID = 4529266044762990227L;
private Date initDate;
private Calendar now;
private Calendar select;
private JPanel monthPanel;
private DateChooser.JP1 jp1;
private DateChooser.JP2 jp2;
private DateChooser.JP3 jp3;
private DateChooser.JP4 jp4;
private Font font;
private final DateChooser.LabelManager lm;
private SimpleDateFormat sdf;
private boolean isShow;
private Popup pop;
private JComponent showDate;
public static DateChooser getInstance() {
return new DateChooser();
}
public static DateChooser getInstance(Date date) {
return new DateChooser(date);
}
public static DateChooser getInstance(String format) {
return new DateChooser(format);
}
public static DateChooser getInstance(Date date, String format) {
return new DateChooser(date, format);
}
DateChooser() {
this(new Date());
}
private DateChooser(Date date) {
this(date, "yyyy年MM月dd日");
}
private DateChooser(String format) {
this(new Date(), format);
}
private DateChooser(Date date, String format) {
this.now = Calendar.getInstance();
this.font = new Font("宋体", 0, 12);
this.lm = new DateChooser.LabelManager();
this.isShow = false;
this.initDate = date;
this.sdf = new SimpleDateFormat(format);
this.select = Calendar.getInstance();
this.select.setTime(this.initDate);
this.initPanel();
}
public void setEnabled(boolean b) {
super.setEnabled(b);
this.showDate.setEnabled(b);
}
public Date getDate() {
return this.select.getTime();
}
public String getStrDate() {
return this.sdf.format(this.select.getTime());
}
public String getStrDate(String format) {
this.sdf = new SimpleDateFormat(format);
return this.sdf.format(this.select.getTime());
}
private void initPanel() {
this.monthPanel = new JPanel(new BorderLayout());
this.monthPanel.setBorder(BorderFactory.createLineBorder(Color.BLUE));
JPanel up = new JPanel(new BorderLayout());
up.add(this.jp1 = new DateChooser.JP1(), "North");
up.add(this.jp2 = new DateChooser.JP2(), "Center");
this.monthPanel.add(this.jp3 = new DateChooser.JP3(), "Center");
this.monthPanel.add(up, "North");
this.monthPanel.add(this.jp4 = new DateChooser.JP4(), "South");
this.addAncestorListener(new AncestorListener() {
public void ancestorAdded(AncestorEvent event) {
}
public void ancestorRemoved(AncestorEvent event) {
}
public void ancestorMoved(AncestorEvent event) {
DateChooser.this.hidePanel();
}
});
}
public void register(final JComponent showDate) {
this.showDate = showDate;
showDate.setRequestFocusEnabled(true);
showDate.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
showDate.requestFocusInWindow();
}
});
this.setBackground(Color.WHITE);
this.add(showDate, "Center");
this.setPreferredSize(new Dimension(90, 25));
this.setBorder(BorderFactory.createLineBorder(Color.GRAY));
showDate.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent me) {
if (showDate.isEnabled()) {
showDate.setCursor(new Cursor(12));
showDate.setForeground(Color.RED);
}
}
public void mouseExited(MouseEvent me) {
if (showDate.isEnabled()) {
showDate.setCursor(new Cursor(0));
showDate.setForeground(Color.BLACK);
}
}
public void mousePressed(MouseEvent me) {
if (showDate.isEnabled()) {
showDate.setForeground(Color.CYAN);
if (DateChooser.this.isShow) {
DateChooser.this.hidePanel();
} else {
DateChooser.this.showPanel(showDate);
}
}
}
public void mouseReleased(MouseEvent me) {
if (showDate.isEnabled()) {
showDate.setForeground(Color.BLACK);
}
}
});
showDate.addFocusListener(new FocusListener() {
public void focusLost(FocusEvent e) {
DateChooser.this.hidePanel();
}
public void focusGained(FocusEvent e) {
}
});
}
private void refresh() {
this.jp1.updateDate();
this.jp2.updateDate();
this.jp3.updateDate();
this.jp4.updateDate();
SwingUtilities.updateComponentTreeUI(this);
}
private void commit() {
if (this.showDate instanceof JTextField) {
((JTextField) this.showDate).setText(this.sdf.format(this.select.getTime()));
} else if (this.showDate instanceof JLabel) {
((JLabel) this.showDate).setText(this.sdf.format(this.select.getTime()));
}
this.hidePanel();
}
private void hidePanel() {
if (this.pop != null) {
this.isShow = false;
this.pop.hide();
this.pop = null;
}
}
private void showPanel(Component owner) {
if (this.pop != null) {
this.pop.hide();
}
Point show = new Point(0, this.showDate.getHeight());
SwingUtilities.convertPointToScreen(show, this.showDate);
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
int x = show.x;
int y = show.y;
if (x < 0) {
x = 0;
}
if (x > size.width - 295) {
x = size.width - 295;
}
if (y >= size.height - 170) {
y -= 188;
}
this.pop = PopupFactory.getSharedInstance().getPopup(owner, this.monthPanel, x, y);
this.pop.show();
this.isShow = true;
}
public static void main(String[] args) {
DateChooser dateChooser1 = getInstance("yyyy-MM-dd HH:mm");
DateChooser dateChooser2 = getInstance("yyyy-MM-dd");
JTextField showDate1 = new JTextField("单击选择日期");
JLabel showDate2 = new JLabel("单击选择日期");
dateChooser1.register(showDate1);
dateChooser2.register(showDate2);
JFrame jf = new JFrame("测试日期选择器");
jf.add(showDate1, "North");
jf.add(showDate2, "South");
jf.pack();
jf.setLocationRelativeTo((Component) null);
jf.setVisible(true);
jf.setDefaultCloseOperation(3);
}
private class JP1 extends JPanel {
private static final long serialVersionUID = -5638853772805561174L;
JLabel yearleft;
JLabel yearright;
JLabel monthleft;
JLabel monthright;
JLabel center;
JLabel centercontainer;
public JP1() {
super(new BorderLayout());
this.setBackground(new Color(160, 185, 215));
this.initJP1();
}
private void initJP1() {
this.yearleft = new JLabel(" <<", 0);
this.yearleft.setToolTipText("上一年");
this.yearright = new JLabel(">> ", 0);
this.yearright.setToolTipText("下一年");
this.yearleft.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 0));
this.yearright.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 0));
this.monthleft = new JLabel(" <", 4);
this.monthleft.setToolTipText("上一月");
this.monthright = new JLabel("> ", 2);
this.monthright.setToolTipText("下一月");
this.monthleft.setBorder(BorderFactory.createEmptyBorder(2, 30, 0, 0));
this.monthright.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 30));
this.centercontainer = new JLabel("", 0);
this.centercontainer.setLayout(new BorderLayout());
this.center = new JLabel("", 0);
this.centercontainer.add(this.monthleft, "West");
this.centercontainer.add(this.center, "Center");
this.centercontainer.add(this.monthright, "East");
this.add(this.yearleft, "West");
this.add(this.centercontainer, "Center");
this.add(this.yearright, "East");
this.setPreferredSize(new Dimension(295, 25));
this.updateDate();
this.yearleft.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent me) {
JP1.this.yearleft.setCursor(new Cursor(12));
JP1.this.yearleft.setForeground(Color.RED);
}
public void mouseExited(MouseEvent me) {
JP1.this.yearleft.setCursor(new Cursor(0));
JP1.this.yearleft.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent me) {
DateChooser.this.select.add(1, -1);
JP1.this.yearleft.setForeground(Color.WHITE);
DateChooser.this.refresh();
}
public void mouseReleased(MouseEvent me) {
JP1.this.yearleft.setForeground(Color.BLACK);
}
});
this.yearright.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent me) {
JP1.this.yearright.setCursor(new Cursor(12));
JP1.this.yearright.setForeground(Color.RED);
}
public void mouseExited(MouseEvent me) {
JP1.this.yearright.setCursor(new Cursor(0));
JP1.this.yearright.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent me) {
DateChooser.this.select.add(1, 1);
JP1.this.yearright.setForeground(Color.WHITE);
DateChooser.this.refresh();
}
public void mouseReleased(MouseEvent me) {
JP1.this.yearright.setForeground(Color.BLACK);
}
});
this.monthleft.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent me) {
JP1.this.monthleft.setCursor(new Cursor(12));
JP1.this.monthleft.setForeground(Color.RED);
}
public void mouseExited(MouseEvent me) {
JP1.this.monthleft.setCursor(new Cursor(0));
JP1.this.monthleft.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent me) {
DateChooser.this.select.add(2, -1);
JP1.this.monthleft.setForeground(Color.WHITE);
DateChooser.this.refresh();
}
public void mouseReleased(MouseEvent me) {
JP1.this.monthleft.setForeground(Color.BLACK);
}
});
this.monthright.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent me) {
JP1.this.monthright.setCursor(new Cursor(12));
JP1.this.monthright.setForeground(Color.RED);
}
public void mouseExited(MouseEvent me) {
JP1.this.monthright.setCursor(new Cursor(0));
JP1.this.monthright.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent me) {
DateChooser.this.select.add(2, 1);
JP1.this.monthright.setForeground(Color.WHITE);
DateChooser.this.refresh();
}
public void mouseReleased(MouseEvent me) {
JP1.this.monthright.setForeground(Color.BLACK);
}
});
}
private void updateDate() {
this.center.setText(DateChooser.this.select.get(1) + "年" + (DateChooser.this.select.get(2) + 1) + "月");
}
}
private class JP2 extends JPanel {
private static final long serialVersionUID = -8176264838786175724L;
public JP2() {
this.setPreferredSize(new Dimension(295, 20));
}
protected void paintComponent(Graphics g) {
g.setFont(DateChooser.this.font);
g.drawString("星期日 星期一 星期二 星期三 星期四 星期五 星期六", 5, 10);
g.drawLine(0, 15, this.getWidth(), 15);
}
private void updateDate() {
}
}
private class JP3 extends JPanel {
private static final long serialVersionUID = 43157272447522985L;
public JP3() {
super(new GridLayout(6, 7));
this.setPreferredSize(new Dimension(295, 100));
this.initJP3();
}
private void initJP3() {
this.updateDate();
}
public void updateDate() {
this.removeAll();
DateChooser.this.lm.clear();
Date temp = DateChooser.this.select.getTime();
Calendar select = Calendar.getInstance();
select.setTime(temp);
select.set(5, 1);
int index = select.get(7);
int sum = index == 1 ? 8 : index;
select.add(5, 0 - sum);
for (int i = 0; i < 42; ++i) {
select.add(5, 1);
DateChooser.this.lm.addLabel(DateChooser.this.new MyLabel(select.get(1), select.get(2), select.get(5)));
}
Iterator var6 = DateChooser.this.lm.getLabels().iterator();
while (var6.hasNext()) {
DateChooser.MyLabel my = (DateChooser.MyLabel) var6.next();
this.add(my);
}
select.setTime(temp);
}
}
private class JP4 extends JPanel {
private static final long serialVersionUID = -6391305687575714469L;
public JP4() {
super(new BorderLayout());
this.setPreferredSize(new Dimension(295, 20));
this.setBackground(new Color(160, 185, 215));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
final JLabel jl = new JLabel("今天: " + sdf.format(new Date()));
jl.setToolTipText("点击选择今天日期");
this.add(jl, "Center");
jl.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent me) {
jl.setCursor(new Cursor(12));
jl.setForeground(Color.RED);
}
public void mouseExited(MouseEvent me) {
jl.setCursor(new Cursor(0));
jl.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent me) {
jl.setForeground(Color.WHITE);
DateChooser.this.select.setTime(new Date());
DateChooser.this.refresh();
DateChooser.this.commit();
}
public void mouseReleased(MouseEvent me) {
jl.setForeground(Color.BLACK);
}
});
}
private void updateDate() {
}
}
private class LabelManager {
private List<DateChooser.MyLabel> list = new ArrayList();
public LabelManager() {
}
public List<DateChooser.MyLabel> getLabels() {
return this.list;
}
public void addLabel(DateChooser.MyLabel my) {
this.list.add(my);
}
public void clear() {
this.list.clear();
}
public void setSelect(DateChooser.MyLabel my, boolean b) {
Iterator var4 = this.list.iterator();
while (var4.hasNext()) {
DateChooser.MyLabel m = (DateChooser.MyLabel) var4.next();
if (m.equals(my)) {
m.setSelected(true, b);
} else {
m.setSelected(false, b);
}
}
}
public void setSelect(Point p, boolean b) {
if (b) {
boolean findPrevious = false;
boolean findNext = false;
Iterator var6 = this.list.iterator();
while (var6.hasNext()) {
DateChooser.MyLabel mx = (DateChooser.MyLabel) var6.next();
if (mx.contains(p)) {
findNext = true;
if (mx.getIsSelected()) {
findPrevious = true;
} else {
mx.setSelected(true, b);
}
} else if (mx.getIsSelected()) {
findPrevious = true;
mx.setSelected(false, b);
}
if (findPrevious && findNext) {
return;
}
}
} else {
DateChooser.MyLabel temp = null;
Iterator var9 = this.list.iterator();
while (var9.hasNext()) {
DateChooser.MyLabel m = (DateChooser.MyLabel) var9.next();
if (m.contains(p)) {
temp = m;
} else if (m.getIsSelected()) {
m.setSelected(false, b);
}
}
if (temp != null) {
temp.setSelected(true, b);
}
}
}
}
private class MyLabel extends JLabel
implements Comparator<DateChooser.MyLabel>, MouseListener, MouseMotionListener {
private static final long serialVersionUID = 3668734399227577214L;
private int year;
private int month;
private int day;
private boolean isSelected;
public MyLabel(int year, int month, int day) {
super("" + day, 0);
this.year = year;
this.day = day;
this.month = month;
this.addMouseListener(this);
this.addMouseMotionListener(this);
this.setFont(DateChooser.this.font);
if (month == DateChooser.this.select.get(2)) {
this.setForeground(Color.BLACK);
} else {
this.setForeground(Color.LIGHT_GRAY);
}
if (day == DateChooser.this.select.get(5)) {
this.setBackground(new Color(160, 185, 215));
} else {
this.setBackground(Color.WHITE);
}
}
public boolean getIsSelected() {
return this.isSelected;
}
public void setSelected(boolean b, boolean isDrag) {
this.isSelected = b;
if (b && !isDrag) {
int temp = DateChooser.this.select.get(2);
DateChooser.this.select.set(this.year, this.month, this.day);
if (temp == this.month) {
SwingUtilities.updateComponentTreeUI(DateChooser.this.jp3);
} else {
DateChooser.this.refresh();
}
}
this.repaint();
}
protected void paintComponent(Graphics g) {
if (this.day == DateChooser.this.select.get(5) && this.month == DateChooser.this.select.get(2)) {
g.setColor(new Color(160, 185, 215));
g.fillRect(0, 0, this.getWidth(), this.getHeight());
}
if (this.year == DateChooser.this.now.get(1) && this.month == DateChooser.this.now.get(2)
&& this.day == DateChooser.this.now.get(5)) {
Graphics2D gdx = (Graphics2D) g;
gdx.setColor(Color.RED);
Polygon p = new Polygon();
p.addPoint(0, 0);
p.addPoint(this.getWidth() - 1, 0);
p.addPoint(this.getWidth() - 1, this.getHeight() - 1);
p.addPoint(0, this.getHeight() - 1);
gdx.drawPolygon(p);
}
if (this.isSelected) {
Stroke s = new BasicStroke(1.0F, 2, 2, 1.0F, new float[] { 2.0F, 2.0F }, 1.0F);
Graphics2D gd = (Graphics2D) g;
gd.setStroke(s);
gd.setColor(Color.BLACK);
Polygon px = new Polygon();
px.addPoint(0, 0);
px.addPoint(this.getWidth() - 1, 0);
px.addPoint(this.getWidth() - 1, this.getHeight() - 1);
px.addPoint(0, this.getHeight() - 1);
gd.drawPolygon(px);
}
super.paintComponent(g);
}
public boolean contains(Point p) {
return this.getBounds().contains(p);
}
private void update() {
this.repaint();
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
this.isSelected = true;
this.update();
}
public void mouseReleased(MouseEvent e) {
Point p = SwingUtilities.convertPoint(this, e.getPoint(), DateChooser.this.jp3);
DateChooser.this.lm.setSelect(p, false);
DateChooser.this.commit();
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseDragged(MouseEvent e) {
Point p = SwingUtilities.convertPoint(this, e.getPoint(), DateChooser.this.jp3);
DateChooser.this.lm.setSelect(p, true);
}
public void mouseMoved(MouseEvent e) {
}
public int compare(DateChooser.MyLabel o1, DateChooser.MyLabel o2) {
Calendar c1 = Calendar.getInstance();
c1.set(o1.year, o2.month, o1.day);
Calendar c2 = Calendar.getInstance();
c2.set(o2.year, o2.month, o2.day);
return c1.compareTo(c2);
}
}
}

@ -1,405 +0,0 @@
package com.langtech.plm.project;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import org.apache.poi.xssf.usermodel.XSSFCell;
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;
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;
import com.teamcenter.rac.kernel.TCComponentItemType;
import com.teamcenter.rac.kernel.TCComponentTcFile;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
public class ProjectECRDialog extends AbstractAIFDialog {
private static final long serialVersionUID = 1L;
private TCSession session;
private JTextField field;
private JTextField dateAfterField;
private JTextField dateBeforeField;
private JButton searchBtn;
private JButton exportBtn;
private JTable impTable;
private DefaultTableModel impModel;
private Vector<String> exports;
private Vector<String> excludes;
private String[] tableHeader;
public ProjectECRDialog(TCSession session, String[] options) throws Exception {
super(AIFUtility.getActiveDesktop());
this.session = session;
Vector<String[]> props = new Vector<>();
this.exports = new Vector<>();
setTitle("项目变更单查询");
// 查询条目
JLabel label = new JLabel("项目&产品名称");
JLabel appDateLabel0 = new JLabel("申请日期早于");
JLabel appDateLabel1 = new JLabel("申请日期晚于");
// 定义输入框
field = new JTextField();
dateAfterField = new JTextField(10);
dateBeforeField = new JTextField(10);
field.setPreferredSize(new Dimension(118, 23));
//日期选择器
DateChooser dateAfterChooser = DateChooser.getInstance("yyyy-M-dd");
dateAfterChooser.register(this.dateAfterField);
DateChooser dateBeforeChooser = DateChooser.getInstance("yyyy-M-dd");
dateBeforeChooser.register(this.dateBeforeField);
JPanel msgPanel = new JPanel(new FlowLayout());
msgPanel.add(label);
msgPanel.add(field);
msgPanel.add(appDateLabel1);//申请日期晚于
msgPanel.add(dateBeforeField);
msgPanel.add(appDateLabel0);//申请日期早于
msgPanel.add(dateAfterField);
searchBtn = new JButton("查询");
exportBtn = new JButton("导出");
JPanel btnPanel = new JPanel(new FlowLayout());
btnPanel.add(searchBtn);
btnPanel.add(exportBtn);
JPanel topPanel = new JPanel(new BorderLayout());
topPanel.add(BorderLayout.WEST, msgPanel);
topPanel.add(BorderLayout.EAST, btnPanel);
// 根据首选项配置的值获取表头信息
tableHeader = new String[options.length-1];
int[] weights = new int[options.length-1];
for(int i=0; i<options.length-1; i++) {
//split = [{ECN编号,ecn.rev.item_id,120}]
String[] split = options[i+1].split("=");
if(split[1].equals("序号"))
tableHeader[i] = split[1];
else if(split[0].startsWith("#")) {
tableHeader[i] = split[0].substring(1);
exports.add(tableHeader[i]);
}else
tableHeader[i] = split[0];
//props = [{ecn,rev,item_id},{pr,master.sb6_PRRM04},...]
props.add(split[1].split("\\."));
weights[i] = Integer.parseInt(split[2]);
}
// TODO 猜测tableHeader为表格首行的内容
impModel = new DefaultTableModel(tableHeader, 0);
impTable = new JTable() {
private static final long serialVersionUID = 1L;
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
};
impTable.getTableHeader().setReorderingAllowed(false);
impTable.setFillsViewportHeight(true);
// impTable.setEnabled(false);
impTable.setEnabled(true);
// impTable.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
impTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
impTable.setModel(impModel);
for(int i=0; i<impModel.getColumnCount(); i++)
impTable.getColumnModel().getColumn(i).setPreferredWidth(weights[i]);
JScrollPane tablePanel = new JScrollPane(impTable);
addActionListener(options[0], props);
setLayout(new BorderLayout());
add(BorderLayout.NORTH, topPanel);
add(BorderLayout.CENTER, tablePanel);
pack();
setSize(new Dimension(1400, 700));
setDefaultLookAndFeelDecorated(true);
Dimension screen = getToolkit().getScreenSize();
setLocation((screen.width - getSize().width) / 2, (screen.height - getSize().height) / 2);
// setAlwaysOnTop(true);
setVisible(true);
}
/**
*
* @param id
* @param props = [{ecn,rev,item_id},{pr,master.sb6_PRRM04},...]
*/
private void addActionListener(String id, Vector<String[]> props) {
searchBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
String dateString0 = dateBeforeField.getText();
String dateString1 = dateAfterField.getText();
try {
String project = field.getText();
if(project.isEmpty() && dateString0.isEmpty() && dateString1.isEmpty()) {
MessageBox.post(ProjectECRDialog.this, "至少输入一个查询条件", "ERROR", MessageBox.ERROR);
return;
}
if(impModel.getRowCount()>0) {
for(int i=impModel.getRowCount(); i>0; i--)
impModel.removeRow(i-1);
}
Vector<String> keyV = new Vector<>();
Vector<String> valueV = new Vector<>();
// 封装查询条件:项目号、申请日期
if (!project.isEmpty()) {
keyV.add("projnum");
valueV.add(project);
}else if (!dateString0.isEmpty()) {
keyV.add("dateafter");
valueV.add(dateString0+" 00:00");
}else if (!dateString1.isEmpty()) {
keyV.add("datebefore");
valueV.add(dateString1+" 23:59");
}
//调用查询构建器条件查询的结果ecn-result
TCComponent[] result = TCUtil.query(session, "CONNOR_SearchProjectECN", keyV, valueV);
System.out.println("查询构建器共查询出"+result.length+"条数据");
for(int i=0; i<result.length; i++) {
TCComponentItemRevision ecn = (TCComponentItemRevision) result[i];
TCComponentForm ecnform = TCUtil.getItemRevisionMasterForm(ecn);
//“实施”关系下的对象目前只有ecr对象-ecrs
AIFComponentContext[] ecrs = TCUtil.getPseudoFolder(ecn, "CMImplements").getChildren();
//TODO 1.遍历当前ecn的“实施”关系下的对象-ecr版本对象取得ECR编码拼接成字符串
String ercBM = "";
for (AIFComponentContext ecr:ecrs){
//获取实施目录下的ECR版本对象和表单
TCComponentItemRevision ecrRev = (TCComponentItemRevision) ecr.getComponent();
ercBM =ercBM + ecrRev.getProperty("item_id") + "/";
}
//移除erc编码的最后一个分隔符号
if (ercBM.endsWith("/")){
ercBM = ercBM.substring(0, ercBM.length()-1);
}
// 2.取得当前ECN中的属性
Vector<String> v = new Vector<>();
for(String[] prop:props) {
if (prop[0].equals("序号")){
v.add(impTable.getRowCount()+1+"");
} else if (prop[0].equals("ecn")) {
if (prop[1].equals("rev")){
//ecn.rev.*只能通过ecn版本对象取值
v.add(ecn.getProperty(prop[2]));
} else if (prop[1].equals("master")) {
//ecn.master.*只能通过ecnform取值
v.add(ecnform.getProperty(prop[2]));
}
} else if (prop[0].equals("ecr")) {
if (prop[1].equals("rev")) {
v.add(ercBM);
}
}else if (prop[0].equals("状态")) {
// 获取ECN发布状态发布-关闭,未发布-未关闭
String releaseStatus = ecn.getProperty("date_released");
// if (releaseStatus.equals("发布")){
if (releaseStatus == null || releaseStatus.isEmpty()){
//未发布状态
v.add("未关闭");
}else {
v.add("关闭");
}
}
}
impModel.addRow(v);
}
} catch (Exception e1) {
e1.printStackTrace();
MessageBox.post(ProjectECRDialog.this, "错误::"+e1.getMessage(), "ERROR", MessageBox.ERROR);
}
}
});
exportBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
FileOutputStream output = null;
InputStream input = null;
try {
if(impTable.getRowCount()==0)
throw new Exception("表格内容为空,无法导出");
TCComponentItem[] item = ((TCComponentItemType) session.getTypeService().getTypeComponent("Item")).findItems(id);
if(item==null || item.length==0)
throw new Exception("未找到模板Item");
TCComponentDataset dataset = null;
AIFComponentContext[] contexts = item[0].getLatestItemRevision().getChildren();
for(AIFComponentContext c : contexts) {
TCComponent child = (TCComponent) c.getComponent();
if(child instanceof TCComponentDataset && child.isTypeOf("MSExcelX")) {
dataset = (TCComponentDataset) child;
break;
}
}
if(dataset == null)
throw new Exception("未找到模板数据集");
System.out.println("export");
TCComponentTcFile[] files = dataset.getTcFiles();
if (files==null || files.length==0)
return;
File directory = TCUtil.saveExcelChooser();
if(directory == null)
return;
String path = directory.getPath();
if (!path.endsWith(".xlsx")) {
path = path+".xlsx";
}
File file = files[0].getFile(directory.getParent());
input = new FileInputStream(file);
XSSFWorkbook wb = new XSSFWorkbook(input);
XSSFSheet sheet = wb.getSheetAt(0);
XSSFRow row = sheet.getRow(0);
if(row == null)
row = sheet.createRow(0);
int col = 0;
for(int i=0; i<tableHeader.length; i++) {
XSSFCell cell = getCell(row, col);
cell.setCellValue(tableHeader[i]);
col++;
}
for(int i=0; i<impTable.getRowCount(); i++) {
row = sheet.getRow(i+1);
if(row==null)
row = sheet.createRow(i+1);
col = 0;
for(int j=0; j<impTable.getColumnCount(); j++) {
// if(excludes.contains(tableHeader[j]))
// continue;
XSSFCell cell = getCell(row, col);
cell.setCellValue(impTable.getValueAt(i, j).toString());
col++;
}
}
output = new FileOutputStream(file.getPath());
wb.write(output);
wb.close();
input.close();
output.close();
File pathFile = new File(path);
if(!path.equals(file.getPath())) {
if(pathFile.exists())
pathFile.delete();
file.renameTo(pathFile);
}
MessageBox.post(ProjectECRDialog.this, "导出完成", "提示", MessageBox.INFORMATION);
dispose();
} catch (Exception e1) {
e1.printStackTrace();
MessageBox.post(ProjectECRDialog.this, "错误::"+e1.getMessage(), "ERROR", MessageBox.ERROR);
}finally{
if(output!=null)
try {
output.close();
} catch (Exception e) {
e.printStackTrace();
}
if(input!=null)
try {
input.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
}
private XSSFCell getCell(XSSFRow row, int i) {
XSSFCell cell = row.getCell(i);
if(cell==null)
cell = row.createCell(i);
return cell;
}
/**
* "项目变更导出"
* @param id
* @param props
*/
class ExportDialog extends AbstractAIFDialog {
/**
*
*/
private static final long serialVersionUID = 1L;
private ExportDialog(){
super(ProjectECRDialog.this, true);
setTitle("项目变更单导出");
JPanel boxPanel = new JPanel(new FlowLayout());
Vector<JCheckBox> boxes = new Vector<>();
for(int i=0; i<exports.size(); i++) {
JCheckBox box = new JCheckBox(exports.get(i));
boxPanel.add(box);
boxes.add(box);
box.setSelected(true);
}
JButton okBtn = new JButton("确定");
okBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
excludes = new Vector<>();
for(JCheckBox box : boxes) {
if(!box.isSelected()) {
excludes.add(box.getText());
}
}
dispose();
}
});
JButton cancelBtn = new JButton("取消");
cancelBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
excludes = null;
dispose();
}
});
JPanel btnPanel = new JPanel(new FlowLayout());
btnPanel.add(okBtn);
btnPanel.add(cancelBtn);
setLayout(new BorderLayout());
add(BorderLayout.CENTER, boxPanel);
add(BorderLayout.SOUTH, btnPanel);
pack();
setSize(new Dimension(200, 200));
setDefaultLookAndFeelDecorated(true);
Dimension screen = getToolkit().getScreenSize();
setLocation((screen.width - getSize().width) / 2, (screen.height - getSize().height) / 2);
// setAlwaysOnTop(true);
setVisible(true);
}
}
}

@ -1,35 +0,0 @@
package com.langtech.plm.project;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import com.teamcenter.rac.aif.AIFDesktop;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
//创建常规文件夹结构
public class ProjectECRHandler extends AbstractHandler implements IHandler {
public Object execute(ExecutionEvent arg0) throws ExecutionException {
System.out.println("ProjectECRHandler");
TCSession session = (TCSession) AIFUtility.getCurrentApplication().getSession();
AIFDesktop desktop = AIFUtility.getActiveDesktop();
try {
//获取首选项中的值:表头=查询数据源=列宽
String[] option = session.getPreferenceService().getStringValues("CONNOR_ProjectECR");//A3oJ8Bs_J19vPC
if(option==null || option.length<2) {
MessageBox.post(desktop, "首选项CONNOR_ProjectECR配置不正确", "ERROR", MessageBox.ERROR);
return null;
}
new ProjectECRDialog(session, option);
}catch(Exception e) {
e.printStackTrace();
MessageBox.post(desktop, "错误:"+e.getMessage(), "ERROR", MessageBox.ERROR);
return null;
}
return null;
}
}

@ -5,6 +5,8 @@ import java.awt.Dimension;
import java.awt.Toolkit; import java.awt.Toolkit;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
@ -185,17 +187,19 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String[] split2 = split[i].split(":"); String[] split2 = split[i].split(":");
String[] selectSplit = split2[1].split("\\."); String[] selectSplit = split2[1].split("\\.");
System.out.println("selectSplit[0]==="+selectSplit[0]); System.out.println("selectSplit[0]==="+selectSplit[0]);
System.out.println("--------------------------------");
if (selectSplit[0].equals("item")) { if (selectSplit[0].equals("item")) {
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevItem.getStringProperty(selectSplit[1]); value = selectRevItem.getStringProperty(selectSplit[1]);
System.out.println("value===="+value); System.out.println("value===="+value);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevItem.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}else if (selectSplit[2].equals("date")) {
dateValue = selectRevItem.getDateProperty(selectSplit[1]); dateValue = selectRevItem.getDateProperty(selectSplit[1]);
} }
@ -206,6 +210,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -213,6 +219,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -221,19 +229,25 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
} else if (selectSplit[0].equals("rev")) { }else if (selectSplit[0].equals("rev")) {
System.out.println("0000000000000000000000000");
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue); System.out.println("selectSplit[2]====================="+selectSplit[2]);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRev.getStringProperty(selectSplit[1]); value = selectRev.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].equals("date")) {
dateValue = selectRev.getDateProperty(selectSplit[1]); dateValue = selectRev.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
System.out.println("1111111111111111111111");
Double tempDoubleValue = selectRev.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
} }
// 获取目标对象要更新哪个属性 // 获取目标对象要更新哪个属性
@ -243,6 +257,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -250,6 +266,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -258,6 +276,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
@ -265,13 +285,15 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevForm.getStringProperty(selectSplit[1]); value = selectRevForm.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].equals("date")) {
dateValue = selectRevForm.getDateProperty(selectSplit[1]); dateValue = selectRevForm.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevForm.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
} }
// 获取目标对象要更新哪个属性 // 获取目标对象要更新哪个属性
@ -281,6 +303,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -288,6 +312,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -296,6 +322,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
@ -306,17 +334,19 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String[] split2 = field.split(":"); String[] split2 = field.split(":");
String[] selectSplit = split2[1].split("\\."); String[] selectSplit = split2[1].split("\\.");
System.out.println("selectSplit[0]==="+selectSplit[0]); System.out.println("selectSplit[0]==="+selectSplit[0]);
System.out.println("--------------------------------");
if (selectSplit[0].equals("item")) { if (selectSplit[0].equals("item")) {
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevItem.getStringProperty(selectSplit[1]); value = selectRevItem.getStringProperty(selectSplit[1]);
System.out.println("value===="+value); System.out.println("value===="+value);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevItem.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}else if (selectSplit[2].equals("date")) {
dateValue = selectRevItem.getDateProperty(selectSplit[1]); dateValue = selectRevItem.getDateProperty(selectSplit[1]);
} }
@ -327,6 +357,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -334,6 +366,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -342,19 +376,25 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
} else if (selectSplit[0].equals("rev")) { }else if (selectSplit[0].equals("rev")) {
System.out.println("0000000000000000000000000");
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue); System.out.println("selectSplit[2]====================="+selectSplit[2]);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRev.getStringProperty(selectSplit[1]); value = selectRev.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].equals("date")) {
dateValue = selectRev.getDateProperty(selectSplit[1]); dateValue = selectRev.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
System.out.println("1111111111111111111111");
Double tempDoubleValue = selectRev.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
} }
// 获取目标对象要更新哪个属性 // 获取目标对象要更新哪个属性
@ -364,6 +404,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -371,6 +413,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -379,6 +423,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
@ -386,13 +432,15 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevForm.getStringProperty(selectSplit[1]); value = selectRevForm.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].equals("date")) {
dateValue = selectRevForm.getDateProperty(selectSplit[1]); dateValue = selectRevForm.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevForm.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
} }
// 获取目标对象要更新哪个属性 // 获取目标对象要更新哪个属性
@ -402,6 +450,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -409,6 +459,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -417,14 +469,16 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
} }
} }
} else { } else {
// 解析属性 // 解析属性
System.out.println("field==="+field); System.out.println("field==="+field);
if (field.contains(",")) {// 判断是否多个 if (field.contains(",")) {// 判断是否多个
@ -433,17 +487,19 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String[] split2 = split[i].split(":"); String[] split2 = split[i].split(":");
String[] selectSplit = split2[1].split("\\."); String[] selectSplit = split2[1].split("\\.");
System.out.println("selectSplit[0]==="+selectSplit[0]); System.out.println("selectSplit[0]==="+selectSplit[0]);
System.out.println("--------------------------------");
if (selectSplit[0].equals("item")) { if (selectSplit[0].equals("item")) {
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevItem.getStringProperty(selectSplit[1]); value = selectRevItem.getStringProperty(selectSplit[1]);
System.out.println("value===="+value); System.out.println("value===="+value);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevItem.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}else if (selectSplit[2].equals("date")) {
dateValue = selectRevItem.getDateProperty(selectSplit[1]); dateValue = selectRevItem.getDateProperty(selectSplit[1]);
} }
@ -454,6 +510,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -461,6 +519,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -469,19 +529,25 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
} else if (selectSplit[0].equals("rev")) { }else if (selectSplit[0].equals("rev")) {
System.out.println("0000000000000000000000000");
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue); System.out.println("selectSplit[2]====================="+selectSplit[2]);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRev.getStringProperty(selectSplit[1]); value = selectRev.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].equals("date")) {
dateValue = selectRev.getDateProperty(selectSplit[1]); dateValue = selectRev.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
System.out.println("1111111111111111111111");
Double tempDoubleValue = selectRev.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
} }
// 获取目标对象要更新哪个属性 // 获取目标对象要更新哪个属性
@ -491,6 +557,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -498,6 +566,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -506,6 +576,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
@ -513,13 +585,15 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevForm.getStringProperty(selectSplit[1]); value = selectRevForm.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].equals("date")) {
dateValue = selectRevForm.getDateProperty(selectSplit[1]); dateValue = selectRevForm.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevForm.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
} }
// 获取目标对象要更新哪个属性 // 获取目标对象要更新哪个属性
@ -529,6 +603,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -536,6 +612,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -544,6 +622,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
@ -554,17 +634,19 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String[] split2 = field.split(":"); String[] split2 = field.split(":");
String[] selectSplit = split2[1].split("\\."); String[] selectSplit = split2[1].split("\\.");
System.out.println("selectSplit[0]==="+selectSplit[0]); System.out.println("selectSplit[0]==="+selectSplit[0]);
System.out.println("--------------------------------");
if (selectSplit[0].equals("item")) { if (selectSplit[0].equals("item")) {
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevItem.getStringProperty(selectSplit[1]); value = selectRevItem.getStringProperty(selectSplit[1]);
System.out.println("value===="+value); System.out.println("value===="+value);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevItem.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
}else if (selectSplit[2].equals("date")) {
dateValue = selectRevItem.getDateProperty(selectSplit[1]); dateValue = selectRevItem.getDateProperty(selectSplit[1]);
} }
@ -575,6 +657,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -582,6 +666,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -590,19 +676,25 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
} else if (selectSplit[0].equals("rev")) { }else if (selectSplit[0].equals("rev")) {
System.out.println("0000000000000000000000000");
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue); System.out.println("selectSplit[2]====================="+selectSplit[2]);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRev.getStringProperty(selectSplit[1]); value = selectRev.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].equals("date")) {
dateValue = selectRev.getDateProperty(selectSplit[1]); dateValue = selectRev.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
System.out.println("1111111111111111111111");
Double tempDoubleValue = selectRev.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
} }
// 获取目标对象要更新哪个属性 // 获取目标对象要更新哪个属性
@ -612,6 +704,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -619,6 +713,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -627,6 +723,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
@ -634,13 +732,15 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
String value = ""; String value = "";
Date dateValue = null; Date dateValue = null;
if(dateValue != null && value.isEmpty()) { Double doubleValue = 0d;
value = sdf.format(dateValue);
}
if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) { if (selectSplit[2].equals("string") || selectSplit[2].equals("lov")) {
value = selectRevForm.getStringProperty(selectSplit[1]); value = selectRevForm.getStringProperty(selectSplit[1]);
} else if (selectSplit[2].equals("date")) { } else if (selectSplit[2].equals("date")) {
dateValue = selectRevForm.getDateProperty(selectSplit[1]); dateValue = selectRevForm.getDateProperty(selectSplit[1]);
}else if (selectSplit[2].contains("double")) {
String[] wsSplit = selectSplit[2].split("#");
Double tempDoubleValue = selectRevForm.getDoubleProperty(selectSplit[1]);
doubleValue = truncateDouble(Integer.parseInt(wsSplit[1]),tempDoubleValue);
} }
// 获取目标对象要更新哪个属性 // 获取目标对象要更新哪个属性
@ -650,6 +750,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revItem.setProperty(targetSplit[1], value); revItem.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revItem.setDateProperty(targetSplit[1], dateValue); revItem.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revItem.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rev")) { } else if (targetSplit[0].equals("rev")) {
@ -657,6 +759,8 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
rev.setProperty(targetSplit[1], value); rev.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
rev.setDateProperty(targetSplit[1], dateValue); rev.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
rev.setDoubleProperty(targetSplit[1], doubleValue);
} }
} else if (targetSplit[0].equals("rm")) { } else if (targetSplit[0].equals("rm")) {
@ -665,13 +769,15 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
revForm.setProperty(targetSplit[1], value); revForm.setProperty(targetSplit[1], value);
} else if (targetSplit[2].equals("date")) { } else if (targetSplit[2].equals("date")) {
revForm.setDateProperty(targetSplit[1], dateValue); revForm.setDateProperty(targetSplit[1], dateValue);
}else if (targetSplit[2].contains("double")) {
revForm.setDoubleProperty(targetSplit[1], doubleValue);
} }
} }
} }
}
}
} }
MessageBox.post("修改成功!", "提示", 2); MessageBox.post("修改成功!", "提示", 2);
this.dispose(); this.dispose();
@ -717,4 +823,18 @@ public class SynchronizeDialog extends JFrame implements ActionListener {
return topPanel; return topPanel;
} }
public double truncateDouble(int scale,double value) {
// 使用 BigDecimal 进行精确控制
System.out.println("value========"+value);
System.out.println("scale=========="+scale);
BigDecimal bd = new BigDecimal(Double.toString(value));
// 设置小数位数并使用 RoundingMode.DOWN 进行截断
bd = bd.setScale(scale, RoundingMode.DOWN);
// 返回格式化后的 double 值
System.out.println("bd.doubleValue()============"+bd.doubleValue());
return bd.doubleValue();
}
} }

@ -7,6 +7,7 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import java.io.File;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
@ -25,6 +26,8 @@ import javax.swing.table.DefaultTableModel;
import com.teamcenter.rac.aif.kernel.AIFComponentContext; import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.TCComponent; import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentDataset;
import com.teamcenter.rac.kernel.TCComponentDatasetType;
import com.teamcenter.rac.kernel.TCComponentForm; import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem; import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentItemRevision;
@ -47,20 +50,21 @@ public class TemplateDialog extends JFrame implements ActionListener {
private JButton concelButton = new JButton("取消"); private JButton concelButton = new JButton("取消");
private HashMap<String, String> map = new HashMap<String, String>(); private HashMap<String, String> map = new HashMap<String, String>();
HashMap<String, TCComponentItemRevision> objectMap = new HashMap<String, TCComponentItemRevision>(); HashMap<String, TCComponentItemRevision> objectMap = new HashMap<String, TCComponentItemRevision>();
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 // TODO Auto-generated constructor stub
this.session = session; this.session = session;
this.rev = rev; this.rev = rev;
this.type = type;
initUI(); initUI();
} }
private void initUI() { private void initUI() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
try { try {
company.setPreferredSize(new Dimension(200,30)); company.setPreferredSize(new Dimension(200, 30));
template.setPreferredSize(new Dimension(200,30)); template.setPreferredSize(new Dimension(200, 30));
this.setTitle("工序模版"); this.setTitle("工序模版");
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
@ -88,39 +92,51 @@ public class TemplateDialog extends JFrame implements ActionListener {
// this.setAlwaysOnTop(true); // this.setAlwaysOnTop(true);
String[] pref = session.getPreferenceService().getStringValues("LY6_MEOP_TemplateType"); String[] pref = session.getPreferenceService().getStringValues("LY6_MEOP_TemplateType");
for (int i = 0; i < pref.length; i++) { for (int i = 0; i < pref.length; i++) {
String[] split = pref[i].split(":");
company.addItem(split[0]); if (pref[i].contains(type)) {
map.put(split[0], split[1]); 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 mrValue = map.get(mrselectitem);
String[] split = mrValue.split(","); String[] split = mrValue.split(",");
for (int i = 0; i < split.length; i++) { for (int i = 0; i < split.length; i++) {
template.addItem(split[i]); template.addItem(split[i]);
} }
//下拉值联动 // 下拉值联动
company.addItemListener(new ItemListener() { company.addItemListener(new ItemListener() {
@Override @Override
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) { if (e.getStateChange() == ItemEvent.SELECTED) {
template.removeAllItems(); template.removeAllItems();
String selectedItem = (String) company.getSelectedItem(); String selectedItem = (String) company.getSelectedItem();
System.out.println("Selected Item: " + selectedItem); System.out.println("Selected Item: " + selectedItem);
// 在这里可以执行其他操作 // 在这里可以执行其他操作
String value = map.get(selectedItem); String value = map.get(selectedItem);
String[] split = value.split(","); String[] split = value.split(",");
for (int i = 0; i < split.length; i++) { for (int i = 0; i < split.length; i++) {
template.addItem(split[i]); template.addItem(split[i]);
}
} }
} }
} });
});
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -142,33 +158,55 @@ public class TemplateDialog extends JFrame implements ActionListener {
Object source = e.getSource(); Object source = e.getSource();
System.out.println("source==>+" + source); System.out.println("source==>+" + source);
if (this.okButton.equals(source)) { if (this.okButton.equals(source)) {
String templateString = (String)template.getSelectedItem(); String templateString = (String) template.getSelectedItem();
String companyString = (String)company.getSelectedItem(); String companyString = (String) company.getSelectedItem();
System.out.println("templateString==="+templateString); System.out.println("templateString===" + templateString);
System.out.println("companyString==="+companyString); System.out.println("companyString===" + companyString);
if(companyString.isEmpty()) { if (companyString.isEmpty()) {
MessageBox.post("请选择公司!", "提示 ", MessageBox.INFORMATION); MessageBox.post("请选择公司!", "提示 ", MessageBox.INFORMATION);
return; return;
} }
if(templateString.isEmpty()) { if (templateString.isEmpty()) {
MessageBox.post("请选择模板!", "提示 ", MessageBox.INFORMATION); MessageBox.post("请选择模板!", "提示 ", MessageBox.INFORMATION);
return; return;
} }
//调用查询获取模板的dwg数据集 // 调用查询获取模板的dwg数据集
try { try {
TCComponent[] items = session.search("零组件...", new String[] { "零组件 ID" }, new String[] {templateString}); TCComponent[] items = session.search("零组件...", new String[] { "零组件 ID" },
System.out.println("items.length===="+items.length); new String[] { templateString });
System.out.println("items.length====" + items.length);
TCComponentItem item = null; TCComponentItem item = null;
if(items.length > 0) {
item = (TCComponentItem)items[0]; if (items.length > 0) {
item = (TCComponentItem) items[0];
} }
TCComponentItemRevision latestItemRevision = item.getLatestItemRevision(); TCComponentItemRevision latestItemRevision = item.getLatestItemRevision();
TCComponent[] relatedComponent = latestItemRevision.getRelatedComponents("IMAN_specification"); TCComponent[] relatedComponent = latestItemRevision.getRelatedComponents("IMAN_specification");
System.out.println("relatedComponent========"+relatedComponent.length); System.out.println("relatedComponent========" + relatedComponent.length);
String name = rev.getStringProperty("item_id")+"_"+rev.getStringProperty("object_name")+"_工序卡.dwg";
System.out.println("name================"+name);
for (int i = 0; i < relatedComponent.length; i++) { 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(name);
//
// TCComponent datasetref_c = dataset.getRelatedComponent("ref_list");
// System.out.println("datasetref_c==============="+datasetref_c.getUid());
TCComponent ref_c = dataset.getRelatedComponent("ref_list");
// System.out.println("ref_c====="+ref_c.getUid());
File fmsFile = dataset.getTcFiles()[0].getFmsFile();
System.out.println("fmsFile================"+fmsFile.getAbsolutePath());
TCComponentDataset createDataset = createDataset(name,fmsFile.getAbsolutePath(),session,"LD6_CAD2","LD6_cad2");
//String original_file_name = ref_c.getStringProperty("original_file_name");
//String[] split = original_file_name.split("\\.");
createDataset.getRelatedComponent("ref_list").setProperty("original_file_name", name);
rev.add("IMAN_specification", createDataset);
}
} }
MessageBox.post("模板插入成功!", "提示 ", MessageBox.INFORMATION); MessageBox.post("模板插入成功!", "提示 ", MessageBox.INFORMATION);
this.dispose(); this.dispose();
@ -177,7 +215,7 @@ public class TemplateDialog extends JFrame implements ActionListener {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e1.printStackTrace(); e1.printStackTrace();
} }
//挂在数据集 // 挂在数据集
} else if (this.concelButton.equals(source)) { } else if (this.concelButton.equals(source)) {
this.dispose(); this.dispose();
} }
@ -219,4 +257,14 @@ public class TemplateDialog extends JFrame implements ActionListener {
return topPanel; return topPanel;
} }
public static TCComponentDataset createDataset(String datasetName, String path, TCSession session, String type,
String ref) throws TCException {
TCComponentDatasetType tccomponentDatasetType = (TCComponentDatasetType) session.getTypeComponent("Dataset");
TCComponentDataset tccomponentDataset = tccomponentDatasetType.create(datasetName, "", type);
tccomponentDataset.lock();
tccomponentDataset.setFiles(new String[] { path }, new String[] { ref });
tccomponentDataset.save();
tccomponentDataset.unlock();
return tccomponentDataset;
}
} }

@ -7,9 +7,11 @@ import org.eclipse.core.commands.ExecutionException;
import com.teamcenter.rac.aif.AbstractAIFApplication; import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent; import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility; import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentItemRevision; import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentSchedule; import com.teamcenter.rac.kernel.TCComponentSchedule;
import com.teamcenter.rac.kernel.TCComponentScheduleTask; import com.teamcenter.rac.kernel.TCComponentScheduleTask;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession; import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox; import com.teamcenter.rac.util.MessageBox;
@ -29,6 +31,8 @@ public class TemplateHandler extends AbstractHandler{
public void run() { public void run() {
InterfaceAIFComponent targetComponent = app.getTargetComponent(); InterfaceAIFComponent targetComponent = app.getTargetComponent();
String type = targetComponent.getType();
System.out.println("type==========="+type);
if(targetComponent instanceof TCComponentItemRevision) { if(targetComponent instanceof TCComponentItemRevision) {
try { try {
String[] pref = session.getPreferenceService().getStringValues("LY6_MEOP_TemplateObject"); String[] pref = session.getPreferenceService().getStringValues("LY6_MEOP_TemplateObject");
@ -43,19 +47,53 @@ public class TemplateHandler extends AbstractHandler{
TCComponentItemRevision rev = (TCComponentItemRevision)targetComponent; TCComponentItemRevision rev = (TCComponentItemRevision)targetComponent;
String object_type = rev.getStringProperty("object_type"); String object_type = rev.getStringProperty("object_type");
if(types.contains(object_type)) { if(types.contains(object_type)) {
new TemplateDialog(session,rev); new TemplateDialog(session,rev,object_type);
}else { }else {
MessageBox.post("请选择首选项LY6_MEOP_TemplateObject中匹配的对象","提示",2); MessageBox.post("请选择首选项LY6_MEOP_TemplateObject中匹配的对象","提示",2);
return; return;
} }
} catch (Exception e) { } catch (Exception e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
}else if(type.equals("Mfg0BvrOperation")){
TCComponent com = (TCComponent) targetComponent;
try {
TCComponent rev = com.getRelatedComponent("bl_line_object");
if(rev instanceof TCComponentItemRevision) {
try {
String[] pref = session.getPreferenceService().getStringValues("LY6_MEOP_TemplateObject");
String types = "";
if(pref.length > 0) {
types = pref[0];
}else {
MessageBox.post("请配置首选项LY6_MEOP_TemplateObject","提示",2);
return;
}
TCComponentItemRevision revision = (TCComponentItemRevision)rev;
String object_type = rev.getStringProperty("object_type");
if(types.contains(object_type)) {
new TemplateDialog(session,revision,object_type);
}else {
MessageBox.post("请选择首选项LY6_MEOP_TemplateObject中匹配的对象","提示",2);
return;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else { }else {
MessageBox.post("请选择版本对象!","提示",2); MessageBox.post("请选择版本对象!","提示",2);
return; return;

Loading…
Cancel
Save