ソースを参照

修复拧紧id变小导致不计数问题

张田野 2 週間 前
親
コミット
75e8ff75d8

+ 30 - 2
src/com/mes/component/GunPanel.java

@@ -26,6 +26,8 @@ public class GunPanel extends JPanel {
     private YgslClient gunClient;
     private Timer heartBeatTimer;
     private List<String> tighteningIds;
+    private long lastTighteningId = 0;
+    private boolean tighteningIdReset = false;
 
     private JLabel nameLabel;
     private JLabel statusLabel;
@@ -229,16 +231,32 @@ public class GunPanel extends JPanel {
         String angleFinal = YgslParam.getFinalAngleTarget(content);
 
 
-        if (tighteningID.isEmpty() || tighteningIds.contains(tighteningID)) {
+        if (tighteningID.isEmpty()) {
+            YgslUtil.lastTighteningResultDataAcknowledge(gunClient);
+            return;
+        }
+
+        long newTighteningId = parseTighteningId(tighteningID);
+        // 控制器拧紧ID复位后会变小并重新占用旧号,清空本工件已见ID,避免误判重复而不计数
+        if (newTighteningId > 0 && lastTighteningId > 0 && newTighteningId < lastTighteningId) {
+            tighteningIds.clear();
+            tighteningIdReset = true;
+        }
+        if (tighteningIds.contains(tighteningID)) {
             YgslUtil.lastTighteningResultDataAcknowledge(gunClient);
             return;
         }
 
         tighteningIds.add(tighteningID);
+        if (newTighteningId > 0) {
+            lastTighteningId = newTighteningId;
+        }
 
         String pos = String.valueOf(gunIndex);
+        String sn = MesClient.product_sn.getText();
 
-        Boolean checkRet = JdbcUtils.checkTighteningById(tighteningID, pos, jobID);
+        // 本工件发生过ID复位后,库中旧号不能再当重复;未复位时仍按原逻辑防重
+        Boolean checkRet = tighteningIdReset ? false : JdbcUtils.checkTighteningById(tighteningID, pos, jobID, sn);
         if (!checkRet) {
             if (tighteningStatus.equals("0")) {
                 if (torqueStatus.equals("1")) {
@@ -320,6 +338,8 @@ public class GunPanel extends JPanel {
 
     public void reset() {
         currentCount = 0;
+        lastTighteningId = 0;
+        tighteningIdReset = false;
         tighteningIds.clear();
         SwingUtilities.invokeLater(() -> {
             torqueLabel.setText("");
@@ -374,6 +394,14 @@ public class GunPanel extends JPanel {
         this.statusChangeListener = listener;
     }
 
+    private long parseTighteningId(String tighteningID) {
+        try {
+            return Long.parseLong(tighteningID);
+        } catch (Exception e) {
+            return 0;
+        }
+    }
+
     public void destroy() {
         disconnect();
     }

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

@@ -6,28 +6,10 @@ import java.util.Map;
 
 public class OprnoUtil {
     public static String[] xtoprnos = new String[]{
-            "OP070", "OP100",
-            "OP110", "OP120", "OP130", "OP140", "OP150",
-            "OP160", "OP170", "OP180", "OP190", "OP200",
-            "OP210", "OP220", "OP230", "OP240", "OP250",
-            "OP260", "OP270", "OP280", "OP290", "OP300",
-            "OP310", "OP320", "OP330", "OP340", "OP350",
-            "OP360", "OP370", "OP380", "OP390", "OP400",
-            "OP410", "OP420", "OP430", "OP440", "OP450",
-            "OP460", "OP470", "OP480", "OP490", "OP500",
-            "OP510", "OP520", "OP550"
+            "OP120","OP390"
     };
     public static String[] xtoprnodes = new String[]{
-            "右边梁镭雕二维码","CMT框架一序焊接",
-            "人工补焊", "框架CMT二序焊接", "人工补焊", "焊道检查", "总成正面CNC",
-            "总成反面CNC", "框架去毛刺+清洁", "封堵片焊接+打磨", "边框气密", "焊道补焊",
-            "框架反面涂胶", "液冷板安装", "正面溢胶清理,补胶", "液冷板激光点固", "液冷板水嘴处焊接",
-            "焊道打磨", "液冷板FSW", "匙孔补焊打磨", "总成反面拉铆", "总成正面拉铆1",
-            "总成正面拉铆2", "边梁套筒涂胶+压合", "箱体封堵", "胶水固化", "半成品气密",
-            "补强板安装", "胶水固化", "拆卸补强板压紧工装", "底护板螺栓复拧", "人工抹胶",
-            "胶水固化", "反面部件装配", "底护板装配+底部套筒螺母安装", "底护板螺栓复拧", "总成气密",
-            "液冷板气密", "总成正面装配", "总成清洁", "总成检具检验", "模拟客户安装界面(装)",
-            "CCD", "GP12", "称重"
+            "螺栓复拧","底护板复扭"
     };
     public static String[] lboprnos = new String[]{
             "OP040","OP050","OP060","OP070","OP080","OP090","OP100","OP110",

+ 2 - 2
src/com/mes/util/JdbcUtils.java

@@ -154,7 +154,7 @@ public class JdbcUtils {
 	}
 
 	//查询数据是否存在
-	public static boolean checkTighteningById(String tighteningId,String pos,String jobID) {
+	public static boolean checkTighteningById(String tighteningId,String pos,String jobID,String sn) {
 		boolean ret = false;
 		try{
 			// 确保连接已经打开
@@ -163,7 +163,7 @@ public class JdbcUtils {
 			}
 
 			Statement statement=conn.createStatement();
-			ResultSet retset = statement.executeQuery("SELECT count(*) FROM bw_tightening WHERE tighteningID = '"+tighteningId+"' AND pos = '"+pos+"' AND jobID = '"+jobID+"' LIMIT 1");//向数据库中插入数据
+			ResultSet retset = statement.executeQuery("SELECT count(*) FROM bw_tightening WHERE tighteningID = '"+tighteningId+"' AND pos = '"+pos+"' AND jobID = '"+jobID+"' AND sn = '"+sn+"' LIMIT 1");
 
 			Integer count = 0;
 			while (retset.next()) {