main
李建辉 2 months ago
parent 5d53268c37
commit ae8d2915bc

@ -71,12 +71,8 @@
<classpathentry kind="lib" path="axis2_lib/xmlbeans-2.3.0.jar"/>
<classpathentry kind="lib" path="axis2_lib/XmlSchema-1.4.7.jar"/>
<classpathentry kind="lib" path="poi_lib/aspose-words-17.4.0-jdk16.jar"/>
<classpathentry kind="lib" path="poi_lib/poi-3.17.jar"/>
<classpathentry kind="lib" path="poi_lib/poi-examples-3.17.jar"/>
<classpathentry kind="lib" path="poi_lib/poi-excelant-3.17.jar"/>
<classpathentry kind="lib" path="poi_lib/poi-ooxml-3.17.jar"/>
<classpathentry kind="lib" path="poi_lib/poi-ooxml-schemas-3.17.jar"/>
<classpathentry kind="lib" path="poi_lib/poi-scratchpad-3.17.jar"/>
<classpathentry kind="lib" path="poi_lib/xmlbeans-2.6.0.jar"/>
<classpathentry kind="lib" path="json_lib/commons-beanutils-1.7.0.jar"/>
<classpathentry kind="lib" path="json_lib/commons-collections-3.2.jar"/>
@ -88,6 +84,9 @@
<classpathentry kind="lib" path="json_lib/json-lib-2.2.3-jdk13.jar"/>
<classpathentry kind="lib" path="poi_lib/commons-collections4-4.1.jar"/>
<classpathentry kind="lib" path="special_lib/swingx-1.6.1.jar" sourcepath="C:/Users/cbang/AppData/Local/Temp/.org.sf.feeling.decompiler1663637865617/source/swingx-1.6.1-sources.jar"/>
<classpathentry kind="lib" path="special_lib/sqljdbc4.jar"/>
<classpathentry kind="lib" path="poi_lib/poi-ooxml-3.17.jar"/>
<classpathentry kind="lib" path="poi_lib/poi-ooxml-schemas-3.17.jar"/>
<classpathentry kind="lib" path="poi_lib/poi-scratchpad-3.17.jar"/>
<classpathentry kind="lib" path="poi_lib/poi-3.17.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

@ -99,7 +99,6 @@ Bundle-ClassPath: axis2_lib/activation-1.1.jar,
json_lib/json-lib-2.2.2-jdk15.jar,
json_lib/json-lib-2.2.3-jdk13.jar,
poi_lib/aspose-words-17.4.0-jdk16.jar,
poi_lib/poi-3.17.jar,
poi_lib/poi-examples-3.17.jar,
poi_lib/poi-excelant-3.17.jar,
poi_lib/poi-ooxml-3.17.jar,
@ -109,7 +108,7 @@ Bundle-ClassPath: axis2_lib/activation-1.1.jar,
poi_lib/commons-collections4-4.1.jar,
special_lib/swingx-1.6.1.jar,
.,
special_lib/sqljdbc4.jar
poi_lib/poi-3.17.jar
Export-Package: com.net.connor.ld.plm.form,
com.net.connor.ld.plm.ld01,
com.net.connor.ld.plm.ld02,

2
bin/.gitignore vendored

@ -0,0 +1,2 @@
/cn/
/com/

@ -2,7 +2,6 @@ output.. = bin/
bin.includes = plugin.xml,\
META-INF/,\
icons/,\
poi_lib/poi-3.17.jar,\
poi_lib/poi-examples-3.17.jar,\
poi_lib/poi-excelant-3.17.jar,\
poi_lib/poi-ooxml-3.17.jar,\
@ -94,5 +93,5 @@ bin.includes = plugin.xml,\
.,\
poi_lib/commons-collections4-4.1.jar,\
special_lib/swingx-1.6.1.jar,\
special_lib/sqljdbc4.jar
poi_lib/poi-3.17.jar
source.. = src/

