hbx 2 недель назад
Родитель
Сommit
a03bccd545

+ 0 - 48
src/com/mes/component/MesWebView.java

@@ -1,48 +0,0 @@
-package com.mes.component;
-
-import javafx.application.Platform;
-import javafx.beans.value.ObservableValue;
-import javafx.concurrent.Worker;
-import javafx.embed.swing.JFXPanel;
-import javafx.scene.Scene;
-import javafx.scene.web.WebEngine;
-import javafx.scene.web.WebView;
-import netscape.javascript.JSObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Date;
-
-public class MesWebView extends JFXPanel {
-
-    public static final Logger log =  LoggerFactory.getLogger(MesWebView.class);
-
-    public static WebEngine engine = null;
-
-    public MesWebView(String url){
-
-        Platform.runLater(() -> {
-            WebView webView = new WebView();
-            setScene(new Scene(webView));
-            Date date = new Date();
-//            String url = "http://"+mes_server_ip+":8980/js/a/mes/mesQuality/check?__sid="+sessionid+"&oprno="+mes_gw+"&t="+date.getTime();
-            log.info(url);
-            engine = webView.getEngine();
-            CallFromJs bridge = new CallFromJs();
-            engine.getLoadWorker().stateProperty().addListener(
-                    (ObservableValue<? extends Worker.State> ov, Worker.State oldState, Worker.State newState) -> {
-                        if (newState == Worker.State.SUCCEEDED) {
-                            JSObject window = (JSObject) engine.executeScript("window");
-                            window.setMember("apps", bridge);
-                            window.setMember("sout", System.out);
-                        }
-                    }
-            );
-            engine.load(url);
-        });
-    }
-
-    public void reloadWeb(){
-        engine.reload();
-    }
-}

+ 43 - 9
src/com/mes/component/WorkJPanel70Xh.java

