Просмотр исходного кода

新增气密泄露点位记录

yutianhao 2 недель назад
Родитель
Сommit
013614ffb8

+ 2 - 1
src/com/mes/ui/DataUtil.java

@@ -263,7 +263,8 @@ public class DataUtil {
                     +"&cs="+URLEncoder.encode("", "UTF-8")
                     +"&leakRate="+URLEncoder.encode("", "UTF-8")
                     +"&leakRateUnit="+URLEncoder.encode("", "UTF-8")
-                    +"&type="+URLEncoder.encode("", "UTF-8");
+                    +"&type="+URLEncoder.encode("", "UTF-8")
+                    +"&ngLeakPoints="+URLEncoder.encode(testParam.getNgLeakPoints() != null ? testParam.getNgLeakPoints() : "", "UTF-8");
             
             // 添加sessionid
 //            if (MesClient.sessionid != null && !MesClient.sessionid.isEmpty()) {

+ 148 - 0
src/com/mes/ui/LeakNgPointDialog.java

@@ -0,0 +1,148 @@
+package com.mes.ui;
+
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 漏点NG点位选择对话框:B1-B8 / C1-C21 / D1 多选 + 其它原因。
+ */
+public class LeakNgPointDialog extends JDialog {
+
+    private final List<JCheckBox> pointChecks = new ArrayList<>();
+    private final JTextArea otherReasonArea;
+    private String selectedValue;
+    private boolean confirmed;
+
+    public LeakNgPointDialog(Frame owner) {
+        super(owner, "漏点NG点位", true);
+        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+        setResizable(true);
+
+        JPanel root = new JPanel(new BorderLayout(10, 10));
+        root.setBorder(new EmptyBorder(12, 12, 12, 12));
+
+        JPanel pointsPanel = new JPanel();
+        pointsPanel.setLayout(new BoxLayout(pointsPanel, BoxLayout.Y_AXIS));
+
+        pointsPanel.add(buildPointGroup("B点位", "B", 8));
+        pointsPanel.add(Box.createVerticalStrut(8));
+        pointsPanel.add(buildPointGroup("C点位", "C", 21));
+        pointsPanel.add(Box.createVerticalStrut(8));
+        pointsPanel.add(buildPointGroup("D点位", "D", 1));
+
+        JScrollPane pointsScroll = new JScrollPane(pointsPanel);
+        pointsScroll.setBorder(null);
+        pointsScroll.getVerticalScrollBar().setUnitIncrement(16);
+
+        JPanel otherPanel = new JPanel(new BorderLayout(6, 6));
+        otherPanel.setBorder(new TitledBorder("其它原因"));
+        otherReasonArea = new JTextArea(3, 40);
+        otherReasonArea.setLineWrap(true);
+        otherReasonArea.setWrapStyleWord(true);
+        otherReasonArea.setFont(new Font("微软雅黑", Font.PLAIN, 16));
+        otherPanel.add(new JScrollPane(otherReasonArea), BorderLayout.CENTER);
+
+        JPanel center = new JPanel(new BorderLayout(8, 8));
+        center.add(pointsScroll, BorderLayout.CENTER);
+        center.add(otherPanel, BorderLayout.SOUTH);
+
+        JPanel buttons = new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 8));
+        JButton confirmBtn = new JButton("确认");
+        confirmBtn.setFont(new Font("微软雅黑", Font.PLAIN, 20));
+        confirmBtn.setPreferredSize(new Dimension(140, 48));
+        confirmBtn.addActionListener(e -> onConfirm());
+
+        JButton cancelBtn = new JButton("取消");
+        cancelBtn.setFont(new Font("微软雅黑", Font.PLAIN, 20));
+        cancelBtn.setPreferredSize(new Dimension(140, 48));
+        cancelBtn.addActionListener(e -> {
+            confirmed = false;
+            selectedValue = null;
+            dispose();
+        });
+
+        buttons.add(confirmBtn);
+        buttons.add(cancelBtn);
+
+        JLabel tip = new JLabel("请至少勾选一个点位,或填写其它原因(可多选)");
+        tip.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        tip.setForeground(new Color(120, 120, 120));
+
+        root.add(tip, BorderLayout.NORTH);
+        root.add(center, BorderLayout.CENTER);
+        root.add(buttons, BorderLayout.SOUTH);
+
+        setContentPane(root);
+        setSize(780, 640);
+        setLocationRelativeTo(owner);
+    }
+
+    private JPanel buildPointGroup(String title, String prefix, int count) {
+        JPanel group = new JPanel(new BorderLayout());
+        group.setBorder(new TitledBorder(title));
+
+        JPanel grid = new JPanel(new GridLayout(0, 7, 8, 6));
+        for (int i = 1; i <= count; i++) {
+            String label = prefix + i;
+            JCheckBox checkBox = new JCheckBox(label);
+            checkBox.setFont(new Font("微软雅黑", Font.PLAIN, 16));
+            checkBox.setActionCommand(label);
+            pointChecks.add(checkBox);
+            grid.add(checkBox);
+        }
+        group.add(grid, BorderLayout.CENTER);
+        return group;
+    }
+
+    private void onConfirm() {
+        List<String> points = new ArrayList<>();
+        for (JCheckBox checkBox : pointChecks) {
+            if (checkBox.isSelected()) {
+                points.add(checkBox.getActionCommand());
+            }
+        }
+        String other = otherReasonArea.getText() == null ? "" : otherReasonArea.getText().trim();
+        if (points.isEmpty() && other.isEmpty()) {
+            JOptionPane.showMessageDialog(this, "请至少勾选一个点位,或填写其它原因", "提示",
+                    JOptionPane.WARNING_MESSAGE);
+            return;
+        }
+        StringBuilder sb = new StringBuilder();
+        if (!points.isEmpty()) {
+            sb.append(String.join(",", points));
+        }
+        if (!other.isEmpty()) {
+            if (sb.length() > 0) {
+                sb.append("|");
+            }
+            sb.append(other);
+        }
+        selectedValue = sb.toString();
+        confirmed = true;
+        dispose();
+    }
+
+    public boolean isConfirmed() {
+        return confirmed;
+    }
+
+    public String getSelectedValue() {
+        return selectedValue;
+    }
+
+    /**
+     * 弹出对话框;确认返回拼好的漏点字符串,取消返回 null。
+     */
+    public static String showDialog(Frame owner) {
+        LeakNgPointDialog dialog = new LeakNgPointDialog(owner);
+        dialog.setVisible(true);
+        if (dialog.isConfirmed()) {
+            return dialog.getSelectedValue();
+        }
+        return null;
+    }
+}