@ -5,6 +5,7 @@
<command name="打开项目库" id="com.net.connor.ld.plm.ld01.OpenFloderCommand"/>
<command name="测试菜单" id="Test"/>
<command name="创建项目结构" id="com.net.connor.ld.plm.ld02.CreateProjectStructCommand"/>
<command name="EC绩效报表" id="com.net.connor.ld.plm.ld05.ECSelectHandler"/>
<command name="提取属性到Word/Excel" id="com.net.connor.ld.plm.ld03.PropertyToWordOrExcelCommand"/>
<command name="编辑分类属性" id="ClassificationProEditHandler"/>
<command name="工步复用" id="ChangeOfWorkStepsHandler"/>
@ -18,6 +19,7 @@
<handler commandId="com.net.connor.ld.plm.ld01.OpenFloderCommand" class="cn.net.connor.ld.plm.KHandler"/>
<handler commandId="Test" class="com.net.connor.ld.plm.ld01.Test"/>
<handler commandId="com.net.connor.ld.plm.ld02.CreateProjectStructCommand" class="cn.net.connor.ld.plm.KHandler"/>
<handler commandId="com.net.connor.ld.plm.ld05.ECSelectHandler" class="com.net.connor.ld.plm.ld05.ECSelectHandler"/>
<handler commandId="com.net.connor.ld.plm.ld03.PropertyToWordOrExcelCommand" class="cn.net.connor.ld.plm.KHandler"/>
<handler commandId="ClassificationProEditHandler" class="com.net.connor.ld.plm.ld04.ClassificationProEditHandler"/>
<handler commandId="ChangeOfWorkStepsHandler" class="com.net.connor.ld.plm.ld07.ChangeOfWorkStepsHandler"/>
@ -48,6 +50,7 @@
</menuContribution>
<menuContribution locationURI="menu:org.eclipse.ui.main.menu?after=additions">
<menu label="项目管理" id="cn.net.connor.ld.plm.menus">
<command commandId="com.net.connor.ld.plm.ld05.ECSelectHandler"></command>
<command commandId="com.net.connor.ld.plm.ld01.OpenFloderCommand"></command>
<command commandId="com.net.connor.ld.plm.ld02.CreateProjectStructCommand"></command>
<command commandId="Test"></command>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -2026,7 +2026,9 @@ public class KUtil {
for (int j = 0; j < tables.length; j++) {
String change = tables[j].getStringProperty(prop);
System.out.println("change======================"+change);
if (change.equals("ÊÇ")) {
System.out.println("jjj==="+j);
specialList.add(j);
}
}
@ -2131,7 +2133,7 @@ public class KUtil {
ArrayList<String> tableValue = new ArrayList<String>();
for (String propName : propNames) {
System.out.println("当前的属性名为:" + propName);
//System.out.println("当前的属性名为:" + propName);
String prop = tables[j].getTCProperty(propName).getDisplayableValue();
if (propName.equals("ld6_YNChange") && prop.equals("ÊÇ")) {
// specialList.add(j);

@ -0,0 +1,190 @@
package com.connor.jk.plm.MESreport;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import com.teamcenter.rac.util.MessageBox;
public class DataBaseControl {
/** ************************数据库类调用:声明部分*********************************** */
/**
* kelsen ....
*/
Connection conn;
ResultSet rs;
PreparedStatement pstmt;
Statement stmt;
String strUrl, strUserName, strPassword, strSQLQuery, strDriver;
public String str_Information = "";
/**
*
*/
public DataBaseControl(String strDriver, String strUrl, String strUserName,
String strPassword) {
this.strDriver = strDriver; // "oracle.jdbc.driver.OracleDriver";//驱动
this.strUrl = strUrl; // "jdbc:oracle:thin:@127.0.0.1:1521:tceng";//连接路径
this.strUserName = strUserName; // "infodba";//数据库用户
this.strPassword = strPassword; // "infodba";//数据库密码
// strSQLQuery="select * from LABELID";//查询语句
// 加载驱动
try {
Class.forName(strDriver);// 通过反射加载驱动到内存
} catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
// try {
// Class.forName("org.objectweb.rmijdbc.Driver").newInstance();
// } catch (InstantiationException e) {
//
// e.printStackTrace();
// } catch (IllegalAccessException e) {
//
// e.printStackTrace();
// } catch (ClassNotFoundException e) {
//
// e.printStackTrace();
// }
}
/**
*
*
* @param strSQLQuery
*/
public void dbModify(String strSQLQuery) throws Exception{
openDataBase();
// try {
stmt = conn.createStatement();
stmt.executeUpdate(strSQLQuery);
// } catch (SQLException sqle2) {
// sqle2.printStackTrace();
// }
closeDataBase();
}
/**
*
*
* @param strSQLQuery
* @return
*/
public ResultSet dbQuery(String strSQLQuery) throws Exception{
ResultSet rs_result = null;
// try {
if (conn == null) {
openDataBase();
}
stmt = conn.createStatement();
rs_result = stmt.executeQuery(strSQLQuery);
// } catch (SQLException sqle2) {
// sqle2.printStackTrace();
// }
return rs_result;
}
/**
* list
*/
public List<String[]> doQuery2(String strSQLQuery,int count) throws Exception{
List<String[]> list = new ArrayList<String[]>();
openDataBase();
try {
rs = dbQuery(strSQLQuery);
if(rs!=null) {
while(rs.next()) {
String [] arr = new String[count];
for(int i = 1;i<=count;i++) {
arr[i-1] = rs.getString(i);
}
list.add(arr);
}
}
}finally {
closeDataBase();
}
return list;
}
/**
*
*
*/
public void openDataBase() throws Exception{
// try {
// this.strUrl="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.29)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=tcprod)))";
if (conn == null || conn.isClosed())
conn = DriverManager.getConnection(strUrl, strUserName,
strPassword);
// }catch (SQLException sqle) {
// sqle.printStackTrace();
//// ByteArrayOutputStream baos = new ByteArrayOutputStream();
//// sqle.printStackTrace(new PrintStream(baos));
//// String exception = baos.toString();
//// MessageBox.post(exception,"",MessageBox.INFORMATION);
// }
}
/**
*
*
*/
public void closeDataBase() {
try {
if (rs != null) {
try {
rs.close();
} catch (SQLException sqlec) {
sqlec.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException sqlec) {
sqlec.printStackTrace();
}
}
if (conn != null && !conn.isClosed()) {
try {
conn.close();
} catch (SQLException sqlecon) {
sqlecon.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,345 @@
package com.connor.jk.plm.MESreport;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.filechooser.FileSystemView;
import javax.swing.table.DefaultTableModel;
import org.apache.poi.ss.usermodel.Cell;
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.AbstractAIFDialog;
import com.teamcenter.rac.aif.AbstractAIFUIApplication;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.rac.util.PropertyLayout;
public class MESreportDialog extends AbstractAIFDialog implements ActionListener{
private AbstractAIFUIApplication app;
private TCSession session;
private JTable table;
private DefaultTableModel model;
private JButton exportButton;
private JButton closeButton;
private final static String PREF = "TX_MESReport";
private JButton searchButton;
private JTextField from_date;
private JTextField to_date;
private JTextField th_text;
private JTextField jsy_text;
private JTextField dth_text;
private JTextField dxlx_text;
private List<String> colomuns = new ArrayList<String>();
private Map<String,String> map = new HashMap<String,String>();
private DataBaseControl databaseControl;
private String export_path ="";
private DateChooser dateChooser1 = DateChooser.getInstance("yyyy-MM-dd");
private DateChooser dateChooser2 = DateChooser.getInstance("yyyy-MM-dd");
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public MESreportDialog(AbstractAIFUIApplication app){
this.app = app;
session = (TCSession) app.getSession();
}
@Override
public void run() {
try {
init();
String[] stringValues = session.getPreferenceService().getStringValues("TX_DATABASE");
if(stringValues == null || stringValues.length<1) {
MessageBox.post("未配置首选项TX_DATABASE","",MessageBox.INFORMATION);
throw new Exception("未配置首选项TX_DATABASE");
}
databaseControl = new DataBaseControl("oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@"+stringValues[0], stringValues[1], stringValues[2]);
} catch (Exception e) {
e.printStackTrace();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
e.printStackTrace(new PrintStream(baos));
String exception = baos.toString();
MessageBox.post(exception,"",MessageBox.INFORMATION);
}
}
private void init() throws Exception{
setTitle("MES中间表导出");
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(getConditionPanel(),BorderLayout.NORTH);
mainPanel.add(getTablePanel(),BorderLayout.CENTER);
mainPanel.add(getButtonPanel(),BorderLayout.SOUTH);
add(mainPanel);
pack();
setAlwaysOnTop(true);
setLocationRelativeTo(null);
setVisible(true);
}
private JPanel getConditionPanel() {
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEADING));
from_date = new JTextField(20);
to_date = new JTextField(20);
dateChooser1.register(from_date);
dateChooser2.register(to_date);
JPanel panel1 = new JPanel();
panel1.add(new JLabel("发放日期"));
panel1.add(from_date);
panel1.add(new JLabel("-"));
panel1.add(to_date);
JPanel panel2 = new JPanel();
panel2.add(new JLabel("图号"));
th_text = new JTextField(10);
panel2.add(th_text);
JPanel panel3 = new JPanel();
panel3.add(new JLabel("技术员"));
jsy_text = new JTextField(10);
panel3.add(jsy_text);
JPanel panel4 = new JPanel();
panel4.add(new JLabel("底图号"));
dth_text = new JTextField(10);
panel4.add(dth_text);
JPanel panel5 = new JPanel();
panel5.add(new JLabel("对象类型"));
dxlx_text = new JTextField(10);
panel5.add(dxlx_text);
panel.add(panel1);
panel.add(panel2);
panel.add(panel3);
panel.add(panel4);
panel.add(panel5);
return panel;
}
private JScrollPane getTablePanel() throws Exception {
JScrollPane panel = new JScrollPane();
table = new JTable() {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
String[] stringValues = session.getPreferenceService().getStringValues(PREF);
if(stringValues == null || stringValues.length<1) {
MessageBox.post("未配置首选项"+PREF,"",MessageBox.INFORMATION);
throw new Exception("未配置首选项"+PREF);
}
for(String s:stringValues) {
String[] split = s.split(":");
colomuns.add(split[0]);
map.put(split[0], split[1]);
}
model = new DefaultTableModel(null,colomuns.toArray(new String[colomuns.size()]));
table.setModel(model);
table.getTableHeader().setReorderingAllowed(false);//设置表头固定
model.addRow((Vector)null);
panel.setViewportView(table);
return panel;
}
private JPanel getButtonPanel() {
JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
exportButton = new JButton("导出");
searchButton = new JButton("查询");
closeButton = new JButton("关闭");
exportButton.addActionListener(this);
searchButton.addActionListener(this);
closeButton.addActionListener(this);
panel.add(searchButton);
panel.add(new JLabel(" "));
panel.add(exportButton);
panel.add(new JLabel(" "));
panel.add(closeButton);
return panel;
}
public void search() throws Exception {
System.out.println("开始查询");
System.out.println("清空表格");
updateTable(null);
StringBuffer sb = new StringBuffer();
System.out.println("拼接sql");
sb.append("Select ");
for(int i = 0;i<colomuns.size();i++) {
String string = map.get(colomuns.get(i));
if(string.toUpperCase().equals("PDATE")||string.toUpperCase().equals("PMESDATE")) {
sb.append("to_char(");
sb.append(string);
sb.append(",'yyyy-MM-dd') ");
}else {
sb.append(string).append(" ");
}
if(i!=colomuns.size() -1)sb.append(", ");
}
sb.append("From PTX_TCTOMES ");
boolean isfirst = true;
if(dxlx_text.getText()!=null&&dxlx_text.getText().trim().length()>0) {
if(isfirst) {
sb.append("WHERE PTYPE1 like '%");
sb.append(dxlx_text.getText());
sb.append("%' ");
}
isfirst = false;
}
if(th_text.getText()!=null&&th_text.getText().trim().length()>0) {
if(isfirst) {
sb.append("WHERE PCODE1 like '%");
sb.append(th_text.getText());
sb.append("%' ");
}else {
sb.append("AND PCODE1 like '%");
sb.append(th_text.getText());
sb.append("%' ");
}
isfirst = false;
}
if(dth_text.getText()!=null&&dth_text.getText().trim().length()>0) {
if(isfirst) {
sb.append("WHERE PITEMID1 like '%");
sb.append(dth_text.getText());
sb.append("%' ");
}else {
sb.append("AND PITEMID1 like '%");
sb.append(dth_text.getText());
sb.append("%' ");
}
isfirst = false;
}
if(jsy_text.getText()!=null&&jsy_text.getText().trim().length()>0) {
if(isfirst) {
sb.append("WHERE POWNER1 like '%");
sb.append(jsy_text.getText());
sb.append("%' ");
}else {
sb.append("AND POWNER1 like '%");
sb.append(jsy_text.getText());
sb.append("%' ");
}
isfirst = false;
}
if (from_date.getText() != null && from_date.getText().trim().length() > 0) {
if (isfirst) {
sb.append("WHERE PDATE >= to_date('");
sb.append(sdf.format(dateChooser1.getDate()).trim());
sb.append("','yyyy-MM-dd')");
} else {
sb.append("AND PDATE >= to_date('");
sb.append(sdf.format(dateChooser1.getDate()).trim());
sb.append("','yyyy-MM-dd')");
}
isfirst = false;
}
if (to_date.getText() != null && to_date.getText().trim().length() > 0) {
if (isfirst) {
sb.append("WHERE PDATE <= to_date('");
sb.append(sdf.format(dateChooser2.getDate()).trim());
sb.append("','yyyy-MM-dd')");
} else {
sb.append("AND PDATE <= to_date('");
sb.append(sdf.format(dateChooser2.getDate()).trim());
sb.append("','yyyy-MM-dd')");
}
isfirst = false;
}
String sql = sb.toString();
System.out.println("sql:"+sql);
// MessageBox.post("sql:"+sql,"",MessageBox.INFORMATION);
List<String[]> result = databaseControl.doQuery2(sql, colomuns.size());
System.out.println("开始更新表格");
updateTable(result.toArray(new String[result.size()][colomuns.size()]));
}
public void export() throws Exception{
Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet();
FileOutputStream out = null;
try {
out = new FileOutputStream(export_path);
int rowCount = model.getRowCount();
Row toprow = sheet.createRow(0);
for(int i = 0;i<colomuns.size();i++) {
Cell cell = toprow.createCell(i);
cell.setCellValue(colomuns.get(i));
}
for(int i = 0;i<rowCount;i++) {
Row row = sheet.createRow(i+1);
for(int j = 0;j<colomuns.size();j++) {
Cell cell = row.createCell(j);
cell.setCellValue(model.getValueAt(i, j)!=null?model.getValueAt(i, j).toString():"");
}
}
wb.write(out);
}finally {
if(out !=null) {
out.close();
}
}
}
private void updateTable(String [][]data) {
model = new DefaultTableModel(data,colomuns.toArray(new String[colomuns.size()]));
table.setModel(model);
}
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == searchButton) {
MESreportOperation operation = new MESreportOperation(app,session,"查询",MESreportDialog.this);
session.queueOperation(operation);
}else if(source == exportButton) {
JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);// 设定只能选择到文件夹
int state = jfc.showOpenDialog(MESreportDialog.this);// 此句是打开文件选择器界面的触发语句
if (state == 1) {
return;
} else {
File f = jfc.getSelectedFile();// f为选择到的目录
String dirPath = f.getAbsolutePath();
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");//设置格式
String filePah = dirPath + File.separator+"MEX导出报表"+simpleDateFormat.format(date)+".xlsx";
export_path = filePah;
MESreportOperation operation = new MESreportOperation(app,session,"导出",MESreportDialog.this);
session.queueOperation(operation);
}
}else if(source == closeButton) {
MESreportDialog.this.dispose();
}
}
}

@ -0,0 +1,20 @@
package com.connor.jk.plm.MESreport;
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.aifrcp.AIFUtility;
public class MESreportHandler extends AbstractHandler{
@Override
public Object execute(ExecutionEvent arg0) throws ExecutionException {
AbstractAIFUIApplication app = AIFUtility.getCurrentApplication();
MESreportDialog dialog = new MESreportDialog(app);
new Thread(dialog).start();
return null;
}
}

@ -0,0 +1,126 @@
package com.connor.jk.plm.MESreport;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Label;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingConstants;
import com.teamcenter.rac.aif.AbstractAIFOperation;
import com.teamcenter.rac.aif.AbstractAIFUIApplication;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
public class MESreportOperation extends AbstractAIFOperation{
private String exeType;
private AbstractAIFUIApplication app;
private TCSession session;
private String errInfo = "";
private MESreportDialog dialog;
public MESreportOperation(AbstractAIFUIApplication app, TCSession session,String exeType,MESreportDialog dialog) {
this.app = app;
this.session = session;
this.exeType = exeType;
this.dialog = dialog;
}
@Override
public void executeOperation() throws Exception {
new Thread() {
public void run() {
WaitingDialog dia = new WaitingDialog(app.getDesktop(), "INFOMATION", "正在"+exeType);
dia.setVisible(true);
// dialog.setAlwaysOnTop(false);
dia.setAlwaysOnTop(true);
boolean flag = false;
try {
switch (exeType) {
case "查询":
flag = search();
break;
case "导出":
flag = export();
break;
default:
break;
}
if (flag) {
dia.setVisible(false);
if(exeType.equals("导出"))
MessageBox.post(dialog,exeType+"成功!", "", MessageBox.INFORMATION);
} else {
dia.setVisible(false);
MessageBox.post(dialog,exeType+"失败!\n"+errInfo, "", MessageBox.INFORMATION);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
// dialog.setAlwaysOnTop(true);
}
};
}.start();
}
private boolean search() throws Exception{
try {
dialog.search();
}catch (Exception e) {
e.printStackTrace();
errInfo+=e.getMessage();
return false;
}
return true;
}
private boolean export() throws Exception{
try {
dialog.export();
}catch (Exception e) {
e.printStackTrace();
errInfo+=e.getMessage();
return false;
}
return true;
}
class WaitingDialog extends com.teamcenter.rac.aif.AbstractAIFDialog {
private static final long serialVersionUID = 1L;
public JPanel panel;
JProgressBar progressBar = null;
public WaitingDialog(Frame arg0, String title, String message) {
super(arg0, title);
this.setModal(false);
panel = new JPanel(new BorderLayout());
/*
* JLabel label = new JLabel(message); System.out.println("message:"+message);
* System.out.println("label:"+label); panel.add(label);
*/
progressBar = new JProgressBar(SwingConstants.HORIZONTAL);
progressBar.setVisible(true);
progressBar.setIndeterminate(true);
panel.add(BorderLayout.CENTER, new Label(message));
panel.add(BorderLayout.SOUTH, progressBar);
panel.setPreferredSize(new Dimension(350, 60));
this.getContentPane().add(panel);
centerToScreen();
pack();
}
}
}

@ -0,0 +1,147 @@
package com.connor.jk.plm.MESreport;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.filechooser.FileSystemView;
import javax.swing.table.DefaultTableModel;
public class Test extends JDialog implements ActionListener{
private JTable table;
private DefaultTableModel model;
private JButton exportButton;
private JButton closeButton;
private JButton searchButton;
private JTextField from_date;
private JTextField to_date;
private JTextField th_text;
private JTextField jsy_text;
private JTextField dth_text;
private JTextField dxlx_text;
public Test() {
}
public static void main(String[] args) {
Test test = new Test();
try {
test.init();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void init() throws Exception{
setTitle("MES中间表导出");
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(getConditionPanel(),BorderLayout.NORTH);
mainPanel.add(getTablePanel(),BorderLayout.CENTER);
mainPanel.add(getButtonPanel(),BorderLayout.SOUTH);
add(mainPanel);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private JPanel getConditionPanel() {
DateChooser dateChooser1 = DateChooser.getInstance("yyyy-M-d");
DateChooser dateChooser2 = DateChooser.getInstance("yyyy-M-d");
from_date = new JTextField(20);
to_date = new JTextField(20);
dateChooser1.register(from_date);
dateChooser2.register(to_date);
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEADING));
JPanel panel1 = new JPanel();
panel1.add(new JLabel("发放日期"));
panel1.add(from_date);
panel1.add(new JLabel("-"));
panel1.add(to_date);
JPanel panel2 = new JPanel();
panel2.add(new JLabel("图号"));
th_text = new JTextField(10);
panel2.add(th_text);
JPanel panel3 = new JPanel();
panel3.add(new JLabel("技术员"));
jsy_text = new JTextField(10);
panel3.add(jsy_text);
JPanel panel4 = new JPanel();
panel4.add(new JLabel("底图号"));
dth_text = new JTextField(10);
panel4.add(dth_text);
JPanel panel5 = new JPanel();
panel5.add(new JLabel("对象类型"));
dxlx_text = new JTextField(10);
panel5.add(dxlx_text);
panel.add(panel1);
panel.add(panel2);
panel.add(panel3);
panel.add(panel4);
panel.add(panel5);
return panel;
}
private JScrollPane getTablePanel() {
JScrollPane panel = new JScrollPane();
table = new JTable() {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
model = new DefaultTableModel(null,new String[] {"1","2","3","4","5","6"});
table.setModel(model);
table.getTableHeader().setReorderingAllowed(false);//设置表头固定
model.addRow((Vector)null);
panel.setViewportView(table);
return panel;
}
private JPanel getButtonPanel() {
JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
exportButton = new JButton("导出");
searchButton = new JButton("查询");
closeButton = new JButton("关闭");
exportButton.addActionListener(this);
searchButton.addActionListener(this);
closeButton.addActionListener(this);
panel.add(searchButton);
panel.add(new JLabel(" "));
panel.add(exportButton);
panel.add(new JLabel(" "));
panel.add(closeButton);
return panel;
}
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == searchButton) {
}else if(source == exportButton) {
}else if(source == closeButton) {
Test.this.dispose();
}
}
}

@ -5,128 +5,243 @@ import java.util.ArrayList;
public class FormBean implements Comparable<FormBean>{
//public String[] header = {"序号","更改任务项","更改任务内容","是否需要更改","更改责任人","更改完成状态","备注"};
//{"ld6_SeqNum","ld6_ChangeTaskName" ,"ld6_Task","ld6_YNChange","ld6_ChangePerson","ld6_Changestate","ld6_ChangeRemarks"};
/**
String[] propNames = new String[] { "ld6_SeqNum", "ld6_ChangeTaskName", "ld6_Task", "ld6_YNChange",
"ld6_ChangePerson", "ld6_taskRequireDesc", "ld6_handleperson", "ld6_Changestate", "ld6_RequireFinishTime",
"ld6_ActualFinishTime", "ld6_ChangeRemarks" };
String[] header = new String[] { "序号", "更改任务项", "更改任务内容", "是否需要更改",
"分派人", "任务要求描述", "处理人", "更改完成状态", "要求完成时间",
"实际完成时间", "备注" };
*/
private String num;
private String changeTaskName;
private String task;
private String ynChange;
private String changePerson;
private String taskRequireDesc;
private String handlePerson;
private String changeState;
private String requireFinishTime;
private String actualFinishTime;
private String changeRemarks;
public FormBean(ArrayList<String> arrayList) {
this.setNum(arrayList.get(0));
this.setChangeTaskName(arrayList.get(1));
this.setTask(arrayList.get(2));
this.setYnChange(arrayList.get(3));
this.setChangePerson(arrayList.get(4));
this.setTaskRequireDesc(arrayList.get(5));
this.setHandlePerson(arrayList.get(6));
this.setChangeState(arrayList.get(7));
this.setRequireFinishTime(arrayList.get(8));
this.setActualFinishTime(arrayList.get(9));
this.setChangeRemarks(arrayList.get(10));
}
private String ld6_SeqNum;
private String ld6_ChangeTaskName;
private String ld6_Task;
private String ld6_ChangePerson;
private String ld6_RWms;
private String ld6_RWPerson;
private String ld6_RWRole;
private String ld6_SHPerson;
private String ld6_SHRole;
private String ld6_PZPerson;
private String ld6_PZRole;
private String ld6_RWjjcd;
private String ld6_RWworkhour;
private String ld6_RWsjworkhour;
private String ld6_RWfptime;
private String ld6_RWyqtime;
private String ld6_RWsjtime;
private String ld6_YNChange;
private String ld6_Changestate;
private String ld6_ChangeRemarks;
private String ld6_CLRPerson;
private String ld6_RWnycd;
public String getTaskRequireDesc() {
return taskRequireDesc;
}
// ´ø ArrayList<String> ²ÎÊýµÄ¹¹Ô캯Êý
public FormBean(ArrayList<String> arrayList) {
if (arrayList != null && arrayList.size() >= 19) {
this.setLd6_SeqNum(arrayList.get(0));
this.setLd6_ChangeTaskName(arrayList.get(1));
this.setLd6_Task(arrayList.get(2));
this.setLd6_YNChange(arrayList.get(3));
this.setLd6_ChangePerson(arrayList.get(4));
this.setLd6_RWms(arrayList.get(5));
this.setLd6_RWPerson(arrayList.get(6));
this.setLd6_CLRPerson(arrayList.get(7));
this.setLd6_SHPerson(arrayList.get(8));
this.setLd6_PZPerson(arrayList.get(9));
this.setLd6_RWnycd(arrayList.get(10));
this.setLd6_RWjjcd(arrayList.get(11));
this.setLd6_RWworkhour(arrayList.get(12));
this.setLd6_RWsjworkhour(arrayList.get(13));
this.setLd6_RWfptime(arrayList.get(14));
this.setLd6_RWyqtime(arrayList.get(15));
this.setLd6_RWsjtime(arrayList.get(16));
this.setLd6_Changestate(arrayList.get(17));
this.setLd6_ChangeRemarks(arrayList.get(18));
} else {
throw new IllegalArgumentException("ArrayList must contain at least 19 elements");
}
}
public String getLd6_CLRPerson() {
return ld6_CLRPerson;
}
public void setTaskRequireDesc(String taskRequireDesc) {
this.taskRequireDesc = taskRequireDesc;
}
public void setLd6_CLRPerson(String ld6_CLRPerson) {
this.ld6_CLRPerson = ld6_CLRPerson;
}
public String getHandlePerson() {
return handlePerson;
}
public String getLd6_RWnycd() {
return ld6_RWnycd;
}
public void setHandlePerson(String handlePerson) {
this.handlePerson = handlePerson;
}
public void setLd6_RWnycd(String ld6_RWnycd) {
this.ld6_RWnycd = ld6_RWnycd;
}
public String getRequireFinishTime() {
return requireFinishTime;
}
// Getter and Setter methods for all fields
public String getLd6_SeqNum() {
return ld6_SeqNum;
}
public void setRequireFinishTime(String requireFinishTime) {
this.requireFinishTime = requireFinishTime;
}
public void setLd6_SeqNum(String ld6_SeqNum) {
this.ld6_SeqNum = ld6_SeqNum;
}
public String getLd6_ChangeTaskName() {
return ld6_ChangeTaskName;
}
public String getActualFinishTime() {
return actualFinishTime;
}
public void setLd6_ChangeTaskName(String ld6_ChangeTaskName) {
this.ld6_ChangeTaskName = ld6_ChangeTaskName;
}
public String getLd6_Task() {
return ld6_Task;
}
public void setLd6_Task(String ld6_Task) {
this.ld6_Task = ld6_Task;
}
public String getLd6_ChangePerson() {
return ld6_ChangePerson;
}
public void setLd6_ChangePerson(String ld6_ChangePerson) {
this.ld6_ChangePerson = ld6_ChangePerson;
}
public String getLd6_RWms() {
return ld6_RWms;
}
public void setLd6_RWms(String ld6_RWms) {
this.ld6_RWms = ld6_RWms;
}
public String getLd6_RWPerson() {
return ld6_RWPerson;
}
public void setLd6_RWPerson(String ld6_RWPerson) {
this.ld6_RWPerson = ld6_RWPerson;
}
public String getLd6_RWRole() {
return ld6_RWRole;
}
public void setLd6_RWRole(String ld6_RWRole) {
this.ld6_RWRole = ld6_RWRole;
}
public String getLd6_SHPerson() {
return ld6_SHPerson;
}
public void setLd6_SHPerson(String ld6_SHPerson) {
this.ld6_SHPerson = ld6_SHPerson;
}
public String getLd6_SHRole() {
return ld6_SHRole;
}
public void setLd6_SHRole(String ld6_SHRole) {
this.ld6_SHRole = ld6_SHRole;
}
public String getLd6_PZPerson() {
return ld6_PZPerson;
}
public void setLd6_PZPerson(String ld6_PZPerson) {
this.ld6_PZPerson = ld6_PZPerson;
}
public String getLd6_PZRole() {
return ld6_PZRole;
}
public void setLd6_PZRole(String ld6_PZRole) {
this.ld6_PZRole = ld6_PZRole;
}
public String getLd6_RWjjcd() {
return ld6_RWjjcd;
}
public void setLd6_RWjjcd(String ld6_RWjjcd) {
this.ld6_RWjjcd = ld6_RWjjcd;
}
public String getLd6_RWworkhour() {
return ld6_RWworkhour;
}
public void setLd6_RWworkhour(String ld6_RWworkhour) {
this.ld6_RWworkhour = ld6_RWworkhour;
}
public String getLd6_RWsjworkhour() {
return ld6_RWsjworkhour;
}
public void setLd6_RWsjworkhour(String ld6_RWsjworkhour) {
this.ld6_RWsjworkhour = ld6_RWsjworkhour;
}
public String getLd6_RWfptime() {
return ld6_RWfptime;
}
public void setLd6_RWfptime(String ld6_RWfptime) {
this.ld6_RWfptime = ld6_RWfptime;
}
public String getLd6_RWyqtime() {
return ld6_RWyqtime;
}
public void setLd6_RWyqtime(String ld6_RWyqtime) {
this.ld6_RWyqtime = ld6_RWyqtime;
}
public String getLd6_RWsjtime() {
return ld6_RWsjtime;
}
public void setLd6_RWsjtime(String ld6_RWsjtime) {
this.ld6_RWsjtime = ld6_RWsjtime;
}
public String getLd6_YNChange() {
return ld6_YNChange;
}
public void setLd6_YNChange(String ld6_YNChange) {
this.ld6_YNChange = ld6_YNChange;
}
public String getLd6_Changestate() {
return ld6_Changestate;
}
public void setLd6_Changestate(String ld6_Changestate) {
this.ld6_Changestate = ld6_Changestate;
}
public String getLd6_ChangeRemarks() {
return ld6_ChangeRemarks;
}
public void setLd6_ChangeRemarks(String ld6_ChangeRemarks) {
this.ld6_ChangeRemarks = ld6_ChangeRemarks;
}
public void setActualFinishTime(String actualFinishTime) {
this.actualFinishTime = actualFinishTime;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getChangeTaskName() {
return changeTaskName;
}
public void setChangeTaskName(String changeTaskName) {
this.changeTaskName = changeTaskName;
}
public String getTask() {
return task;
}
public void setTask(String task) {
this.task = task;
}
public String getYnChange() {
return ynChange;
}
public void setYnChange(String ynChange) {
this.ynChange = ynChange;
}
public String getChangePerson() {
return changePerson;
}
public void setChangePerson(String changePerson) {
this.changePerson = changePerson;
}
public String getChangeState() {
return changeState;
}
public void setChangeState(String changeState) {
this.changeState = changeState;
}
public String getChangeRemarks() {
return changeRemarks;
}
public void setChangeRemarks(String changeRemarks) {
this.changeRemarks = changeRemarks;
}
@Override
public int compareTo(FormBean o) {
long i = this.getNum().compareTo(o.getNum());
long i = this.getLd6_SeqNum().compareTo(o.getLd6_SeqNum());
if(i > 0){
return 1;

@ -19,6 +19,7 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import java.util.Map.Entry;
import javax.mail.Flags.Flag;
@ -71,20 +72,41 @@ import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateResponse;
import com.teamcenter.soaictstubs.ICCTAccessControlService;
import cn.net.connor.ld.plm.KUtil;
import de.hunsicker.jalopy.language.Recognizer.ParseException;
import k.util.KOrgDialog;
@SuppressWarnings("serial")
public class CIForm extends AbstractRendering implements FormModel{
private String userId = "";
private TCSession session;
private OpenFormDialog lastDialog;
private Map<Integer, List<Integer>> displayColumn = new HashMap<Integer, List<Integer>>();
private Map<String, String> personMap = new HashMap<String, String>();
private List<Integer> hideList = new ArrayList<Integer>();
private Boolean flag = true;
String[] LD_ChangeForm_RefreshButton_Users_Config;
String[] LD_ChangeForm_HighestPriv_Users_Config;
String[] LD_ChangeForm_HighestPriv_AttrName_Config;
String[] LD_ChangeForm_MiddlePriv_Users_Config;
String[] LD_ChangeForm_MiddlePriv_AttrName_Config;
String[] LD_ChangeForm_LowerstPriv_Users_Config;
String[] LD_ChangeForm_LowerstPriv_AttrName_Config;
String[] headerDssc = new String[] { "序号", "更改任务项", "更改任务内容","是否需要更改", "分派人",
"任务要求描述", "处理人", "处理人账号","审核人账号","批准人账号","难易程度",
"紧急程度","额定业务工时/小时","实际业务工时/小时","任务分派时间","要求完成时间",
"实际完成时间","更改完成状态", "备注" };
DefaultTableModel tableModel = null;
private TCComponent form;
private ArrayList<String> sfsjggList = new ArrayList<String>();
private ArrayList<String> stringList = new ArrayList<String>();
private ArrayList<String> stringList2 = new ArrayList<String>();
// static String ynChangeLovName = "LD6_TecDoc_Type_TLOV";
// static String changeStateLovName = "LD6_TecDoc_Type_TLOV";
@ -119,10 +141,58 @@ public class CIForm extends AbstractRendering implements FormModel{
public void getdata() throws Exception {
//获取分派人数据
AbstractAIFApplication app = AIFUtility.getCurrentApplication();
TCSession session = (TCSession) app.getSession();
session = (TCSession) app.getSession();
String prefName = "Connor_FormModel";//更改内容和更改任务项的模板表
String[] prefVals = KUtil.getPrefVals(session, prefName);
String puid = prefVals[1];
userId = session.getUser().getUserId();
LD_ChangeForm_RefreshButton_Users_Config = KUtil.getPrefVals(session, "LD_ChangeForm_RefreshButton_Users_Config");
LD_ChangeForm_HighestPriv_Users_Config = KUtil.getPrefVals(session, "LD_ChangeForm_HighestPriv_Users_Config");
LD_ChangeForm_HighestPriv_AttrName_Config = KUtil.getPrefVals(session, "LD_ChangeForm_HighestPriv_AttrName_Config");
LD_ChangeForm_MiddlePriv_Users_Config = KUtil.getPrefVals(session, "LD_ChangeForm_MiddlePriv_Users_Config");
LD_ChangeForm_MiddlePriv_AttrName_Config = KUtil.getPrefVals(session, "LD_ChangeForm_MiddlePriv_AttrName_Config");
LD_ChangeForm_LowerstPriv_Users_Config = KUtil.getPrefVals(session, "LD_ChangeForm_LowerstPriv_Users_Config");
LD_ChangeForm_LowerstPriv_AttrName_Config = KUtil.getPrefVals(session, "LD_ChangeForm_LowerstPriv_AttrName_Config");
if(LD_ChangeForm_RefreshButton_Users_Config == null || LD_ChangeForm_RefreshButton_Users_Config.length == 0) {
MessageBox.post("LD_ChangeForm_RefreshButton_Users_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_HighestPriv_Users_Config == null || LD_ChangeForm_HighestPriv_Users_Config.length == 0) {
MessageBox.post("LD_ChangeForm_HighestPriv_Users_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_HighestPriv_AttrName_Config == null || LD_ChangeForm_HighestPriv_AttrName_Config.length == 0) {
MessageBox.post("LD_ChangeForm_HighestPriv_AttrName_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_MiddlePriv_Users_Config == null || LD_ChangeForm_MiddlePriv_Users_Config.length == 0) {
MessageBox.post("LD_ChangeForm_MiddlePriv_Users_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_MiddlePriv_AttrName_Config == null || LD_ChangeForm_MiddlePriv_AttrName_Config.length == 0) {
MessageBox.post("LD_ChangeForm_MiddlePriv_AttrName_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_LowerstPriv_Users_Config == null || LD_ChangeForm_LowerstPriv_Users_Config.length == 0) {
MessageBox.post("LD_ChangeForm_LowerstPriv_Users_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_LowerstPriv_AttrName_Config == null || LD_ChangeForm_LowerstPriv_AttrName_Config.length == 0) {
MessageBox.post("LD_ChangeForm_LowerstPriv_AttrName_Config为空", "提示", MessageBox.INFORMATION);
return;
}
TCComponent component = session.stringToComponent(puid);
if(component instanceof TCComponentForm) {
@ -146,15 +216,45 @@ public class CIForm extends AbstractRendering implements FormModel{
KUtil.getModelVale(map,form,null,propNames);
KUtil.dealSpecialModelValue(specialList,prefName,"ld6_YNChange",1);
//CG
tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
if (column == 0 || column == 1 || column == 2) {
return false;
}else if(specialList.contains(row) && column == 3) {
return false;
if(LD_ChangeForm_HighestPriv_Users_Config[0].contains(userId)) {
ArrayList<Integer> columns = getColumn(LD_ChangeForm_HighestPriv_AttrName_Config[0]);
String sfsjgg = tableModel.getValueAt(row, YNCHANGE_INDEX).toString();
if(columns.contains(column) && column == YNCHANGE_INDEX) {
return true;
}else if(columns.contains(column) && column != YNCHANGE_INDEX && sfsjgg != null && sfsjgg.equals("是")) {
return true;
}else {
return false;
}
}
if(LD_ChangeForm_MiddlePriv_Users_Config[0].contains(userId)) {
ArrayList<Integer> columns = getColumn(LD_ChangeForm_MiddlePriv_AttrName_Config[0]);
String sfsjgg = tableModel.getValueAt(row, YNCHANGE_INDEX).toString();
if(tableModel.getValueAt(row, CHANGE_PERSON_INDEX).toString().contains(userId) && columns.contains(column) && sfsjgg != null && sfsjgg.equals("是")) {
return true;
}else {
return false;
}
}
return true;
if(LD_ChangeForm_LowerstPriv_Users_Config[0].contains(userId)) {
ArrayList<Integer> columns = getColumn(LD_ChangeForm_LowerstPriv_AttrName_Config[0]);
String sfsjgg = tableModel.getValueAt(row, YNCHANGE_INDEX).toString();
if(tableModel.getValueAt(row, CLRZH_PERSON_INDEX).toString().contains(userId) && columns.contains(column) && sfsjgg != null && sfsjgg.equals("是")) {
return true;
}else {
return false;
}
}
return false;
}
};
tableModel.setDataVector(null, header);
@ -167,25 +267,47 @@ public class CIForm extends AbstractRendering implements FormModel{
KUtil.getLov(changeStateMap,changeStateLovName,changeStateComboBox);
table_data.getColumnModel().getColumn(YNCHANGE_INDEX).setCellEditor(new DefaultCellEditor(ynChangeComboBox));
table_data.getColumnModel().getColumn(CHANGE_STATE_INDEX).setCellEditor(new DefaultCellEditor(changeStateComboBox));
//CG
JComboBox<String> nycdComboBox = new JComboBox<String>();
nycdComboBox.addItem("简单");
nycdComboBox.addItem("一般");
nycdComboBox.addItem("较难");
nycdComboBox.addItem("很难");
table_data.getColumnModel().getColumn(10).setCellEditor(new DefaultCellEditor(nycdComboBox));
JComboBox<String> jjcdComboBox = new JComboBox<String>();
jjcdComboBox.addItem("一般");
jjcdComboBox.addItem("紧急");
jjcdComboBox.addItem("超紧急");
table_data.getColumnModel().getColumn(11).setCellEditor(new DefaultCellEditor(jjcdComboBox));
//DatePicker
StringValue sv = new FormatStringValue(sdf);
TableCellRenderer r = new DefaultTableRenderer(sv);
table_data.getColumnModel().getColumn(ld6_RWfptime_index).setCellEditor(new DatePickerCellEditor(sdf));
table_data.getColumnModel().getColumn(ld6_RWfptime_index).setCellRenderer(r);
table_data.getColumnModel().getColumn(REQUIRE_FINISH_TIME_INDEX).setCellEditor(new DatePickerCellEditor(sdf));
table_data.getColumnModel().getColumn(REQUIRE_FINISH_TIME_INDEX).setCellRenderer(r);
table_data.getColumnModel().getColumn(ACTUAL_FINISH_TIME_INDEX).setCellEditor(new DatePickerCellEditor(sdf));
table_data.getColumnModel().getColumn(ACTUAL_FINISH_TIME_INDEX).setCellRenderer(r);
//设置列宽
//CG
table_data.getColumnModel().getColumn(0).setPreferredWidth(10);
table_data.getColumnModel().getColumn(1).setPreferredWidth(60);
table_data.getColumnModel().getColumn(2).setPreferredWidth(180);
table_data.getColumnModel().getColumn(2).setPreferredWidth(300);
table_data.getColumnModel().getColumn(3).setPreferredWidth(40);
table_data.getColumnModel().getColumn(4).setPreferredWidth(80);
table_data.getColumnModel().getColumn(5).setPreferredWidth(80);
table_data.getColumnModel().getColumn(6).setPreferredWidth(80);
//得到原来表单的值
String[][] values = new String[map.size()][propNames.length];
System.out.println("map ===>"+map.toString());
// ArrayList<ArrayList<String>> formList = new ArrayList<ArrayList<String>>();
// getFormValue(formList);
String[][] values = new String[map.size()][propNames.length];
//得到需要排序的数据
ArrayList<FormBean> beanList = new ArrayList<FormBean>();
for (Entry<String, ArrayList<String>> entry : map.entrySet()) {
@ -199,39 +321,64 @@ public class CIForm extends AbstractRendering implements FormModel{
FormBean formBean = beanList.get(i);
for (int j = 0; j < propNames.length; j++) {
switch (j) {
//CG
case 0:
values[i][j] = formBean.getNum();
break;
case 1:
values[i][j] = formBean.getChangeTaskName();
break;
case 2:
values[i][j] = formBean.getTask();
break;
case 3:
values[i][j] = formBean.getYnChange();
break;
case 4:
values[i][j] = formBean.getChangePerson();
break;
case 5:
values[i][j] = formBean.getTaskRequireDesc();
break;
case 6:
values[i][j] = formBean.getHandlePerson();
break;
case 7:
values[i][j] = formBean.getChangeState();
break;
case 8:
values[i][j] = formBean.getRequireFinishTime();
break;
case 9:
values[i][j] = formBean.getActualFinishTime();
break;
case 10:
values[i][j] = formBean.getChangeRemarks();
break;
values[i][j] = formBean.getLd6_SeqNum();
break;
case 1:
values[i][j] = formBean.getLd6_ChangeTaskName();
break;
case 2:
values[i][j] = formBean.getLd6_Task();
break;
case 3:
values[i][j] = formBean.getLd6_YNChange();
break;
case 4:
values[i][j] = formBean.getLd6_ChangePerson();
break;
case 5:
values[i][j] = formBean.getLd6_RWms();
break;
case 6:
values[i][j] = formBean.getLd6_RWPerson();
break;
case 7:
values[i][j] = formBean.getLd6_CLRPerson();
break;
case 8:
values[i][j] = formBean.getLd6_SHPerson();
break;
case 9:
values[i][j] = formBean.getLd6_PZPerson();
break;
case 10:
values[i][j] = formBean.getLd6_RWnycd();
break;
case 11:
values[i][j] = formBean.getLd6_RWjjcd();
break;
case 12:
values[i][j] = formBean.getLd6_RWworkhour();
break;
case 13:
values[i][j] = formBean.getLd6_RWsjworkhour();
break;
case 14:
values[i][j] = formBean.getLd6_RWfptime();
break;
case 15:
values[i][j] = formBean.getLd6_RWyqtime();
break;
case 16:
values[i][j] = formBean.getLd6_RWsjtime();
break;
case 17:
values[i][j] = formBean.getLd6_Changestate();
break;
case 18:
values[i][j] = formBean.getLd6_ChangeRemarks();
break;
default:
values[i][j] = "";
break;
@ -240,75 +387,32 @@ public class CIForm extends AbstractRendering implements FormModel{
tableModel.addRow(values[i]);
}
table_data.setSurrendersFocusOnKeystroke(true);
AbstractAIFApplication app1 = AIFUtility.getCurrentApplication();
TCSession session1 = (TCSession) app1.getSession();
String[] value1 = session1.getPreferenceService().getStringValues("LD_CNCIFormRemarks_Config");
int remarkWidth = Integer.parseInt(value1[0]);
int maxRemarkLength = Integer.parseInt(value1[1]);
//设置备注列宽度
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setPreferredWidth(remarkWidth);
//添加备注列的编辑器和监听器
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setCellEditor(new DefaultCellEditor(new JTextField()) {
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
final JTextField editor = (JTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column);
editor.setDocument(new PlainDocument() {
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if (editor.getText().length() + str.length() <= maxRemarkLength) {
super.insertString(offs, str, a);
} else {
MessageBox.post("输入字符超出最大限制", "提示", MessageBox.INFORMATION);
}
}
});
return editor;
}
});
//添加备注列的渲染器
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setCellRenderer(new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JTextArea renderer = new JTextArea();
renderer.setText(value == null ? "" : value.toString());
renderer.setLineWrap(true);
renderer.setWrapStyleWord(true);
return renderer;
}
});
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setCellEditor(new DefaultCellEditor(new JTextField()) {
private JTextArea editor;
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
editor = new JTextArea();
editor.setText(value == null ? "" : value.toString());
editor.setLineWrap(true);
editor.setWrapStyleWord(true);
return editor;
}
@Override
public boolean isCellEditable(EventObject e) {
if (e instanceof MouseEvent) {
return ((MouseEvent)e).getClickCount() >= 2;
}
return super.isCellEditable(e);
}
@Override
public Object getCellEditorValue() {
String text = editor.getText();
editor.setRows(1); // 将编辑器的高度调整为单行高度
return text;
}
// 省略其他方法
});
sfsjggList = new ArrayList<String>();
for (int i = 0; i < tableModel.getRowCount(); i++) {
sfsjggList.add((String)tableModel.getValueAt(i, 3));
}
System.out.println("sfsjggList================"+sfsjggList.toString());
AbstractAIFApplication app1 = AIFUtility.getCurrentApplication();
TCSession session1 = (TCSession) app1.getSession();
String[] value1 = session1.getPreferenceService().getStringValues("LD_CNCIFormRemarks_Config");
int remarkWidth = Integer.parseInt(value1[0]);
int maxRemarkLength = Integer.parseInt(value1[1]);
// 设置备注列宽度
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setPreferredWidth(remarkWidth);
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setCellRenderer(new MultiLineCellRenderer());
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setCellEditor(new MultiLineCellEditor());
//根据首选项的值设置影藏列获取首选项的值得到Map<表格类型,隐藏的列表>;
AbstractAIFApplication app = AIFUtility.getCurrentApplication();
TCSession session = (TCSession) app.getSession();
session = (TCSession) app.getSession();
String[] value = session.getPreferenceService().getStringValues("LD_CNCIFormAttribute_Hide");
if(value!=null && value.length>0) {
Map<String, List<String>> hideMap = new HashMap<String, List<String>>();
@ -348,7 +452,16 @@ public class CIForm extends AbstractRendering implements FormModel{
List<String> value2 = entry.getValue();
for (int i = 0; i < value2.size(); i++) {
String str = value2.get(i);
int index = Arrays.binarySearch(propNames, str);
System.out.println("str==="+str);
//CG
int index = -1;
for (int j = 0; j < propNames.length; j++) {
if(propNames[j].equals(str)) {
index = j;
}
}
System.out.println("index"+index);
hideList.add(index);
//隐藏列
@ -360,57 +473,112 @@ public class CIForm extends AbstractRendering implements FormModel{
}else {
System.out.println("首选项为空或不存在");
}
table_data.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {// 仅当鼠标单击时响应
// 得到选中的行列的索引值
int r = table_data.getSelectedRow();
int c = table_data.getSelectedColumn();
if(c == CHANGE_PERSON_INDEX) {
String userString = new KOrgDialog("").getUserString();
String condition = table_data.getValueAt( r, YNCHANGE_INDEX).toString();
System.err.println("当前的值为:" + condition + "======" + userString);
if(condition.equals("是") && !userString.isEmpty()) {
table_data.setValueAt(userString, r, c);
if(c == CHANGE_PERSON_INDEX || c == CLRZH_PERSON_INDEX || c == SHRZH_PERSON_INDEX || c == PZRZH_PERSON_INDEX) {
boolean cellEditable = tableModel.isCellEditable(r,c);
System.out.println("cellEditable======================"+cellEditable);
if(cellEditable) {
String userString = new KOrgDialog("").getUserString();
String condition = table_data.getValueAt( r, YNCHANGE_INDEX).toString();
System.err.println("当前的值为:" + condition + "======" + userString);
if(condition.equals("是") && !userString.isEmpty() ) {
table_data.setValueAt(userString, r, c);
}
}else {
MessageBox.post("该用户无权限编辑此单元格 或者 是否设计更改不为“是”,无法编辑!", "提示", MessageBox.INFORMATION);
}
}
// if(c == YNCHANGE_INDEX) {
// try {
// if(userId == null || userId.isEmpty()) {
// userId = session.getUser().getUserId();
// }
// String fpr = tableModel.getValueAt(r, 4).toString();
// if(!fpr.contains(userId)) {
// MessageBox.post("非本行分派人无法调整是否需要更改列内容!", "提示", MessageBox.INFORMATION);
// return;
// }
//
//
// } catch (TCException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
// }
}
});
tableModel.addTableModelListener(new TableModelListener(){
@Override
public void tableChanged(TableModelEvent e) {
if (e.getType() == TableModelEvent.UPDATE) {
// 业务逻辑
if (e.getColumn() == YNCHANGE_INDEX) {
String newvalue = table_data.getValueAt(e.getLastRow(), e.getColumn()).toString();
if (newvalue.equals("否")) {
//CG
if(e.getType() == TableModelEvent.UPDATE){
try {
//业务逻辑
String newvalue = table_data.getValueAt(e.getLastRow(),e.getColumn()).toString();
if(e.getColumn() == YNCHANGE_INDEX){
System.out.println("e.getLastRow()========"+e.getLastRow());
System.out.println("newvalue========"+newvalue);
if(newvalue.equals("否") && !sfsjggList.get(e.getFirstRow()).equals("否")) {
table_data.setValueAt("", e.getLastRow(), CHANGE_PERSON_INDEX);
}else {
String id = table_data.getValueAt(table_data.getSelectedRow(),0).toString();
table_data.setValueAt(personMap.get(id), e.getLastRow(), CHANGE_PERSON_INDEX);
table_data.setValueAt("", e.getLastRow(), HANDLE_PERSON_INDEX);
table_data.setValueAt("", e.getLastRow(), CLRZH_PERSON_INDEX);
table_data.setValueAt("", e.getLastRow(), SHRZH_PERSON_INDEX);
table_data.setValueAt("", e.getLastRow(), PZRZH_PERSON_INDEX);
table_data.setValueAt("", e.getLastRow(), NYCD_INDEX);
table_data.setValueAt("", e.getLastRow(), JJCD_INDEX);
sfsjggList.set(e.getFirstRow(), "否");
}else if(newvalue.equals("是") && !sfsjggList.get(e.getFirstRow()).equals("是")){
sx(e.getLastRow(),0);
sfsjggList.set(e.getFirstRow(), "是");
}
}
else if(e.getColumn() == REQUIRE_FINISH_TIME_INDEX) {
String newvalue = table_data.getValueAt(e.getFirstRow(), e.getColumn()).toString();
System.out.println(newvalue);
//table_data.setValueAt(newvalue, e.getLastRow(), REQUIRE_FINISH_TIME_INDEX);
if(e.getColumn() == TASK_INDEX) {
stringList.set(e.getLastRow(), newvalue);
}
if(e.getColumn() == CHANGE_REMARKS_INDEX) {
int row = e.getLastRow();
int col = e.getColumn();
if (row > -1 && col > -1) {
if (newvalue.length() > maxRemarkLength) {
MessageBox.post("输入字符超出最大限制", "提示", MessageBox.INFORMATION);
table_data.setValueAt(newvalue.substring(0, maxRemarkLength - 1), row, col);
}
}
}
} catch (Exception e2) {
}
}
}
});
table_data.setDefaultRenderer(Object.class, new TableViewRenderer());
JScrollPane scroll = new JScrollPane(table_data);
saveButton = new JButton("检查");
saveButton = new JButton("检查");
saveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
public void actionPerformed(ActionEvent arg0) {
save();
}
});
displayButton = new JButton("显示隐藏列");
displayButton = new JButton("显示隐藏列");
displayButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
@ -426,6 +594,12 @@ public class CIForm extends AbstractRendering implements FormModel{
col.setWidth(val.get(2)); // 设置当前宽度为0
col.setPreferredWidth(val.get(3)); // 设置首选宽度为0
}
//CG
for (int i = 0; i < tableModel.getRowCount(); i++) {
tableModel.setValueAt(stringList.get(i), i, 2);
}
//改变按钮名称
displayButton.setText("隐藏列");
flag = false;
@ -439,18 +613,47 @@ public class CIForm extends AbstractRendering implements FormModel{
flag = true;
}
}
});
//CG
JButton sxButton = new JButton("刷新");
sxButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
int selectedRow = table_data.getSelectedRow();
if(selectedRow == -1) {
MessageBox.post("请选中行!", "提示", MessageBox.INFORMATION);
return;
}else {
String condition = table_data.getValueAt( selectedRow, YNCHANGE_INDEX).toString();
if(condition.equals("是")) {
sx(selectedRow,1);
}else {
MessageBox.post("非涉及更改!", "提示", MessageBox.INFORMATION);
}
}
}
});
JPanel panel = new JPanel();
panel.add(saveButton);
panel.add(displayButton);
if(!LD_ChangeForm_RefreshButton_Users_Config[0].contains(userId)) {
sxButton.setVisible(false);
}
panel.add(sxButton);
this.add(scroll,BorderLayout.CENTER);
this.add(panel,BorderLayout.SOUTH);
this.setVisible(true);
//可最大化
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
@ -471,6 +674,7 @@ public class CIForm extends AbstractRendering implements FormModel{
System.out.println("tempstr:"+tempstr);
if(tempstr.equals("class com.teamcenter.rac.commands.open.OpenFormDialog")) {
lastDialog = (OpenFormDialog) CIForm.this.getParent().getParent().getParent().getParent().getParent();
Container container = CIForm.this.getParent().getParent().getParent().getParent();
final JFrame frame = new JFrame();
frame.add(container);
@ -478,10 +682,12 @@ public class CIForm extends AbstractRendering implements FormModel{
frame.pack();
// 将窗口显示在最前面
//frame.setAlwaysOnTop(true);
frame.setVisible(true);
frame.setVisible(true);
lastDialog.setVisible(false);
lastDialog.addWindowListener(new WindowListener() {
@Override
@ -540,11 +746,6 @@ public class CIForm extends AbstractRendering implements FormModel{
}}).start();
}
@Override
public void saveRendering() {
save();
}
public void hideColumn (JTable table,int column) {
TableColumn col = table.getColumnModel().getColumn(column); // 获取要隐藏的列
@ -564,6 +765,23 @@ public class CIForm extends AbstractRendering implements FormModel{
col.setMaxWidth(0); // 设置最大宽度为0
col.setWidth(0); // 设置当前宽度为0
col.setPreferredWidth(0); // 设置首选宽度为0
//CG
if(column == 2) {
stringList = new ArrayList<String>();
stringList2 = new ArrayList<String>();
for (int i = 0; i < tableModel.getRowCount(); i++) {
stringList2.add((String)tableModel.getValueAt(i, 2));
stringList.add((String)tableModel.getValueAt(i, 2));
tableModel.setValueAt("", i, 2);
}
stringList = stringList2;
}
}
@Override
public void saveRendering() {
save();
}
public void save() {
@ -579,44 +797,65 @@ public class CIForm extends AbstractRendering implements FormModel{
Map<String, String> propMap = new HashMap<String, String>();
Map<String, Calendar> propDateMap = new HashMap<String, Calendar>();
for (int j = 0; j < propNames.length; j++) {
if("ld6_YNChange".equals(propNames[j])) {
String val = tableModel.getValueAt(i, j).toString();
if(val.isEmpty()) {
err++;
if("".equals(sb.toString())) {
sb.append(i+1);
}else {
sb.append("、");
sb.append(i+1);
}
break;
}
if("是".equals(val)) {
String user = tableModel.getValueAt(i, j + 1).toString();
if("".equals(user.trim())) {
err++;
if("".equals(sb.toString())) {
sb.append(i+1);
}else {
sb.append("、");
sb.append(i+1);
}
break;
}
}
}
if(j == REQUIRE_FINISH_TIME_INDEX || j == ACTUAL_FINISH_TIME_INDEX) {
// if("ld6_YNChange".equals(propNames[j])) {
// String val = tableModel.getValueAt(i, j).toString();
// if(val.isEmpty()) {
// err++;
// if("".equals(sb.toString())) {
// sb.append(i+1);
// }else {
// sb.append("、");
// sb.append(i+1);
// }
// break;
// }
// if("是".equals(val)) {
// //CG
// String user = tableModel.getValueAt(i, 2).toString();
//
//
//
// if("".equals(user.trim())) {
// err++;
// if("".equals(sb.toString())) {
// sb.append(i+1);
// }else {
// sb.append("、");
// sb.append(i+1);
// }
// break;
// }
// }
// }
//CG
if(j == REQUIRE_FINISH_TIME_INDEX || j == ACTUAL_FINISH_TIME_INDEX || j == ld6_RWfptime_index) {
Calendar cal = Calendar.getInstance();
String value = tableModel.getValueAt(i, j) == null ? "" : tableModel.getValueAt(i, j).toString();
if(!value.isEmpty()) {
if(value.contains("CST")) {
cal.setTime(cst.parse(value));
propDateMap.put(propNames[j],cal);
}else if(value.contains("GMT")){
TimeZone tz = TimeZone.getTimeZone("GMT+8");
gmt.setTimeZone(tz);
Date s = null;
try {
s = gmt.parse(value);
System.out.println(s); // Sun Oct 22 00:00:00 CST 2017
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cal.setTime(s);
propDateMap.put(propNames[j],cal);
}else {
cal.setTime(sdf.parse(value));
propDateMap.put(propNames[j],cal);
}
}
}else if(j == TASK_INDEX){
propMap.put(propNames[j],stringList.get(i));
}else {
propMap.put(propNames[j],tableModel.getValueAt(i, j) == null ? "" : tableModel.getValueAt(i, j).toString());
}
@ -628,9 +867,9 @@ public class CIForm extends AbstractRendering implements FormModel{
in.data.dateProps = propDateMap;
newIn[i] = in;
}
if(err > 0) {
MessageBox.post("第"+sb.toString()+"行任务未指派责任人或‘是否需要更改值’为空,请填写后保存","提示",MessageBox.INFORMATION);
return;
}else {
CreateResponse response = service.createObjects(newIn);
System.out.println(response.serviceData.sizeOfCreatedObjects());
@ -644,10 +883,156 @@ public class CIForm extends AbstractRendering implements FormModel{
form.getTCProperty("ld6_ChangeTable").setReferenceValueArray(component.toArray(new TCComponent[component.size()]));
MessageBox.post("保存成功","提示",MessageBox.INFORMATION);
}
} catch (Exception e) {
e.printStackTrace();
// TODO Auto-generated catch block
}
}
public void sx(int selectedRow,int change) {
//判断当前用户是否为任务分派人
// try {
// if(userId == null || userId.isEmpty()) {
// userId = session.getUser().getUserId();
// }
// String fpr = tableModel.getValueAt(selectedRow, 4).toString();
// if(!fpr.contains(userId)) {
// MessageBox.post("非本行分派人无法执行刷新功能!", "提示", MessageBox.INFORMATION);
// return;
// }
// } catch (TCException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
//获取首选项
HashMap<String, ArrayList<String>> persionMap = new HashMap<String, ArrayList<String>>();
HashMap<String, String> returnMap = new HashMap<String, String>();
String ggrwx = tableModel.getValueAt(selectedRow, 1).toString();
boolean isOverOne = false;
try {
String[] prefVals = KUtil.getPrefVals(session, "Connor_Personlist");
if(prefVals == null || prefVals.length == 0 ) {
MessageBox.post("请配置首选项Connor_Personlist", "提示", MessageBox.INFORMATION);
return;
}
if(change == 0) {
tableModel.setValueAt("一般", selectedRow, NYCD_INDEX);
tableModel.setValueAt("一般", selectedRow, JJCD_INDEX);
//抓模板分派人
String xh = (String) tableModel.getValueAt(selectedRow, SEQ_NUM_INDEX);
String changePerson = personMap.get(xh);
if(changePerson != null && !changePerson.isEmpty()) {
tableModel.setValueAt(changePerson, selectedRow, CHANGE_PERSON_INDEX);
}
}
for (int i = 0; i < prefVals.length; i++) {
String pref = prefVals[i];
String[] split = pref.split(":");
if(ggrwx.equals(split[0])) {
if(persionMap.containsKey(split[0])) {
ArrayList<String> list = persionMap.get(split[0]);
list.add(split[1]);
persionMap.put(split[0],list);
}else {
ArrayList<String> list =new ArrayList<String>();
list.add(split[1]);
persionMap.put(split[0],list);
}
}
}
ArrayList<String> list = persionMap.get(ggrwx);
if(list.size() > 1) {
JComboBox<String> jComboBox = new JComboBox<String>();
for (int i = 0; i < list.size(); i++) {
jComboBox.addItem(list.get(i));
}
System.out.println("persionMap==="+persionMap.size());
DialogFrame dialog = new DialogFrame(null,jComboBox,returnMap,ggrwx);
System.out.println("returnMap==="+returnMap.size());
dialog.setVisible(true);
isOverOne = true;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//循环插入值
String persons = "";
if(isOverOne) {
persons = returnMap.get(ggrwx);
}else {
persons = persionMap.get(ggrwx).get(0);
}
System.out.println("ggrwx==="+ggrwx);
if(persons != null && !persons.isEmpty()) {
String[] split = persons.split("\\\\");
// System.out.println("split[0]==="+split[0]);
// if(split[0].contains("_")) {
// tableModel.setValueAt("", selectedRow, 4);
// }else {
// String[] split2 = split[0].split("-");
// System.out.println("split2[1]==="+split2[1]);
// tableModel.setValueAt(split2[1], selectedRow, 4);
// System.out.println("split2[0]==="+split2[0]);
// }
if(split[0].contains("_")) {
tableModel.setValueAt("", selectedRow, 7);
}else {
String[] split2 = split[0].split("-");
tableModel.setValueAt(split2[1], selectedRow, 7);
}
if(split[1].contains("_")) {
tableModel.setValueAt("", selectedRow, 8);
}else {
String[] split2 = split[1].split("-");
tableModel.setValueAt(split2[1], selectedRow, 8);
}
if(split[2].contains("_")) {
tableModel.setValueAt("", selectedRow, 9);
}else {
String[] split2 = split[2].split("-");
tableModel.setValueAt(split2[1], selectedRow, 9);
}
}
tableModel.fireTableDataChanged();
}
public ArrayList<Integer> getColumn(String desc){
ArrayList<Integer> integers = new ArrayList<Integer>();
String[] split = desc.split(";");
for (int i = 0; i < split.length; i++) {
for (int j = 0; j < headerDssc.length; j++) {
if(split[i].equals(headerDssc[j])) {
integers.add(j);
}
}
}
return integers;
}
}

@ -10,16 +10,19 @@ import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.EventObject;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TimeZone;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
@ -46,6 +49,7 @@ import org.jdesktop.swingx.renderer.FormatStringValue;
import org.jdesktop.swingx.renderer.StringValue;
import org.jdesktop.swingx.table.DatePickerCellEditor;
import com.net.connor.ld.plm.bean.FormBean;
import com.net.connor.ld.plm.bean.MyButtonRender;
import com.teamcenter.rac.aif.AbstractAIFApplication;
@ -58,6 +62,7 @@ import com.teamcenter.rac.common.viewedit.ViewEditHelper;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentFormType;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.stylesheet.AbstractRendering;
@ -69,11 +74,14 @@ import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateIn;
import com.teamcenter.services.rac.core._2008_06.DataManagement.CreateResponse;
import cn.net.connor.ld.plm.KUtil;
import de.hunsicker.jalopy.language.Recognizer.ParseException;
import k.util.KOrgDialog;
@SuppressWarnings("serial")
public class CNForm extends AbstractRendering implements FormModel{
private String userId = "";
private TCSession session;
private OpenFormDialog lastDialog;
private Map<Integer, List<Integer>> displayColumn = new HashMap<Integer, List<Integer>>();
private Map<String, String> personMap = new HashMap<String, String>();
@ -82,6 +90,24 @@ public class CNForm extends AbstractRendering implements FormModel{
DefaultTableModel tableModel = null;
private TCComponent form;
String[] LD_ChangeForm_RefreshButton_Users_Config;
String[] LD_ChangeForm_HighestPriv_Users_Config;
String[] LD_ChangeForm_HighestPriv_AttrName_Config;
String[] LD_ChangeForm_MiddlePriv_Users_Config;
String[] LD_ChangeForm_MiddlePriv_AttrName_Config;
String[] LD_ChangeForm_LowerstPriv_Users_Config;
String[] LD_ChangeForm_LowerstPriv_AttrName_Config;
String[] headerDssc = new String[] { "序号", "更改任务项", "更改任务内容","是否需要更改", "分派人",
"任务要求描述", "处理人", "处理人账号","审核人账号","批准人账号","难易程度",
"紧急程度","额定业务工时/小时","实际业务工时/小时","任务分派时间","要求完成时间",
"实际完成时间","更改完成状态", "备注" };
//CG
private ArrayList<String> sfsjggList = new ArrayList<String>();
private ArrayList<String> stringList = new ArrayList<String>();
private ArrayList<String> stringList2 = new ArrayList<String>();
public CNForm(TCComponent form) throws Exception {
super();
this.form = form;
@ -102,15 +128,64 @@ public class CNForm extends AbstractRendering implements FormModel{
public void getdata() throws Exception {
//获取分派人数据
AbstractAIFApplication app = AIFUtility.getCurrentApplication();
TCSession session = (TCSession) app.getSession();
session = (TCSession) app.getSession();
String prefName = "Connor_FormModel";//更改内容和更改任务项的模板表
String[] prefVals = KUtil.getPrefVals(session, prefName);
String puid = prefVals[0];
TCComponent component = session.stringToComponent(puid);
userId = session.getUser().getUserId();
LD_ChangeForm_RefreshButton_Users_Config = KUtil.getPrefVals(session, "LD_ChangeForm_RefreshButton_Users_Config");
LD_ChangeForm_HighestPriv_Users_Config = KUtil.getPrefVals(session, "LD_ChangeForm_HighestPriv_Users_Config");
LD_ChangeForm_HighestPriv_AttrName_Config = KUtil.getPrefVals(session, "LD_ChangeForm_HighestPriv_AttrName_Config");
LD_ChangeForm_MiddlePriv_Users_Config = KUtil.getPrefVals(session, "LD_ChangeForm_MiddlePriv_Users_Config");
LD_ChangeForm_MiddlePriv_AttrName_Config = KUtil.getPrefVals(session, "LD_ChangeForm_MiddlePriv_AttrName_Config");
LD_ChangeForm_LowerstPriv_Users_Config = KUtil.getPrefVals(session, "LD_ChangeForm_LowerstPriv_Users_Config");
LD_ChangeForm_LowerstPriv_AttrName_Config = KUtil.getPrefVals(session, "LD_ChangeForm_LowerstPriv_AttrName_Config");
if(LD_ChangeForm_RefreshButton_Users_Config == null || LD_ChangeForm_RefreshButton_Users_Config.length == 0) {
MessageBox.post("LD_ChangeForm_RefreshButton_Users_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_HighestPriv_Users_Config == null || LD_ChangeForm_HighestPriv_Users_Config.length == 0) {
MessageBox.post("LD_ChangeForm_HighestPriv_Users_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_HighestPriv_AttrName_Config == null || LD_ChangeForm_HighestPriv_AttrName_Config.length == 0) {
MessageBox.post("LD_ChangeForm_HighestPriv_AttrName_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_MiddlePriv_Users_Config == null || LD_ChangeForm_MiddlePriv_Users_Config.length == 0) {
MessageBox.post("LD_ChangeForm_MiddlePriv_Users_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_MiddlePriv_AttrName_Config == null || LD_ChangeForm_MiddlePriv_AttrName_Config.length == 0) {
MessageBox.post("LD_ChangeForm_MiddlePriv_AttrName_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_LowerstPriv_Users_Config == null || LD_ChangeForm_LowerstPriv_Users_Config.length == 0) {
MessageBox.post("LD_ChangeForm_LowerstPriv_Users_Config为空", "提示", MessageBox.INFORMATION);
return;
}
if(LD_ChangeForm_LowerstPriv_AttrName_Config == null || LD_ChangeForm_LowerstPriv_AttrName_Config.length == 0) {
MessageBox.post("LD_ChangeForm_LowerstPriv_AttrName_Config为空", "提示", MessageBox.INFORMATION);
return;
}
//CG
if(component instanceof TCComponentForm) {
TCComponentForm form = (TCComponentForm) component;
//获取分派人的值,与序号对应
TCComponent[] referenceListProperty = form.getReferenceListProperty("ld6_ChangeTable");
for(TCComponent comp : referenceListProperty) {
String key = comp.getProperty("ld6_SeqNum");
@ -124,21 +199,54 @@ public class CNForm extends AbstractRendering implements FormModel{
LinkedHashMap<String, ArrayList<String>> map = new LinkedHashMap<String, ArrayList<String>>();
ArrayList<Integer> specialList = new ArrayList<Integer>();
KUtil.getModelVale(map,form,null,propNames);
//CG
KUtil.dealSpecialModelValue(specialList,prefName,"ld6_YNChange",0);
//重大表单‘是否需要更改’ 列为‘是’时,该单元格不能被编辑,并且默认值为是
//CG
tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
if (column == 0 || column == 1 || column == 2) {
return false;
}else if(specialList.contains(row) && column == 3) {
return false;
if(LD_ChangeForm_HighestPriv_Users_Config[0].contains(userId)) {
ArrayList<Integer> columns = getColumn(LD_ChangeForm_HighestPriv_AttrName_Config[0]);
String sfsjgg = tableModel.getValueAt(row, YNCHANGE_INDEX).toString();
if(columns.contains(column) && column == YNCHANGE_INDEX) {
return true;
}else if(columns.contains(column) && column != YNCHANGE_INDEX && sfsjgg != null && sfsjgg.equals("是")) {
return true;
}else {
return false;
}
}
if(LD_ChangeForm_MiddlePriv_Users_Config[0].contains(userId)) {
ArrayList<Integer> columns = getColumn(LD_ChangeForm_MiddlePriv_AttrName_Config[0]);
String sfsjgg = tableModel.getValueAt(row, YNCHANGE_INDEX).toString();
if(tableModel.getValueAt(row, CHANGE_PERSON_INDEX).toString().contains(userId) && columns.contains(column) && sfsjgg != null && sfsjgg.equals("是")) {
return true;
}else {
return false;
}
}
if(LD_ChangeForm_LowerstPriv_Users_Config[0].contains(userId)) {
ArrayList<Integer> columns = getColumn(LD_ChangeForm_LowerstPriv_AttrName_Config[0]);
String sfsjgg = tableModel.getValueAt(row, YNCHANGE_INDEX).toString();
if(tableModel.getValueAt(row, CLRZH_PERSON_INDEX).toString().contains(userId) && columns.contains(column) && sfsjgg != null && sfsjgg.equals("是")) {
return true;
}else {
return false;
}
}
return true;
return false;
}
};
tableModel.setDataVector(null, header);
JTable table_data = new JTable(tableModel);
//table_data.setRowHeight(60);
JComboBox<String> ynChangeComboBox = new JComboBox<String>();
JComboBox<String> changeStateComboBox = new JComboBox<String>();
HashMap<String, String> ynChangeMap = new LinkedHashMap<String, String>();
@ -147,18 +255,37 @@ public class CNForm extends AbstractRendering implements FormModel{
KUtil.getLov(changeStateMap,changeStateLovName,changeStateComboBox);
table_data.getColumnModel().getColumn(YNCHANGE_INDEX).setCellEditor(new DefaultCellEditor(ynChangeComboBox));
table_data.getColumnModel().getColumn(CHANGE_STATE_INDEX).setCellEditor(new DefaultCellEditor(changeStateComboBox));
//DatePicker
//CG
JComboBox<String> nycdComboBox = new JComboBox<String>();
nycdComboBox.addItem("简单");
nycdComboBox.addItem("一般");
nycdComboBox.addItem("较难");
nycdComboBox.addItem("很难");
table_data.getColumnModel().getColumn(10).setCellEditor(new DefaultCellEditor(nycdComboBox));
JComboBox<String> jjcdComboBox = new JComboBox<String>();
jjcdComboBox.addItem("一般");
jjcdComboBox.addItem("紧急");
jjcdComboBox.addItem("超紧急");
table_data.getColumnModel().getColumn(11).setCellEditor(new DefaultCellEditor(jjcdComboBox));
//DatePicker
StringValue sv = new FormatStringValue(df);
TableCellRenderer r = new DefaultTableRenderer(sv);
table_data.getColumnModel().getColumn(ld6_RWfptime_index).setCellEditor(new DatePickerCellEditor(df));
table_data.getColumnModel().getColumn(ld6_RWfptime_index).setCellRenderer(r);
table_data.getColumnModel().getColumn(REQUIRE_FINISH_TIME_INDEX).setCellEditor(new DatePickerCellEditor(df));
table_data.getColumnModel().getColumn(REQUIRE_FINISH_TIME_INDEX).setCellRenderer(r);
table_data.getColumnModel().getColumn(ACTUAL_FINISH_TIME_INDEX).setCellEditor(new DatePickerCellEditor(df));
table_data.getColumnModel().getColumn(ACTUAL_FINISH_TIME_INDEX).setCellRenderer(r);
//设置列宽
//CG
table_data.getColumnModel().getColumn(0).setPreferredWidth(10);
table_data.getColumnModel().getColumn(1).setPreferredWidth(60);
table_data.getColumnModel().getColumn(2).setPreferredWidth(180);
table_data.getColumnModel().getColumn(2).setPreferredWidth(300);
table_data.getColumnModel().getColumn(3).setPreferredWidth(40);
table_data.getColumnModel().getColumn(4).setPreferredWidth(80);
table_data.getColumnModel().getColumn(5).setPreferredWidth(80);
@ -182,39 +309,64 @@ public class CNForm extends AbstractRendering implements FormModel{
FormBean formBean = beanList.get(i);
for (int j = 0; j < propNames.length; j++) {
switch (j) {
//CG
case 0:
values[i][j] = formBean.getNum();
break;
case 1:
values[i][j] = formBean.getChangeTaskName();
break;
case 2:
values[i][j] = formBean.getTask();
break;
case 3:
values[i][j] = formBean.getYnChange();
break;
case 4:
values[i][j] = formBean.getChangePerson();
break;
case 5:
values[i][j] = formBean.getTaskRequireDesc();
break;
case 6:
values[i][j] = formBean.getHandlePerson();
break;
case 7:
values[i][j] = formBean.getChangeState();
break;
case 8:
values[i][j] = formBean.getRequireFinishTime();
break;
case 9:
values[i][j] = formBean.getActualFinishTime();
break;
case 10:
values[i][j] = formBean.getChangeRemarks();
break;
values[i][j] = formBean.getLd6_SeqNum();
break;
case 1:
values[i][j] = formBean.getLd6_ChangeTaskName();
break;
case 2:
values[i][j] = formBean.getLd6_Task();
break;
case 3:
values[i][j] = formBean.getLd6_YNChange();
break;
case 4:
values[i][j] = formBean.getLd6_ChangePerson();
break;
case 5:
values[i][j] = formBean.getLd6_RWms();
break;
case 6:
values[i][j] = formBean.getLd6_RWPerson();
break;
case 7:
values[i][j] = formBean.getLd6_CLRPerson();
break;
case 8:
values[i][j] = formBean.getLd6_SHPerson();
break;
case 9:
values[i][j] = formBean.getLd6_PZPerson();
break;
case 10:
values[i][j] = formBean.getLd6_RWnycd();
break;
case 11:
values[i][j] = formBean.getLd6_RWjjcd();
break;
case 12:
values[i][j] = formBean.getLd6_RWworkhour();
break;
case 13:
values[i][j] = formBean.getLd6_RWsjworkhour();
break;
case 14:
values[i][j] = formBean.getLd6_RWfptime();
break;
case 15:
values[i][j] = formBean.getLd6_RWyqtime();
break;
case 16:
values[i][j] = formBean.getLd6_RWsjtime();
break;
case 17:
values[i][j] = formBean.getLd6_Changestate();
break;
case 18:
values[i][j] = formBean.getLd6_ChangeRemarks();
break;
default:
values[i][j] = "";
break;
@ -224,6 +376,12 @@ public class CNForm extends AbstractRendering implements FormModel{
}
table_data.setSurrendersFocusOnKeystroke(true);
sfsjggList = new ArrayList<String>();
for (int i = 0; i < tableModel.getRowCount(); i++) {
sfsjggList.add((String)tableModel.getValueAt(i, 3));
}
System.out.println("sfsjggList================"+sfsjggList.toString());
AbstractAIFApplication app1 = AIFUtility.getCurrentApplication();
TCSession session1 = (TCSession) app1.getSession();
String[] value1 = session1.getPreferenceService().getStringValues("LD_CNCIFormRemarks_Config");
@ -231,66 +389,16 @@ public class CNForm extends AbstractRendering implements FormModel{
int remarkWidth = Integer.parseInt(value1[0]);
int maxRemarkLength = Integer.parseInt(value1[1]);
//设置备注列宽度
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setPreferredWidth(remarkWidth);
//添加备注列的编辑器和监听器
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setCellEditor(new DefaultCellEditor(new JTextField()) {
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
final JTextField editor = (JTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column);
editor.setDocument(new PlainDocument() {
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if (editor.getText().length() + str.length() <= maxRemarkLength) {
super.insertString(offs, str, a);
} else {
MessageBox.post("输入字符超出最大限制", "提示", MessageBox.INFORMATION);
}
}
});
return editor;
}
});
//添加备注列的渲染器
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setCellRenderer(new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JTextArea renderer = new JTextArea();
renderer.setText(value == null ? "" : value.toString());
renderer.setLineWrap(true);
renderer.setWrapStyleWord(true);
return renderer;
}
});
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setCellEditor(new DefaultCellEditor(new JTextField()) {
private JTextArea editor;
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
editor = new JTextArea();
editor.setText(value == null ? "" : value.toString());
editor.setLineWrap(true);
editor.setWrapStyleWord(true);
return editor;
}
@Override
public boolean isCellEditable(EventObject e) {
if (e instanceof MouseEvent) {
return ((MouseEvent)e).getClickCount() >= 2;
}
return super.isCellEditable(e);
}
@Override
public Object getCellEditorValue() {
String text = editor.getText();
editor.setRows(1); // 将编辑器的高度调整为单行高度
return text;
}
// 省略其他方法
});
// 设置备注列宽度
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setPreferredWidth(remarkWidth);
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setCellRenderer(new MultiLineCellRenderer());
table_data.getColumnModel().getColumn(CHANGE_REMARKS_INDEX).setCellEditor(new MultiLineCellEditor());
//根据首选项的值设置影藏列获取首选项的值得到Map<表格类型,隐藏的列表>;
AbstractAIFApplication app = AIFUtility.getCurrentApplication();
TCSession session = (TCSession) app.getSession();
session = (TCSession) app.getSession();
String[] value = session.getPreferenceService().getStringValues("LD_CNCIFormAttribute_Hide");
if(value!=null && value.length>0) {
Map<String, List<String>> hideMap = new HashMap<String, List<String>>();
@ -330,7 +438,16 @@ public class CNForm extends AbstractRendering implements FormModel{
List<String> value2 = entry.getValue();
for (int i = 0; i < value2.size(); i++) {
String str = value2.get(i);
int index = Arrays.binarySearch(propNames, str);
System.out.println("str==="+str);
//CG
int index = -1;
for (int j = 0; j < propNames.length; j++) {
if(propNames[j].equals(str)) {
index = j;
}
}
System.out.println("index"+index);
hideList.add(index);
//隐藏列
@ -347,35 +464,94 @@ public class CNForm extends AbstractRendering implements FormModel{
// 得到选中的行列的索引值
int r = table_data.getSelectedRow();
int c = table_data.getSelectedColumn();
if(c == CHANGE_PERSON_INDEX) {
String userString = new KOrgDialog("").getUserString();
String condition = table_data.getValueAt( r, YNCHANGE_INDEX).toString();
System.err.println("当前的值为:" + condition + "======" + userString);
if(condition.equals("是") && !userString.isEmpty()) {
table_data.setValueAt(userString, r, c);
if(c == CHANGE_PERSON_INDEX || c == CLRZH_PERSON_INDEX || c == SHRZH_PERSON_INDEX || c == PZRZH_PERSON_INDEX) {
boolean cellEditable = tableModel.isCellEditable(r,c);
System.out.println("cellEditable======================"+cellEditable);
if(cellEditable) {
String userString = new KOrgDialog("").getUserString();
String condition = table_data.getValueAt( r, YNCHANGE_INDEX).toString();
System.err.println("当前的值为:" + condition + "======" + userString);
if(condition.equals("是") && !userString.isEmpty() ) {
table_data.setValueAt(userString, r, c);
}
}else {
MessageBox.post("该用户无权限编辑此单元格 或者 是否设计更改不为“是”,无法编辑!", "提示", MessageBox.INFORMATION);
}
}
// if(c == YNCHANGE_INDEX) {
// try {
// if(userId == null || userId.isEmpty()) {
// userId = session.getUser().getUserId();
// }
// String fpr = tableModel.getValueAt(r, 4).toString();
// if(!fpr.contains(userId)) {
// MessageBox.post("非本行分派人无法调整是否需要更改列内容!", "提示", MessageBox.INFORMATION);
// return;
// }
//
//
// } catch (TCException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
// }
}
});
tableModel.addTableModelListener(new TableModelListener(){
@Override
public void tableChanged(TableModelEvent e) {
//CG
if(e.getType() == TableModelEvent.UPDATE){
//业务逻辑
try {
//业务逻辑
String newvalue = table_data.getValueAt(e.getLastRow(),e.getColumn()).toString();
if(e.getColumn() == YNCHANGE_INDEX){
String newvalue = table_data.getValueAt(e.getLastRow(),e.getColumn()).toString();
if(newvalue.equals("否")) {
System.out.println("e.getLastRow()========"+e.getLastRow());
System.out.println("newvalue========"+newvalue);
if(newvalue.equals("否") && !sfsjggList.get(e.getFirstRow()).equals("否")) {
table_data.setValueAt("", e.getLastRow(), CHANGE_PERSON_INDEX);
}else {
String id = table_data.getValueAt(table_data.getSelectedRow(),0).toString();
table_data.setValueAt(personMap.get(id), e.getLastRow(), CHANGE_PERSON_INDEX);
table_data.setValueAt("", e.getLastRow(), HANDLE_PERSON_INDEX);
table_data.setValueAt("", e.getLastRow(), CLRZH_PERSON_INDEX);
table_data.setValueAt("", e.getLastRow(), SHRZH_PERSON_INDEX);
table_data.setValueAt("", e.getLastRow(), PZRZH_PERSON_INDEX);
table_data.setValueAt("", e.getLastRow(), NYCD_INDEX);
table_data.setValueAt("", e.getLastRow(), JJCD_INDEX);
sfsjggList.set(e.getFirstRow(), "否");
}else if(newvalue.equals("是") && !sfsjggList.get(e.getFirstRow()).equals("是")){
sx(e.getLastRow(),0);
sfsjggList.set(e.getFirstRow(), "是");
}
}
if(e.getColumn() == TASK_INDEX) {
stringList.set(e.getLastRow(), newvalue);
}
if(e.getColumn() == CHANGE_REMARKS_INDEX) {
int row = e.getLastRow();
int col = e.getColumn();
if (row > -1 && col > -1) {
if (newvalue.length() > maxRemarkLength) {
MessageBox.post("输入字符超出最大限制", "提示", MessageBox.INFORMATION);
table_data.setValueAt(newvalue.substring(0, maxRemarkLength - 1), row, col);
}
}
}
} catch (Exception e2) {
}
}
}
});
table_data.setDefaultRenderer(Object.class, new TableViewRenderer());
JScrollPane scroll = new JScrollPane(table_data);
JButton saveButton = new JButton("检查");
@ -401,6 +577,11 @@ public class CNForm extends AbstractRendering implements FormModel{
col.setWidth(val.get(2)); // 设置当前宽度为0
col.setPreferredWidth(val.get(3)); // 设置首选宽度为0
}
//CG
for (int i = 0; i < tableModel.getRowCount(); i++) {
tableModel.setValueAt(stringList.get(i), i, 2);
}
//改变按钮名称
displayButton.setText("隐藏列");
flag = false;
@ -416,9 +597,41 @@ public class CNForm extends AbstractRendering implements FormModel{
}
});
//CG
JButton sxButton = new JButton("刷新");
sxButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
int selectedRow = table_data.getSelectedRow();
if(selectedRow == -1) {
MessageBox.post("请选中行!", "提示", MessageBox.INFORMATION);
return;
}else {
String condition = table_data.getValueAt( selectedRow, YNCHANGE_INDEX).toString();
if(condition.equals("是")) {
sx(selectedRow,1);
}else {
MessageBox.post("非涉及更改!", "提示", MessageBox.INFORMATION);
}
}
}
});
JPanel panel = new JPanel();
panel.add(saveButton);
panel.add(displayButton);
if(!LD_ChangeForm_RefreshButton_Users_Config[0].contains(userId)) {
sxButton.setVisible(false);
}
panel.add(sxButton);
this.add(scroll,BorderLayout.CENTER);
this.add(panel,BorderLayout.SOUTH);
this.setVisible(true);
@ -535,6 +748,19 @@ public class CNForm extends AbstractRendering implements FormModel{
col.setMaxWidth(0); // 设置最大宽度为0
col.setWidth(0); // 设置当前宽度为0
col.setPreferredWidth(0); // 设置首选宽度为0
//CG
if(column == 2) {
stringList = new ArrayList<String>();
stringList2 = new ArrayList<String>();
for (int i = 0; i < tableModel.getRowCount(); i++) {
stringList2.add((String)tableModel.getValueAt(i, 2));
stringList.add((String)tableModel.getValueAt(i, 2));
tableModel.setValueAt("", i, 2);
}
stringList = stringList2;
}
}
@Override
@ -555,44 +781,66 @@ public class CNForm extends AbstractRendering implements FormModel{
Map<String, String> propMap = new HashMap<String, String>();
Map<String, Calendar> propDateMap = new HashMap<String, Calendar>();
for (int j = 0; j < propNames.length; j++) {
if("ld6_YNChange".equals(propNames[j])) {
String val = tableModel.getValueAt(i, j).toString();
if(val.isEmpty()) {
err++;
if("".equals(sb.toString())) {
sb.append(i+1);
}else {
sb.append("、");
sb.append(i+1);
}
break;
}
if("是".equals(val)) {
String user = tableModel.getValueAt(i, j + 1).toString();
if("".equals(user.trim())) {
err++;
if("".equals(sb.toString())) {
sb.append(i+1);
}else {
sb.append("、");
sb.append(i+1);
}
break;
}
}
}
if(j == REQUIRE_FINISH_TIME_INDEX || j == ACTUAL_FINISH_TIME_INDEX) {
// if("ld6_YNChange".equals(propNames[j])) {
// String val = tableModel.getValueAt(i, j).toString();
// if(val.isEmpty()) {
// err++;
// if("".equals(sb.toString())) {
// sb.append(i+1);
// }else {
// sb.append("、");
// sb.append(i+1);
// }
// break;
// }
// if("是".equals(val)) {
// //CG
// String user = tableModel.getValueAt(i, 2).toString();
//
//
//
// if("".equals(user.trim())) {
// err++;
// if("".equals(sb.toString())) {
// sb.append(i+1);
// }else {
// sb.append("、");
// sb.append(i+1);
// }
// break;
// }
// }
// }
//CG
if(j == REQUIRE_FINISH_TIME_INDEX || j == ACTUAL_FINISH_TIME_INDEX || j == ld6_RWfptime_index) {
Calendar cal = Calendar.getInstance();
String value = tableModel.getValueAt(i, j) == null ? "" : tableModel.getValueAt(i, j).toString();
if(!value.isEmpty()) {
if(value.contains("CST")) {
cal.setTime(cst.parse(value));
propDateMap.put(propNames[j],cal);
}else if(value.contains("GMT")){
TimeZone tz = TimeZone.getTimeZone("GMT+8");
gmt.setTimeZone(tz);
Date s = null;
try {
s = gmt.parse(value);
System.out.println(s); // Sun Oct 22 00:00:00 CST 2017
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cal.setTime(s);
propDateMap.put(propNames[j],cal);
}else {
cal.setTime(sdf.parse(value));
propDateMap.put(propNames[j],cal);
}
}
}else if(j == TASK_INDEX){
System.out.println("stringList.get(i)=============="+stringList.get(i));
propMap.put(propNames[j],stringList.get(i));
}else {
propMap.put(propNames[j],tableModel.getValueAt(i, j) == null ? "" : tableModel.getValueAt(i, j).toString());
}
@ -620,12 +868,157 @@ public class CNForm extends AbstractRendering implements FormModel{
form.getTCProperty("ld6_ChangeTable").setReferenceValueArray(component.toArray(new TCComponent[component.size()]));
MessageBox.post("保存成功","提示",MessageBox.INFORMATION);
}
} catch (Exception e) {
e.printStackTrace();
// TODO Auto-generated catch block
}
}
public void sx(int selectedRow,int change) {
//判断当前用户是否为任务分派人
// try {
// if(userId == null || userId.isEmpty()) {
// userId = session.getUser().getUserId();
// }
// String fpr = tableModel.getValueAt(selectedRow, 4).toString();
// if(!fpr.contains(userId)) {
// MessageBox.post("非本行分派人无法执行刷新功能!", "提示", MessageBox.INFORMATION);
// return;
// }
// } catch (TCException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
//获取首选项
HashMap<String, ArrayList<String>> persionMap = new HashMap<String, ArrayList<String>>();
HashMap<String, String> returnMap = new HashMap<String, String>();
String ggrwx = tableModel.getValueAt(selectedRow, 1).toString();
boolean isOverOne = false;
try {
String[] prefVals = KUtil.getPrefVals(session, "Connor_Personlist");
if(prefVals == null || prefVals.length == 0 ) {
MessageBox.post("请配置首选项Connor_Personlist", "提示", MessageBox.INFORMATION);
return;
}
if(change == 0) {
tableModel.setValueAt("一般", selectedRow, NYCD_INDEX);
tableModel.setValueAt("一般", selectedRow, JJCD_INDEX);
//抓模板分派人
String xh = (String) tableModel.getValueAt(selectedRow, SEQ_NUM_INDEX);
String changePerson = personMap.get(xh);
if(changePerson != null && !changePerson.isEmpty()) {
tableModel.setValueAt(changePerson, selectedRow, CHANGE_PERSON_INDEX);
}
}
for (int i = 0; i < prefVals.length; i++) {
String pref = prefVals[i];
String[] split = pref.split(":");
if(ggrwx.equals(split[0])) {
if(persionMap.containsKey(split[0])) {
ArrayList<String> list = persionMap.get(split[0]);
list.add(split[1]);
persionMap.put(split[0],list);
}else {
ArrayList<String> list =new ArrayList<String>();
list.add(split[1]);
persionMap.put(split[0],list);
}
}
}
ArrayList<String> list = persionMap.get(ggrwx);
if(list.size() > 1) {
JComboBox<String> jComboBox = new JComboBox<String>();
for (int i = 0; i < list.size(); i++) {
jComboBox.addItem(list.get(i));
}
System.out.println("persionMap==="+persionMap.size());
DialogFrame dialog = new DialogFrame(null,jComboBox,returnMap,ggrwx);
System.out.println("returnMap==="+returnMap.size());
dialog.setVisible(true);
isOverOne = true;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//循环插入值
String persons = "";
if(isOverOne) {
persons = returnMap.get(ggrwx);
}else {
persons = persionMap.get(ggrwx).get(0);
}
if(persons != null && !persons.isEmpty()) {
String[] split = persons.split("\\\\");
// System.out.println("split[0]==="+split[0]);
// if(split[0].contains("_")) {
// tableModel.setValueAt("", selectedRow, 4);
// }else {
// String[] split2 = split[0].split("-");
// System.out.println("split2[1]==="+split2[1]);
// tableModel.setValueAt(split2[1], selectedRow, 4);
// System.out.println("split2[0]==="+split2[0]);
// }
if(split[0].contains("_")) {
tableModel.setValueAt("", selectedRow, 7);
}else {
String[] split2 = split[0].split("-");
tableModel.setValueAt(split2[1], selectedRow, 7);
}
if(split[1].contains("_")) {
tableModel.setValueAt("", selectedRow, 8);
}else {
String[] split2 = split[1].split("-");
tableModel.setValueAt(split2[1], selectedRow, 8);
}
if(split[2].contains("_")) {
tableModel.setValueAt("", selectedRow, 9);
}else {
String[] split2 = split[2].split("-");
tableModel.setValueAt(split2[1], selectedRow, 9);
}
}
tableModel.fireTableDataChanged();
}
public ArrayList<Integer> getColumn(String desc){
ArrayList<Integer> integers = new ArrayList<Integer>();
String[] split = desc.split(";");
for (int i = 0; i < split.length; i++) {
for (int j = 0; j < headerDssc.length; j++) {
if(split[i].equals(headerDssc[j])) {
integers.add(j);
}
}
}
return integers;
}
}

@ -0,0 +1,51 @@
package com.net.connor.ld.plm.ld05;
import javax.swing.*;
import com.sun.scenario.effect.impl.hw.d3d.D3DShaderSource;
import com.teamcenter.rac.util.MessageBox;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
public class DialogFrame extends JDialog {
private JComboBox<String> comboBox;
private Object syncObject;
public DialogFrame(JFrame owner,JComboBox<String> comboBox,HashMap<String, String> map,String key) {
super(owner, key, true); // 模态对话框
this.comboBox = comboBox;
this.syncObject = syncObject;
JButton button = new JButton("确定");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String selectedItem =(String) comboBox.getSelectedItem();
if(selectedItem == null || selectedItem.isEmpty()) {
MessageBox.post("请选择数据!", "提示 ", MessageBox.INFORMATION);
}else {
System.out.println("Selected Item: " + selectedItem);
map.put(key,selectedItem);
dispose(); // 关闭对话框
}
}
});
this.setPreferredSize(new Dimension(700,140));
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(new JLabel("请选择:"));
panel.add(comboBox);
panel.add(button);
this.add(panel);
this.pack();
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setLocationRelativeTo(owner); // 居中显示
}
}

@ -0,0 +1,948 @@
package com.net.connor.ld.plm.ld05;
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.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit;
import java.time.temporal.WeekFields;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map.Entry;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
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.net.connor.ld.plm.bean.FormBean;
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.TCComponentDataset;
import com.teamcenter.rac.kernel.TCComponentForm;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCComponentScheduleTask;
import com.teamcenter.rac.kernel.TCException;
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 cn.net.connor.ld.plm.KUtil;
public class ECSelectDialog extends JFrame implements ActionListener, FormModel {
private static final DateFormat dateFormat = null;
private TCSession session;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
private JButton okButton = new JButton("导出");
private JButton concelButton = new JButton("取消");
HashMap<String, TCComponentItemRevision> objectMap = new HashMap<String, TCComponentItemRevision>();
// private JButton cleanButton1 = new JButton("清除");
// private JButton cleanButton2 = new JButton("清除");
private JButton choosetButton = new JButton("选择");
private DateButton startButton;
private DateButton endButton;
private DateButton startButtonSJWC;
private DateButton endButtonSJWC;
private JTextField pathJTextField = new JTextField(30);
private JTextField fprField = new JTextField(10);
private JTextField clrField = new JTextField(10);
AbstractAIFApplication app;
private String[] LD_ECForm_Mapping = null;
private LinkedHashMap<String, String> cskfPMap = new LinkedHashMap<String, String>();
String[] LD6_ECForm_ModelUid = null;
LinkedHashMap<String, Double> ggrwxMap = new LinkedHashMap<String, Double>();
LinkedHashMap<String, Double> rwxzMap = new LinkedHashMap<String, Double>();
LinkedHashMap<String, Double> nycdMap = new LinkedHashMap<String, Double>();
LinkedHashMap<String, Double> jjcdMap = new LinkedHashMap<String, Double>();
LinkedHashMap<String, Double> cskfMap = new LinkedHashMap<String, Double>();
public ECSelectDialog(TCSession session, AbstractAIFApplication app) throws TCException {
// TODO Auto-generated constructor stub
this.session = session;
this.app = app;
initUI();
}
private void initUI() {
// TODO Auto-generated method stub
try {
String[] ld_overtime = session.getPreferenceService()
.getStringValues("ld_overtime");
if (ld_overtime == null || ld_overtime.length <= 0) {
MessageBox.post("首选项ld_overtime配置有误请检查。", "提示", 2);
return;
}
for (int i = 0; i < ld_overtime.length; i++) {
String[] split = ld_overtime[i].split(":");
cskfPMap.put(split[0],split[1]);
}
LD_ECForm_Mapping = session.getPreferenceService()
.getStringValues("LD_ECForm_Mapping");
System.out.println("LD_ECForm_Mapping.length======"+LD_ECForm_Mapping.length);
if (LD_ECForm_Mapping == null || LD_ECForm_Mapping.length < 5) {
MessageBox.post("首选项LD_ECForm_Mapping配置有误请检查。", "提示", 2);
return;
}else {
String[] split11 = LD_ECForm_Mapping[0].split(";");
for (int i = 0; i < split11.length; i++) {
String[] split2 = split11[i].split("=");
ggrwxMap.put(split2[0],Double.parseDouble(split2[1]));
}
String[] split22 = LD_ECForm_Mapping[1].split(";");
for (int i = 0; i < split22.length; i++) {
String[] split2 = split22[i].split("=");
rwxzMap.put(split2[0],Double.parseDouble(split2[1]));
}
String[] split33 = LD_ECForm_Mapping[2].split(";");
for (int i = 0; i < split33.length; i++) {
String[] split2 = split33[i].split("=");
nycdMap.put(split2[0],Double.parseDouble(split2[1]));
}
String[] split44 = LD_ECForm_Mapping[3].split(";");
for (int i = 0; i < split44.length; i++) {
String[] split2 = split44[i].split("=");
jjcdMap.put(split2[0],Double.parseDouble(split2[1]));
}
String[] split55 = LD_ECForm_Mapping[4].split(";");
for (int i = 0; i < split55.length; i++) {
String[] split2 = split55[i].split("=");
cskfMap.put(split2[0],Double.parseDouble(split2[1]));
}
}
System.out.println("ggrwxMap==========="+ggrwxMap.toString());
System.out.println("rwxzMap==========="+rwxzMap.toString());
System.out.println("nycdMap==========="+nycdMap.toString());
System.out.println("jjcdMap==========="+jjcdMap.toString());
System.out.println("cskfMap==========="+cskfMap.toString());
LD6_ECForm_ModelUid = session.getPreferenceService()
.getStringValues("LD6_ECForm_ModelUid");
if (LD6_ECForm_ModelUid == null || LD6_ECForm_ModelUid.length <= 0) {
MessageBox.post("首选项LD6_ECForm_ModelUid配置有误请检查。", "提示", 2);
return;
}
startButton = new DateButton(sdf);
endButton = new DateButton(sdf);
startButton.setDate("未设置日期");
endButton.setDate("未设置日期");
startButtonSJWC = new DateButton(sdf);
endButtonSJWC = new DateButton(sdf);
startButtonSJWC.setDate("未设置日期");
endButtonSJWC.setDate("未设置日期");
this.setTitle("EC查询");
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(650, 230));
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); // 获取屏幕尺寸
int screenWidth = screenSize.width; // 获取屏幕宽度
int screenHeight = screenSize.height; // 获取屏幕高度
int x = (screenWidth - 650) / 2; // 计算Frame的左上角x坐标
int y = (screenHeight - 230) / 2; // 计算Frame的左上角y坐标
this.setLocation(x, y); // 设置Frame的位置
// this.setLocationRelativeTo(null);
this.createActionEvent();
this.pack();
// this.validate();
this.setVisible(true);
// this.setAlwaysOnTop(true);
} catch (Exception e) {
e.printStackTrace();
return;
}
// cleanButton1.addActionListener(new ActionListener() {
//
// @Override
// public void actionPerformed(ActionEvent arg0) {
// // TODO Auto-generated method stub
// startButton.setDate("未设置日期");
//
// }
// });
// cleanButton1.addActionListener(new ActionListener() {
//
// @Override
// public void actionPerformed(ActionEvent arg0) {
// // TODO Auto-generated method stub
// endButton.setDate("未设置日期");
// }
// });
}
// 添加监听
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)) {
Date startButtondDate = startButton.getDate();
Date endbDatedaDate = endButton.getDate();
Date startButtondDateSJWC = startButtonSJWC.getDate();
Date endbDatedaDateSJWC = endButtonSJWC.getDate();
ArrayList<String> tmList = new ArrayList<String>();
ArrayList<String> zList = new ArrayList<String>();
if (!fprField.getText().isEmpty()) {
tmList.add("分派人");
zList.add(fprField.getText());
}
if (!clrField.getText().isEmpty()) {
tmList.add("处理人");
zList.add(clrField.getText());
}
if (startButtondDate != null) {
tmList.add("任务分派时间晚于");
zList.add(sdf.format(startButtondDate).replaceAll("(\\d{4})-0(\\d)-", "$1-$2-") + " 00:00");
}
if (endbDatedaDate != null) {
tmList.add("任务分派时间早于");
zList.add(sdf.format(endbDatedaDate).replaceAll("(\\d{4})-0(\\d)-", "$1-$2-") + " 00:00");
}
if (startButtondDateSJWC != null) {
tmList.add("实际完成时间晚于");
zList.add(sdf.format(startButtondDateSJWC).replaceAll("(\\d{4})-0(\\d)-", "$1-$2-") + " 00:00");
}
if (endbDatedaDateSJWC != null) {
tmList.add("实际完成时间早于");
zList.add(sdf.format(endbDatedaDateSJWC).replaceAll("(\\d{4})-0(\\d)-", "$1-$2-") + " 00:00");
}
if (tmList.size() == 0) {
MessageBox.post("请输入条件!", "提示", MessageBox.INFORMATION);
return;
}
String pathJTextFieldStr = pathJTextField.getText();
if (pathJTextFieldStr == null || pathJTextFieldStr.isEmpty()) {
MessageBox.post("请选择需要导出的路径。", "提示", 2);
return;
}
System.out.println("tmList==========="+tmList.toString());
System.out.println("zList==========="+zList.toString());
TCComponent[] searchCN = null;
TCComponent[] searchCI = null;
LinkedHashMap<TCComponentItemRevision, TCComponentForm> revFormMap =new LinkedHashMap<TCComponentItemRevision, TCComponentForm>();
try {
searchCN = session.search("SearchECForm-CNForm", tmList.toArray(new String[0]), zList.toArray(new String[0]));
searchCI = session.search("SearchECForm-CIForm", tmList.toArray(new String[0]), zList.toArray(new String[0]));
} catch (Exception e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}
System.out.println("searchCN============="+searchCN.length);
System.out.println("searchCI============="+searchCI.length);
for (int i = 0; i < searchCI.length; i++) {
TCComponentForm form = (TCComponentForm)searchCI[i];
AIFComponentContext[] whereReferenced;
try {
whereReferenced = form.whereReferenced();
for (int j = 0; j < whereReferenced.length; j++) {
String type = whereReferenced[j].getComponent().getType();
System.out.println("type======================="+type);
if(type.equals("LD6_CNRevision")) {
revFormMap.put((TCComponentItemRevision)whereReferenced[j].getComponent(),form);
}
}
} catch (TCException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
for (int i = 0; i < searchCN.length; i++) {
TCComponentForm form = (TCComponentForm)searchCN[i];
AIFComponentContext[] whereReferenced;
try {
whereReferenced = form.whereReferenced();
for (int j = 0; j < whereReferenced.length; j++) {
String type = whereReferenced[j].getComponent().getType();
System.out.println("type======================="+type);
if(type.equals("LD6_CNRevision")) {
revFormMap.put((TCComponentItemRevision)whereReferenced[j].getComponent(),form);
}
}
} catch (TCException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
System.out.println("revFormMap======================"+revFormMap.size());
if (revFormMap.size() <= 0) {
MessageBox.post("未查到数据,无法导出!", "提示", 2);
return;
} else {
// 导出数据的逻辑
File model_file = null;
File output_file = null;
InputStream input;
String targetPath = null;
try {
TCComponentDataset excel = (TCComponentDataset) session
.stringToComponent(LD6_ECForm_ModelUid[0]);
model_file = ((TCComponentDataset) excel).getTcFiles()[0].getFmsFile();
String date = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());
String fileName = "EC绩效查询表_" + date + ".xlsx";
// 定义源文件路径
Path sourcePath = Paths.get(model_file.getPath()); // 替换为你的源文件路径
// 定义目标文件路径
targetPath = pathJTextFieldStr + "\\" + fileName;
ArrayList<FormBean> beanList = new ArrayList<FormBean>();
// 获取查询出来的数据
//
// TCComponent form = (TCComponent)app.getTargetComponent();
// ArrayList<FormBean> beanList = new ArrayList<FormBean>();
// KUtil.getModelVale(map,form,null,propNames);
// for (Entry<String, ArrayList<String>> entry : map.entrySet()) {
// ArrayList<String> arrayList = entry.getValue();
// FormBean bean = new FormBean(arrayList);
// beanList.add(bean);
// }
//
// 获取文件夹的引用
input = new FileInputStream(model_file);
XSSFWorkbook wb = new XSSFWorkbook(input);// (
XSSFSheet sheet = wb.getSheetAt(0);
int row = 2;
int count = 1;
for (Entry<TCComponentItemRevision, TCComponentForm> tempMap : revFormMap.entrySet()) {
TCComponentItemRevision key = tempMap.getKey();
TCComponentForm value = tempMap.getValue();
LinkedHashMap<String, ArrayList<String>> map = new LinkedHashMap<String, ArrayList<String>>();
KUtil.getModelVale(map, value, null, propNames);
String itemId = key.getStringProperty("item_id");
System.out.println("itemId====================="+itemId);
String ids = "";
String prId = "";
TCComponent[] relatedComponents = key.getRelatedComponents("CMImplements");
for (int i = 0; i < relatedComponents.length; i++) {
if(relatedComponents[i].getType().equals("LD6_CRRevision")) {
ids += relatedComponents[i].getStringProperty("item_id")+";";
}
if(relatedComponents[i].getType().equals("LD6_PRRevision")) {
prId = relatedComponents[i].getStringProperty("item_id");
}
}
String ld6_clientPartNum = key.getStringProperty("ld6_clientPartNum");
String ld6_partName = key.getStringProperty("ld6_partName");
String ld6_clientName = key.getStringProperty("ld6_clientName");
for (Entry<String, ArrayList<String>> entry : map.entrySet()) {
ArrayList<String> arrayList = entry.getValue();
FormBean formBean = new FormBean(arrayList);
boolean isOk = true;
for (int i = 0; i < tmList.size(); i++) {
if(tmList.get(i).equals("分派人")) {
String ld6_ChangePerson = formBean.getLd6_ChangePerson();
String z = zList.get(i);
if(z.contains("*")) {
z = z.replace("*", "");
}
if(!ld6_ChangePerson.contains(z)) {
isOk = false;
}
}
if(tmList.get(i).equals("处理人")) {
String clrString = formBean.getLd6_RWPerson();
String z = zList.get(i);
if(z.contains("*")) {
z = z.replace("*", "");
}
if(!clrString.contains(z)) {
isOk = false;
}
}
if(tmList.get(i).equals("任务分派时间晚于")) {
String rwfpString = formBean.getLd6_RWfptime();
String z = zList.get(i);
System.out.println("rwfpString=================="+rwfpString);
System.out.println("z=========================="+z);
if(rwfpString == null || z == null || rwfpString.isEmpty() || z.isEmpty()) {
isOk = false;
}else {
System.out.println("isDateTimeGreaterThan(rwfpString,z)====="+isDateTimeGreaterThan(rwfpString,z));
if(!isDateTimeGreaterThan(rwfpString,z)) {
isOk = false;
}
}
}
if(tmList.get(i).equals("任务分派时间早于")) {
String rwfpString = formBean.getLd6_RWfptime();
String z = zList.get(i);
if(rwfpString == null || z == null || rwfpString.isEmpty() || z.isEmpty()) {
isOk = false;
}else {
if(isDateTimeGreaterThan(rwfpString,z)) {
isOk = false;
}
}
}
if(tmList.get(i).equals("实际完成时间晚于")) {
String rwsjString = formBean.getLd6_RWsjtime();
String z = zList.get(i);
if(rwsjString == null || z == null || rwsjString.isEmpty() || z.isEmpty()) {
isOk = false;
}else {
if(!isDateTimeGreaterThan(rwsjString,z)) {
isOk = false;
}
}
}
if(tmList.get(i).equals("实际完成时间早于")) {
String rwsjString = formBean.getLd6_RWsjtime();
String z = zList.get(i);
if(rwsjString == null || z == null || rwsjString.isEmpty() || z.isEmpty()) {
isOk = false;
}else {
if(isDateTimeGreaterThan(rwsjString,z)) {
isOk = false;
}
}
}
}
String ld6_YNChange = formBean.getLd6_YNChange();
if(ld6_YNChange == null || !ld6_YNChange.equals("是")) {
isOk = false;
}
if(isOk) {
XSSFRow titleRow = sheet.getRow(row);
if (titleRow == null) {
// 处理空行的情况,比如插入一行或者给出提示
titleRow = sheet.createRow(row);
}
setCellValue(titleRow, 0, count+"", sheet, row);
setCellValue(titleRow, 1, itemId, sheet, row);
setCellValue(titleRow, 2, ids, sheet, row);
setCellValue(titleRow, 3, prId, sheet, row);
setCellValue(titleRow, 4, ld6_clientPartNum, sheet, row);
setCellValue(titleRow, 5, ld6_partName, sheet, row);
setCellValue(titleRow, 6, ld6_clientName, sheet, row);
setCellValue(titleRow, 7, formBean.getLd6_ChangeTaskName(), sheet, row);
setCellValue(titleRow, 8, formBean.getLd6_ChangePerson(), sheet, row);// 难易程度
setCellValue(titleRow, 9, formBean.getLd6_RWms(), sheet, row);
setCellValue(titleRow, 10, formBean.getLd6_RWPerson(), sheet, row);
setCellValue(titleRow, 11, "", sheet, row);
setCellValue(titleRow, 12, "EC", sheet, row);
setCellValue(titleRow, 13, formBean.getLd6_RWnycd(), sheet, row);
setCellValue(titleRow, 14, formBean.getLd6_RWjjcd(), sheet, row);
setCellValue(titleRow, 15, formBean.getLd6_RWworkhour(), sheet, row);
setCellValue(titleRow, 16, formBean.getLd6_RWsjworkhour(), sheet, row);// 超时扣分
String ld6_RWfptime = formBean.getLd6_RWfptime();
LocalDate parseFp = null;
if(ld6_RWfptime != null && !ld6_RWfptime.isEmpty()) {
parseFp = parseToLocalDate(ld6_RWfptime);
// 获取年份
int year = parseFp.getYear();
int month = parseFp.getMonthValue();
WeekFields weekFields = WeekFields.of(Locale.getDefault());
int weekOfYear = parseFp.get(weekFields.weekOfWeekBasedYear());
setCellValue(titleRow, 17, ld6_RWfptime, sheet, row);
setCellValue(titleRow, 18, year+"", sheet, row);// 交付物对象
setCellValue(titleRow, 19, month+"", sheet, row);
setCellValue(titleRow, 20, weekOfYear+"", sheet, row);
}else {
setCellValue(titleRow, 17, "", sheet, row);
setCellValue(titleRow, 18, "", sheet, row);// 交付物对象
setCellValue(titleRow, 19, "", sheet, row);
setCellValue(titleRow, 20, "", sheet, row);
}
String ld6_RWyqtime = formBean.getLd6_RWyqtime();
LocalDate parseYq = null;
if(ld6_RWyqtime != null && !ld6_RWyqtime.isEmpty()) {
parseYq = parseToLocalDate(ld6_RWyqtime);
// 获取年份
int year = parseYq.getYear();
int month = parseYq.getMonthValue();
WeekFields weekFields = WeekFields.of(Locale.getDefault());
int weekOfYear = parseYq.get(weekFields.weekOfWeekBasedYear());
setCellValue(titleRow, 21, ld6_RWyqtime, sheet, row);
setCellValue(titleRow, 22, year+"", sheet, row);
setCellValue(titleRow, 23, month+"", sheet, row);
setCellValue(titleRow, 24, weekOfYear+"", sheet, row);
}else {
setCellValue(titleRow, 21, "", sheet, row);
setCellValue(titleRow, 22, "", sheet, row);
setCellValue(titleRow, 23, "", sheet, row);
setCellValue(titleRow, 24, "", sheet, row);
}
String ld6_RWsjtime = formBean.getLd6_RWsjtime();
LocalDate parseSj = null;
if(ld6_RWsjtime != null && !ld6_RWsjtime.isEmpty()) {
parseSj = parseToLocalDate(ld6_RWsjtime);
// 获取年份
int year = parseSj.getYear();
int month = parseSj.getMonthValue();
WeekFields weekFields = WeekFields.of(Locale.getDefault());
int weekOfYear = parseSj.get(weekFields.weekOfWeekBasedYear());
setCellValue(titleRow, 25, ld6_RWsjtime, sheet, row);
setCellValue(titleRow, 26, year+"", sheet, row);
setCellValue(titleRow, 27, month+"", sheet, row);
setCellValue(titleRow, 28, weekOfYear+"", sheet, row);
}else {
setCellValue(titleRow, 25, "", sheet, row);
setCellValue(titleRow, 26, "", sheet, row);
setCellValue(titleRow, 27, "", sheet, row);
setCellValue(titleRow, 28, "", sheet, row);
}
setCellValue(titleRow, 29, formBean.getLd6_Changestate(), sheet, row);// 难易程度
// 计算两个日期之间的天数差
//
// if (titleRow == null) {
// // 处理空行的情况,比如插入一行或者给出提示
// titleRow = sheet.createRow(row);
// }
// XSSFCell cell = titleRow.getCell(30);
// if(cell == null) {
// cell = titleRow.createCell(30);
// }
int rowIndex = 1;
// cell.setCellFormula(
// "-D" + rowIndex + "-I" + rowIndex + "+M" + rowIndex + "-Q" + rowIndex + "-U" + rowIndex
// + "+Y" + rowIndex);
int a = row+1;
// cell.setCellFormula("IF(Z" + a + "=\"\", \"/\", CHOOSE(MATCH(Z" + a + "-V" + a + ", {-100,1,2,3,100}, 1), \"未超时\", \"一般\", \"严重\", \"超严重\"))");
String formula = "IF(Z" + a + "=\"\", \"/\", " +
"IF(Z" + a + "-V" + a + " < -100, \"未超时\", " +
"IF(Z" + a + "-V" + a + " < 1, \"一般\", " +
"IF(Z" + a + "-V" + a + " < 2, \"严重\", " +
"IF(Z" + a + "-V" + a + " < 3, \"超严重\", \"未知\")))))";
//cell.setCellFormula(formula);
// FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
// CellValue cellValue = evaluator.evaluate(cell);
//
// String cskfStr = getCellValue(cell);
// System.out.println("cskfStr======================="+cskfStr);
//
// 评估公式并获取结果
// FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
//
// // 方法一:直接评估单元格并更新其值
//// evaluator.evaluateFormulaCell(cell);
// String result;
// if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
// result = cell.getStringCellValue();
// } else {
// // 处理其他类型或错误
// result = "未知类型";
// }
//
//
// System.out.println("计算结果1==================: " + result);
//
//
// // 方法二获取CellValue对象处理推荐
// CellValue cellValue = evaluator.evaluate(cell);
// System.out.println("cellValue.getCellType()======"+cellValue.getCellType());
// switch (cellValue.getCellType()) {
// case Cell.CELL_TYPE_STRING:
// result = cellValue.getStringValue();
// break;
// case Cell.CELL_TYPE_NUMERIC:
// result = String.valueOf(cellValue.getNumberValue());
// break;
// case Cell.CELL_TYPE_BOOLEAN:
// result = String.valueOf(cellValue.getBooleanValue());
// break;
// case Cell.CELL_TYPE_ERROR:
// result = "公式错误";
// break;
// default:
// result = "未知类型";
// }
//System.out.println("计算结果2==================: " + result);
String result = "";
if(parseYq == null || parseSj == null) {
setCellValue(titleRow, 30, "/", sheet, row);
}else {
long daysBetween = ChronoUnit.DAYS.between(parseYq, parseSj);
System.out.println("daysBetween=================="+daysBetween);
// 调用方法
result = checkInterval(cskfPMap, daysBetween);
System.out.println("result==================="+result);
setCellValue(titleRow, 30, result == null ? "" : result, sheet, row);
}
setCellValue(titleRow, 31, formBean.getLd6_ChangeRemarks(), sheet, row);
setCellValue(titleRow, 32, formBean.getLd6_CLRPerson(), sheet, row);
setCellValue(titleRow, 33, formBean.getLd6_SHPerson(), sheet, row);
setCellValue(titleRow, 34, formBean.getLd6_PZPerson(), sheet, row);
// 计算得分
Double score = null;
String ggrwxStr = formBean.getLd6_ChangeTaskName();
String nycdStr = formBean.getLd6_RWnycd();
String jjcdStr = formBean.getLd6_RWjjcd();
if (ggrwxStr != null && nycdStr != null && jjcdStr != null && result!= null && !ggrwxStr.isEmpty() && !nycdStr.isEmpty() && !jjcdStr.isEmpty() && !result.isEmpty()) {
try {
score = ggrwxMap.get(ggrwxStr) * rwxzMap.get("EC") * nycdMap.get(nycdStr) * jjcdMap.get(jjcdStr) * cskfMap.get(result);
setCellValue(titleRow, 35, score == null ? "" : score + "", sheet, row);// 得分
} catch (Exception e2) {
// TODO: handle exception
setCellValue(titleRow, 35, "", sheet, row);// 得分
}
} else{
setCellValue(titleRow, 35, "", sheet, row);// 得分
}
row++;
count++;
}
}
}
// // 调整列宽
// for (int i = 0; i <= lists.size(); i++) { // A-N列
// sheet.autoSizeColumn(i);
// }
// 写入输出文件
try (FileOutputStream outputStream = new FileOutputStream(new File(targetPath))) {
wb.write(outputStream);
} catch (FileNotFoundException e1) {
System.err.println("目标文件未找到: " + targetPath);
e1.printStackTrace();
} catch (IOException e2) {
System.err.println("写入文件时发生错误: " + targetPath);
e2.printStackTrace();
}
this.dispose();
MessageBox.post("导出完成!", "提示", 2);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
} 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);
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("4.2.left.center", fprField);
topPanel.add("4.3.left.center", new JLabel(" 处理人:"));
topPanel.add("4.4.left.center", clrField);
topPanel.add("5.1.left.center", new JLabel(" 任务分派时间晚于:"));
topPanel.add("5.2.left.center", startButton);
topPanel.add("5.3.left.center", new JLabel(" 任务分派时间早于:"));
topPanel.add("5.4.left.center", endButton);
topPanel.add("6.1.left.center", new JLabel(" 实际完成时间晚于:"));
topPanel.add("6.2.left.center", startButtonSJWC);
topPanel.add("6.3.left.center", new JLabel(" 实际完成时间早于:"));
topPanel.add("6.4.left.center", endButtonSJWC);
topPanel.add("7.1.left.center", new JLabel(""));
topPanel.add("8.1.left.center", new JLabel(" 保存路径:"));
topPanel.add("8.2.left.center", pathJTextField);
topPanel.add("8.3.left.center", choosetButton);
// 注册输出按钮的点击事件监听器
choosetButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 创建文件选择器
JFileChooser fileChooser = new JFileChooser();
// 设置文件选择器只能选择文件夹
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int result = fileChooser.showOpenDialog(topPanel);
if (result == JFileChooser.APPROVE_OPTION) {
// 获取用户选择的路径
String selectedPath = fileChooser.getSelectedFile().getPath();
// 输出用户选择的路径
System.out.println("用户选择的路径:" + selectedPath);
pathJTextField.setText(selectedPath);
}
}
});
return topPanel;
}
public static void setCellValue(XSSFRow row, int colum, String str, XSSFSheet sheet, int rowNum) {
XSSFCell cell = row.getCell(colum);
if (cell == null) {
cell = row.createCell(colum);
}
cell.setCellValue(str);
}
public static LocalDate parseToLocalDate(String dateString) {
// 定义所有可能的日期格式
List<String> formats = new ArrayList<>();
formats.add("yyyy-M-d"); // e.g., 2024-3-31
formats.add("yyyy-M-dd"); // e.g., 2024-3-04
formats.add("yyyy-M-d HH:mm"); // e.g., 2024-3-24 12:11
formats.add("yyyy-MM-d HH:mm"); // e.g., 2024-11-03 00:00
for (String format : formats) {
try {
// 尝试将字符串解析为 LocalDateTime
LocalDateTime localDateTime = LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern(format));
// 转换为 LocalDate
return localDateTime.toLocalDate();
} catch (DateTimeParseException e) {
// 如果解析失败,继续尝试下一个格式
}
try {
// 尝试直接解析为 LocalDate适用于不含时间的部分格式
return LocalDate.parse(dateString, DateTimeFormatter.ofPattern(format));
} catch (DateTimeParseException e) {
// 如果解析失败,继续尝试下一个格式
}
}
throw new IllegalArgumentException("No valid date format found for: " + dateString);
}
public String getCellValue(Cell cell) {
if(cell == null) {
return "";
}else {
int cellType = cell.getCellType();
System.out.println("cellType========"+cellType);
if(cellType == 1) {//string
return cell.getStringCellValue();
}else if(cellType == 3 || cellType == 0) {//num
double numericCellValue = cell.getNumericCellValue();
if(numericCellValue == 0.0) {
return ""; }
return cell.getNumericCellValue()+"";
}
}
return "";
}
public static String checkInterval(LinkedHashMap<String, String> intervalMap, long number) {
for (Entry<String, String> entry : intervalMap.entrySet()) {
String interval = entry.getValue();
if (isNumberInInterval(number, interval)) {
return entry.getKey();
}
}
return null; // 如果没有匹配的区间,返回 null
}
private static boolean isNumberInInterval(long number, String interval) {
// 去除空格
interval = interval.replaceAll("\\s", "");
// 解析区间的左右边界和开闭状态
char leftBracket = interval.charAt(0);
char rightBracket = interval.charAt(interval.length() - 1);
String[] parts = interval.substring(1, interval.length() - 1).split(",");
long lowerBound = Long.parseLong(parts[0]);
long upperBound = Long.parseLong(parts[1]);
// 判断数字是否在区间内
boolean isLowerBoundValid = (leftBracket == '[') ? number >= lowerBound : number > lowerBound;
boolean isUpperBoundValid = (rightBracket == ']') ? number <= upperBound : number < upperBound;
return isLowerBoundValid && isUpperBoundValid;
}
public static boolean isDateTimeGreaterThan(String dateTime1, String dateTime2) {
// 定义日期时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-d H:mm");
// 将字符串解析为 LocalDateTime 对象
LocalDateTime parsedDateTime1 = LocalDateTime.parse(dateTime1, formatter);
LocalDateTime parsedDateTime2 = LocalDateTime.parse(dateTime2, formatter);
// 比较两个日期时间
return parsedDateTime1.isAfter(parsedDateTime2);
}
}

@ -0,0 +1,53 @@
package com.net.connor.ld.plm.ld05;
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.TCComponentSchedule;
import com.teamcenter.rac.kernel.TCComponentScheduleTask;
import com.teamcenter.rac.kernel.TCException;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
public class ECSelectHandler 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() {
InterfaceAIFComponent targetComponent = app.getTargetComponent();
try {
new ECSelectDialog(session,app);
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
}
}

@ -2,19 +2,22 @@ package com.net.connor.ld.plm.ld05;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Locale;
public interface FormModel {
// String[] header = {"序号","更改任务项","更改任务内容","是否需要更改","更改责任人","更改完成状态","备注"};
// String[] propNames = new String[]
// {"ld6_SeqNum","ld6_ChangeTaskName" ,"ld6_Task","ld6_YNChange","ld6_ChangePerson","ld6_Changestate","ld6_ChangeRemarks"};
String[] propNames = new String[] { "ld6_SeqNum", "ld6_ChangeTaskName", "ld6_Task", "ld6_YNChange",
"ld6_ChangePerson", "ld6_taskRequireDesc", "ld6_handlePerson", "ld6_Changestate", "ld6_RequireFinshTime",
"ld6_ActualFinishTime", "ld6_ChangeRemarks" };
String[] propNames = new String[] { "ld6_SeqNum", "ld6_ChangeTaskName", "ld6_Task","ld6_YNChange", "ld6_ChangePerson","ld6_taskRequireDesc","ld6_handlePerson",
"ld6_CLRPerson","ld6_SHPerson", "ld6_PZPerson","ld6_RWnycd", "ld6_RWjjcd","ld6_RWworkhour","ld6_RWsjworkhour","ld6_AssignDate",
"ld6_RequireFinshTime", "ld6_ActualFinishTime","ld6_Changestate","ld6_ChangeRemarks" };
String[] header = new String[] { "序号", "更改任务项", "更改任务内容", "是否需要更改",
"分派人", "任务要求描述", "处理人", "更改完成状态", "要求完成时间",
"实际完成时间", "备注" };
String[] header = new String[] { "序号", "更改任务项", "更改任务内容","是否需要更改", "分派人",
"任务要求描述", "处理人", "处理人账号","审核人账号","批准人账号","难易程度",
"紧急程度","额定业务工时/小时","实际业务工时/小时","任务分派时间","要求完成时间",
"实际完成时间","更改完成状态", "备注" };
int SEQ_NUM_INDEX = 0;
int CHANGE_TASK_NAME_INDEX = 1;
@ -23,10 +26,16 @@ public interface FormModel {
int CHANGE_PERSON_INDEX = 4;
int TASK_REQUIRE_DESC_INDEX = 5;
int HANDLE_PERSON_INDEX = 6;
int CHANGE_STATE_INDEX = 7;
int REQUIRE_FINISH_TIME_INDEX = 8;
int ACTUAL_FINISH_TIME_INDEX = 9;
int CHANGE_REMARKS_INDEX = 10;
int CHANGE_STATE_INDEX = 17;
int ld6_RWfptime_index = 14;
int REQUIRE_FINISH_TIME_INDEX = 15;
int ACTUAL_FINISH_TIME_INDEX = 16;
int CHANGE_REMARKS_INDEX = 18;
int CLRZH_PERSON_INDEX = 7;
int SHRZH_PERSON_INDEX = 8;
int PZRZH_PERSON_INDEX = 9;
int NYCD_INDEX = 10;
int JJCD_INDEX = 11;
String ynChangeLovName = "LD6_YN_DLOV";
String changeStateLovName = "LD6_Changestate_DLOV";
@ -38,4 +47,7 @@ public interface FormModel {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
DateFormat cst = new SimpleDateFormat("EEE MMM dd HH:mm:ss 'CST' yyyy", Locale.US);
SimpleDateFormat gmt = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy",Locale.US);
}

@ -0,0 +1,42 @@
package com.net.connor.ld.plm.ld05;
import javax.swing.*;
import javax.swing.table.TableCellEditor;
import java.awt.*;
import java.awt.event.*;
class MultiLineCellEditor extends AbstractCellEditor implements TableCellEditor {
private JTextArea textArea;
private JScrollPane scrollPane;
public MultiLineCellEditor() {
textArea = new JTextArea();
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
scrollPane = new JScrollPane(textArea);
scrollPane.setBorder(BorderFactory.createEmptyBorder());
// Enter 键结束编辑Shift+Enter 换行)
textArea.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER && !e.isShiftDown()) {
stopCellEditing();
}
}
});
}
@Override
public Component getTableCellEditorComponent(
JTable table, Object value,
boolean isSelected, int row, int column
) {
textArea.setText(value == null ? "" : value.toString());
return scrollPane;
}
@Override
public Object getCellEditorValue() {
return textArea.getText(); // 确保返回最新值
}
}

@ -0,0 +1,46 @@
package com.net.connor.ld.plm.ld05;
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import java.awt.*;
class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
public MultiLineCellRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
setOpaque(true); // 必须设置为不透明,否则背景色无效
setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
}
@Override
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column
) {
// 设置文本
setText(value == null ? "" : value.toString());
// 动态计算行高
int width = table.getColumnModel().getColumn(column).getWidth();
setSize(width, Short.MAX_VALUE);
int preferredHeight = getPreferredSize().height;
// 更新行高(仅当需要时)
if (table.getRowHeight(row) < preferredHeight) {
table.setRowHeight(row, preferredHeight);
}
// 设置选中样式
if (isSelected) {
setBackground(table.getSelectionBackground());
setForeground(table.getSelectionForeground());
} else {
setBackground(table.getBackground());
setForeground(table.getForeground());
}
return this; // 返回自身JTextArea
}
}

@ -0,0 +1,45 @@
/** * @Title: test1.java
* @Package com.net.connor.ld.plm.ld05
* @Description: TODO()
* @author admin * @date 2024814
* @version V1.0
*/
package com.net.connor.ld.plm.ld05;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
/**
* @ClassName: test1
* @Description: TODO()
* @author admin
* @date 2024814
*
*/
public class test1 {
public static void main(String[] args) {
String dateString = "Sat Aug 03 00:00:00 GMT+08:00 2024";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy",Locale.US);
TimeZone tz = TimeZone.getTimeZone("GMT+8");
sdf.setTimeZone(tz);
Date s = null;
String da = null;
Date strToDate = null;
try {
s = sdf.parse(dateString);
System.out.println(s); // Sun Oct 22 00:00:00 CST 2017
sdf = new SimpleDateFormat("yyyy-MM-dd");
da = sdf.format(s);
System.out.println(da); // 2017-10-22
strToDate = sdf.parse(da);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

@ -154,6 +154,7 @@ public class ChangePartDialog extends AbstractAIFDialog {
status = 0;
}
new DerivedChangeRequestDialog(app, beanList, newType, tarRev, needList, status,"");
disposeDialog();
}

@ -119,6 +119,11 @@ public class DerivedChangeRequestDialog extends AbstractAIFDialog implements Act
ControlBean bean = beanList.get(i);
beanMap.put(bean.getPropRelName(), bean);
String labelValue = bean.getPropName();
Boolean filg = false;
System.out.println("属性名称:"+labelValue);
if("零件号".equals(labelValue)) {
filg = true;
}
if (bean.isIfMust()) {
labelValue = bean.getPropName() + "(±ØÌî)";
}
@ -145,6 +150,20 @@ public class DerivedChangeRequestDialog extends AbstractAIFDialog implements Act
} else {
JTextField field = new JTextField(bean.getDefaultValue());
field.setName(bean.getPropRelName());
if(filg) {
try {
if(partList != null && partList.size()>0) {
field.setText(partList.get(0).getStringProperty("ld6_clientPartNum"));
}else {
field.setText("");
}
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
field.setPreferredSize(new Dimension(350, 25));
centerPanel.add(row + ".3.center", field);
}
@ -215,6 +234,9 @@ public class DerivedChangeRequestDialog extends AbstractAIFDialog implements Act
return;
} else {
if(flag) {
rev.setStringProperty("ld6_clientName", part.getStringProperty("ld6_clientName"));
rev.setStringProperty("ld6_partName", part.getStringProperty("object_name"));
}
@ -428,6 +450,10 @@ public class DerivedChangeRequestDialog extends AbstractAIFDialog implements Act
if (re2 != null && re2.length > 0) {
latestItemRevision.add("CMReferences", re2);
}
TCComponent[] re5 = tarRev.getRelatedComponents("CMHasSolutionItem");
if (re5 != null && re5.length > 0) {
latestItemRevision.add("CMHasSolutionItem", re5);
}
String type = tarRev.getType();
if (!"LD6_PRRevision".equals(type)) {
TCComponent[] re3 = tarRev.getRelatedComponents("LD6_WorkFRelation");
@ -587,14 +613,20 @@ public class DerivedChangeRequestDialog extends AbstractAIFDialog implements Act
} catch (TCException e) {
}
latestItemRevision.setRelated("LD6_WorkFRelation", newforms);
//6ÔÂ18¸Ä
String ECRID = tarRev.getStringProperty("item_id");
String stringProperty2 = newItem.getStringProperty("object_name");
newItem.setStringProperty("object_name", ECRID+stringProperty2);
latestItemRevision.setStringProperty("object_name", ECRID+stringProperty2);
}
//6月18改
String ECRID = tarRev.getStringProperty("item_id");
String stringProperty2 = newItem.getStringProperty("object_name");
newItem.setStringProperty("object_name", ECRID+stringProperty2);
latestItemRevision.setStringProperty("object_name", ECRID+stringProperty2);
return latestItemRevision;
}
//6月18改
String ECRID = tarRev.getStringProperty("item_id");
String stringProperty2 = newItem.getStringProperty("object_name");
newItem.setStringProperty("object_name", ECRID+stringProperty2);
latestItemRevision.setStringProperty("object_name", ECRID+stringProperty2);
return latestItemRevision;
}

@ -482,7 +482,7 @@ public class NewJFrame extends JFrame {
return (TCComponentFolder)createdObject;
}
return null;
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) throws TCException, ServiceException, PartInitException {
// TODO add your handling code here:

Loading…
Cancel
Save