装箱集成增加特殊数据逻辑和飞书通知

pull/11/head
李建辉 1 year ago
parent b8f1a6ce74
commit 95425d0717

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>chint_wuhan</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
</natures>
</projectDescription>

@ -0,0 +1,4 @@
/com/
/mes/
/nc/
/plm/

@ -0,0 +1,260 @@
package com.connor.chint.yunpi.command;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
//import com.connor.chint.sap2.sap.SAPPushBOMBean;
//import com.connor.chint.sap2.sap_by.SAPZZDialogController;
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCException;
public class ZxjcBean extends SAPPushBOMBean {
public static final String TYPE_FACTNO = "ZT2_FactoryNo";
public static final String REL_PART_FACTNO = "ZT2_FactoryNumber";
private int index;
public TCComponentItemRevision part;
public TCComponentItem factoryNo;
public TCComponentItemRevision zzDesignRev = null;
public TCComponent[] factoryNos;
public String materialNo;
//出厂编号
public String ccbh;
public String getCcbh() {
return ccbh;
}
public void setCcbh(String ccbh) {
this.ccbh = ccbh;
}
public TCComponentItemRevision getZzDesignRev() {
return zzDesignRev;
}
public void setZzDesignRev(TCComponentItemRevision zzDesignRev) {
this.zzDesignRev = zzDesignRev;
}
public String getMaterialNo() {
return materialNo;
}
public void setMaterialNo(String materialNo) {
this.materialNo = materialNo;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public ZxjcBean(TCComponentItemRevision part, int index) {
this.index = index;
this.part = part;
try {
getZZDesign(this.part);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public ZxjcBean(TCComponentItemRevision part, int index,String dy) {
this.index = index;
this.part = part;
// try {
// getZZDesign(this.part);
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
}
private TCComponentItemRevision getZZDesign(TCComponentItemRevision part) throws Exception {
try {
TCComponent[] facts = part.getRelatedComponents(REL_PART_FACTNO);
int len = facts.length;
for (int i = 0; i < len; i++) {
String type = facts[i].getType();
System.out.println(">> 找到子对象:" + facts[i] + "|" + type);
if (TYPE_FACTNO.equals(type)) {
// factNo = facts[i].getStringProperty("item_id");//出厂编码
this.factoryNo = (TCComponentItem) facts[i];
AIFComponentContext contexts[] = factoryNo.whereReferencedByTypeRelation(
new String[] { "ZT2_Design3DRevision" }, new String[] { "ZT2_FactoryNumber" });
Map<TCComponentItem, List<TCComponentItemRevision>> items2 = new HashMap<TCComponentItem, List<TCComponentItemRevision>>(
10);
for (int j = 0; j < contexts.length; j++) {
String type2 = contexts[j].getComponent().getType();
String name = contexts[j].getComponent().getProperty("object_name");
System.out.println(contexts[j] + "->type:" + type2);
// if (name.contains("总装")) { // || name.contains("变压器")
TCComponentItemRevision pRev = (TCComponentItemRevision) contexts[j].getComponent();
TCComponentItem item = pRev.getItem();
if (items2.containsKey(item)) {
items2.get(item).add(pRev);
} else {
List<TCComponentItemRevision> revs = new ArrayList<TCComponentItemRevision>();
revs.add(pRev);
items2.put(item, revs);
}
/*
* zzDesignRev =(TCComponentItemRevision) contexts[j].getComponent();
* if(isLastRev(zzDesignRev)) { //zztydh =
* contexts[j].getComponent().getProperty("item_id"); break; } zzDesignRev=null;
*/
// }
}
if (items2.size() > 0) {
List<TCComponentItemRevision> cZZRevs = new ArrayList<TCComponentItemRevision>();
addLastRevisions(items2, cZZRevs);
if (cZZRevs.size() > 0) {
zzDesignRev = cZZRevs.get(0);
}
}
break;
}
}
} catch (TCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
private void addLastRevisions(Map<TCComponentItem, List<TCComponentItemRevision>> items,
List<TCComponentItemRevision> cParts) throws TCException {
Iterator<Entry<TCComponentItem, List<TCComponentItemRevision>>> iterator = items.entrySet().iterator();
while (iterator.hasNext()) {
Entry<TCComponentItem, List<TCComponentItemRevision>> it = iterator.next();
List<TCComponentItemRevision> revs = it.getValue();
// System.out.println("item["+it.getKey()+"]已发布版本个数:"+revs.size());
if (revs.size() == 1) {
cParts.add(revs.get(0));
continue;
}
if (revs.size() > 1) {
TCComponentItemRevision max_Rev = null;
String s = "";
;
int index = -1;
for (int j = 0, len2 = revs.size(); j < len2; j++) {
String item_id = revs.get(j).getProperty("item_revision_id");
if (s.isEmpty()) {
s = item_id;
max_Rev = revs.get(j);
for (int k = 0; k < s.length(); k++) {
if (s.charAt(k) >= '0' && s.charAt(k) <= '9') {
index = k;
break;
}
}
} else {
String temp = item_id;
if (index != -1) {
if (temp.substring(0, index).compareTo(s.substring(0, index)) > 0) {
s = temp;
max_Rev = revs.get(j);
} else if (temp.substring(0, index).compareTo(s.substring(0, index)) == 0) {
String s1 = s.substring(index);
String temp1 = temp.substring(index);
int min = Math.min(s1.length(), temp1.length());
for (int k = 0; k < min; k++) {
if (temp1.charAt(k) > s1.charAt(k)) {
s = temp;
max_Rev = revs.get(j);
break;
}
}
if (temp1.length() > min) {
s = temp;
max_Rev = revs.get(j);
}
}
} else if (temp.compareTo(s) > 0) {
s = temp;
max_Rev = revs.get(j);
}
}
}
cParts.add(max_Rev);
}
}
}
public Object[] getRowDataZxjc() throws Exception {
String name = part.getStringProperty("object_name");
TCComponent[] facts = part.getRelatedComponents(REL_PART_FACTNO);
int len = facts == null ? 0 : facts.length;
System.out.println("获取出厂编号:" + part);
String factNo = "";
for (int i = 0; i < len; i++) {
String type = facts[i].getType();
System.out.println(">> 找到子对象:" + facts[i] + "|" + type);
factoryNos = facts;
if (TYPE_FACTNO.equals(type)) {
factNo = facts[i].getStringProperty("item_id");
this.factoryNo = (TCComponentItem) facts[i];
break;
}
}
//获取图纸id
String tzid = "";
TCComponent tzRev = part.getRelatedComponent("TC_Is_Represented_By");
if(tzRev != null) {
tzid = tzRev.getStringProperty("item_id");
}
//获取产成品数量
String zt2_Quantity = part.getStringProperty("zt2_Quantity");
String zt2_site = part.getStringProperty("zt2_Site");
String zt2_tankNo = part.getStringProperty("zt2_TankNo");
// return new Object[] {true,index,zt2_site,zt2_tankNo,name,this,factNo};
return new Object[] { true, index, zt2_site, zt2_tankNo, name, this, factNo,tzid,zt2_Quantity};
}
public Object[] getZYKGRowData() throws Exception {
String name = part.getStringProperty("object_name");
String zt2_site = part.getStringProperty("zt2_Site");
String zt2_tankNo = part.getStringProperty("zt2_TankNo");
System.out.println("->" + Arrays.toString(new Object[] { true, index, zt2_site, zt2_tankNo, name, this,
getZt2_SapBomState(), getUserName(), getZDATE() }));
return new Object[] { true, index, zt2_site, zt2_tankNo, name, this, getZt2_SapBomState(), getUserName(),
getZDATE() };
// return new Object[] {true,index,zt2_site,zt2_tankNo,name,this};
}
@Override
public String toString() {
try {
return part == null ? "" : part.getStringProperty("zt2_MaterialNo");
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public TCComponentItemRevision getPart() {
return part;
}
public void setPart(TCComponentItemRevision part) {
this.part = part;
}
}

@ -0,0 +1,154 @@
package com.connor.chint.yunpi.command;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.regex.Pattern;
import javax.swing.AbstractCellEditor;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;
import javax.swing.text.JTextComponent;
import com.connor.chint.sap2.util.KUtil;
import com.connor.chint.sap2.util.POIUtil;
import com.connor.chint.sap2.util.ProgressBar;
import com.teamcenter.rac.util.MessageBox;
public class ZxjcCellEditor extends AbstractCellEditor implements TableCellEditor {
private static final long serialVersionUID = -5118171189856914639L;
private JTable t_part;
private JTextComponent jtf;
private ZxjcFram dialog;
public ZxjcCellEditor(ZxjcFram dialog) {
this.dialog = dialog;
}
@Override
public Object getCellEditorValue() {
jtf.selectAll();
return jtf.getText();
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
jtf = new JTextField();
t_part = table;
jtf.setText("");
final int selectRow = row;
final int col = column;
final String dh = (String) table.getValueAt(row, 2);
ProgressBar pb = new ProgressBar(dialog, new Dimension(300, 50));
try {
if (value != null) {
jtf.setText(String.valueOf(value));
jtf.selectAll();
if (column == 1) {
jtf.setEditable(false);
}
jtf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
int i = jtf.getCaretPosition();
final String text = jtf.getText();
if (code == KeyEvent.VK_LEFT) {
System.out.println("触发修改2");
if (KUtil.isEmpty(text) || i == 0) {
switch (col) {
case 2:
if (selectRow > 0) {
setTableEditting(selectRow - 1, 7);
}
break;
case 6:
Pattern pattern = Pattern.compile("[0-9]*");
if (!pattern.matcher(text).matches() || POIUtil.getIntValue(text) < 1) {
MessageBox.post(dialog, "第" + (selectRow + 1) + "行数量请输入正整数", "", 2);
} else {
setTableEditting(selectRow, 3);
}
break;
case 3:
case 7:
setTableEditting(selectRow, col - 1);
break;
}
}
} else if (code == KeyEvent.VK_RIGHT) {
// 没有文本的时候 或者光标在最右边的时候
if (KUtil.isEmpty(text) || i == text.length()) {
switch (col) {
case 3:
setTableEditting(selectRow, 6);
break;
case 7:
if (selectRow != t_part.getRowCount() - 1 && selectRow > 0) {
setTableEditting(selectRow + 1, 2);
}
break;
case 2:
setTableEditting(selectRow, col + 1);
break;
case 6:
// String value = (String) t_part.getValueAt(selectRow, col);
Pattern pattern = Pattern.compile("[0-9]*");
if (!pattern.matcher(text).matches() || POIUtil.getIntValue(text) < 1) {
MessageBox.post(dialog, "第" + (selectRow + 1) + "行数量请输入正整数", "", 2);
} else {
setTableEditting(selectRow, col + 1);
}
break;
}
}
}
}
});
}
} catch (Exception e) {
pb.disposeDialog();
e.printStackTrace();
MessageBox.post(dialog, "异常:" + e.getMessage(), "", 2);
return null;
}
return jtf;
}
public void setTableEditting(int row, int col) {
// t_part.clearSelection();
t_part.changeSelection(row, col, false, false);
t_part.editCellAt(row, col, null);
// System.out.println("第一次:"+edit_row+";"+edit_col);
Component editor = t_part.getEditorComponent();
if (editor != null) {
// editor.requestFocusInWindow();
editor.requestFocus();
Component c = editor.getComponentAt(0, 0);
if (c != null && c instanceof JTextComponent) {
JTextComponent jtc = (JTextComponent) c;
String value = jtc.getText();
if (!KUtil.isEmpty(value)) {
jtc.setCaretPosition(value.length());
}
}
}
}
}

@ -0,0 +1,18 @@
package com.connor.chint.yunpi.command;
import com.connor.chint.yunpi.KCommand;
import com.teamcenter.rac.aif.AbstractAIFApplication;
public class ZxjcCommand extends KCommand {
public ZxjcCommand(AbstractAIFApplication app, String commandId, String actionInfo) {
super(app, commandId, actionInfo);
try {
this.setRunnable(new ZxjcFram(app));
}catch(Exception e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,224 @@
package com.connor.chint.yunpi.command;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
//import com.connor.chint.sap2.sap_zy.SAPZYDialog;
import com.connor.chint.sap2.util.CheckBoxTableHeaderRenderer;
import com.connor.chint.sap2.util.KUtil;
import com.connor.chint.sap2.util.ProgressBar;
import com.connor.chint.sap2.util.SAPUtil;
import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.AbstractAIFDialog;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
/**
* ===============================================================================
* Copyright (c) 2012-2024 CONNOR Unpublished - All Rights Reserved
* ===============================================================================
* File description:
*
* ZxjcFram.java
*
* -
*
* ===============================================================================
* DATE Name Description of Change
*
* 2024-4-18 lijh modify
*
* ===============================================================================
*/
public class ZxjcFram extends AbstractAIFDialog {
/**
*
*/
private static final long serialVersionUID = 1L;
private ZxjcController controller;
// private AbstractAIFApplication app;
private TCSession session;
public ZxjcFram(AbstractAIFApplication app) {
super(false);
this.controller = new ZxjcController(this, app);
// this.app = app;
this.session = (TCSession) app.getSession();
}
private JButton b_cel;
private JButton b_qr;
protected DefaultTableModel tm_part;
protected JTable t_part;
public static final String[] HEADER = new String[] { "", "序号", "站点", "柜号", "物料名称", "物料编码", "出厂编号", "图号", "产成品数量" };
public static final int[] HEADERWIDTH = new int[] { 50, 60, 60, 60, 120, 180, 180, 100, 100 };
@Override
public void run() {
try {
// 获取组ID
controller.groupName = SAPUtil.getGroupID(session);
System.out.println("当前组:" + controller.groupName);
// dba用户不允许使用改功能
// if (KUtil.isEmpty(controller.groupName) || controller.groupName.equalsIgnoreCase("dba")) {
// MessageBox.post(this, "当前登录组不可使用该功能", "", MessageBox.INFORMATION);
// KUtil.setByPass(false);
// return;
// }
// 判断目标对象下是否存在产成品
if (!controller.checkTargets()) {
MessageBox.post(this, "没有找到产成品信息", "", MessageBox.INFORMATION);
return;
}
// controller.getSapState();
} catch (Exception e) {
KUtil.setByPass(false);
MessageBox.post(this, "检查选择对象时发生错误:" + e.getMessage(), "", MessageBox.ERROR);
e.printStackTrace();
return;
}
initUI();
try {
controller.dialog = this;
for (int i = 0; i < controller.partList.size(); i++) {
// 获取产成品数据
tm_part.addRow(controller.partList.get(i).getRowDataZxjc());
}
// 设置出厂编号列可编辑
// ZxjcCellEditor editor = new ZxjcCellEditor(ZxjcFram.this);
// t_part.getColumnModel().getColumn(6).setCellEditor(editor);
} catch (Exception e) {
MessageBox.post(this, "读取产成品信息时发生错误:" + e.getMessage(), "", MessageBox.ERROR);
e.printStackTrace();
return;
}
showDialog();
}
private void initUI() {
this.setTitle("拆卸一览表下发");
this.setPreferredSize(new Dimension(800, 400));
this.setMinimumSize(new Dimension(750, 400));
this.setLayout(new BorderLayout());
this.add(BorderLayout.CENTER, getTablePanel());
this.add(BorderLayout.SOUTH, getBtnPanel());
addListeners();
}
private void addListeners() {
b_qr.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Thread(new Runnable() {
@Override
public void run() {
try {
t_part.revalidate();
t_part.repaint();
// 组织数据传递
ProgressBar pb = new ProgressBar(ZxjcFram.this, new Dimension(300, 50));
pb.startProgress();
pb.setText("正在传递");
controller.sendZxjc();
pb.disposeDialog();
//发送成功弹窗
MessageBox.post("发送成功!","提示",2);
ZxjcFram.this.dispose();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
});
b_cel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
}
private JPanel getBtnPanel() {
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT, 30, 5));
b_cel = new JButton("取消");
b_qr = new JButton("确认");
panel.add(b_qr);
panel.add(b_cel);
return panel;
}
private JPanel getTablePanel() {
JPanel panel = new JPanel(new BorderLayout());
tm_part = new DefaultTableModel();
t_part = new JTable(tm_part) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public boolean isCellEditable(int row, int column) {
if (column == 0 || column == 6) {
return true;
}
return false;
}
@Override
public Class<?> getColumnClass(int column) { // 设置选择列(第三列)类型
if (column == 0) {
return Boolean.class;
}
return super.getColumnClass(column);
}
};
tm_part.setDataVector(null, HEADER);
t_part.getTableHeader().setReorderingAllowed(false); // 设置列不可移动,否则会发生类型转换错误(第三列)
this.t_part.setRowHeight(23);
TableColumnModel colModel = this.t_part.getColumnModel();
int colCnt = HEADERWIDTH.length;
colModel.getColumn(0).setMaxWidth(HEADERWIDTH[0]);
for (int i = 0; i < colCnt; i++) {
colModel.getColumn(i).setPreferredWidth(HEADERWIDTH[i]);
}
this.t_part.getTableHeader().setDefaultRenderer(new CheckBoxTableHeaderRenderer(t_part, 0, false));
this.t_part.getTableHeader().setBackground(Color.blue);
// 设置出厂编号可编辑
TableColumn editableColumn = t_part.getColumnModel().getColumn(6); // 获取第3列
editableColumn.setCellEditor(new DefaultCellEditor(new JTextField()));
// ZxjcCellEditor editor = new ZxjcCellEditor(ZxjcFram.this);
// t_part.getColumnModel().getColumn(6).setCellEditor(editor);
JScrollPane scroll = new JScrollPane(t_part);
panel.add(BorderLayout.CENTER, scroll);
panel.setBorder(BorderFactory.createLoweredBevelBorder());
return panel;
}
}
Loading…
Cancel
Save