hfy 3 dní pred
rodič
commit
df3cf31441

+ 130 - 25
src/com/mes/ui/DataUtil.java

@@ -9,20 +9,23 @@ import java.io.*;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
 import java.util.Properties;
 
 public class DataUtil {
+    public static String lastUploadPressRivetMessage = "";
 
     public static Boolean synrTcp(NettyClient nettyClient,String mes_gw){
         try{
-            //TCP连接后,直接先发同步报文
+            //TCP杩炴帴鍚庯紝鐩存帴鍏堝彂鍚屾鎶ユ枃
             String start = "aaaabbbbbABW";
             String msgType = "SYNR";
             String gw = "GW"+DataUtil.rightPad(mes_gw, 6);
             String da = "DA" + DateLocalUtils.getCurrentDate();
             String zt = "ZT" + DateLocalUtils.getCurrentTimeHMS();
             String synr_str = start + msgType + gw + da + zt;
-            //插入报文本地数据
+            //鎻掑叆鎶ユ枃鏈湴鏁版嵁
             String gy = "";
             String sn = "";
             JdbcUtils.insertData(gw, gy, synr_str, msgType, sn);
@@ -37,14 +40,14 @@ public class DataUtil {
 
     public static Boolean heartBeat(NettyClient nettyClient,String mes_gw){
         try{
-            //TCP连接后,直接先发同步报文
+            //TCP杩炴帴鍚庯紝鐩存帴鍏堝彂鍚屾鎶ユ枃
             String start = "aaaabbbbbABW";
             String msgType = "AXTW";
             String gw = "GW"+DataUtil.rightPad(mes_gw, 6);
             String da = "DA" + DateLocalUtils.getCurrentDate();
             String zt = "ZT" + DateLocalUtils.getCurrentTimeHMS();
             String axtw_str = start + msgType + gw + da + zt;
-            //插入报文本地数据
+            //鎻掑叆鎶ユ枃鏈湴鏁版嵁
             String gy = "";
             String sn = "";
             JdbcUtils.insertData(gw, gy, axtw_str, msgType, sn);
@@ -116,14 +119,71 @@ public class DataUtil {
         try{
             String msgType = "MQDW";
             String gy = "100000";
-            String param = "";
-            Boolean aqdw_str = sendMessage(nettyClient,msgType,gy,"",sn,ret,user,"00",param);
+            String param = getPressParams();
+            String paramNums = String.format("%02d", MesClient.pressParamTitle.length);
+            Boolean aqdw_str = sendMessage(nettyClient,msgType,gy,"",sn,ret,user,paramNums,param);
             return aqdw_str;
         }catch (Exception e){
             return false;
         }
     }
 
+    public static String getPressParams(){
+        StringBuilder params = new StringBuilder();
+        for(int i=0; i<MesClient.pressParamTitle.length; i++){
+            String title = MesClient.pressParamTitle[i] == null ? "" : MesClient.pressParamTitle[i];
+            String value = MesClient.pressParamValue[i] == null ? "" : MesClient.pressParamValue[i];
+            params.append(rightPad(title, 20));
+            params.append(rightPad(value, 20));
+        }
+        return params.toString();
+    }
+
+    public static Boolean uploadPressRivetData(String sn, Map<Integer, Map<String, String>> pressRivetMap){
+        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 mesServerIp = pro.getProperty("mes.server_ip");
+            String oprno = pro.getProperty("mes.gw").trim();
+            String lineSn = pro.getProperty("mes.line_sn").trim();
+            String url = pro.getProperty("mes.press_rivet_upload_url");
+            if(url == null || url.trim().isEmpty()){
+                url = "http://"+mesServerIp+":8980/js/a/mes/mesProductRecord/yamao";
+            }
+            JSONObject json = new JSONObject();
+            json.put("sn", sn == null ? "" : sn);
+            json.put("oprno", oprno);
+            json.put("lineSn", lineSn);
+            json.put("datas", pressRivetMap.values());
+            String params = json.toJSONString();
+            System.out.println("json="+params);
+            String result = doPostJson(url,params);
+            System.out.println("result="+result);
+            if(result == null || result.trim().isEmpty()){
+                lastUploadPressRivetMessage = "上传失败,服务器无响应";
+                return false;
+            }
+            if(result.trim().equalsIgnoreCase("false")){
+                lastUploadPressRivetMessage = "上传失败";
+                return false;
+            }
+            JSONObject resultObj = JSONObject.parseObject(result);
+            lastUploadPressRivetMessage = resultObj.getString("Message");
+            String uploadResult = resultObj.getString("Result");
+            if((lastUploadPressRivetMessage == null || lastUploadPressRivetMessage.trim().isEmpty()) && !"SUCCESS".equalsIgnoreCase(uploadResult)){
+                lastUploadPressRivetMessage = "上传失败";
+            }
+            return "SUCCESS".equalsIgnoreCase(uploadResult);
+        }catch (Exception e){
+            e.printStackTrace();
+            lastUploadPressRivetMessage = "上传异常:" + e.getMessage();
+            return false;
+        }
+    }
+
     public static Boolean sendQualityNew(NettyClient nettyClient,String sn,String ret,String user){
         try{
             String msgType = "MQDW";
@@ -242,26 +302,69 @@ public class DataUtil {
         }
     }
 
-    public static JSONObject saveLife(String sn,String ps) {
-        try{
-            String url = "http://"+MesClient.mes_server_ip+":8980/js/a/mes/mesProductCncLife/saveLife";
-            String params = "__ajax=json&oprno="+MesClient.mes_gw+"&lineSn="+MesClient.mes_line_sn+"&sn="+sn+"&params="+ps;
-            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);
+    public static String doPost(String httpUrl, String param) {
+        HttpURLConnection connection = null;
+        InputStream is = null;
+        OutputStream os = null;
+        BufferedReader br = null;
+        String result = null;
+        try {
+            URL url = new URL(httpUrl);
+            connection = (HttpURLConnection) url.openConnection();
+            connection.setRequestMethod("POST");
+            connection.setConnectTimeout(5000);
+            connection.setReadTimeout(10000);
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+            connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
+            os = connection.getOutputStream();
+            os.write(param.getBytes());
+            if (connection.getResponseCode() == 200) {
+                is = connection.getInputStream();
+                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+                StringBuffer sbf = new StringBuffer();
+                String temp = null;
+                while ((temp = br.readLine()) != null) {
+                    sbf.append(temp);
+                    sbf.append("\r\n");
+                }
+                result = sbf.toString();
+            }
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (null != br) {
+                try {
+                    br.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (null != os) {
+                try {
+                    os.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (null != is) {
+                try {
+                    is.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (connection != null) {
+                connection.disconnect();
             }
-        }catch (Exception e){
-            return null;
         }
+        return result;
     }
 
-    public static String doPost(String httpUrl, String param) {
+    public static String doPostJson(String httpUrl, String json) {
         HttpURLConnection connection = null;
         InputStream is = null;
         OutputStream os = null;
@@ -275,10 +378,10 @@ public class DataUtil {
             connection.setReadTimeout(10000);
             connection.setDoOutput(true);
             connection.setDoInput(true);
-            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+            connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
             connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
             os = connection.getOutputStream();
-            os.write(param.getBytes());
+            os.write(json.getBytes(StandardCharsets.UTF_8));
             if (connection.getResponseCode() == 200) {
                 is = connection.getInputStream();
                 br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
@@ -316,7 +419,9 @@ public class DataUtil {
                     e.printStackTrace();
                 }
             }
-            connection.disconnect();
+            if (connection != null) {
+                connection.disconnect();
+            }
         }
         return result;
     }

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

@@ -198,7 +198,6 @@ public class LoginFarme extends JFrame {
                     }
 
                     MesClient.initWarehouseData();
-                    ToolConfig.setToolParamsVal();
                 }
 
             }

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 240 - 667
src/com/mes/ui/MesClient.java


+ 2 - 13
src/com/mes/ui/MesRevice.java

@@ -2,7 +2,6 @@ package com.mes.ui;
 
 import com.mes.netty.ProtocolParam;
 import com.mes.component.MyDialog;
-import com.mes.util.CommonUtils;
 import com.mes.util.ErrorMsg;
 
 import javax.swing.*;
@@ -24,18 +23,8 @@ public class MesRevice {
 //                MesClient.finish_ng_bt.setEnabled(true);
                 MesClient.tjFlag = 1;
 
-//                if(CommonUtils.formatOprno(MesClient.mes_gw).equals("OP150")){
-//                    int program = CommonUtils.getProductProgram(sn);
-//                    ModbusUitl.changeProgram(MesClient.modbusTcp, program);
-//                }
-
-                int i = 0;
-                for(Integer toolNum:MesClient.toolNums){
-                    Integer life = ModbusUitl.getLife(MesClient.modbusTcp,toolNum);
-                    MesClient.toolLife[i] = life+"";
-                    i++;
-                }
-                
+                //ModbusUitl.readPressParam(MesClient.modbusTcp);
+                 
             }else {
                 MesClient.check_quality_result = false;
                 String lmsg = ErrorMsg.getErrorMsg(processMsgRet, ProtocolParam.getLx(mes_msg));

+ 88 - 82
src/com/mes/ui/ModbusUitl.java

@@ -3,143 +3,151 @@ package com.mes.ui;
 import com.github.xingshuangs.iot.protocol.common.buff.EByteBuffFormat;
 import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.nio.charset.StandardCharsets;
 
 public class ModbusUitl {
 
-    public static void getParamData(ModbusTcp modbusTcp){
-        try{
+    private static final int REG_PRESS_FORCE = 110;
+    private static final int REG_PRESS_DISPLACEMENT = 112;
+    private static final int REG_PRESS_RESULT = 114;
+    private static final int REG_LOCAL_REMOTE_STATUS = 116;
+    private static final int REG_RUN_STATUS = 117;
+    private static final int REG_FINISH_STATUS = 118;
+    private static final int REG_ENABLE_START = 119;
 
+    private static final EByteBuffFormat DINT_FORMAT = EByteBuffFormat.DC_BA;
+    private static int lastFinishStatus = 0;
+    public static void getParamData(ModbusTcp modbusTcp){
+        try{//扫完二维码后,启动设备
             if(MesClient.tjFlag == 1){
                 int qdstatus = getEnable(modbusTcp);
-                if(qdstatus == 1){
-                    ModbusUitl.changeEnable(MesClient.modbusTcp,0);
+                if(qdstatus != 1){
+                    changeEnable(MesClient.modbusTcp,1);
+                    //(设备接受到允许启动信号,运行状态变为1)允许启动信号设置为0
+
                 }
             }
 
-            Integer deviceStatus =  modbusTcp.readInt32(15001*2, EByteBuffFormat.DC_BA);
-            if(deviceStatus == 1){
+            //运行状态等于1,运行中
+            Integer runStatus = getRunStatus(modbusTcp);
+            Integer finishStatus = getFinishStatus(modbusTcp);
+
+            if(runStatus == 1){
                 if(MesClient.tjFlag == 1){
+                    changeEnable(MesClient.modbusTcp,0);
                     MesClient.tjFlag = 2;
+                    readPressParam(modbusTcp);
                     MesClient.setMenuStatus(MesClient.tjFlagText2,0);
                 }
-            }else{
-                if(MesClient.tjFlag == 2 && MesClient.yxtime > 30){
-                    MesClient.tjFlag = 3;
-                    MesClient.status_menu.setText(MesClient.tjFlagText3);
-                    MesClient.finish_ok_bt.setEnabled(true);
-                    MesClient.finish_ng_bt.setEnabled(true);
-                }
             }
-
+            //运行结束
             if(MesClient.tjFlag == 2){
-                MesClient.yxtime++;
-                System.out.println("yxtime:"+MesClient.yxtime);
-                getToolLife(modbusTcp);
-            }else if(MesClient.tjFlag == 3){
-
-                if(MesClient.tjStatus == 0){
-                    Boolean ret = DataUtil.sendQuality(MesClient.nettyClient,MesClient.product_sn.getText(),"OK",MesClient.user20);
-                    if(!ret){
-                        MesClient.tjStatus = 1;
-                        MesClient.setMenuStatus(MesClient.tjFlagTextErr,0);
+                readPressParam(modbusTcp);
+                if(finishStatus == 1 && lastFinishStatus != 1){
+                    //存Map
+                    savePressRivetData();
+                    if(MesClient.pressRivetMap.size() == MesClient.PRESS_RIVET_UPLOAD_SIZE){
+                        if(!MesClient.uploadPressRivetData("压铆参数上传成功,请扫下一件", "压铆参数上传失败,请重试")){
+                            MesClient.tjStatus = 1;
+                            return;
+                        }
+                    }else{
+                        MesClient.tjFlag = 1;
+                        MesClient.setMenuStatus("已采集第" + MesClient.pressRivetMap.size() + "颗拉铆,等待下一颗",0);
                     }
+                    changeEnable(modbusTcp,0);
                 }
-
-                changeEnable(modbusTcp,1);
             }
+            lastFinishStatus = finishStatus;
         }catch (Exception e){
             e.printStackTrace();
         }
     }
 
-    public static void getToolLife(ModbusTcp modbusTcp){
+    public static void readPressParam(ModbusTcp modbusTcp){
         try{
-            if(MesClient.smStatus == 0){
-                int i=0;
-                List<String> ps = new ArrayList<>();
-                for(Integer toolNum : MesClient.toolNums){
-                    String life = String.valueOf(getLife(modbusTcp,toolNum));
-                    MesClient.toolLife[i] = life;
-                    ps.add(toolNum+"_"+life);
-                    i++;
-                }
-                if(!MesClient.toolLife[i] .isEmpty()){
-                    MesClient.smStatus = 1;
+            String force = getPressForce(modbusTcp);
+            String displacement = getPressDisplacement(modbusTcp);
+            String result = getPressResult(modbusTcp);
 
-                    ToolConfig.setToolParamsVal();
+            MesClient.pressParamValue[0] = String.valueOf(MesClient.pressRivetIndex + 1);
+            MesClient.pressParamValue[1] = force;
+            MesClient.pressParamValue[2] = displacement;
+            MesClient.pressParamValue[3] = result;
+            MesClient.tjResult = "NG".equalsIgnoreCase(result) ? "NG" : "OK";
 
-                    DataUtil.saveLife(MesClient.product_sn.getText(),String.join("\\|",ps));
-                }
-            }
         }catch (Exception e){
             e.printStackTrace();
         }
     }
 
-    //
-    public static Integer getLife(ModbusTcp modbusTcp,Integer i){
+    public static void savePressRivetData(){
+        readPressParam(MesClient.modbusTcp);
+        MesClient.savePressRivetData(MesClient.pressParamValue[1], MesClient.pressParamValue[2], MesClient.pressParamValue[3]);
+    }
+//允许设备启动
+    public static Boolean changeEnable(ModbusTcp modbusTcp,Integer ret){
+        try{
+            modbusTcp.writeInt16(REG_ENABLE_START, (short)(ret == 1?1:0));
+            return true;
+        }catch (Exception e){
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    public static Integer getEnable(ModbusTcp modbusTcp){
         try{
-            short max1 = modbusTcp.readInt16((2103+(i*10))*2+3);
-            short cur1 = modbusTcp.readInt16((2103+(i*10))*2+1);
-            return max1 - cur1;
-//            Integer st = 150; // 宏变量对应R变量   @551=>R151
-//            Integer max1 = modbusTcp.readInt32((st + i)*2,EByteBuffFormat.DC_BA);
-//            return max1;
+            return (int) modbusTcp.readInt16(REG_ENABLE_START);
         }catch (Exception e){
             e.printStackTrace();
-            return 0;
+            return -1;
         }
     }
 
-    // 获取宏变量
-    public static Integer getMacro(ModbusTcp modbusTcp,Integer i){
+    public static String getPressForce(ModbusTcp modbusTcp){
         try{
-            Integer st = (i - 400); // 宏变量对应R变量   @551=>R151
-            Integer max1 = modbusTcp.readInt32((st + i)*2,EByteBuffFormat.DC_BA);
-            return max1;
+            short ret = modbusTcp.readInt16(REG_PRESS_FORCE);//压力
+            return String.format("%.2f", ret / 100.0);
         }catch (Exception e){
             e.printStackTrace();
-            return 0;
+            return "";
         }
     }
 
-    // 获取宏变量
-    public static Boolean setMacro(ModbusTcp modbusTcp,Integer i,Integer value){
+    public static String getPressDisplacement(ModbusTcp modbusTcp){
         try{
-            Integer st = (i - 400); // 宏变量对应R变量   @551=>R151
-            modbusTcp.writeInt32((st + i)*2,value,EByteBuffFormat.DC_BA);
+            Integer ret = modbusTcp.readInt32(REG_PRESS_DISPLACEMENT, DINT_FORMAT);//位移
+            return String.format("%.3f", ret / 1000.0);
         }catch (Exception e){
             e.printStackTrace();
-            return false;
+            return "";
         }
-        return true;
     }
 
-    public static Boolean changeEnable(ModbusTcp modbusTcp,Integer ret){
+    public static String getPressResult(ModbusTcp modbusTcp){
         try{
-            modbusTcp.writeInt32(15000*2,ret == 1?1:0, EByteBuffFormat.DC_BA);
-            return true;
+            byte[] data = modbusTcp.readHoldRegister(REG_PRESS_RESULT, 1);//本次结果
+            String ret = new String(data, StandardCharsets.US_ASCII);
+            return ret == null ? "" : ret.trim().replace("\u0000", "");
         }catch (Exception e){
             e.printStackTrace();
-            return false;
+            return "";
         }
     }
 
-    public static Integer getEnable(ModbusTcp modbusTcp){
+    public static Integer getLocalRemoteStatus(ModbusTcp modbusTcp){
         try{
-            Integer ret = modbusTcp.readInt32(15000*2,EByteBuffFormat.DC_BA);
-            return ret;
+            return (int) modbusTcp.readInt16(REG_LOCAL_REMOTE_STATUS);//MES屏蔽
         }catch (Exception e){
             e.printStackTrace();
             return -1;
         }
     }
 
-    public static Boolean changeProgram(ModbusTcp modbusTcp,Integer ret){
+    public static Boolean changeLocalRemoteStatus(ModbusTcp modbusTcp, Integer ret){
         try{
-            modbusTcp.writeInt32(6002*2,ret, EByteBuffFormat.DC_BA);
+            modbusTcp.writeInt16(REG_LOCAL_REMOTE_STATUS, (short)(ret == 1 ? 1 : 0));
             return true;
         }catch (Exception e){
             e.printStackTrace();
@@ -147,23 +155,21 @@ public class ModbusUitl {
         }
     }
 
-    public static Integer getProgram(ModbusTcp modbusTcp){
+    public static Integer getRunStatus(ModbusTcp modbusTcp){
         try{
-            Integer ret = modbusTcp.readInt32(6000*2,EByteBuffFormat.DC_BA);
-            return ret;
+            return (int) modbusTcp.readInt16(REG_RUN_STATUS);//运行状态
         }catch (Exception e){
             e.printStackTrace();
-            return 0;
+            return -1;
         }
     }
 
-    public static Integer getAlarm(ModbusTcp modbusTcp){
+    public static Integer getFinishStatus(ModbusTcp modbusTcp){
         try{
-            Integer ret = modbusTcp.readInt32(15004*2,EByteBuffFormat.DC_BA);
-            return ret;
+            return (int) modbusTcp.readInt16(REG_FINISH_STATUS);//完成状态
         }catch (Exception e){
             e.printStackTrace();
-            return 0;
+            return -1;
         }
     }
 

+ 2 - 2
src/com/mes/ui/OprnoUtil.java

@@ -19,8 +19,8 @@ public class OprnoUtil {
     };
     public static String[] xtoprnodes = new String[]{
             "右边梁镭雕二维码","左边梁防爆阀拉铆","CMT框架一序焊接",
-            "人工补焊", "框架CMT二序焊接", "焊道铣削", "焊道检查", "总成正面CNC",
-            "总成反面CNC", "框架去毛刺+清洁", "封堵片焊接+打磨", "边框气密", "焊道补焊",
+            "人工补焊", "框架CMT二序焊接", "焊道铣削", "焊道检查", "总成正面加工",
+            "总成反面加工", "框架去毛刺+清洁", "封堵片焊接+打磨", "边框气密", "焊道补焊",
             "框架反面涂胶", "液冷板安装", "正面溢胶清理,补胶", "液冷板激光点固", "液冷板水嘴处焊接",
             "焊道打磨", "液冷板FSW", "匙孔补焊打磨", "总成反面拉铆", "总成正面拉铆1",
             "总成正面拉铆2", "边梁套筒涂胶+压合", "箱体封堵", "胶水固化", "半成品气密",

+ 1 - 1
src/com/mes/util/ErrorMsg.java

@@ -33,7 +33,7 @@ public class ErrorMsg {
             }else if(processMsgRet.equalsIgnoreCase("BM")) {
                 lmsg = "未绑定物料";
             }else if(processMsgRet.equalsIgnoreCase("PL")) {
-                lmsg = "配件寿命不足";
+                lmsg = "配件状态不足";
             }else if(processMsgRet.equalsIgnoreCase("QM")) {
                 lmsg = "两次气密必须间隔15分钟";
             }else if(processMsgRet.equalsIgnoreCase("GS")) {

+ 4 - 3
src/resources/config/config.properties

@@ -1,7 +1,8 @@
 mes.gw=OP130A
-mes.server_ip=127.0.0.1
-#mes.server_ip=192.168.22.99
+#mes.server_ip=127.0.0.1
+mes.server_ip=192.168.16.99
 mes.tcp_port=3000
 
 mes.heart_beat_cycle=60
-mes.line_sn=XT
+mes.line_sn=XT
+mes.press_rivet_upload_url=