张田野 il y a 1 semaine
Parent
commit
5c07b0f0c2

+ 54 - 0
src/com/mes/ui/DataUtil.java

@@ -292,4 +292,58 @@ public class DataUtil {
         }
         return result;
     }
+
+    public static JSONObject addNgData(String sn,String pos) {
+        try{
+            String enconding = "UTF-8";
+            InputStream is = ClassLoader.getSystemResourceAsStream("config/config.properties");
+            Properties pro = new Properties();
+            BufferedReader br = new BufferedReader(new InputStreamReader(is, enconding));
+            pro.load(br);
+            String mes_server_ip = pro.getProperty("mes.server_ip");
+            String oprno = pro.getProperty("mes.gw").trim();
+            String lineSn = pro.getProperty("mes.line_sn").trim();
+            String url = "http://"+mes_server_ip+":8980/js/a/mes/mesProductNg/addData";
+            String params = "__ajax=json&oprno="+oprno+"&lineSn="+lineSn+"&sn="+sn+"&pos="+pos;
+            System.out.println("url="+url);
+            System.out.println("params="+params);
+            String result = doPost(url,params);
+            System.out.println("result="+result);
+
+            if(result.equalsIgnoreCase("false")) {
+                return null;
+            }else {
+                return JSONObject.parseObject(result);
+            }
+        }catch (Exception e){
+            return null;
+        }
+    }
+
+    public static JSONObject checkNgData(String sn,String pos) {
+        try{
+            String enconding = "UTF-8";
+            InputStream is = ClassLoader.getSystemResourceAsStream("config/config.properties");
+            Properties pro = new Properties();
+            BufferedReader br = new BufferedReader(new InputStreamReader(is, enconding));
+            pro.load(br);
+            String mes_server_ip = pro.getProperty("mes.server_ip");
+            String oprno = pro.getProperty("mes.gw").trim();
+            String lineSn = pro.getProperty("mes.line_sn").trim();
+            String url = "http://"+mes_server_ip+":8980/js/a/mes/mesProductNg/ngcheck";
+            String params = "__ajax=json&oprno="+oprno+"&lineSn="+lineSn+"&sn="+sn+"&pos="+pos;
+            System.out.println("url="+url);
+            System.out.println("params="+params);
+            String result = doPost(url,params);
+            System.out.println("result="+result);
+
+            if(result.equalsIgnoreCase("false")) {
+                return null;
+            }else {
+                return JSONObject.parseObject(result);
+            }
+        }catch (Exception e){
+            return null;
+        }
+    }
 }

+ 415 - 7
src/com/mes/ui/MesClient.java

