|
|
@@ -0,0 +1,941 @@
|
|
|
+package com.mes.ui;
|
|
|
+
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
+import com.google.zxing.BarcodeFormat;
|
|
|
+import com.google.zxing.WriterException;
|
|
|
+import com.google.zxing.client.j2se.MatrixToImageWriter;
|
|
|
+import com.google.zxing.common.BitMatrix;
|
|
|
+import com.google.zxing.qrcode.QRCodeWriter;
|
|
|
+import com.mes.component.MesRadio;
|
|
|
+import com.mes.component.MesWebView;
|
|
|
+import com.mes.netty.NettyClient;
|
|
|
+import com.mes.util.*;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+
|
|
|
+import javax.swing.*;
|
|
|
+import javax.swing.border.EmptyBorder;
|
|
|
+import javax.swing.event.ChangeEvent;
|
|
|
+import javax.swing.event.ChangeListener;
|
|
|
+import java.awt.*;
|
|
|
+import java.awt.event.*;
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.*;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Timer;
|
|
|
+
|
|
|
+
|
|
|
+public class MesClient extends JFrame {
|
|
|
+
|
|
|
+ public static final Logger log = LoggerFactory.getLogger(MesClient.class);
|
|
|
+
|
|
|
+ public static int mes_auth = 0; // 权限级别 0=无权限 1=操作工人 2=管理员
|
|
|
+ public static boolean tcp_connect_flag = false; //TCP连接状态
|
|
|
+ public static boolean allow_connect_again = false; // 是否允许断线重连, true 表示 允许
|
|
|
+ public static String user20 = "";
|
|
|
+ public static String sessionid = "";
|
|
|
+ public static NettyClient nettyClient;
|
|
|
+
|
|
|
+ public static Boolean check_quality_result1 = false;
|
|
|
+ public static Integer work_status1 = 0;
|
|
|
+ public static Boolean check_quality_result2 = false;
|
|
|
+ public static Integer work_status2 = 0;
|
|
|
+
|
|
|
+
|
|
|
+ public static JButton finish_ok_bt_1;
|
|
|
+ public static JButton finish_ng_bt_1;
|
|
|
+ public static JTextField product_sn_1;
|
|
|
+ public static JButton f_scan_data_bt_1;
|
|
|
+ public static JButton status_menu_1;
|
|
|
+ public static JTextField pressureText_1; // 压力值显示文本框
|
|
|
+ public static JTextField leakText_1; // 压力值显示文本框
|
|
|
+
|
|
|
+ public static JButton finish_ok_bt_2;
|
|
|
+ public static JButton finish_ng_bt_2;
|
|
|
+ public static JTextField product_sn_2;
|
|
|
+ public static JButton f_scan_data_bt_2;
|
|
|
+ public static JButton status_menu_2;
|
|
|
+ public static JTextField pressureText_2; // 压力值显示文本框
|
|
|
+ public static JTextField leakText_2; // 压力值显示文本框
|
|
|
+
|
|
|
+
|
|
|
+ public static JPanel contentPane;
|
|
|
+ public static MesClient mesClientFrame;
|
|
|
+ public static JTabbedPane tabbedPane;
|
|
|
+ public static JScrollPane indexScrollPaneA;
|
|
|
+ public static JScrollPane searchScrollPane;
|
|
|
+ public static JScrollPane searchScrollPaneDj;
|
|
|
+
|
|
|
+ public static JPanel panel4;
|
|
|
+ public static JScrollPane scrollPane4;
|
|
|
+
|
|
|
+ public static JPanel panel5;
|
|
|
+ public static JScrollPane scrollPane5;
|
|
|
+
|
|
|
+ public static JButton heart_beat_menu;
|
|
|
+ public static JButton user_menu;
|
|
|
+ public static JFrame welcomeWin;
|
|
|
+ public static JPanel indexPanelB;
|
|
|
+ public static MesWebView jfxPanel = null;
|
|
|
+ public static JPanel indexPanelC;
|
|
|
+ public static MesWebView jfxPanel2 = null;
|
|
|
+ public static MesRadio mesRadioHj;
|
|
|
+ public static JTable table;
|
|
|
+ public static Object[] columnNames = {"物料名称", "绑定批次", "剩余次数", "操作"};
|
|
|
+ public static Object[][] rowData = null;
|
|
|
+
|
|
|
+ String currentSerialPort1 = Config.portName1;
|
|
|
+ String currentSerialPort2 = Config.portName2;
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ EventQueue.invokeLater(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ try {
|
|
|
+ // 显示界面
|
|
|
+ mesClientFrame = new MesClient();
|
|
|
+ mesClientFrame.setVisible(false);
|
|
|
+
|
|
|
+ JdbcUtils.getConn();
|
|
|
+
|
|
|
+ welcomeWin = new LoginFrame();
|
|
|
+ welcomeWin.setVisible(true);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 初始化TCP
|
|
|
+ public static void initTcpConnection() {
|
|
|
+ try {
|
|
|
+ if (nettyClient == null) {
|
|
|
+ nettyClient = new NettyClient();
|
|
|
+ tcp_connect_flag = false; //设置TCP连接状态
|
|
|
+ DataUtil.synrTcp(nettyClient, Config.gw_1);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("初始化TCP失败", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //启动心跳包程序
|
|
|
+ public static java.util.Timer heartBeatTimer;
|
|
|
+ public static java.util.Timer heartBeatIconTimer;
|
|
|
+ public static boolean iconREDFlag = true;
|
|
|
+
|
|
|
+ public static void startHeartBeatTimer() {
|
|
|
+ if (heartBeatTimer != null) {
|
|
|
+ heartBeatTimer.cancel();
|
|
|
+ }
|
|
|
+ heartBeatTimer = new java.util.Timer();
|
|
|
+ heartBeatTimer.schedule(new TimerTask() {
|
|
|
+ public void run() {
|
|
|
+ if (nettyClient != null && tcp_connect_flag) {
|
|
|
+ DataUtil.heartBeat(nettyClient, Config.gw_1);
|
|
|
+ heart_beat_menu.setText(DateLocalUtils.getCurrentTime());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, 100, Config.heart_beat_cycle * 1000);
|
|
|
+
|
|
|
+ //心跳显示图标
|
|
|
+ if (heartBeatIconTimer != null) {
|
|
|
+ heartBeatIconTimer.cancel();
|
|
|
+ }
|
|
|
+ heartBeatIconTimer = new Timer();
|
|
|
+ heartBeatIconTimer.schedule(new TimerTask() {
|
|
|
+ public void run() {
|
|
|
+ if (tcp_connect_flag) {
|
|
|
+ if (iconREDFlag) {
|
|
|
+ heart_beat_menu.setIcon(new ImageIcon(MesClient.class.getResource("/bg/grey_dot.png")));
|
|
|
+ iconREDFlag = false;
|
|
|
+ } else {
|
|
|
+ heart_beat_menu.setIcon(new ImageIcon(MesClient.class.getResource("/bg/green_dot.png")));
|
|
|
+ iconREDFlag = true;
|
|
|
+ }
|
|
|
+ heart_beat_menu.setText(DateLocalUtils.getCurrentTime());
|
|
|
+ heart_beat_menu.setForeground(Color.GREEN);
|
|
|
+ heart_beat_menu.repaint();
|
|
|
+ } else {
|
|
|
+ heart_beat_menu.setIcon(new ImageIcon(MesClient.class.getResource("/bg/grey_dot.png")));
|
|
|
+ heart_beat_menu.setText("Mes连接断开");
|
|
|
+ heart_beat_menu.setForeground(Color.RED);
|
|
|
+ heart_beat_menu.repaint();
|
|
|
+
|
|
|
+ //若未连接则尝试连接
|
|
|
+ if (nettyClient != null) {
|
|
|
+ //TCP重新同步连接
|
|
|
+ if (allow_connect_again) {
|
|
|
+ log.info("TCP连接已断开, 在心跳循环中, 发送同步连接请求");
|
|
|
+ allow_connect_again = false; // 只允许重新同步连接一次
|
|
|
+ DataUtil.synrTcp(nettyClient, Config.gw_1);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, 100, Config.heart_icon_cycle * 1000);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static void initWarehouseData() {
|
|
|
+ resetScanA();
|
|
|
+ resetScanB();
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void resetScanA() {
|
|
|
+ MesClient.finish_ok_bt_1.setEnabled(false);
|
|
|
+ MesClient.finish_ng_bt_1.setEnabled(false);
|
|
|
+ MesClient.f_scan_data_bt_1.setEnabled(true);
|
|
|
+// product_sn_1.setText("");
|
|
|
+// leakText_1.setText("");
|
|
|
+// pressureText_1.setText("");
|
|
|
+// MesClient.setMenuState_1("请扫工件码", 0);
|
|
|
+// WorkTimer.ateq1.resetFIFO();
|
|
|
+ work_status1 = 0;
|
|
|
+ check_quality_result1 = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void resetScanB() {
|
|
|
+ MesClient.finish_ok_bt_2.setEnabled(false);
|
|
|
+ MesClient.finish_ng_bt_2.setEnabled(false);
|
|
|
+ MesClient.f_scan_data_bt_2.setEnabled(true);
|
|
|
+// product_sn_2.setText("");
|
|
|
+// leakText_2.setText("");
|
|
|
+// pressureText_2.setText("");
|
|
|
+// MesClient.setMenuState_2("请扫工件码", 0);
|
|
|
+// WorkTimer.ateq2.resetFIFO();
|
|
|
+ work_status2 = 0;
|
|
|
+ check_quality_result2 = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static int userLoginHours;//用户登录所处小时
|
|
|
+
|
|
|
+ //换班用户信息检查
|
|
|
+ private static void shiftUserCheck() {
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ // 判断时间范围
|
|
|
+ if (userLoginHours >= 8 && userLoginHours < 20) {
|
|
|
+
|
|
|
+ int hour = now.getHour();
|
|
|
+ if (hour >= 20 || hour < 8) {
|
|
|
+ logoff();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ int hour = now.getHour();
|
|
|
+ if (hour >= 8 && hour < 20) {
|
|
|
+ logoff();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取用户20位
|
|
|
+ public static void getUser() {
|
|
|
+ user20 = user_menu.getText();
|
|
|
+ String space_tmp1 = "";
|
|
|
+ if (user20.length() < 20) {
|
|
|
+ for (int i = 0; i < 20 - user20.length(); i++) {
|
|
|
+ space_tmp1 = space_tmp1 + " ";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ user20 = user20 + space_tmp1;
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取barcode内容36位
|
|
|
+ public static String getBarcode(String barcodeTmp) {
|
|
|
+ String barcodeRet = barcodeTmp;
|
|
|
+ if (barcodeTmp.equalsIgnoreCase("")) {
|
|
|
+ return "";
|
|
|
+ } else {
|
|
|
+ if (barcodeTmp.length() < 36) {
|
|
|
+ String space = "";
|
|
|
+ for (int i = 0; i < 36 - barcodeTmp.length(); i++) {
|
|
|
+ space = space + " ";
|
|
|
+ }
|
|
|
+ barcodeRet = barcodeTmp + space;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return barcodeRet;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String getBarcode33(String barcodeTmp) {
|
|
|
+ String barcodeRet = barcodeTmp;
|
|
|
+ if (barcodeTmp.equalsIgnoreCase("")) {
|
|
|
+ return "";
|
|
|
+ } else {
|
|
|
+ if (barcodeTmp.length() < 33) {
|
|
|
+ String space = "";
|
|
|
+ for (int i = 0; i < 33 - barcodeTmp.length(); i++) {
|
|
|
+ space = space + " ";
|
|
|
+ }
|
|
|
+ barcodeRet = barcodeTmp + space;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return barcodeRet;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void scanBarcode1() {
|
|
|
+ if (work_status1 == 1) {
|
|
|
+ JOptionPane.showMessageDialog(mesClientFrame, "工作中,勿扫码", "提示窗口", JOptionPane.INFORMATION_MESSAGE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ WorkTimer.ateq1.resetFIFO();
|
|
|
+ product_sn_1.setText("");
|
|
|
+ leakText_1.setText("");
|
|
|
+ pressureText_1.setText("");
|
|
|
+ MesClient.setMenuState_1("请扫工件码", 0);
|
|
|
+ //弹窗扫工件码
|
|
|
+ String scanBarcode = JOptionPane.showInputDialog(null, "请扫工件码");
|
|
|
+ if (scanBarcode != null && !scanBarcode.equalsIgnoreCase("")) {
|
|
|
+ product_sn_1.setText(scanBarcode);
|
|
|
+ //刷新界面
|
|
|
+ mesClientFrame.repaint();
|
|
|
+
|
|
|
+ if (!tcp_connect_flag) {
|
|
|
+ JOptionPane.showMessageDialog(mesClientFrame, "设备未连接Mes服务器", "提示窗口", JOptionPane.INFORMATION_MESSAGE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询工件质量
|
|
|
+ Boolean sendret = DataUtil.checkQuality(nettyClient, scanBarcode.trim(), user20, Config.gw_1);
|
|
|
+ if (!sendret) {
|
|
|
+ JOptionPane.showMessageDialog(mesClientFrame, "消息发送失败,请重试", "提示窗口", JOptionPane.INFORMATION_MESSAGE);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ JOptionPane.showMessageDialog(mesClientFrame, "请扫工件码", "提示窗口", JOptionPane.INFORMATION_MESSAGE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void scanBarcode2() {
|
|
|
+ if (work_status2 == 1) {
|
|
|
+ JOptionPane.showMessageDialog(mesClientFrame, "工作中,勿扫码", "提示窗口", JOptionPane.INFORMATION_MESSAGE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ WorkTimer.ateq2.resetFIFO();
|
|
|
+ product_sn_2.setText("");
|
|
|
+ leakText_2.setText("");
|
|
|
+ pressureText_2.setText("");
|
|
|
+ MesClient.setMenuState_2("请扫工件码", 0);
|
|
|
+ //弹窗扫工件码
|
|
|
+ String scanBarcode = JOptionPane.showInputDialog(null, "请扫工件码");
|
|
|
+ if (scanBarcode != null && !scanBarcode.equalsIgnoreCase("")) {
|
|
|
+ product_sn_2.setText(scanBarcode);
|
|
|
+ //刷新界面
|
|
|
+ mesClientFrame.repaint();
|
|
|
+
|
|
|
+ if (!tcp_connect_flag) {
|
|
|
+ JOptionPane.showMessageDialog(mesClientFrame, "设备未连接Mes服务器", "提示窗口", JOptionPane.INFORMATION_MESSAGE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询工件质量
|
|
|
+ Boolean sendret = DataUtil.checkQuality(nettyClient, scanBarcode.trim(), user20, Config.gw_2);
|
|
|
+ if (!sendret) {
|
|
|
+ JOptionPane.showMessageDialog(mesClientFrame, "消息发送失败,请重试", "提示窗口", JOptionPane.INFORMATION_MESSAGE);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ JOptionPane.showMessageDialog(mesClientFrame, "请扫工件码", "提示窗口", JOptionPane.INFORMATION_MESSAGE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void logoff() {
|
|
|
+ mesClientFrame.setVisible(false);
|
|
|
+ welcomeWin.setVisible(true);
|
|
|
+ nettyClient = null;
|
|
|
+ tcp_connect_flag = false;
|
|
|
+ allow_connect_again = false;
|
|
|
+ mes_auth = 0;
|
|
|
+ UpdateQualityTimer.stop(); // 停止更新质量的定时任务
|
|
|
+ WorkTimer.stop();
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void createQRCode(String s) {
|
|
|
+ log.info("准备生成二维码");
|
|
|
+ if(s == null || s.isEmpty()){
|
|
|
+ log.info("生成二维码失败: 工件码为空");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ s = s.trim();
|
|
|
+ try {
|
|
|
+ BitMatrix bitMatrix = new QRCodeWriter().encode(s, BarcodeFormat.QR_CODE, 200, 200);
|
|
|
+ BufferedImage qrImage = MatrixToImageWriter.toBufferedImage(bitMatrix);
|
|
|
+
|
|
|
+ JDialog qrDialog = new JDialog(mesClientFrame, "", Dialog.ModalityType.APPLICATION_MODAL);
|
|
|
+ qrDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
|
|
|
+ qrDialog.setSize(250, 250);
|
|
|
+ qrDialog.setLocationRelativeTo(mesClientFrame);
|
|
|
+ qrDialog.setResizable(false);
|
|
|
+ JLabel qrLabel = new JLabel(new ImageIcon(qrImage));
|
|
|
+ qrDialog.getContentPane().add(qrLabel, BorderLayout.CENTER);
|
|
|
+ qrDialog.setVisible(true);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("生成二维码失败", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public MesClient() {
|
|
|
+ setIconImage(Toolkit.getDefaultToolkit().getImage(MesClient.class.getResource("/bg/logo.png")));
|
|
|
+ setTitle("MES系统客户端:OP310B/OP320 " + Config.gw_des_1);
|
|
|
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
|
+ setBounds(0, 0, 1024, 768);
|
|
|
+
|
|
|
+ JMenuBar menuBar = new JMenuBar();
|
|
|
+ menuBar.setFont(new Font("Microsoft YaHei UI", Font.PLAIN, 26));
|
|
|
+ setJMenuBar(menuBar);
|
|
|
+ JMenu fileMenu = new JMenu("用户");
|
|
|
+ fileMenu.setIcon(new ImageIcon(MesClient.class.getResource("/bg/user.png")));
|
|
|
+ fileMenu.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ menuBar.add(fileMenu);
|
|
|
+
|
|
|
+ JMenuItem exitMenuItem = new JMenuItem("退出");
|
|
|
+ exitMenuItem.setIcon(new ImageIcon(MesClient.class.getResource("/bg/logoff.png")));
|
|
|
+ exitMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 22));
|
|
|
+ fileMenu.add(exitMenuItem);
|
|
|
+ exitMenuItem.addMouseListener(new MouseAdapter() {
|
|
|
+ @Override
|
|
|
+ public void mousePressed(MouseEvent e) {//只能检测到mousePressed事件
|
|
|
+ super.mouseClicked(e);
|
|
|
+ logoff();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ JMenu settingMenu = new JMenu("设置");
|
|
|
+ //settingMenu.setVisible(false);
|
|
|
+ settingMenu.setIcon(new ImageIcon(MesClient.class.getResource("/bg/menu_setting.png")));
|
|
|
+ settingMenu.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ menuBar.add(settingMenu);
|
|
|
+
|
|
|
+ JMenuItem resetTcpMenu = new JMenuItem("重连MES");
|
|
|
+ resetTcpMenu.setIcon(new ImageIcon(MesClient.class.getResource("/bg/reset_logo.png")));
|
|
|
+ resetTcpMenu.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ resetTcpMenu.addMouseListener(new MouseAdapter() {
|
|
|
+ @Override
|
|
|
+ public void mousePressed(MouseEvent e) {
|
|
|
+ super.mouseClicked(e);
|
|
|
+ //重连mes
|
|
|
+ nettyClient.future.channel().close();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ settingMenu.add(resetTcpMenu);
|
|
|
+
|
|
|
+ JMenuItem resetTcpMenu_1 = new JMenuItem("刷新" + Config.gw_1);
|
|
|
+ resetTcpMenu_1.setIcon(new ImageIcon(MesClient.class.getResource("/bg/reset_logo.png")));
|
|
|
+ resetTcpMenu_1.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ resetTcpMenu_1.addMouseListener(new MouseAdapter() {
|
|
|
+ @Override
|
|
|
+ public void mousePressed(MouseEvent e) {
|
|
|
+ super.mouseClicked(e);
|
|
|
+ setMenuState_1("已手动刷新,请扫码", 0);
|
|
|
+ resetScanA();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ settingMenu.add(resetTcpMenu_1);
|
|
|
+
|
|
|
+ JMenuItem resetTcpMenu_2 = new JMenuItem("刷新" + Config.gw_2);
|
|
|
+ resetTcpMenu_2.setIcon(new ImageIcon(MesClient.class.getResource("/bg/reset_logo.png")));
|
|
|
+ resetTcpMenu_2.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ resetTcpMenu_2.addMouseListener(new MouseAdapter() {
|
|
|
+ @Override
|
|
|
+ public void mousePressed(MouseEvent e) {
|
|
|
+ super.mouseClicked(e);
|
|
|
+ setMenuState_2("已手动刷新,请扫码", 0);
|
|
|
+ resetScanB();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ settingMenu.add(resetTcpMenu_2);
|
|
|
+
|
|
|
+ contentPane = new JPanel();
|
|
|
+ contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
|
|
+ setContentPane(contentPane);
|
|
|
+ contentPane.setLayout(new BorderLayout(0, 0));
|
|
|
+
|
|
|
+ JToolBar toolBar = new JToolBar();
|
|
|
+ contentPane.add(toolBar, BorderLayout.NORTH);
|
|
|
+
|
|
|
+ JLabel equipment_statu_label = new JLabel("状态:");
|
|
|
+ equipment_statu_label.setHorizontalAlignment(SwingConstants.CENTER);
|
|
|
+ equipment_statu_label.setForeground(Color.BLACK);
|
|
|
+ equipment_statu_label.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ equipment_statu_label.setBackground(Color.LIGHT_GRAY);
|
|
|
+ toolBar.add(equipment_statu_label);
|
|
|
+
|
|
|
+ JButton status_menu = new JButton("");
|
|
|
+ status_menu.addActionListener(new ActionListener() {
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ status_menu.setForeground(Color.GREEN);
|
|
|
+ status_menu.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ status_menu.setBackground(Color.BLACK);
|
|
|
+ toolBar.add(status_menu);
|
|
|
+
|
|
|
+ JLabel space_1 = new JLabel(" ");
|
|
|
+ toolBar.add(space_1);
|
|
|
+
|
|
|
+ JLabel heart_beat_status_label = new JLabel("心跳:");
|
|
|
+ heart_beat_status_label.setHorizontalAlignment(SwingConstants.CENTER);
|
|
|
+ heart_beat_status_label.setForeground(Color.BLACK);
|
|
|
+ heart_beat_status_label.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ heart_beat_status_label.setBackground(Color.LIGHT_GRAY);
|
|
|
+ toolBar.add(heart_beat_status_label);
|
|
|
+
|
|
|
+ heart_beat_menu = new JButton("");
|
|
|
+ heart_beat_menu.setIcon(new ImageIcon(MesClient.class.getResource("/bg/green_dot.png")));
|
|
|
+ heart_beat_menu.setForeground(Color.GREEN);
|
|
|
+ heart_beat_menu.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ heart_beat_menu.setBackground(Color.BLACK);
|
|
|
+ toolBar.add(heart_beat_menu);
|
|
|
+
|
|
|
+ JLabel space_2 = new JLabel(" ");
|
|
|
+ toolBar.add(space_2);
|
|
|
+
|
|
|
+ JLabel user_status_label = new JLabel("登录用户:");
|
|
|
+ user_status_label.setHorizontalAlignment(SwingConstants.CENTER);
|
|
|
+ user_status_label.setForeground(Color.BLACK);
|
|
|
+ user_status_label.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ user_status_label.setBackground(Color.LIGHT_GRAY);
|
|
|
+ toolBar.add(user_status_label);
|
|
|
+
|
|
|
+ user_menu = new JButton("");
|
|
|
+ user_menu.setForeground(Color.GREEN);
|
|
|
+ user_menu.setFont(new Font("微软雅黑", Font.PLAIN, 22));
|
|
|
+ user_menu.setBackground(Color.BLACK);
|
|
|
+ toolBar.add(user_menu);
|
|
|
+
|
|
|
+ JLabel space_3 = new JLabel(" ");
|
|
|
+ toolBar.add(space_3);
|
|
|
+
|
|
|
+ JLabel space_4 = new JLabel(" ");
|
|
|
+ toolBar.add(space_4);
|
|
|
+
|
|
|
+ tabbedPane = new JTabbedPane(JTabbedPane.TOP);
|
|
|
+ tabbedPane.setMinimumSize(new Dimension(400, 50));
|
|
|
+ tabbedPane.setFont(new Font("宋体", Font.BOLD, 22));
|
|
|
+ contentPane.add(tabbedPane);
|
|
|
+
|
|
|
+ //首页
|
|
|
+ JPanel indexPanelA = new JPanel();
|
|
|
+ indexScrollPaneA = new JScrollPane(indexPanelA);
|
|
|
+ indexPanelA.setLayout(null);
|
|
|
+
|
|
|
+ // 工位1
|
|
|
+ product_sn_1 = new JTextField();
|
|
|
+ product_sn_1.setHorizontalAlignment(SwingConstants.CENTER);
|
|
|
+ product_sn_1.setEditable(false);
|
|
|
+ product_sn_1.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ product_sn_1.setBounds(0, 60, 489, 70);
|
|
|
+ indexPanelA.add(product_sn_1);
|
|
|
+ product_sn_1.setColumns(10);
|
|
|
+ product_sn_1.addMouseListener(new MouseAdapter() {
|
|
|
+ public void mouseClicked(MouseEvent e) {
|
|
|
+ createQRCode(product_sn_1.getText());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ f_scan_data_bt_1 = new JButton("扫码");
|
|
|
+ f_scan_data_bt_1.addActionListener(new ActionListener() {
|
|
|
+ public void actionPerformed(ActionEvent e) { scanBarcode1();}
|
|
|
+ });
|
|
|
+ f_scan_data_bt_1.setIcon(new ImageIcon(MesClient.class.getResource("/bg/scan_barcode.png")));
|
|
|
+ f_scan_data_bt_1.setFont(new Font("微软雅黑", Font.PLAIN, 32));
|
|
|
+ f_scan_data_bt_1.setBounds(280, 340, 171, 70);
|
|
|
+ indexPanelA.add(f_scan_data_bt_1);
|
|
|
+
|
|
|
+ finish_ok_bt_1 = new JButton("OK");
|
|
|
+ finish_ok_bt_1.setEnabled(false);
|
|
|
+ finish_ok_bt_1.setIcon(new ImageIcon(MesClient.class.getResource("/bg/ok_bg.png")));
|
|
|
+ finish_ok_bt_1.setFont(new Font("微软雅黑", Font.PLAIN, 32));
|
|
|
+ finish_ok_bt_1.setBounds(0, 335, 125, 80);
|
|
|
+ finish_ok_bt_1.setEnabled(false);
|
|
|
+ indexPanelA.add(finish_ok_bt_1);
|
|
|
+
|
|
|
+ finish_ng_bt_1 = new JButton("NG");
|
|
|
+ finish_ng_bt_1.setEnabled(false);
|
|
|
+ finish_ng_bt_1.addActionListener(new ActionListener() {
|
|
|
+ public void actionPerformed(ActionEvent e) {}
|
|
|
+ });
|
|
|
+ finish_ng_bt_1.setIcon(new ImageIcon(MesClient.class.getResource("/bg/ng_bg.png")));
|
|
|
+ finish_ng_bt_1.setFont(new Font("微软雅黑", Font.PLAIN, 32));
|
|
|
+ finish_ng_bt_1.setBounds(128, 335, 125, 80);
|
|
|
+ finish_ng_bt_1.setEnabled(false);
|
|
|
+ indexPanelA.add(finish_ng_bt_1);
|
|
|
+
|
|
|
+ status_menu_1 = new JButton("等待加工信号");
|
|
|
+ status_menu_1.addActionListener(new ActionListener() {
|
|
|
+ public void actionPerformed(ActionEvent e) {}
|
|
|
+ });
|
|
|
+ status_menu_1.setForeground(Color.GREEN);
|
|
|
+ status_menu_1.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ status_menu_1.setBackground(Color.BLACK);
|
|
|
+ status_menu_1.setBounds(100, 8, 340, 35);
|
|
|
+ indexPanelA.add(status_menu_1);
|
|
|
+
|
|
|
+ JLabel state_label_1 = new JLabel(Config.gw_1);
|
|
|
+ state_label_1.setHorizontalAlignment(SwingConstants.LEFT);
|
|
|
+ state_label_1.setForeground(Color.BLACK);
|
|
|
+ state_label_1.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ state_label_1.setBackground(Color.LIGHT_GRAY);
|
|
|
+ state_label_1.setBounds(0, 10, 150, 28);
|
|
|
+ indexPanelA.add(state_label_1);
|
|
|
+
|
|
|
+ JLabel lblNewLabel = new JLabel("压力");
|
|
|
+ lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
|
|
|
+ lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 25));
|
|
|
+ lblNewLabel.setBounds(30, 160, 96, 53);
|
|
|
+ indexPanelA.add(lblNewLabel);
|
|
|
+
|
|
|
+ pressureText_1 = new JTextField();
|
|
|
+ pressureText_1.setFont(new Font("微软雅黑", Font.PLAIN, 25));
|
|
|
+ pressureText_1.setEnabled(false);
|
|
|
+ pressureText_1.setForeground(Color.BLACK);
|
|
|
+ pressureText_1.setBounds(150, 160, 191, 56);
|
|
|
+ indexPanelA.add(pressureText_1);
|
|
|
+ pressureText_1.setColumns(10);
|
|
|
+
|
|
|
+ JLabel lblNewLabel_1 = new JLabel("泄漏");
|
|
|
+ lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
|
|
|
+ lblNewLabel_1.setFont(new Font("微软雅黑", Font.PLAIN, 25));
|
|
|
+ lblNewLabel_1.setBounds(30, 235, 96, 53);
|
|
|
+ indexPanelA.add(lblNewLabel_1);
|
|
|
+
|
|
|
+ leakText_1 = new JTextField();
|
|
|
+ leakText_1.setFont(new Font("微软雅黑", Font.PLAIN, 25));
|
|
|
+ leakText_1.setEnabled(false);
|
|
|
+ leakText_1.setColumns(10);
|
|
|
+ leakText_1.setBounds(150, 235, 191, 56);
|
|
|
+ indexPanelA.add(leakText_1);
|
|
|
+
|
|
|
+
|
|
|
+ JLabel serialportStr1 = new JLabel("串口:");
|
|
|
+ serialportStr1.setHorizontalAlignment(SwingConstants.LEFT);
|
|
|
+ serialportStr1.setFont(new Font("微软雅黑", Font.PLAIN, 22));
|
|
|
+ indexPanelA.add(serialportStr1);
|
|
|
+ serialportStr1.setBounds(338, 490, 100, 45);
|
|
|
+ // 下拉框
|
|
|
+ JComboBox<String> comboBox1 = new JComboBox<>(new String[]{"COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "COM10", "COM11","COM12", "COM13", "COM14", "COM15", "COM16", "COM17", "COM18"});
|
|
|
+ comboBox1.setPreferredSize(new Dimension(90, 45));
|
|
|
+ comboBox1.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ // 设置初始化选中项
|
|
|
+ comboBox1.setSelectedItem(Config.portName1);
|
|
|
+ // 添加监听
|
|
|
+ comboBox1.addItemListener(new ItemListener() {
|
|
|
+ @Override
|
|
|
+ public void itemStateChanged(ItemEvent e) {
|
|
|
+ String selectedItem = (String) e.getItem();
|
|
|
+ if (e.getStateChange() == ItemEvent.SELECTED && !Objects.equals(selectedItem, currentSerialPort1)) {
|
|
|
+ int option = JOptionPane.showConfirmDialog(mesClientFrame, "确定切换串口至" + selectedItem + "?", "切换串口", JOptionPane.OK_CANCEL_OPTION);
|
|
|
+ if (option == JOptionPane.OK_OPTION) {
|
|
|
+ // 用户确认切换
|
|
|
+ log.info("============用户切换{}串口至 {}==============", Config.gw_1, selectedItem);
|
|
|
+ currentSerialPort1 = selectedItem;
|
|
|
+ WorkTimer.ateq1.replaceSerialUtil(new SerialUtil(selectedItem));
|
|
|
+ resetScanA();
|
|
|
+ setMenuState_1("切换" + Config.gw_1 + "串口至" + selectedItem + ",请扫码", 0);
|
|
|
+ log.info("=============切换{}串口成功===================", Config.gw_1);
|
|
|
+ } else {
|
|
|
+ // 用户取消切换,恢复之前的选项
|
|
|
+ comboBox1.setSelectedItem(currentSerialPort1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ comboBox1.setBounds(385, 490, 100, 45);
|
|
|
+ indexPanelA.add(comboBox1);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 工位2
|
|
|
+ product_sn_2 = new JTextField();
|
|
|
+ product_sn_2.setHorizontalAlignment(SwingConstants.CENTER);
|
|
|
+ product_sn_2.setEditable(false);
|
|
|
+ product_sn_2.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ product_sn_2.setBounds(497, 60, 489, 70);
|
|
|
+ indexPanelA.add(product_sn_2);
|
|
|
+ product_sn_2.setColumns(10);
|
|
|
+ product_sn_2.addMouseListener(new MouseAdapter() {
|
|
|
+ public void mouseClicked(MouseEvent e) {
|
|
|
+ createQRCode(product_sn_2.getText());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ f_scan_data_bt_2 = new JButton("扫码");
|
|
|
+ f_scan_data_bt_2.addActionListener(new ActionListener() {
|
|
|
+ public void actionPerformed(ActionEvent e) { scanBarcode2();}
|
|
|
+ });
|
|
|
+ f_scan_data_bt_2.setIcon(new ImageIcon(MesClient.class.getResource("/bg/scan_barcode.png")));
|
|
|
+ f_scan_data_bt_2.setFont(new Font("微软雅黑", Font.PLAIN, 32));
|
|
|
+ f_scan_data_bt_2.setBounds(280+497, 340, 171, 70);
|
|
|
+ indexPanelA.add(f_scan_data_bt_2);
|
|
|
+
|
|
|
+ finish_ok_bt_2 = new JButton("OK");
|
|
|
+ finish_ok_bt_2.setEnabled(false);
|
|
|
+ finish_ok_bt_2.addActionListener(new ActionListener() {
|
|
|
+ public void actionPerformed(ActionEvent e) {}
|
|
|
+ });
|
|
|
+ finish_ok_bt_2.setIcon(new ImageIcon(MesClient.class.getResource("/bg/ok_bg.png")));
|
|
|
+ finish_ok_bt_2.setFont(new Font("微软雅黑", Font.PLAIN, 32));
|
|
|
+ finish_ok_bt_2.setBounds(497, 335, 125, 80);
|
|
|
+ finish_ok_bt_2.setEnabled(false);
|
|
|
+ indexPanelA.add(finish_ok_bt_2);
|
|
|
+
|
|
|
+ finish_ng_bt_2 = new JButton("NG");
|
|
|
+ finish_ng_bt_2.setEnabled(false);
|
|
|
+ finish_ng_bt_2.addActionListener(new ActionListener() {
|
|
|
+ public void actionPerformed(ActionEvent e) {}
|
|
|
+ });
|
|
|
+ finish_ng_bt_2.setIcon(new ImageIcon(MesClient.class.getResource("/bg/ng_bg.png")));
|
|
|
+ finish_ng_bt_2.setFont(new Font("微软雅黑", Font.PLAIN, 32));
|
|
|
+ finish_ng_bt_2.setBounds(128 + 497, 335, 125, 80);
|
|
|
+ finish_ng_bt_2.setEnabled(false);
|
|
|
+ indexPanelA.add(finish_ng_bt_2);
|
|
|
+
|
|
|
+ status_menu_2 = new JButton("等待加工信号");
|
|
|
+ status_menu_2.addActionListener(new ActionListener() {
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ status_menu_2.setForeground(Color.GREEN);
|
|
|
+ status_menu_2.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ status_menu_2.setBackground(Color.BLACK);
|
|
|
+ status_menu_2.setBounds(100+497, 8, 340, 35);
|
|
|
+ indexPanelA.add(status_menu_2);
|
|
|
+
|
|
|
+ JLabel state_label_2 = new JLabel(Config.gw_2);
|
|
|
+ state_label_2.setHorizontalAlignment(SwingConstants.LEFT);
|
|
|
+ state_label_2.setForeground(Color.BLACK);
|
|
|
+ state_label_2.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ state_label_2.setBackground(Color.LIGHT_GRAY);
|
|
|
+ state_label_2.setBounds(497, 10, 150, 28);
|
|
|
+ indexPanelA.add(state_label_2);
|
|
|
+
|
|
|
+
|
|
|
+ JLabel lblNewLabel_2 = new JLabel("压力");
|
|
|
+ lblNewLabel_2.setHorizontalAlignment(SwingConstants.RIGHT);
|
|
|
+ lblNewLabel_2.setFont(new Font("微软雅黑", Font.PLAIN, 25));
|
|
|
+ lblNewLabel_2.setBounds(530, 160, 96, 53);
|
|
|
+ indexPanelA.add(lblNewLabel_2);
|
|
|
+
|
|
|
+ pressureText_2 = new JTextField();
|
|
|
+ pressureText_2.setFont(new Font("微软雅黑", Font.PLAIN, 25));
|
|
|
+ pressureText_2.setEnabled(false);
|
|
|
+ pressureText_2.setForeground(Color.BLACK);
|
|
|
+ pressureText_2.setBounds(650, 160, 191, 56);
|
|
|
+ indexPanelA.add(pressureText_2);
|
|
|
+ pressureText_2.setColumns(10);
|
|
|
+
|
|
|
+ JLabel lblNewLabel_3 = new JLabel("泄漏");
|
|
|
+ lblNewLabel_3.setHorizontalAlignment(SwingConstants.RIGHT);
|
|
|
+ lblNewLabel_3.setFont(new Font("微软雅黑", Font.PLAIN, 25));
|
|
|
+ lblNewLabel_3.setBounds(530, 235, 96, 53);
|
|
|
+ indexPanelA.add(lblNewLabel_3);
|
|
|
+
|
|
|
+ leakText_2 = new JTextField();
|
|
|
+ leakText_2.setFont(new Font("微软雅黑", Font.PLAIN, 25));
|
|
|
+ leakText_2.setEnabled(false);
|
|
|
+ leakText_2.setColumns(10);
|
|
|
+ leakText_2.setBounds(650, 235, 191, 56);
|
|
|
+ indexPanelA.add(leakText_2);
|
|
|
+
|
|
|
+
|
|
|
+ JLabel serialportStr2 = new JLabel("串口:");
|
|
|
+ serialportStr2.setHorizontalAlignment(SwingConstants.LEFT);
|
|
|
+ serialportStr2.setFont(new Font("微软雅黑", Font.PLAIN, 22));
|
|
|
+ indexPanelA.add(serialportStr2);
|
|
|
+ serialportStr2.setBounds(838, 490, 100, 45);
|
|
|
+ // 下拉框
|
|
|
+ JComboBox<String> comboBox2 = new JComboBox<>(new String[]{"COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "COM10", "COM11","COM12","COM13", "COM14", "COM15", "COM16", "COM17", "COM18"});
|
|
|
+ comboBox2.setPreferredSize(new Dimension(90, 45));
|
|
|
+ comboBox2.setFont(new Font("微软雅黑", Font.PLAIN, 20));
|
|
|
+ // 设置初始化选中项
|
|
|
+ comboBox2.setSelectedItem(Config.portName2);
|
|
|
+ // 添加监听
|
|
|
+ comboBox2.addItemListener(new ItemListener() {
|
|
|
+ @Override
|
|
|
+ public void itemStateChanged(ItemEvent e) {
|
|
|
+ String selectedItem = (String) e.getItem();
|
|
|
+ if (e.getStateChange() == ItemEvent.SELECTED && !Objects.equals(selectedItem, currentSerialPort2)) {
|
|
|
+ int option = JOptionPane.showConfirmDialog(mesClientFrame, "确定切换串口至" + selectedItem + "?", "切换串口", JOptionPane.OK_CANCEL_OPTION);
|
|
|
+ if (option == JOptionPane.OK_OPTION) {
|
|
|
+ // 用户确认切换
|
|
|
+ log.info("==============用户切换{}串口至 {}===============", Config.gw_2, selectedItem);
|
|
|
+ currentSerialPort2 = selectedItem;
|
|
|
+ WorkTimer.ateq2.replaceSerialUtil(new SerialUtil(selectedItem));
|
|
|
+ resetScanB();
|
|
|
+ setMenuState_2("切换" + Config.gw_2 + "串口至" + selectedItem + ",请扫码", 0);
|
|
|
+ log.info("==============切换{}串口成功=====================", Config.gw_2);
|
|
|
+ } else {
|
|
|
+ // 用户取消切换,恢复之前的选项
|
|
|
+ comboBox2.setSelectedItem(currentSerialPort2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ comboBox2.setBounds(885, 490, 100, 45);
|
|
|
+ indexPanelA.add(comboBox2);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Panel panel1 = new Panel();
|
|
|
+ panel1.setEnabled(false);
|
|
|
+ panel1.setBackground(SystemColor.activeCaptionBorder);
|
|
|
+ panel1.setBounds(490, 0, 6, 600);
|
|
|
+ indexPanelA.add(panel1);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ tabbedPane.addTab("工作面板", new ImageIcon(MesClient.class.getResource("/bg/a_side.png")), indexScrollPaneA, null);
|
|
|
+ tabbedPane.setEnabledAt(0, true);
|
|
|
+
|
|
|
+ indexPanelC = new JPanel();
|
|
|
+ searchScrollPaneDj = new JScrollPane(indexPanelC);
|
|
|
+ indexPanelC.setLayout(null);
|
|
|
+ tabbedPane.addTab("开班点检", new ImageIcon(MesClient.class.getResource("/bg/menu_data_preprocess.png")), searchScrollPaneDj, null);
|
|
|
+
|
|
|
+ indexPanelB = new JPanel();
|
|
|
+ searchScrollPane = new JScrollPane(indexPanelB);
|
|
|
+ indexPanelB.setLayout(null);
|
|
|
+ tabbedPane.addTab("OP310B记录", new ImageIcon(MesClient.class.getResource("/bg/menu_data_preprocess.png")), searchScrollPane, null);
|
|
|
+
|
|
|
+ panel5 = new JPanel();
|
|
|
+ scrollPane5 = new JScrollPane(panel5);
|
|
|
+ panel5.setLayout(null);
|
|
|
+ tabbedPane.addTab("OP320记录", new ImageIcon(MesClient.class.getResource("/bg/menu_data_preprocess.png")), scrollPane5, null);
|
|
|
+
|
|
|
+ // 员工工作记录
|
|
|
+ panel4 = new JPanel();
|
|
|
+ scrollPane4 = new JScrollPane(panel4);
|
|
|
+ panel4.setLayout(null);
|
|
|
+ tabbedPane.addTab("人员记录", scrollPane4);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ tabbedPane.addChangeListener(new ChangeListener() {
|
|
|
+ @Override
|
|
|
+ public void stateChanged(ChangeEvent e) {
|
|
|
+ JTabbedPane tabbedPane = (JTabbedPane) e.getSource();
|
|
|
+ int selectedIndex = tabbedPane.getSelectedIndex();
|
|
|
+ if (selectedIndex == 1) {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void setMenuState_1(String msg, int error) {
|
|
|
+ if (error == 0) {
|
|
|
+ MesClient.status_menu_1.setForeground(Color.GREEN);
|
|
|
+ } else {
|
|
|
+ MesClient.status_menu_1.setForeground(Color.RED);
|
|
|
+ }
|
|
|
+ MesClient.status_menu_1.setText(msg);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void setMenuState_2(String msg, int error) {
|
|
|
+ if (error == 0) {
|
|
|
+ MesClient.status_menu_2.setForeground(Color.GREEN);
|
|
|
+ } else {
|
|
|
+ MesClient.status_menu_2.setForeground(Color.RED);
|
|
|
+ }
|
|
|
+ MesClient.status_menu_2.setText(msg);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void getMaterailData() {
|
|
|
+ JSONObject retObj = DataUtil.getBindMaterail();
|
|
|
+ if (retObj.get("result") != null && retObj.get("result").toString().equalsIgnoreCase("true")) {
|
|
|
+ java.util.List<BindMaterialResp> arrs = retObj.getList("data", BindMaterialResp.class);
|
|
|
+ int i = 0;
|
|
|
+ rowData = new Object[arrs.size()][7];
|
|
|
+ for (BindMaterialResp bindMaterialResp : arrs) {
|
|
|
+ rowData[i][0] = bindMaterialResp.getMaterialTitle();
|
|
|
+ rowData[i][1] = bindMaterialResp.getBatchSn();
|
|
|
+ rowData[i][2] = bindMaterialResp.getLastTimes();
|
|
|
+ rowData[i][3] = "";
|
|
|
+ rowData[i][4] = bindMaterialResp.getCraft();
|
|
|
+ rowData[i][5] = bindMaterialResp.getMaterialId();
|
|
|
+ rowData[i][6] = bindMaterialResp.getType();
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ bindBatchPanel();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void updateMaterailData() {
|
|
|
+ JSONObject retObj = DataUtil.getBindMaterail();
|
|
|
+ if (retObj.get("result") != null && retObj.get("result").toString().equalsIgnoreCase("true")) {
|
|
|
+ List<BindMaterialResp> arrs = retObj.getList("data", BindMaterialResp.class);
|
|
|
+
|
|
|
+ int i = 0;
|
|
|
+ for (BindMaterialResp bindMaterialResp : arrs) {
|
|
|
+ rowData[i][0] = bindMaterialResp.getMaterialTitle();
|
|
|
+ rowData[i][1] = bindMaterialResp.getBatchSn();
|
|
|
+ rowData[i][2] = bindMaterialResp.getLastTimes();
|
|
|
+ rowData[i][3] = "";
|
|
|
+ rowData[i][4] = bindMaterialResp.getCraft();
|
|
|
+ rowData[i][5] = bindMaterialResp.getMaterialId();
|
|
|
+ rowData[i][6] = bindMaterialResp.getType();
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ MesClient.table.repaint();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 绑定物料批次码
|
|
|
+ public static void scanBatchSn(BindMaterialResp bindMaterialResp) {
|
|
|
+ //弹窗扫工件码
|
|
|
+ String scanBarcodeTitle = "请扫物料:" + bindMaterialResp.getMaterialTitle();
|
|
|
+ String scanBarcode = JOptionPane.showInputDialog(null, scanBarcodeTitle);
|
|
|
+ if (scanBarcode != null && !scanBarcode.equalsIgnoreCase("")) {
|
|
|
+
|
|
|
+ JSONObject retObj = DataUtil.saveBindMaterail(scanBarcode, bindMaterialResp.getCraft(), bindMaterialResp.getMaterialId(), bindMaterialResp.getType());
|
|
|
+ if (retObj.get("result") != null && retObj.get("result").toString().equalsIgnoreCase("true")) {
|
|
|
+ MesClient.setMenuState_1("扫物料:" + bindMaterialResp.getMaterialTitle() + "成功", 0);
|
|
|
+ updateMaterailData();
|
|
|
+ } else {
|
|
|
+ if (retObj.get("result") == null) {
|
|
|
+ MesClient.setMenuState_1("请求失败,请重试", -1);
|
|
|
+ } else {
|
|
|
+ if (retObj.get("result").toString().equalsIgnoreCase("false")) {
|
|
|
+ MesClient.setMenuState_1(retObj.getString("message"), -1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void bindBatchPanel() {
|
|
|
+ JPanel indexPanelBB = new JPanel();
|
|
|
+ JPanel panel = new JPanel();
|
|
|
+ panel.setBounds(0, 0, 990, 550);
|
|
|
+// panel.setBounds(81, 50, 810, 479);
|
|
|
+ indexPanelBB.add(panel);
|
|
|
+
|
|
|
+ panel.setLayout(new GridLayout(0, 1, 0, 0));
|
|
|
+ table = new JTable(rowData, columnNames) {
|
|
|
+ public boolean isCellEditable(int row, int column) {
|
|
|
+ if (column == 3) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ table.setRowHeight(40);
|
|
|
+ table.setEnabled(true);
|
|
|
+ table.setFont(new Font("微软雅黑", Font.PLAIN, 14));
|
|
|
+
|
|
|
+ table.getColumnModel().getColumn(3).setCellRenderer(new TableCellRendererButton());
|
|
|
+ table.getColumnModel().getColumn(3).setCellEditor(new TableCellEditorButton());
|
|
|
+
|
|
|
+
|
|
|
+ JScrollPane scrollPane = new JScrollPane(table);
|
|
|
+ panel.add(scrollPane);
|
|
|
+
|
|
|
+ JScrollPane indexScrollPaneB = new JScrollPane(indexPanelBB);
|
|
|
+ indexPanelBB.setLayout(null);
|
|
|
+ tabbedPane.addTab("绑定物料", new ImageIcon(MesClient.class.getResource("/bg/menu_data_preprocess.png")), indexScrollPaneB, null);
|
|
|
+ }
|
|
|
+}
|