From 7acfc864d11de1fc41cabc2a5d4fad3894c2e5b0 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期五, 28 十一月 2025 11:27:08 +0800
Subject: [PATCH] 增加发卡不成功再次发卡的逻辑

---
 src/chushihua/SlotManager.java |   58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 57 insertions(+), 1 deletions(-)

diff --git a/src/chushihua/SlotManager.java b/src/chushihua/SlotManager.java
index bec177f..7ffb4c8 100644
--- a/src/chushihua/SlotManager.java
+++ b/src/chushihua/SlotManager.java
@@ -55,6 +55,9 @@
 	private static final String CURRENT_EN = "current";
 	private static final String FAULT_EN = "fault";
 	private static final String UPDATE_TIME_EN = "updatetime";
+	// 鍦ㄥ睘鎬у畾涔夊尯鍩熸坊鍔犲父閲�
+	private static final String RECEIVE_CARD_COMMAND_TIME = "鏀跺埌鍙戝崱鎸囦护鏃堕棿";
+	private static final String RECEIVE_CARD_COMMAND_TIME_EN = "receivecardcommandtime";
 
 	/**
 	 * 鏋勯�犲嚱鏁� - 鍒濆鍖栨墍鏈夊崱妲�
@@ -81,7 +84,7 @@
 			slot.setCurrent(UNKNOWN_VALUE);
 			slot.setFault(UNKNOWN_VALUE);
 			slot.setUpdateTime(UNKNOWN_VALUE);
-
+			slot.setReceiveCardCommandTime(UNKNOWN_VALUE); // 鏂板锛氬垵濮嬪寲鏀跺埌鍙戝崱鎸囦护鏃堕棿涓�-1
 			slotArray[i] = slot;
 		}
 
@@ -165,6 +168,11 @@
 		case UPDATE_TIME_EN:
 			slot.setUpdateTime(value);
 			break;
+			// 鍦� updateSlotAttribute 鏂规硶鐨� switch 璇彞涓坊鍔犳柊灞炴�х殑澶勭悊
+		case RECEIVE_CARD_COMMAND_TIME:
+		case RECEIVE_CARD_COMMAND_TIME_EN:
+		    slot.setReceiveCardCommandTime(value);
+		    break;
 		default:
 			System.err.println("閿欒锛氭湭鐭ョ殑灞炴�у悕绉� '" + attributeName + "'");
 			return false;
@@ -417,6 +425,7 @@
 			slot.setCurrent(UNKNOWN_VALUE);
 			slot.setFault(UNKNOWN_VALUE);
 			slot.setUpdateTime(UNKNOWN_VALUE);
+			slot.setReceiveCardCommandTime(UNKNOWN_VALUE); // 鏂板锛氶噸缃敹鍒板彂鍗℃寚浠ゆ椂闂�
 		}
 		//System.out.println("鎵�鏈夊崱妲界姸鎬佸凡閲嶇疆涓烘湭鐭�");
 	}
@@ -557,4 +566,51 @@
 	    
 	    return true;
 	}
+	
+	/**
+	 * 杞妫�鏌ュ崱妲界姸鎬侊紝瀵规湭鍙栧嚭鐨勫崱妲介噸鏂板彂閫佸紑闂ㄦ寚浠�
+	 * @param type 鎿嶄綔绫诲瀷锛�1-鏈嶅姟鍣ㄥ彂鍗★紝2-绠$悊鍛樺彂鍗�
+	 */
+	public static void pollAndResendOpenCommand(int type) {
+	    // 浣跨敤鑷畾涔夌殑鏃堕棿鏍煎紡鍣�
+	    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+	    
+	    for (int i = 0; i < TOTAL_SLOTS; i++) {
+	        Fkj slot = slotArray[i];
+	        int slotId = i + 1;
+	        
+	        // 鑾峰彇鏀跺埌鍙戝崱鎸囦护鏃堕棿鍜屽崱鍙�
+	        String receiveTime = slot.getReceiveCardCommandTime();
+	        String cardNumber = slot.getCardNumber();
+	        
+	        // 妫�鏌ユ潯浠讹細鏀跺埌鎸囦护鏃堕棿涓嶄负-1锛屽崱鍙蜂笉绛変簬0000
+	        if (!UNKNOWN_VALUE.equals(receiveTime) && !"0000".equals(cardNumber)) {
+	            try {
+	                // 瑙f瀽鏃堕棿骞惰绠楁椂闂村樊
+	                LocalDateTime currentTime = LocalDateTime.now();
+	                LocalDateTime receiveDateTime = LocalDateTime.parse(receiveTime, formatter);
+	                
+	                long timeDiff = java.time.Duration.between(receiveDateTime, currentTime).toMillis();
+	                
+	                // 濡傛灉鏃堕棿宸皬浜�10绉掞紝閲嶆柊鍙戦�佸紑闂ㄦ寚浠�
+	                if (timeDiff < 10000) {
+	                    // 璋冪敤鍙戦�佸紑闂ㄦ寚浠ゆ柟娉�
+	                    boolean sendResult = chuankou.Sendmsg.opendoorzhiling(slotId, type);
+	                    
+	                    if (sendResult) {
+	                        System.out.println("閲嶆柊鍙戦�佸紑闂ㄦ寚浠� - 鍗℃Ы" + slotId + "锛屽崱鍙�: " + cardNumber + 
+	                                         "锛屾椂闂村樊: " + timeDiff + "ms");
+	                    }
+	                    
+	                    // 闂撮殧50姣
+	                    Thread.sleep(50);
+	                }
+	                
+	            } catch (Exception e) {
+	                System.err.println("澶勭悊鍗℃Ы" + slotId + "鏃跺彂鐢熼敊璇�: " + e.getMessage());
+	                // 缁х画澶勭悊涓嬩竴涓崱妲�
+	            }
+	        }
+	    }
+	}
 }
\ No newline at end of file

--
Gitblit v1.10.0