+ 143 - 60
src/com/mes/ui/MesClient.java

@@ -148,6 +148,9 @@ public class MesClient extends JFrame {
     public static Integer isConfigEdit = 0;
     public static Integer mesStartFlag = 0;
 
+    /** MES开启时,仪器判NG后暂存,待工人填写漏点点位再上传 */
+    public static TestParam pendingNgTestParam = null;
+
     public static List<TaskParam> taskParamList = new ArrayList<>();
     public static TaskParam curTaskParam = null;
 
@@ -366,6 +369,7 @@ public class MesClient extends JFrame {
     public static void resetScanA() {
         work_status = 0;
         check_quality_result = false;
+        pendingNgTestParam = null;
         MesClient.finish_ok_bt.setEnabled(false);
         MesClient.finish_ng_bt.setEnabled(false);
         product_sn.setText("");
@@ -385,6 +389,94 @@ public class MesClient extends JFrame {
 //        MesClient.result.setForeground(Color.GRAY);
     }
 
+    /**
+     * 本地存库后提交MES,成功则复位扫码。
+     * NG 且未填漏点(MES开启)时暂存并点亮 NG 按钮,不入库不上传。
+     */
+    public static boolean afterTestSaveAndUpload(TestParam testParam) {
+        try {
+            String testDate = testParam.getCreateTime();
+            if (testDate == null || testDate.isEmpty()) {
+                testDate = DateLocalUtils.getCurrentTime();
+                testParam.setCreateTime(testDate);
+            }
+            if (testParam.getOprno() == null || testParam.getOprno().isEmpty()) {
+                testParam.setOprno(getEffectiveOprno());
+            }
+            if (testParam.getLineSn() == null || testParam.getLineSn().isEmpty()) {
+                testParam.setLineSn(getEffectiveLineSn());
+            }
+
+            boolean isNg = testParam.getResult() != null && testParam.getResult().equalsIgnoreCase("NG");
+            boolean leakEmpty = testParam.getNgLeakPoints() == null || testParam.getNgLeakPoints().trim().isEmpty();
+            if (mes_enable && isNg && leakEmpty) {
+                pendingNgTestParam = testParam;
+                MesClient.finish_ng_bt.setEnabled(true);
+                MesClient.setMenuStatus("气密 NG,请选择漏点点位", -1);
+                if (SwingUtilities.isEventDispatchThread()) {
+                    submitPendingNgWithLeakPoints();
+                } else {
+                    SwingUtilities.invokeLater(MesClient::submitPendingNgWithLeakPoints);
+                }
+                return false;
+            }
+
+            JdbcUtils.insertTestRecord(testParam);
+
+            if (mes_enable) {
+                JSONObject retObj = DataUtil.qmResultData(testParam);
+                if (retObj != null && retObj.get("result") != null && retObj.get("result").toString().equalsIgnoreCase("true")) {
+                    pendingNgTestParam = null;
+                    MesClient.resetScanA();
+                    MesClient.setMenuStatus("测试结果上传成功,请扫下一件", 0);
+                    try { JdbcUtils.getTestData(); } catch (Exception ignore) {}
+                    if (MesClient.configParam.getPrintLabel().equals("是") && "OK".equals(testParam.getResult())) {
+                        PrintUtil.printLabel(testParam.getSn(),
+                                (testParam.getParam1() != null ? testParam.getParam1() : "") + (testParam.getParam2() != null ? testParam.getParam2() : ""),
+                                (testParam.getParam3() != null ? testParam.getParam3() : "") + (testParam.getParam4() != null ? testParam.getParam4() : ""),
+                                testDate);
+                    }
+                    return true;
+                } else {
+                    MesClient.mesStartFlag = 0;
+                    MesClient.setMenuStatus("测试结果上传失败,请重试", -1);
+                    return false;
+                }
+            } else {
+                pendingNgTestParam = null;
+                MesClient.resetScanA();
+                try { JdbcUtils.getTestData(); } catch (Exception ignore) {}
+                if (MesClient.configParam.getPrintLabel().equals("是") && "OK".equals(testParam.getResult())) {
+                    PrintUtil.printLabel(testParam.getSn(),
+                            (testParam.getParam1() != null ? testParam.getParam1() : "") + (testParam.getParam2() != null ? testParam.getParam2() : ""),
+                            (testParam.getParam3() != null ? testParam.getParam3() : "") + (testParam.getParam4() != null ? testParam.getParam4() : ""),
+                            testDate);
+                }
+                return true;
+            }
+        } catch (Exception e) {
+            log.error("保存上传测试结果失败", e);
+            MesClient.setMenuStatus("测试结果保存失败,请重试", -1);
+            return false;
+        }
+    }
+
+    /** 工人点击 NG 后:打开漏点页并上传 */
+    public static void submitPendingNgWithLeakPoints() {
+        if (pendingNgTestParam == null) {
+            MesClient.setMenuStatus("无待填写的气密NG数据", -1);
+            return;
+        }
+        String ngLeakPoints = LeakNgPointDialog.showDialog(mesClientFrame);
+        if (ngLeakPoints == null) {
+            MesClient.finish_ng_bt.setEnabled(true);
+            MesClient.setMenuStatus("气密 NG,请选择漏点点位", -1);
+            return;
+        }
+        pendingNgTestParam.setNgLeakPoints(ngLeakPoints);
+        afterTestSaveAndUpload(pendingNgTestParam);
+    }
+
     public static int userLoginHours;//用户登录所处小时
     public static JTextField param1;
     public static JTextField param2;
@@ -1052,49 +1144,49 @@ public class MesClient extends JFrame {
         f_scan_data_bt_1.setFont(new Font("微软雅黑", Font.PLAIN, 32));
         f_scan_data_bt_1.setBounds(693, 70, 198, 70);
         indexPanelA.add(f_scan_data_bt_1);
-        
+
         JLabel lblNewLabel = new JLabel("测试压");
         lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 20));
         lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel.setBounds(137, 210, 140, 40);
         indexPanelA.add(lblNewLabel);
-        
+
         param1 = new JTextField();
         param1.setEditable(false);
         param1.setBounds(287, 210, 150, 40);
         indexPanelA.add(param1);
         param1.setColumns(10);
-        
+
         JLabel lblNewLabel_1 = new JLabel("泄露值");
         lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_1.setFont(new Font("微软雅黑", Font.PLAIN, 20));
         lblNewLabel_1.setBounds(447, 210, 140, 40);
         indexPanelA.add(lblNewLabel_1);
-        
+
         param2 = new JTextField();
         param2.setEditable(false);
         param2.setColumns(10);
         param2.setBounds(597, 210, 150, 40);
         indexPanelA.add(param2);
-        
+
         JLabel lblNewLabel_2 = new JLabel("测电阻电压");
         lblNewLabel_2.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_2.setFont(new Font("微软雅黑", Font.PLAIN, 20));
         lblNewLabel_2.setBounds(137, 288, 140, 40);
 //        indexPanelA.add(lblNewLabel_2);
-        
+
         param3 = new JTextField();
         param3.setEditable(false);
         param3.setColumns(10);
         param3.setBounds(287, 288, 150, 40);
 //        indexPanelA.add(param3);
-        
+
         JLabel lblNewLabel_1_1 = new JLabel("电阻");
         lblNewLabel_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 20));
         lblNewLabel_1_1.setBounds(447, 288, 140, 40);
 //        indexPanelA.add(lblNewLabel_1_1);