@@ -78,6 +78,20 @@ public class WorkJPanel70Xh extends JPanel {
 
     public String plcDb2 = "DB7010";
 
+    // 扫码信号地址(反面OP080沿用DB7010原有地址;正面OP070复用原OP060设备面板的DB7000地址)
+    public String addrScanFeeding = plcDb2 + ".0.0";      // 请求扫码
+    public String addrScanFinish = plcDb2 + ".0.1";       // 扫码完成/MES允许上料反馈
+    public String addrTransferToDevice = plcDb2 + ".0.2"; // 中转车上料到设备
+    public String addrTransferNo = plcDb2 + ".2.0";       // 中转车号
+    public String addrTransferFloor = plcDb2 + ".4.0";    // 中转车层数
+
+    // 扫码枪通道:1/3=正面(原OP060),2/4=反面(原OP070)
+    public int scanWest = 2;
+    public int scanEast = 4;
+
+    // 是否由本面板写扫码完成反馈位(正面OP070的反馈位即DB7000.0.4 MES允许上料,由设备面板自行管理,此处不写)
+    public boolean ownsScanFeedback = true;
+
     public String preSn = ""; // 扫码内容
 
     public Integer tjFeedingFlag = 0; // 上料状态标识
@@ -109,10 +123,27 @@ public class WorkJPanel70Xh extends JPanel {
     public String cacheName = "";
 
     public WorkJPanel70Xh(String position){
+        this("OP080", position); // 默认反面换型台(原OP070配置)
+    }
+
+    public WorkJPanel70Xh(String oprno, String position){
+        this.oprno = oprno;
         this.setLayout(null);
         this.setBackground(Color.WHITE);
         this.pos = position;
 
+        if("OP070".equals(oprno)){ // 正面换型台:复用原OP060设备面板的DB7000扫码信号,扫码枪用1/3通道
+            plcDb = "DB7000";
+            addrScanFeeding = plcDb + ".0.0";      // 原OP060:请求上料/扫码
+            addrScanFinish = plcDb + ".0.4";       // 原OP060:MES允许上料
+            addrTransferToDevice = plcDb + ".1.1"; // 原OP060:中转车上料到设备
+            addrTransferNo = plcDb + ".2.0";
+            addrTransferFloor = plcDb + ".4.0";
+            scanWest = 1;
+            scanEast = 3;
+            ownsScanFeedback = false; // DB7000.0.4 由WorkJPanelOP60按质检结果写入
+        }
+
         cacheName = "cache_scan_"+oprno+pos;
 
         cacheData = JdbcUtils.getCache(cacheName);
@@ -150,6 +181,9 @@ public class WorkJPanel70Xh extends JPanel {
         }else if(pos.equals("F")) {
             plcDb = "DB7004";
         }
+        if("OP070".equals(oprno)){ // 正面换型台保持DB7000,不被position覆盖
+            plcDb = "DB7000";
+        }
 
         JLabel oprnoLabel = new JLabel(oprno);
         oprnoLabel.setHorizontalAlignment(SwingConstants.CENTER);
@@ -507,7 +541,7 @@ public class WorkJPanel70Xh extends JPanel {
         if(isLocal == 1){
             return false;
         }else{
-            return readBoolean(plcDb2+".0.0");  //7002 扫码
+            return readBoolean(addrScanFeeding);  //扫码请求
         }
     }
     // 扫码完成
@@ -515,16 +549,16 @@ public class WorkJPanel70Xh extends JPanel {
         if(isLocal == 1){
             return false;
         }else{
-            return readBoolean(plcDb2+".0.1");   //扫码完成
+            return readBoolean(addrScanFinish);   //扫码完成
         }
     }
 
     // 扫码完成反馈
     public boolean writeScanFinish(boolean bt){
-        if(isLocal == 1){
+        if(isLocal == 1 || !ownsScanFeedback){
             return false;
         }else{
-            return writeBoolean(plcDb2+".0.1",bt);
+            return writeBoolean(addrScanFinish,bt);
         }
     }
 
@@ -533,7 +567,7 @@ public class WorkJPanel70Xh extends JPanel {
         if(isLocal == 1){
             return true;
         }else{
-            return readBoolean(plcDb2+".0.2");
+            return readBoolean(addrTransferToDevice);
         }
     }
 
@@ -542,7 +576,7 @@ public class WorkJPanel70Xh extends JPanel {
         if(isLocal == 1){
             return 1;
         }else{
-            return s7PLC.readInt16(plcDb2+".2.0");
+            return s7PLC.readInt16(addrTransferNo);
         }
     }
 
@@ -551,7 +585,7 @@ public class WorkJPanel70Xh extends JPanel {
         if(isLocal == 1){
             return 1;
         }else{
-            return s7PLC.readInt16(plcDb2+".4.0");
+            return s7PLC.readInt16(addrTransferFloor);
         }
     }
 
@@ -586,9 +620,9 @@ public class WorkJPanel70Xh extends JPanel {
                     }
                 }else{
                     if(isScan == 1){
-                        sn = MesClient.scanQrcode2();
+                        sn = (scanWest == 1) ? MesClient.scanQrcode1() : MesClient.scanQrcode2();
                     }else{
-                        sn = MesClient.scanQrcode4();
+                        sn = (scanEast == 3) ? MesClient.scanQrcode3() : MesClient.scanQrcode4();
                     }
 //                    sn = preSn;
                 }

+ 5 - 35
src/com/mes/component/WorkJPanelOP60.java

@@ -33,7 +33,7 @@ public class WorkJPanelOP60 extends JPanel {
 
     public static final Logger log =  LoggerFactory.getLogger(WorkJPanelOP60.class);
 
-    public String oprno = "OP060";
+    public String oprno = "OP070"; // 原OP060封板正面FSW,产线改造后工位号OP070
 
     public String pos = "A";
 
@@ -623,9 +623,9 @@ public class WorkJPanelOP60 extends JPanel {
         }
         String sn = readQrcode();
         if(sn.equals("")){
+            // 扫码按OP070方式:码由正面换型台异步写入,未就绪时不粘滞"空结果",下个轮询继续取码
             if(productSnFeeding.getText().isEmpty()){
-                productSnFeeding.setText("空结果");
-                this.setMenuStatus("扫码结果为空", -1);
+                this.setMenuStatus("等待换型台扫码", 0);
             }
         }else{
             productSnFeeding.setText(sn);
@@ -816,42 +816,12 @@ public class WorkJPanelOP60 extends JPanel {
 
     // 控制扫码枪读取二维码
     public String readQrcode(){
-        String sn = "";
+        // 产线改造:扫码按OP070方式,由正面换型台(WorkJPanel70Xh OP070实例)集中扫码,设备面板直接取码
         if(isLocal == 1){
             return "";
         }else{
-            try{
-                if(transferToDevice){ // 中转车上料到设备
-//                    int transferSn = readTransferNo();
-//                    int transferFloor = readTransferFloor();
-                    JSONObject retObj = DataUtil.getSn(oprno+pos,transferSn,transferFloor,MesClient.user_menu.getText());
-                    if(retObj.get("result")!=null&&retObj.get("result").toString().equalsIgnoreCase("true")) {
-                        sn = retObj.getString("data");
-                        this.setMenuStatus("允许工件加工",0);
-//                        writeAllowFeeding(true);
-                    }else{
-                        writeAllowFeeding(false);
-                        if(retObj.get("result")==null){
-                            this.setMenuStatus("请求失败,请重试",-1);
-                        }else{
-                            if(retObj.get("result").toString().equalsIgnoreCase("false")){
-                                this.setMenuStatus(retObj.getString("message"),-1);
-                            }
-                        }
-                    }
-                }else{
-                    if(isScan == 1){
-                        sn = MesClient.scanQrcode1();
-                    }else{
-                        sn = MesClient.scanQrcode3();
-                    }
-                }
-            }catch (Exception e) {
-                e.printStackTrace();
-            }
+            return MesClient.workJPanel70XhFront.productSnFeeding.getText().trim();
         }
-
-        return sn;
     }
 
     public boolean readBoolean(String db){

+ 2 - 2
src/com/mes/component/WorkJPanelOP60Transfer.java

@@ -23,7 +23,7 @@ public class WorkJPanelOP60Transfer extends JPanel {
 
     public static final Logger log =  LoggerFactory.getLogger(WorkJPanelOP60Transfer.class);
 
-    public String oprno = "OP060";
+    public String oprno = "OP070"; // 原OP060中转车,产线改造后工位号OP070
 
     public String pos = "A";
 
@@ -109,7 +109,7 @@ public class WorkJPanelOP60Transfer extends JPanel {
 
         plcDb = "DB7001";
 
-        JLabel oprnoLabel = new JLabel("OP60中转车");
+        JLabel oprnoLabel = new JLabel("OP70中转车");
         oprnoLabel.setHorizontalAlignment(SwingConstants.CENTER);
         oprnoLabel.setForeground(Color.BLACK);
         oprnoLabel.setFont(new Font("微软雅黑", Font.PLAIN, 20));

+ 1 - 1
src/com/mes/component/WorkJPanelOP65.java

@@ -19,7 +19,7 @@ public class WorkJPanelOP65 extends JPanel {
 
     public static final Logger log =  LoggerFactory.getLogger(WorkJPanelOP65.class);
 
-    public String oprno = "OP065";
+    public String oprno = "OP075"; // 原OP065打磨,产线改造后工位号OP075
 
     public String pos = "A";
 

+ 1 - 1
src/com/mes/component/WorkJPanelOP70.java

@@ -33,7 +33,7 @@ public class WorkJPanelOP70 extends JPanel {
    //70AC,AB同时发送上料请求,导致A无法再次响应码
     public static final Logger log =  LoggerFactory.getLogger(WorkJPanelOP70.class);
 
-    public String oprno = "OP070";
+    public String oprno = "OP080"; // 原OP070封板反面FSW,产线改造后工位号OP080
 
     public String pos = "A";
 

+ 2 - 2
src/com/mes/component/WorkJPanelOP70Transfer.java

@@ -23,7 +23,7 @@ public class WorkJPanelOP70Transfer extends JPanel {
 
     public static final Logger log =  LoggerFactory.getLogger(WorkJPanelOP70Transfer.class);
 
-    public String oprno = "OP070";
+    public String oprno = "OP080"; // 原OP070中转车,产线改造后工位号OP080
 
     public String pos = "A";
 
@@ -108,7 +108,7 @@ public class WorkJPanelOP70Transfer extends JPanel {
 
         plcDb = "DB7005";
 
-        JLabel oprnoLabel = new JLabel("OP70中转车");
+        JLabel oprnoLabel = new JLabel("OP80中转车");
         oprnoLabel.setHorizontalAlignment(SwingConstants.CENTER);
         oprnoLabel.setForeground(Color.BLACK);
         oprnoLabel.setFont(new Font("微软雅黑", Font.PLAIN, 20));

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

@@ -2,7 +2,6 @@ package com.mes.ui;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.mes.component.MesRadio;
-import com.mes.component.MesWebView;
 import com.mes.util.Base64Utils;
 import com.mes.util.HttpUtils;
 import org.slf4j.Logger;
@@ -26,7 +25,7 @@ public class LoginFarme extends JFrame {
     static JButton scanLoginButton = new JButton("扫  码  登  录");
 
     public LoginFarme(){
-        setTitle("MES系统客户端:OP60-OP70");
+        setTitle("MES系统客户端:OP70-OP80");
 
         ImageIcon bg = new ImageIcon(MesClient.class.getResource("/background.png"));
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

+ 20 - 11
src/com/mes/ui/MesClient.java

@@ -70,7 +70,6 @@ public class MesClient extends JFrame {
     public static JFrame welcomeWin;
 
     // public static JPanel indexPanelWork; // 已弃用,改为使用 WorkRecordPanel
-    public static MesWebView jfxPanel = null;
 
     public static JTable table;
     public static Object[] columnNames = { "物料名称", "绑定批次", "剩余次数", "操作" };
@@ -79,6 +78,7 @@ public class MesClient extends JFrame {
     public static WorkJPanelOP60 workJPanelOP60;
     public static WorkJPanelOP60Transfer workJPanelOP60Transfer;
     public static WorkJPanelOP70Transfer workJPanelOP70Transfer;
+    public static WorkJPanel70Xh workJPanel70XhFront; // 正面换型台(OP070,扫码按OP070方式)
 
     public static WorkJPanelOP65 workJPanelOP65A;
 
@@ -192,7 +192,7 @@ public class MesClient extends JFrame {
 
     public MesClient() {
         setIconImage(Toolkit.getDefaultToolkit().getImage(MesClient.class.getResource("/bg/logo.png")));
-        setTitle("MES系统客户端:OP60-OP70");
+        setTitle("MES系统客户端:OP70-OP80");
 //        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 //        setBounds(0, 0, 1920, 1080);
         setBounds(0, 0, 1024, 768);
@@ -363,9 +363,18 @@ public class MesClient extends JFrame {
         indexPanel60Bc.add(workJPanelOP70Transfer);
         indexPanelB.add(indexPanel60Bc);
 
+        // 正面换型台:集中扫码,OP60设备面板从其文本框取码(扫码按OP070方式)
+        JPanel indexPanel60Xh = new JPanel();
+        indexPanel60Xh.setLayout(null);
+        indexPanel60Xh.setBackground(Color.WHITE);
+        workJPanel70XhFront = new WorkJPanel70Xh("OP070", "C");
+        workJPanel70XhFront.setBounds(10, 10, workJPanel70XhFront.workWidth, workJPanel70XhFront.workHeight);
+        indexPanel60Xh.add(workJPanel70XhFront);
+        indexPanelB.add(indexPanel60Xh);
 
 
-        tabbedPane.addTab("OP60封板正面FSW", null, indexScrollPaneB, null);
+
+        tabbedPane.addTab("OP70封板正面FSW", null, indexScrollPaneB, null);
         tabbedPane.setEnabledAt(0, true);
 
         JPanel indexPanelC = new JPanel();
@@ -387,7 +396,7 @@ public class MesClient extends JFrame {
         indexPanelC.add(indexPanel65A);
 
 
-        tabbedPane.addTab("OP65打磨", null, indexScrollPaneC, null);
+        tabbedPane.addTab("OP75封板正面打磨", null, indexScrollPaneC, null);
         tabbedPane.setForegroundAt(1, Color.RED);
 
         JPanel indexPanelD = new JPanel();
@@ -463,7 +472,7 @@ public class MesClient extends JFrame {
             indexPanelD.add(indexPanel70D);
         }
 
-        tabbedPane.addTab("OP70封板反面FSW", null, indexScrollPaneD, null);
+        tabbedPane.addTab("OP80封板反面FSW", null, indexScrollPaneD, null);
 
 
         // ========== 工作记录 Tab(改造:OP60/OP65/OP70子工位Tab + 所有工位) ==========
@@ -472,13 +481,13 @@ public class MesClient extends JFrame {
         workRecordTabbedPane.setFont(new Font("微软雅黑", Font.PLAIN, 14));
 
         // 定义所有子工位
-        // OP60: A, B
-        // OP65: A, B
-        // OP70: A, B, C, D, E, F
+        // OP70(原OP60正面FSW): A, B
+        // OP75(原OP65打磨): A, B
+        // OP80(原OP70反面FSW): A, B, C, D, E, F
         String[][] stationGroups = {
-            {"OP060", "A", "B"},
-            {"OP065", "A", "B"},
-            {"OP070", "A", "B", "C", "D", "E", "F"}
+            {"OP070", "A", "B"},
+            {"OP075", "A", "B"},
+            {"OP080", "A", "B", "C", "D", "E", "F"}
         };
         
         // 计算总的工位数(用于数组大小)

+ 2 - 2
src/resources/config/config.properties

@@ -1,5 +1,5 @@
-#mes.server_ip=127.0.0.1
-mes.server_ip=192.168.17.170
+mes.server_ip=127.0.0.1
+#mes.server_ip=192.168.17.170
 mes.line_sn=XT
 # east=?? west=??
 mes.line_pos=west