liuwei 1 тиждень тому
батько
коміт
ecfaa772b8
2 змінених файлів з 95 додано та 28 видалено
  1. 40 0
      src/com/mes/ui/DataUtil.java
  2. 55 28
      src/com/mes/ui/MesClient.java

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

@@ -175,6 +175,46 @@ public class DataUtil {
         }
     }
 
+    // HTTP方式 - 长短码绑定(OP105:短码与后面板长码绑定)
+    public static JSONObject pcBind(String sn, String wsn, String userCode) {
+        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/mesProductRecord/pcbind";
+
+            String params = "__ajax=json"
+                    + "&sn=" + sn
+                    + "&wsn=" + wsn
+                    + "&oprno=" + oprno
+                    + "&lineSn=" + lineSn
+                    + "&ucode=" + userCode
+                    + "&craft=100000";
+
+            System.out.println("pcBind params=" + params);
+
+            // 发送 POST 请求
+            String resultParams = doPost(url, params);
+            System.out.println("pcBind result=" + resultParams);
+
+            // 处理返回结果
+            if(resultParams == null || resultParams.trim().isEmpty() || resultParams.equalsIgnoreCase("false")) {
+                return null;
+            } else {
+                return JSONObject.parseObject(resultParams);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
     public static String doPost(String httpUrl, String param) {
         HttpURLConnection connection = null;
         InputStream is = null;

+ 55 - 28
src/com/mes/ui/MesClient.java

@@ -634,35 +634,9 @@ public class MesClient extends JFrame {
             //刷新界面
             mesClientFrame.repaint();
 
-            // 使用HTTP方式检查工件质量
+            // 第一道:检验(前站拦截)。失败则不绑定、不下发VIN、不放行
             JSONObject retObj = DataUtil.pcCheck(barcode36, user20);
-            if(retObj != null && retObj.get("result")!=null && retObj.get("result").toString().equalsIgnoreCase("true")) {
-                // 检查通过,可以加工
-                MesClient.check_quality_result = true;
-                MesClient.setMenuStatus("该工件可以加工",0);
-                MesClient.work_status = 1;
-                MesClient.f_scan_data_bt_1.setEnabled(false);
-                MesClient.finish_ok_bt.setEnabled(false);
-                MesClient.finish_ng_bt.setEnabled(false);
-
-                // 启动扭力枪(枪D已隐藏)
-//                YgslUtil.pSet(MesClient.ygslClient);
-//                YgslUtil2.pSet(MesClient.ygslClient2);
-//                YgslUtil3.pSet(MesClient.ygslClient3);
-//                YgslUtil4.pSet(MesClient.ygslClient4);
-                YgslUtil.uploadVin(MesClient.ygslClient,scanBarcode);
-                YgslUtil2.uploadVin(MesClient.ygslClient2,scanBarcode);
-                YgslUtil3.uploadVin(MesClient.ygslClient3,scanBarcode);
-                if(ENABLE_GUN_D) {
-                    YgslUtil4.uploadVin(MesClient.ygslClient4,scanBarcode);
-                }
-
-                MesClient.atids.clear();
-                MesClient.btids.clear();
-                MesClient.ctids.clear();
-                MesClient.dtids.clear();
-            }else{
-                // 检查失败
+            if(retObj == null || retObj.get("result") == null || !retObj.get("result").toString().equalsIgnoreCase("true")) {
                 MesClient.check_quality_result = false;
                 if(retObj == null || retObj.get("result") == null){
                     MesClient.setMenuStatus("请求失败,请重试",-1);
@@ -674,7 +648,60 @@ public class MesClient extends JFrame {
                         MesClient.setMenuStatus("该工件不可加工",-1);
                     }
                 }
+                return;
+            }
+
+            // 第二道:扫后面板码(长码),绑定短码与长码
+            String wsn = JOptionPane.showInputDialog(null, "请扫后面板码");
+            if(wsn == null || wsn.equalsIgnoreCase("")) {
+                MesClient.check_quality_result = false;
+                MesClient.setMenuStatus("请扫后面板码",-1);
+                return;
+            }
+            wsn = wsn.trim();
+
+            JSONObject bindObj = DataUtil.pcBind(barcode36, wsn, user20);
+            if(bindObj == null || bindObj.get("result") == null || !bindObj.get("result").toString().equalsIgnoreCase("true")) {
+                // 绑定失败:不使能枪、不放行,保留短码显示便于重扫
+                MesClient.check_quality_result = false;
+                if(bindObj == null || bindObj.get("result") == null){
+                    MesClient.setMenuStatus("绑定失败,请重试",-1);
+                }else{
+                    String msg = bindObj.getString("message");
+                    if(msg != null && !msg.isEmpty()){
+                        MesClient.setMenuStatus(msg,-1);
+                    }else{
+                        MesClient.setMenuStatus("绑定失败",-1);
+                    }
+                }
+                return;
+            }
+
+            // 绑定成功,才向锁付枪下发VIN并放行
+            MesClient.check_quality_result = true;
+            MesClient.setMenuStatus("该工件可以加工",0);
+            MesClient.work_status = 1;
+            MesClient.f_scan_data_bt_1.setEnabled(false);
+            // OK/NG 仍保持禁用,待四枪完成后由枪回调自动启用并提交结果
+            MesClient.finish_ok_bt.setEnabled(false);
+            MesClient.finish_ng_bt.setEnabled(false);
+
+            // 启动扭力枪(枪D已隐藏)
+//                YgslUtil.pSet(MesClient.ygslClient);
+//                YgslUtil2.pSet(MesClient.ygslClient2);
+//                YgslUtil3.pSet(MesClient.ygslClient3);
+//                YgslUtil4.pSet(MesClient.ygslClient4);
+            YgslUtil.uploadVin(MesClient.ygslClient,scanBarcode);
+            YgslUtil2.uploadVin(MesClient.ygslClient2,scanBarcode);
+            YgslUtil3.uploadVin(MesClient.ygslClient3,scanBarcode);
+            if(ENABLE_GUN_D) {
+                YgslUtil4.uploadVin(MesClient.ygslClient4,scanBarcode);
             }
+
+            MesClient.atids.clear();
+            MesClient.btids.clear();
+            MesClient.ctids.clear();
+            MesClient.dtids.clear();
         }else {
             JOptionPane.showMessageDialog(mesClientFrame,"请扫工件码","提示窗口", JOptionPane.INFORMATION_MESSAGE);
             return;