-        
+
         param4 = new JTextField();
         param4.setEditable(false);
         param4.setColumns(10);
@@ -1155,23 +1247,14 @@ public class MesClient extends JFrame {
         finish_ng_bt.setEnabled(false);
         finish_ng_bt.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
-                String sn = getBarcode(product_sn.getText());
-                if(sn.isEmpty()){
-                    MesClient.setMenuStatus("工件码为空,请重试",-1);
-                    return;
-                }
-                String validateMsg = validateProductSnMessage(sn);
-                if (validateMsg != null) {
-                    MesClient.setMenuStatus(validateMsg, -1);
-                    return;
-                }
+                submitPendingNgWithLeakPoints();
             }
         });
         finish_ng_bt.setIcon(new ImageIcon(MesClient.class.getResource("/bg/ng_bg.png")));
         finish_ng_bt.setFont(new Font("微软雅黑", Font.PLAIN, 32));
         finish_ng_bt.setBounds(508, 291, 240, 80);
         finish_ng_bt.setEnabled(false);
-//        indexPanelA.add(finish_ng_bt);
+        indexPanelA.add(finish_ng_bt);
 
         tabbedPane.addTab("工作面板", new ImageIcon(MesClient.class.getResource("/bg/a_side.png")), indexScrollPaneA, null);
         tabbedPane.setEnabledAt(0, true);