@@ -101,13 +101,13 @@ public class MesClient extends JFrame {
 
     public static Timer cjTimer3;
 
-    public static Short aSetNum = 81;
+    public static Short aSetNum = 40;
 //    public static Short aSetNum = 49;
     public static Short sortA = 0;
     public static Short aMax = 0;
     public static Short aFinish = 0;
     public static List<Map> alist = new ArrayList<>();
-    public static Short bSetNum = 1;
+    public static Short bSetNum = 41;
 //    public static Short bSetNum = 27;
     public static Short sortB = 0;
     public static Short bMax = 0;
@@ -116,6 +116,17 @@ public class MesClient extends JFrame {
     public static Short sortC = 0;
     public static Short cMax = 0;
     public static List<Map> clist = new ArrayList<>();
+
+    /** 国内版工件码前缀:C枪1颗 */
+    public static final String[] SN_DOMESTIC_PREFIXES = {
+            "5019016600341", "5019016600511"
+    };
+    /** 海外版工件码前缀:C枪2颗 */
+    public static final String[] SN_OVERSEAS_PREFIXES = {
+            "5019016600571", "5003136600051", "5003136600651", "5003136600661"
+    };
+    public static final Short C_SET_NUM_DOMESTIC = 1;
+    public static final Short C_SET_NUM_OVERSEAS = 2;
     public static Short deviceControl = 0; // 0=本地 1=远程
     public static Integer tjStatus = 0; // 1=提交失败
 
@@ -123,6 +134,40 @@ public class MesClient extends JFrame {
 
     public static String curSn = "";
 
+    public static Integer zdStatusA = 0;
+    public static Integer zdStatusB = 0;
+    public static Integer zdStatusC = 0;
+    public static String foutA = "";
+    public static String fmaxA = "";
+    public static String fminA = "";
+    public static String soutA = "";
+    public static String smaxA = "";
+    public static String sminA = "";
+    public static String curA = "";
+    public static String foutB = "";
+    public static String fmaxB = "";
+    public static String fminB = "";
+    public static String soutB = "";
+    public static String smaxB = "";
+    public static String sminB = "";
+    public static String curB = "";
+    public static String foutC = "";
+    public static String fmaxC = "";
+    public static String fminC = "";
+    public static String soutC = "";
+    public static String smaxC = "";
+    public static String sminC = "";
+    public static String curC = "";
+    public static JButton resetResultA;
+    public static JButton okResultA;
+    public static JButton ngResultA;
+    public static JButton resetResultB;
+    public static JButton okResultB;
+    public static JButton ngResultB;
+    public static JButton resetResultC;
+    public static JButton okResultC;
+    public static JButton ngResultC;
+
     public static JTable table;
     public static Object[] columnNames = { "物料名称", "绑定批次", "剩余次数", "操作" };
     public static Object[][] rowData = null;
@@ -171,7 +216,9 @@ public class MesClient extends JFrame {
                     if(work_status == 1){
                         List<Boolean> yxstatus = plcA.readCoil(3128,1);
                         if(yxstatus.size() >= 1 && !yxstatus.get(0)){
-                            if(!MesClient.curSn.isEmpty() && MesClient.aMax > 0 && MesClient.aMax == MesClient.sortA){
+                            if(MesClient.zdStatusA == 1){
+                                // NG复判中断中,保持锁枪
+                            }else if(!MesClient.curSn.isEmpty() && MesClient.aMax > 0 && MesClient.aMax == MesClient.sortA){
                                 ModbusUtil.setPowerOff(plcA);
                             }else{
                                 ModbusUtil.setPowerOn(plcA);
@@ -180,7 +227,9 @@ public class MesClient extends JFrame {
 
                         List<Boolean> yxstatusb = plcB.readCoil(3128,1);
                         if(yxstatusb.size() >= 1 && !yxstatusb.get(0)){
-                            if(!MesClient.curSn.isEmpty() && MesClient.bMax > 0 && MesClient.bMax == MesClient.sortB){
+                            if(MesClient.zdStatusB == 1){
+                                // NG复判中断中,保持锁枪
+                            }else if(!MesClient.curSn.isEmpty() && MesClient.bMax > 0 && MesClient.bMax == MesClient.sortB){
                                 ModbusUtil.setPowerOff(plcB);
                             }else{
                                 ModbusUtil.setPowerOn(plcB);
@@ -189,7 +238,9 @@ public class MesClient extends JFrame {
 
                         List<Boolean> yxstatusc = plcC.readCoil(3128,1);
                         if(yxstatusc.size() >= 1 && !yxstatusc.get(0)){
-                            if(!MesClient.curSn.isEmpty() && MesClient.cMax > 0 && MesClient.cMax == MesClient.sortC){
+                            if(MesClient.zdStatusC == 1){
+                                // NG复判中断中,保持锁枪
+                            }else if(!MesClient.curSn.isEmpty() && MesClient.cMax > 0 && MesClient.cMax == MesClient.sortC){
                                 ModbusUtil.setPowerOff(plcC);
                             }else{
                                 ModbusUtil.setPowerOn(plcC);
@@ -450,6 +501,7 @@ public class MesClient extends JFrame {
         MesClient.sortB = 0;
         MesClient.sortA = 0;
         MesClient.sortC = 0;
+        MesClient.cSetNum = C_SET_NUM_DOMESTIC;
         MesClient.param1.setText("");
         MesClient.param2.setText("");
         MesClient.param3.setText("");
@@ -457,6 +509,19 @@ public class MesClient extends JFrame {
         MesClient.param5.setText("");
         MesClient.param6.setText("");
 
+        zdStatusA = 0;
+        zdStatusB = 0;
+        zdStatusC = 0;
+        resetResultA.setEnabled(false);
+        okResultA.setEnabled(false);
+        ngResultA.setEnabled(false);
+        resetResultB.setEnabled(false);
+        okResultB.setEnabled(false);
+        ngResultB.setEnabled(false);
+        resetResultC.setEnabled(false);
+        okResultC.setEnabled(false);
+        ngResultC.setEnabled(false);
+
         deviceControl = ModbusUtil.getControlModel(plcA);
         if(deviceControl == 1){
 
@@ -509,6 +574,31 @@ public class MesClient extends JFrame {
         return barcodeRet;
     }
 
+    /**
+     * 按工件码前缀判断国内/海外,设置C枪颗数:国内1颗,海外2颗。
+     * 国内:5019016600341(四驱)、5019016600511(后驱)
+     * 海外:5019016600571(四驱)、5003136600051(后驱)、5003136600651(右舵四驱)、5003136600661(右舵二驱)
+     */
+    public static void updateCSetNumBySn(String sn) {
+        if(sn == null || sn.isEmpty()){
+            cSetNum = C_SET_NUM_DOMESTIC;
+            return;
+        }
+        for(String p : SN_OVERSEAS_PREFIXES){
+            if(sn.startsWith(p)){
+                cSetNum = C_SET_NUM_OVERSEAS;
+                return;
+            }
+        }
+        for(String p : SN_DOMESTIC_PREFIXES){
+            if(sn.startsWith(p)){
+                cSetNum = C_SET_NUM_DOMESTIC;
+                return;
+            }
+        }
+        cSetNum = C_SET_NUM_DOMESTIC;
+    }
+
     public static void scanBarcode() {
         if(work_status == 1){
             JOptionPane.showMessageDialog(mesClientFrame,"工作中,勿扫码","提示窗口", JOptionPane.INFORMATION_MESSAGE);
@@ -535,6 +625,8 @@ public class MesClient extends JFrame {
                 case 1:
                     product_sn.setText(scanBarcode);
                     curSn = scanBarcode;
+                    // 扫码后按国内/海外前缀设置C枪颗数
+                    updateCSetNumBySn(scanBarcode);
                     break;
             }
             //刷新界面
@@ -760,7 +852,7 @@ public class MesClient extends JFrame {
         finish_ok_bt.setIcon(new ImageIcon(MesClient.class.getResource("/bg/ok_bg.png")));
         finish_ok_bt.setFont(new Font("微软雅黑", Font.PLAIN, 32));
 //        finish_ok_bt.setBounds(185, 291, 240, 80);
-        finish_ok_bt.setBounds(185, 371, 240, 80);
+        finish_ok_bt.setBounds(185, 395, 240, 80);
         finish_ok_bt.setEnabled(false);
         indexPanelA.add(finish_ok_bt);
 
@@ -784,7 +876,7 @@ public class MesClient extends JFrame {
         });
         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, 371, 240, 80);
+        finish_ng_bt.setBounds(508, 395, 240, 80);
         finish_ng_bt.setEnabled(false);
         indexPanelA.add(finish_ng_bt);
 
@@ -890,6 +982,322 @@ public class MesClient extends JFrame {
         param6.setBounds(743, 285, 83, 34);
         indexPanelA.add(param6);
 
+        JLabel lblNgJudgeA = new JLabel("NG\u590d\u5224");
+        lblNgJudgeA.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        lblNgJudgeA.setBounds(100, 322, 167, 22);
+        indexPanelA.add(lblNgJudgeA);
+
+        JLabel lblNgJudgeB = new JLabel("NG\u590d\u5224");
+        lblNgJudgeB.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        lblNgJudgeB.setBounds(380, 322, 167, 22);
+        indexPanelA.add(lblNgJudgeB);
+
+        JLabel lblNgJudgeC = new JLabel("NG\u590d\u5224");
+        lblNgJudgeC.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        lblNgJudgeC.setBounds(660, 322, 167, 22);
+        indexPanelA.add(lblNgJudgeC);
+
+        resetResultA = new JButton("重拉");
+        resetResultA.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if(zdStatusA == 1){
+                    JSONObject retObj = DataUtil.checkNgData(product_sn.getText(),"A");
+                    if(retObj.get("result")!=null&&retObj.get("result").toString().equalsIgnoreCase("true")) {
+                        zdStatusA = 0;
+                        resetResultA.setEnabled(false);
+                        okResultA.setEnabled(false);
+                        ngResultA.setEnabled(false);
+                        sortA = (short)(sortA - 1);
+                        param2.setText(sortA+"");
+                        plcA.writeInt16(1136, sortA);
+                        foutA = "";
+                        soutA = "";
+                        fmaxA = "";
+                        fminA = "";
+                        smaxA = "";
+                        sminA = "";
+                        curA = "";
+                        ModbusUtil.setPowerOn(plcA);
+                    }else{
+                        setMenuStatus("NG中断未审核",-1);
+                    }
+                }
+            }
+        });
+        resetResultA.setEnabled(false);
+        resetResultA.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        resetResultA.setBounds(100, 348, 70, 36);
+        indexPanelA.add(resetResultA);
+
+        okResultA = new JButton("OK");
+        okResultA.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if(zdStatusA == 1){
+                    JSONObject retObj = DataUtil.checkNgData(product_sn.getText(),"A");
+                    if(retObj.get("result")!=null&&retObj.get("result").toString().equalsIgnoreCase("true")) {
+                        if(!product_sn.getText().isEmpty()){
+                            aFinish++;
+                            JdbcUtils.insertProdData(mes_gw, mes_line_sn, product_sn.getText(),"A",foutA,soutA,fminA,sminA,fmaxA,smaxA,"1",curA, user_menu.getText());
+                        }
+                        zdStatusA = 0;
+                        resetResultA.setEnabled(false);
+                        okResultA.setEnabled(false);
+                        ngResultA.setEnabled(false);
+                        foutA = "";
+                        soutA = "";
+                        fmaxA = "";
+                        fminA = "";
+                        smaxA = "";
+                        sminA = "";
+                        curA = "";
+                        ModbusUtil.upResult();
+                        ModbusUtil.setPowerOn(plcA);
+                    }else{
+                        setMenuStatus("NG中断未审核",-1);
+                    }
+                }
+            }
+        });
+        okResultA.setEnabled(false);
+        okResultA.setForeground(new Color(0, 128, 0));
+        okResultA.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        okResultA.setBounds(177, 348, 70, 36);
+        indexPanelA.add(okResultA);
+
+        ngResultA = new JButton("NG");
+        ngResultA.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if(zdStatusA == 1){
+                    JSONObject retObj = DataUtil.checkNgData(product_sn.getText(),"A");
+                    if(retObj.get("result")!=null&&retObj.get("result").toString().equalsIgnoreCase("true")) {
+                        if(!product_sn.getText().isEmpty()){
+                            JdbcUtils.insertProdData(mes_gw, mes_line_sn, product_sn.getText(),"A",foutA,soutA,fminA,sminA,fmaxA,smaxA,"0",curA, user_menu.getText());
+                        }
+                        zdStatusA = 0;
+                        resetResultA.setEnabled(false);
+                        okResultA.setEnabled(false);
+                        ngResultA.setEnabled(false);
+                        foutA = "";
+                        soutA = "";
+                        fmaxA = "";
+                        fminA = "";
+                        smaxA = "";
+                        sminA = "";
+                        curA = "";
+                        ModbusUtil.upResult();
+                        ModbusUtil.setPowerOn(plcA);
+                    }else{
+                        setMenuStatus("NG中断未审核",-1);
+                    }
+                }
+            }
+        });
+        ngResultA.setEnabled(false);
+        ngResultA.setForeground(new Color(255, 0, 0));
+        ngResultA.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        ngResultA.setBounds(254, 348, 70, 36);
+        indexPanelA.add(ngResultA);
+
+        resetResultB = new JButton("重拉");
+        resetResultB.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if(zdStatusB == 1){
+                    JSONObject retObj = DataUtil.checkNgData(product_sn.getText(),"B");
+                    if(retObj.get("result")!=null&&retObj.get("result").toString().equalsIgnoreCase("true")) {
+                        zdStatusB = 0;
+                        resetResultB.setEnabled(false);
+                        okResultB.setEnabled(false);
+                        ngResultB.setEnabled(false);
+                        sortB = (short)(sortB - 1);
+                        param4.setText(sortB+"");
+                        plcB.writeInt16(1136, sortB);
+                        foutB = "";
+                        soutB = "";
+                        fmaxB = "";
+                        fminB = "";
+                        smaxB = "";
+                        sminB = "";
+                        curB = "";
+                        ModbusUtil.setPowerOn(plcB);
+                    }else{
+                        setMenuStatus("NG中断未审核",-1);
+                    }
+                }
+            }
+        });
+        resetResultB.setEnabled(false);
+        resetResultB.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        resetResultB.setBounds(380, 348, 70, 36);
+        indexPanelA.add(resetResultB);
+
+        okResultB = new JButton("OK");
+        okResultB.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if(zdStatusB == 1){
+                    JSONObject retObj = DataUtil.checkNgData(product_sn.getText(),"B");
+                    if(retObj.get("result")!=null&&retObj.get("result").toString().equalsIgnoreCase("true")) {
+                        if(!product_sn.getText().isEmpty()){
+                            JdbcUtils.insertProdData(mes_gw, mes_line_sn, product_sn.getText(),"B",foutB,soutB,fminB,sminB,fmaxB,smaxB,"1",curB, user_menu.getText());
+                        }
+                        zdStatusB = 0;
+                        resetResultB.setEnabled(false);
+                        okResultB.setEnabled(false);
+                        ngResultB.setEnabled(false);
+                        foutB = "";
+                        soutB = "";
+                        fmaxB = "";
+                        fminB = "";
+                        smaxB = "";
+                        sminB = "";
+                        curB = "";
+                        ModbusUtil.upResult();
+                        ModbusUtil.setPowerOn(plcB);
+                    }else{
+                        setMenuStatus("NG中断未审核",-1);
+                    }
+                }
+            }
+        });
+        okResultB.setEnabled(false);
+        okResultB.setForeground(new Color(0, 128, 0));
+        okResultB.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        okResultB.setBounds(457, 348, 70, 36);
+        indexPanelA.add(okResultB);
+
+        ngResultB = new JButton("NG");
+        ngResultB.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if(zdStatusB == 1){
+                    JSONObject retObj = DataUtil.checkNgData(product_sn.getText(),"B");
+                    if(retObj.get("result")!=null&&retObj.get("result").toString().equalsIgnoreCase("true")) {
+                        if(!product_sn.getText().isEmpty()){
+                            JdbcUtils.insertProdData(mes_gw, mes_line_sn, product_sn.getText(),"B",foutB,soutB,fminB,sminB,fmaxB,smaxB,"0",curB, user_menu.getText());
+                        }
+                        zdStatusB = 0;
+                        resetResultB.setEnabled(false);
+                        okResultB.setEnabled(false);
+                        ngResultB.setEnabled(false);
+                        foutB = "";
+                        soutB = "";
+                        fmaxB = "";
+                        fminB = "";
+                        smaxB = "";
+                        sminB = "";
+                        curB = "";
+                        ModbusUtil.upResult();
+                        ModbusUtil.setPowerOn(plcB);
+                    }else{
+                        setMenuStatus("NG中断未审核",-1);
+                    }
+                }
+            }
+        });
+        ngResultB.setEnabled(false);
+        ngResultB.setForeground(new Color(255, 0, 0));
+        ngResultB.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        ngResultB.setBounds(534, 348, 70, 36);
+        indexPanelA.add(ngResultB);
+
+        resetResultC = new JButton("重拉");
+        resetResultC.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if(zdStatusC == 1){
+                    JSONObject retObj = DataUtil.checkNgData(product_sn.getText(),"C");
+                    if(retObj.get("result")!=null&&retObj.get("result").toString().equalsIgnoreCase("true")) {
+                        zdStatusC = 0;
+                        resetResultC.setEnabled(false);
+                        okResultC.setEnabled(false);
+                        ngResultC.setEnabled(false);
+                        sortC = (short)(sortC - 1);
+                        param6.setText(sortC+"");
+                        plcC.writeInt16(1136, sortC);
+                        foutC = "";
+                        soutC = "";
+                        fmaxC = "";
+                        fminC = "";
+                        smaxC = "";
+                        sminC = "";
+                        curC = "";
+                        ModbusUtil.setPowerOn(plcC);
+                    }else{
+                        setMenuStatus("NG中断未审核",-1);
+                    }
+                }
+            }
+        });
+        resetResultC.setEnabled(false);
+        resetResultC.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        resetResultC.setBounds(660, 348, 70, 36);
+        indexPanelA.add(resetResultC);
+
+        okResultC = new JButton("OK");
+        okResultC.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if(zdStatusC == 1){
+                    JSONObject retObj = DataUtil.checkNgData(product_sn.getText(),"C");
+                    if(retObj.get("result")!=null&&retObj.get("result").toString().equalsIgnoreCase("true")) {
+                        if(!product_sn.getText().isEmpty()){
+                            JdbcUtils.insertProdData(mes_gw, mes_line_sn, product_sn.getText(),"C",foutC,soutC,fminC,sminC,fmaxC,smaxC,"1",curC, user_menu.getText());
+                        }
+                        zdStatusC = 0;
+                        resetResultC.setEnabled(false);
+                        okResultC.setEnabled(false);
+                        ngResultC.setEnabled(false);
+                        foutC = "";
+                        soutC = "";
+                        fmaxC = "";
+                        fminC = "";
+                        smaxC = "";
+                        sminC = "";
+                        curC = "";
+                        ModbusUtil.upResult();
+                        ModbusUtil.setPowerOn(plcC);
+                    }else{
+                        setMenuStatus("NG中断未审核",-1);
+                    }
+                }
+            }
+        });
+        okResultC.setEnabled(false);
+        okResultC.setForeground(new Color(0, 128, 0));
+        okResultC.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        okResultC.setBounds(737, 348, 70, 36);
+        indexPanelA.add(okResultC);
+
+        ngResultC = new JButton("NG");
+        ngResultC.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if(zdStatusC == 1){
+                    JSONObject retObj = DataUtil.checkNgData(product_sn.getText(),"C");
+                    if(retObj.get("result")!=null&&retObj.get("result").toString().equalsIgnoreCase("true")) {
+                        if(!product_sn.getText().isEmpty()){
+                            JdbcUtils.insertProdData(mes_gw, mes_line_sn, product_sn.getText(),"C",foutC,soutC,fminC,sminC,fmaxC,smaxC,"0",curC, user_menu.getText());
+                        }
+                        zdStatusC = 0;
+                        resetResultC.setEnabled(false);
+                        okResultC.setEnabled(false);
+                        ngResultC.setEnabled(false);
+                        foutC = "";
+                        soutC = "";
+                        fmaxC = "";
+                        fminC = "";
+                        smaxC = "";
+                        sminC = "";
+                        curC = "";
+                        ModbusUtil.upResult();
+                        ModbusUtil.setPowerOn(plcC);
+                    }else{
+                        setMenuStatus("NG中断未审核",-1);
+                    }
+                }
+            }
+        });
+        ngResultC.setEnabled(false);
+        ngResultC.setForeground(new Color(255, 0, 0));
+        ngResultC.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        ngResultC.setBounds(814, 348, 70, 36);
+        indexPanelA.add(ngResultC);
+
         tabbedPane.addTab("工作面板", new ImageIcon(MesClient.class.getResource("/bg/a_side.png")), indexScrollPaneA, null);
         tabbedPane.setEnabledAt(0, true);
 