@@ -1411,170 +1494,170 @@ public class MesClient extends JFrame {
         for (int i = 0; i < printerNames.length; i++) {
             printerNames[i] = printServices[i].getName();
         }
-        
+
         JLabel lblNewLabel_3 = new JLabel("设备程序号");
         lblNewLabel_3.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3.setBounds(10, 22, 120, 30);
 //        indexPanelD.add(lblNewLabel_3);
-        
+
         programNo = new JTextField();
         programNo.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         programNo.setBounds(140, 22, 200, 30);
 //        indexPanelD.add(programNo);
         programNo.setColumns(10);
-        
+
         JLabel lblNewLabel_3_1 = new JLabel("设备启动方式");
         lblNewLabel_3_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1.setBounds(10, 71, 120, 30);
         indexPanelD.add(lblNewLabel_3_1);
-        
+
         startMode = new JComboBox();
         startMode.setModel(new DefaultComboBoxModel(new String[] {"手动启动", "自动启动"}));
         startMode.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         startMode.setBounds(140, 71, 200, 30);
         indexPanelD.add(startMode);
-        
+
         JLabel lblNewLabel_3_1_1 = new JLabel("串口号");
         lblNewLabel_3_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1.setBounds(10, 123, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1);
-        
+
         serialPort = new JTextField();
         serialPort.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         serialPort.setColumns(10);
         serialPort.setBounds(140, 123, 200, 30);
         indexPanelD.add(serialPort);
-        
+
         JLabel lblNewLabel_3_1_1_1 = new JLabel("波特率");
         lblNewLabel_3_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1.setBounds(10, 176, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1);
-        
+
         baudRate = new JTextField();
         baudRate.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         baudRate.setColumns(10);
         baudRate.setBounds(140, 176, 200, 30);
         indexPanelD.add(baudRate);
-        
+
         JLabel lblNewLabel_3_1_1_1_1 = new JLabel("数据位");
         lblNewLabel_3_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1.setBounds(10, 229, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1);
-        
+
         dataBits = new JComboBox();
         dataBits.setModel(new DefaultComboBoxModel(new String[] {"5", "6", "7", "8"}));
         dataBits.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         dataBits.setBounds(140, 229, 200, 30);
         indexPanelD.add(dataBits);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1 = new JLabel("校验位");
         lblNewLabel_3_1_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1_1.setBounds(10, 282, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1_1);
-        
+
         checkBit = new JComboBox();
         checkBit.setModel(new DefaultComboBoxModel(new String[] {"NONE", "ODD", "EVEN", "MARK", "SPACE"}));
         checkBit.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         checkBit.setBounds(140, 282, 200, 30);
         indexPanelD.add(checkBit);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1 = new JLabel("停止位");
         lblNewLabel_3_1_1_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1_1_1.setBounds(10, 335, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1);
-        
+
         stopBit = new JComboBox();
         stopBit.setModel(new DefaultComboBoxModel(new String[] {"1", "1.5", "2"}));
         stopBit.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         stopBit.setBounds(140, 335, 200, 30);
         indexPanelD.add(stopBit);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1 = new JLabel("是否打印标签");
         lblNewLabel_3_1_1_1_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1_1_1_1.setBounds(408, 22, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_1);
-        
+
         printLabel = new JComboBox();
         printLabel.setModel(new DefaultComboBoxModel(new String[] {"是", "否"}));
         printLabel.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         printLabel.setBounds(536, 22, 200, 30);
         indexPanelD.add(printLabel);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1 = new JLabel("打印机名称");
         lblNewLabel_3_1_1_1_1_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1_1_1_1_1.setBounds(408, 71, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_1_1);
-        
+
         printName = new JTextField();
         printName.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         printName.setColumns(10);
         printName.setBounds(536, 71, 200, 30);
         indexPanelD.add(printName);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1_1 = new JLabel("标签名称");
         lblNewLabel_3_1_1_1_1_1_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1_1_1_1_1_1.setBounds(408, 123, 120, 30);
 //        indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_1_1_1);
-        
+
         labelName = new JTextField();
         labelName.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         labelName.setColumns(10);
         labelName.setBounds(536, 123, 200, 30);
 //        indexPanelD.add(labelName);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1_1_1 = new JLabel("标签偏移X");
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1.setBounds(408, 176, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_1_1_1_1);
-        
+
         labelx = new JTextField();
         labelx.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         labelx.setColumns(10);
         labelx.setBounds(536, 176, 200, 30);
         indexPanelD.add(labelx);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1 = new JLabel("标签偏移Y");
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1.setBounds(408, 229, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1);
-        
+
         labely = new JTextField();
         labely.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         labely.setColumns(10);
         labely.setBounds(536, 229, 200, 30);
         indexPanelD.add(labely);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1 = new JLabel("标签行间距");
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1.setBounds(408, 282, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1);
-        
+
         labelLineSpace = new JTextField();
         labelLineSpace.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         labelLineSpace.setColumns(10);
         labelLineSpace.setBounds(536, 282, 200, 30);
         indexPanelD.add(labelLineSpace);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1 = new JLabel("标签字号");
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
 //        lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1.setBounds(408, 335, 120, 30);
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1.setBounds(408, 123, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1);
-        
+
         labelFont = new JTextField();
         labelFont.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         labelFont.setColumns(10);
@@ -1594,7 +1677,7 @@ public class MesClient extends JFrame {
         stationNo.setColumns(10);
         stationNo.setBounds(536, 335, 200, 30);
         indexPanelD.add(stationNo);
-        
+
         saveBtn = new JButton("编辑配置");
         saveBtn.setFont(new Font("微软雅黑", Font.PLAIN, 20));
         saveBtn.setBounds(787, 267, 156, 57);
@@ -1675,7 +1758,7 @@ public class MesClient extends JFrame {
 
             }
         });
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_2 = new JLabel("泄露值取值");
         lblNewLabel_3_1_1_1_1_1_1_2.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1_2.setFont(new Font("微软雅黑", Font.PLAIN, 16));