+ 8 - 0
src/com/mes/ui/MesRevice.java

@@ -62,6 +62,14 @@ public class MesRevice {
                 ModbusUtil.setTask(MesClient.plcA,MesClient.aSetNum);
                 ModbusUtil.setTask(MesClient.plcB,MesClient.bSetNum);
                 ModbusUtil.setTask(MesClient.plcC,MesClient.cSetNum);
+
+                // 开工后以本次下发颗数为准刷新预设,避免定时器在 reset 阶段已把 cMax 读成旧值(1)导致海外2颗界面仍显示1、且无法点OK
+                MesClient.aMax = MesClient.aSetNum;
+                MesClient.bMax = MesClient.bSetNum;
+                MesClient.cMax = MesClient.cSetNum;
+                MesClient.param1.setText(String.valueOf(MesClient.aMax));
+                MesClient.param3.setText(String.valueOf(MesClient.bMax));
+                MesClient.param5.setText(String.valueOf(MesClient.cMax));
             }
         }catch (Exception e){
             e.printStackTrace();

+ 112 - 17
src/com/mes/ui/ModbusUtil.java

@@ -30,7 +30,7 @@ public class ModbusUtil {
             MesClient.param1.setText(String.valueOf(MesClient.aMax));
         }
 
-        if(MesClient.sortA == cur - 1){
+        if(MesClient.sortA < cur){
             MesClient.sortA = cur;
             MesClient.aFinish = plc.readInt16(1138);
             String fout = plc.readInt16(1064)+"";
@@ -46,17 +46,44 @@ public class ModbusUtil {
             System.out.println("cur:"+cur);
 
             //210
-            if(MesClient.sortA == 75){
-                plc.writeInt16(1070,(short) 2500);
-                plc.writeInt16(1071,(short) 3500);
-            }
+//            if(MesClient.sortA == 75){
+//                plc.writeInt16(1070,(short) 2500);
+//                plc.writeInt16(1071,(short) 3500);
+//            }
 
             if(!MesClient.product_sn.getText().isEmpty()){
-                JdbcUtils.insertProdData(MesClient.mes_gw, MesClient.mes_line_sn, MesClient.product_sn.getText(),"A",fout,sout,fmin,smin,fmax,smax,"1",cur+"", MesClient.user_menu.getText());
+                String qty = "1";
+                if(Integer.valueOf(fout) < Integer.valueOf(fmin) || Integer.valueOf(fout) > Integer.valueOf(fmax)){
+                    qty = "0";
+                }
+                if(Float.valueOf(sout) < Float.valueOf(smin) || Float.valueOf(sout) > Float.valueOf(smax)){
+                    qty = "0";
+                }
+                // NG处理
+                if(qty.equals("0")){
+                    MesClient.zdStatusA = 1;
+                    MesClient.foutA = fout;
+                    MesClient.soutA = sout;
+                    MesClient.fmaxA = fmax;
+                    MesClient.fminA = fmin;
+                    MesClient.smaxA = smax;
+                    MesClient.sminA = smin;
+                    MesClient.curA = cur+"";
+                    MesClient.resetResultA.setEnabled(true);
+                    MesClient.okResultA.setEnabled(true);
+                    MesClient.ngResultA.setEnabled(true);
+                    setPowerOff(plc);
+                    DataUtil.addNgData(MesClient.product_sn.getText(),"A");
+                }
+                if(qty.equals("1")){
+                    JdbcUtils.insertProdData(MesClient.mes_gw, MesClient.mes_line_sn, MesClient.product_sn.getText(),"A",fout,sout,fmin,smin,fmax,smax,qty,cur+"", MesClient.user_menu.getText());
+                }
             }
         }
 
-        upResult();
+        if(MesClient.zdStatusA == 0 && MesClient.zdStatusB == 0 && MesClient.zdStatusC == 0){
+            upResult();
+        }
     }
 
     public static void getDataB(ModbusTcp plc){
@@ -81,7 +108,7 @@ public class ModbusUtil {
             MesClient.param3.setText(String.valueOf(MesClient.bMax));
         }
 
-        if(MesClient.sortB == cur - 1){
+        if(MesClient.sortB < cur){
             MesClient.sortB = cur;
             String fout = plc.readInt16(1064)+"";
             String sout = (float)plc.readInt16(1065)/1000+"";
@@ -92,10 +119,10 @@ public class ModbusUtil {
             String fmax = plc.readInt16(1069)+"";
             String smax = (float)plc.readInt16(1071)/1000+"";
 
-            if(MesClient.sortB == 18){
+            if(MesClient.sortB == 35){
 //                if(MesClient.bMax == 36){
-//                    plc.writeInt16(1070,(short) 4000);
-//                    plc.writeInt16(1071,(short) 5500);
+                    plc.writeInt16(1070,(short) 2500);
+                    plc.writeInt16(1071,(short) 4000);
 //                }
             }
 
@@ -104,11 +131,38 @@ public class ModbusUtil {
 
             System.out.println("cur:"+cur);
             if(!MesClient.product_sn.getText().isEmpty()){
-               JdbcUtils.insertProdData(MesClient.mes_gw, MesClient.mes_line_sn, MesClient.product_sn.getText(),"B",fout,sout,fmin,smin,fmax,smax,"1",cur+"", MesClient.user_menu.getText());
+                String qty = "1";
+                if(Integer.valueOf(fout) < Integer.valueOf(fmin) || Integer.valueOf(fout) > Integer.valueOf(fmax)){
+                    qty = "0";
+                }
+                if(Float.valueOf(sout) < Float.valueOf(smin) || Float.valueOf(sout) > Float.valueOf(smax)){
+                    qty = "0";
+                }
+                // NG处理
+                if(qty.equals("0")){
+                    MesClient.zdStatusB = 1;
+                    MesClient.foutB = fout;
+                    MesClient.soutB = sout;
+                    MesClient.fmaxB = fmax;
+                    MesClient.fminB = fmin;
+                    MesClient.smaxB = smax;
+                    MesClient.sminB = smin;
+                    MesClient.curB = cur+"";
+                    MesClient.resetResultB.setEnabled(true);
+                    MesClient.okResultB.setEnabled(true);
+                    MesClient.ngResultB.setEnabled(true);
+                    setPowerOff(plc);
+                    DataUtil.addNgData(MesClient.product_sn.getText(),"B");
+                }
+                if(qty.equals("1")){
+                    JdbcUtils.insertProdData(MesClient.mes_gw, MesClient.mes_line_sn, MesClient.product_sn.getText(),"B",fout,sout,fmin,smin,fmax,smax,qty,cur+"", MesClient.user_menu.getText());
+                }
             }
         }
 
-        upResult();
+        if(MesClient.zdStatusA == 0 && MesClient.zdStatusB == 0 && MesClient.zdStatusC == 0){
+            upResult();
+        }
 
     }
 
@@ -125,7 +179,7 @@ public class ModbusUtil {
             MesClient.param5.setText(String.valueOf(MesClient.cMax));
         }
 
-        if(MesClient.sortC == cur - 1){
+        if(MesClient.sortC < cur){
             MesClient.sortC = cur;
             String fout = plc.readInt16(1064)+"";
             String sout = (float)plc.readInt16(1065)/1000+"";
@@ -140,16 +194,46 @@ public class ModbusUtil {
 
             System.out.println("cur:"+cur);
             if(!MesClient.product_sn.getText().isEmpty()){
-               JdbcUtils.insertProdData(MesClient.mes_gw, MesClient.mes_line_sn, MesClient.product_sn.getText(),"C",fout,sout,fmin,smin,fmax,smax,"1",cur+"", MesClient.user_menu.getText());
+                String qty = "1";
+                if(Integer.valueOf(fout) < Integer.valueOf(fmin) || Integer.valueOf(fout) > Integer.valueOf(fmax)){
+                    qty = "0";
+                }
+                if(Float.valueOf(sout) < Float.valueOf(smin) || Float.valueOf(sout) > Float.valueOf(smax)){
+                    qty = "0";
+                }
+                // NG处理
+                if(qty.equals("0")){
+                    MesClient.zdStatusC = 1;
+                    MesClient.foutC = fout;
+                    MesClient.soutC = sout;
+                    MesClient.fmaxC = fmax;
+                    MesClient.fminC = fmin;
+                    MesClient.smaxC = smax;
+                    MesClient.sminC = smin;
+                    MesClient.curC = cur+"";
+                    MesClient.resetResultC.setEnabled(true);
+                    MesClient.okResultC.setEnabled(true);
+                    MesClient.ngResultC.setEnabled(true);
+                    setPowerOff(plc);
+                    DataUtil.addNgData(MesClient.product_sn.getText(),"C");
+                }
+                if(qty.equals("1")){
+                    JdbcUtils.insertProdData(MesClient.mes_gw, MesClient.mes_line_sn, MesClient.product_sn.getText(),"C",fout,sout,fmin,smin,fmax,smax,qty,cur+"", MesClient.user_menu.getText());
+                }
             }
         }
 
-        upResult();
+        if(MesClient.zdStatusA == 0 && MesClient.zdStatusB == 0 && MesClient.zdStatusC == 0){
+            upResult();
+        }
 
     }
 
     // 上传总结果
     public static void upResult(){
+        if (MesClient.zdStatusA != 0 || MesClient.zdStatusB != 0 || MesClient.zdStatusC != 0) {
+            return;
+        }
         if(!MesClient.curSn.isEmpty() && MesClient.aMax > 0 && MesClient.aMax == MesClient.sortA
                 && MesClient.bMax > 0 && MesClient.bMax == MesClient.sortB
                 && MesClient.cMax > 0 && MesClient.cMax == MesClient.sortC){
@@ -260,7 +344,18 @@ public class ModbusUtil {
             plc.writeInt16(1136,(short) 0);
             plc.writeInt16(1138,(short) 0);
 
-            if(setNum == 81){
+            if(setNum == 40){
+                plc.writeInt16(1070,(short) 3000);
+                plc.writeInt16(1071,(short) 4500);
+            }
+
+            if(setNum == 41){
+                plc.writeInt16(1070,(short) 3000);
+                plc.writeInt16(1071,(short) 4500);
+            }
+
+            // C枪:国内1颗 / 海外2颗,行程参数相同
+            if(setNum == 1 || setNum == 2){
                 plc.writeInt16(1070,(short) 3000);
                 plc.writeInt16(1071,(short) 4000);
             }