@@ -1683,7 +1766,7 @@ public class MesClient extends JFrame {
 //        lblNewLabel_3_1_1_1_1_1_1_2.setBounds(408, 390, 120, 30);
         lblNewLabel_3_1_1_1_1_1_1_2.setBounds(10, 390, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_2);
-        
+
         leakage = new JComboBox();
         leakage.setModel(new DefaultComboBoxModel(new String[] {"压降", "泄漏率"}));
         leakage.setFont(new Font("微软雅黑", Font.PLAIN, 16));
@@ -1691,31 +1774,31 @@ public class MesClient extends JFrame {
 //        leakage.setBounds(536, 390, 200, 30);
         leakage.setBounds(140, 390, 200, 30);
         indexPanelD.add(leakage);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1 = new JLabel("工件码长度");
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1.setBounds(408, 390, 120, 30);
 //        indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1);
-        
+
         productSnLength = new JTextField();
         productSnLength.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         productSnLength.setColumns(10);
         productSnLength.setBounds(536, 390, 200, 30);
 //        indexPanelD.add(productSnLength);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1 = new JLabel("工件码前缀");
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1.setBounds(10, 390, 120, 30);
 //        indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1);
-        
+
         productSnPre = new JTextField();
         productSnPre.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         productSnPre.setColumns(10);
         productSnPre.setBounds(140, 390, 200, 30);
 //        indexPanelD.add(productSnPre);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1_2 = new JLabel("检测设备");
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1_2.setHorizontalAlignment(SwingConstants.RIGHT);
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1_2.setFont(new Font("微软雅黑", Font.PLAIN, 16));
@@ -1723,7 +1806,7 @@ public class MesClient extends JFrame {
 //        lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1_2.setBounds(10, 390, 120, 30);
         lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1_2.setBounds(10, 22, 120, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_1_1_1_1_1_1_1_1_2);
-        
+
         device = new JComboBox();
         device.setModel(new DefaultComboBoxModel(new String[] {"innomatec", "ateq"}));
         device.setFont(new Font("微软雅黑", Font.PLAIN, 16));
@@ -1731,7 +1814,7 @@ public class MesClient extends JFrame {
 //        device.setBounds(140, 390, 200, 30);
         device.setBounds(140, 22, 200, 30);
         indexPanelD.add(device);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1_2 = new JLabel("工位号");
         lblNewLabel_3_1_1_1_1_1_1_1_1_2.setHorizontalAlignment(SwingConstants.CENTER);
         lblNewLabel_3_1_1_1_1_1_1_1_1_2.setFont(new Font("微软雅黑", Font.PLAIN, 16));
@@ -1748,13 +1831,13 @@ public class MesClient extends JFrame {
         oprno.setColumns(10);
         oprno.setBounds(762, 54, 200, 30);
         indexPanelD.add(oprno);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1_2_1 = new JLabel("工位名称");
         lblNewLabel_3_1_1_1_1_1_1_1_1_2_1.setHorizontalAlignment(SwingConstants.CENTER);
         lblNewLabel_3_1_1_1_1_1_1_1_1_2_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));
         lblNewLabel_3_1_1_1_1_1_1_1_1_2_1.setBounds(762, 94, 200, 30);
         indexPanelD.add(lblNewLabel_3_1_1_1_1_1_1_1_1_2_1);
-        
+
 //        ngNumber = new JTextField();
 //        ngNumber.setFont(new Font("微软雅黑", Font.PLAIN, 16));
 //        ngNumber.setColumns(10);
@@ -1765,7 +1848,7 @@ public class MesClient extends JFrame {
         oprnoTitle.setColumns(10);
         oprnoTitle.setBounds(762, 123, 200, 30);
         indexPanelD.add(oprnoTitle);
-        
+
         JLabel lblNewLabel_3_1_1_1_1_1_1_1_1_2_1_1 = new JLabel("产线编号");
         lblNewLabel_3_1_1_1_1_1_1_1_1_2_1_1.setHorizontalAlignment(SwingConstants.CENTER);
         lblNewLabel_3_1_1_1_1_1_1_1_1_2_1_1.setFont(new Font("微软雅黑", Font.PLAIN, 16));

+ 1 - 20
src/com/mes/util/SerialPortUtils.java

@@ -1,10 +1,8 @@
 package com.mes.util;
 
-import com.alibaba.fastjson2.JSONObject;
 import com.fazecast.jSerialComm.SerialPort;
 import com.fazecast.jSerialComm.SerialPortDataListener;
 import com.fazecast.jSerialComm.SerialPortEvent;
-import com.mes.ui.DataUtil;
 import com.mes.ui.MesClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -177,24 +175,7 @@ public class SerialPortUtils {
 
                                                         String testDate = DateLocalUtils.getCurrentTime();
                                                         testParam.setCreateTime(testDate);
-                                                        JdbcUtils.insertTestRecord(testParam);
-
-                                                        if(MesClient.mes_enable){ // MES开启
-                                                            JSONObject retObj = DataUtil.qmResultData(testParam);
-                                                            if(retObj != null && retObj.get("result") != null && retObj.get("result").toString().equalsIgnoreCase("true")) {
-                                                                MesClient.resetScanA();
-                                                                MesClient.setMenuStatus("测试结果上传成功,请扫下一件",0);
-                                                            }else{
-                                                                MesClient.setMenuStatus("测试结果上传失败,请重试",-1);
-                                                                return;
-                                                            }
-                                                        }else{
-                                                            MesClient.resetScanA();
-                                                        }
-
-                                                        if(MesClient.configParam.getPrintLabel().equals("是") && lastRet.equals("OK")){
-                                                            PrintUtil.printLabel(testParam.getSn(),testParam.getParam1()+testParam.getParam2(),testParam.getParam3()+testParam.getParam4(),testDate);
-                                                        }
+                                                        MesClient.afterTestSaveAndUpload(testParam);
 
                                                     } catch (Exception e) {
                                                         log.info(e.getMessage());

+ 10 - 0
src/com/mes/util/TestParam.java

@@ -17,6 +17,7 @@ public class TestParam {
     public String result;
     public String remark;
     public String deviceType;
+    public String ngLeakPoints;
 
     public Integer getId() {
         return id;
@@ -138,6 +139,14 @@ public class TestParam {
         this.lineSn = lineSn;
     }
 
+    public String getNgLeakPoints() {
+        return ngLeakPoints;
+    }
+
+    public void setNgLeakPoints(String ngLeakPoints) {
+        this.ngLeakPoints = ngLeakPoints;
+    }
+
     @Override
     public String toString() {
         return "TestParam{" +
@@ -156,6 +165,7 @@ public class TestParam {
                 ", result='" + result + '\'' +
                 ", remark='" + remark + '\'' +
                 ", deviceType='" + deviceType + '\'' +
+                ", ngLeakPoints='" + ngLeakPoints + '\'' +
                 '}';
     }
 }

+ 1 - 20
src/com/mes/util/WorkTimer.java

@@ -1,7 +1,5 @@
 package com.mes.util;
 
-import com.alibaba.fastjson2.JSONObject;
-import com.mes.ui.DataUtil;
 import com.mes.ui.MesClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -111,24 +109,7 @@ public class WorkTimer {
                         testParam.setDeviceType("ateq");
                         testParam.setRemark("");
                         testParam.setCreateTime(testDate);
-                        JdbcUtils.insertTestRecord(testParam);
-
-                        if(MesClient.mes_enable){ // MES开启
-                            JSONObject retObj = DataUtil.qmResultData(testParam);
-                            if(retObj != null && retObj.get("result") != null && retObj.get("result").toString().equalsIgnoreCase("true")) {
-                                MesClient.resetScanA();
-                                MesClient.setMenuStatus("测试结果上传成功,请扫下一件",0);
-                            }else{
-                                MesClient.setMenuStatus("测试结果上传失败,请重试",-1);
-                                return;
-                            }
-                        }else{
-                            MesClient.resetScanA();
-                        }
-
-                        if(MesClient.configParam.getPrintLabel().equals("是") && lastRet.equals("OK")){
-                            PrintUtil.printLabel(testParam.getSn(),testParam.getParam1()+testParam.getParam2(),testParam.getParam3()+testParam.getParam4(),testDate);
-                        }
+                        MesClient.afterTestSaveAndUpload(testParam);
                     }
                 }
             } catch (Exception e) {