From d22349714c8d199c02f336f90fba841ef8f5cd39 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期五, 21 十一月 2025 17:46:23 +0800
Subject: [PATCH] 优化内存后最终版202511211746

---
 src/chushihua/SlotManager.java |  131 ++++++++++++++++++++++++++++++-------------
 1 files changed, 91 insertions(+), 40 deletions(-)

diff --git a/src/chushihua/SlotManager.java b/src/chushihua/SlotManager.java
index 00fbd7c..b85cb60 100644
--- a/src/chushihua/SlotManager.java
+++ b/src/chushihua/SlotManager.java
@@ -5,7 +5,8 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import xitongshezhi.Fkj;
+import dialog.Dingshidialog;
+import home.Fkj;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -204,8 +205,8 @@
 	 * 鎵撳嵃鎵�鏈夊崱妲界殑姒傝淇℃伅 - 浼樺寲鐗堟湰
 	 */
 	public void printAllSlotsSummary() {
-		System.out.println("=== 鍗℃Ы姒傝淇℃伅 ===");
-		System.out.println("鎬诲崱妲芥暟: " + TOTAL_SLOTS);
+		//System.out.println("=== 鍗℃Ы姒傝淇℃伅 ===");
+		//System.out.println("鎬诲崱妲芥暟: " + TOTAL_SLOTS);
 
 		for (Fkj slot : slotArray) {
 			System.out.printf("鍗℃Ы %s: 鍗$紪鍙�=%s, 鏈夊崱=%s, 鐘舵��=%s, 鏁呴殰=%s%n",
@@ -223,8 +224,8 @@
 	public void printSlotDetail(int slotNumber) {
 		Fkj slot = getSlotInfo(slotNumber);
 		if (slot != null) {
-			System.out.println("=== 鍗℃Ы " + slotNumber + " 璇︾粏淇℃伅 ===");
-			System.out.println(slot.toString());
+			//System.out.println("=== 鍗℃Ы " + slotNumber + " 璇︾粏淇℃伅 ===");
+			//System.out.println(slot.toString());
 		}
 	}
 
@@ -273,15 +274,19 @@
 	 * 鏂板锛氭牴鎹覆鍙e崗璁В鏋愬櫒鐨勭姸鎬佹洿鏂版潵鏇存柊鍗℃Ы璇︾粏淇℃伅 - 浼樺寲鐗堟湰
 	 */
 	public static boolean gengxinshuxingzhi(    		
-			int slotNumber, String cardNumber, String hascard, String workStatus,String voltage, String current,String falt ) {
+			int slotNumber, String cardNumber, String hascard, String workStatus, 
+			String voltage, String current, String falt) {
 
-
-		if (!isValidSlotNumber(slotNumber) || cardNumber.equals("0000")) {
+		if (!isValidSlotNumber(slotNumber)) {
 			return false;
 		}
-		
 
 		Fkj slot = slotArray[slotNumber-1];
+
+		// 鑾峰彇鏇存柊鍓嶇殑鍗″彿鐢ㄤ簬姣旇緝
+		String oldCardNumber = slot.getCardNumber();
+
+		// 鏇存柊鍗℃Ы灞炴��
 		slot.setCardNumber(cardNumber);
 		slot.setHasCard(hascard);
 		slot.setWorkStatus(workStatus);
@@ -290,6 +295,10 @@
 		slot.setFault(falt);        
 		// 鏇存柊鏃堕棿
 		slot.setUpdateTime(getCurrentTime());
+
+		// 妫�娴嬪崱鍙峰彉鍖栧苟寮瑰嚭鎻愮ず
+		checkCardInsertionAndShowDialog(slotNumber, oldCardNumber, cardNumber);
+
 		return true;
 	}
 
@@ -310,6 +319,7 @@
 	/**
 	 * 鏍规嵁鐘舵�佺爜鍜屾晠闅滅爜鍒ゆ柇鏄惁鏈夊崱 - 浼樺寲鐗堟湰
 	 */
+	@SuppressWarnings("unused")
 	private String determineHasCardFromStatus(int status, int fault) {
 		// 浼樺寲锛氫娇鐢ㄦ暟鍊兼瘮杈冩浛浠e瓧绗︿覆鎿嶄綔
 		if (fault != 0) {
@@ -407,7 +417,7 @@
 			slot.setFault(UNKNOWN_VALUE);
 			slot.setUpdateTime(UNKNOWN_VALUE);
 		}
-		System.out.println("鎵�鏈夊崱妲界姸鎬佸凡閲嶇疆涓烘湭鐭�");
+		//System.out.println("鎵�鏈夊崱妲界姸鎬佸凡閲嶇疆涓烘湭鐭�");
 	}
 
 
@@ -445,22 +455,22 @@
 	 * 鑾峰彇缂撳瓨缁熻淇℃伅锛堢敤浜庣洃鎺э級
 	 */
 	public static void printCacheStats() {
-		System.out.println("鐘舵�佺紦瀛樺ぇ灏�: " + statusTextCache.size());
-		System.out.println("鏁呴殰缂撳瓨澶у皬: " + faultTextCache.size());
+		//System.out.println("鐘舵�佺紦瀛樺ぇ灏�: " + statusTextCache.size());
+		//System.out.println("鏁呴殰缂撳瓨澶у皬: " + faultTextCache.size());
 	}
-	
+
 	/**
 	 * 缁熻鍏呯數涓殑鍗℃Ы鏁伴噺
 	 * @return 鍏呯數涓殑鍗℃Ы鏁伴噺瀛楃涓�
 	 */
 	public static String getChargingCount() {
-	    int count = 0;
-	    for (Fkj slot : slotArray) {
-	        if ("2".equals(slot.getWorkStatus())) {
-	            count++;
-	        }
-	    }
-	    return String.valueOf(count);
+		int count = 0;
+		for (Fkj slot : slotArray) {
+			if ("2".equals(slot.getWorkStatus())) {
+				count++;
+			}
+		}
+		return String.valueOf(count);
 	}
 
 	/**
@@ -468,13 +478,13 @@
 	 * @return 宸插厖婊$殑鍗℃Ы鏁伴噺瀛楃涓�
 	 */
 	public static String getFullyChargedCount() {
-	    int count = 0;
-	    for (Fkj slot : slotArray) {
-	        if ("3".equals(slot.getWorkStatus())) {
-	            count++;
-	        }
-	    }
-	    return String.valueOf(count);
+		int count = 0;
+		for (Fkj slot : slotArray) {
+			if ("3".equals(slot.getWorkStatus())) {
+				count++;
+			}
+		}
+		return String.valueOf(count);
 	}
 
 	/**
@@ -482,13 +492,13 @@
 	 * @return 鏁呴殰鐨勫崱妲芥暟閲忓瓧绗︿覆
 	 */
 	public static String getFaultCount() {
-	    int count = 0;
-	    for (Fkj slot : slotArray) {
-	        if ("4".equals(slot.getWorkStatus())) {
-	            count++;
-	        }
-	    }
-	    return String.valueOf(count);
+		int count = 0;
+		for (Fkj slot : slotArray) {
+			if ("4".equals(slot.getWorkStatus())) {
+				count++;
+			}
+		}
+		return String.valueOf(count);
 	}
 
 	/**
@@ -496,12 +506,53 @@
 	 * @return 閫氫俊瓒呮椂鐨勫崱妲芥暟閲忓瓧绗︿覆
 	 */
 	public static String getCommTimeoutCount() {
-	    int count = 0;
-	    for (Fkj slot : slotArray) {
-	        if ("6".equals(slot.getWorkStatus())) {
-	            count++;
-	        }
+		int count = 0;
+		for (Fkj slot : slotArray) {
+			if ("6".equals(slot.getWorkStatus())) {
+				count++;
+			}
+		}
+		return String.valueOf(count);
+	}
+
+	/**
+	 * 鏂板锛氭娴嬪崱鍙峰彉鍖栧苟寮瑰嚭杩樺崱鎴愬姛鎻愮ず
+	 */
+	private static void checkCardInsertionAndShowDialog(int slotNumber, String oldCardNumber, String newCardNumber) {
+		// 妫�鏌ュ崱鍙锋槸鍚︿粠"0000"鍙樹负闈�"0000"
+		if ("0000".equals(oldCardNumber) && !"0000".equals(newCardNumber)) {
+			// 鍦ㄤ簨浠跺垎鍙戠嚎绋嬩腑鏄剧ず瀵硅瘽妗�
+			javax.swing.SwingUtilities.invokeLater(() -> {
+				Dingshidialog.showTimedDialog(
+						null, // 鐖剁獥鍙o紝鍙互涓簄ull
+						5,    // 鏄剧ず3绉�
+						slotNumber+"鍙峰崱妲借繕鍗℃垚鍔熸劅璋㈡偍鐨勪娇鐢�"
+						);
+			});
+			//System.out.println("鍗℃Ы " + slotNumber + " 杩樺崱鎴愬姛锛屽崱鍙蜂粠 " + oldCardNumber + " 鍙樹负 " + newCardNumber);
+		}
+	}
+	
+	/**
+	 * 闈欐�佹柟娉曪細鏍规嵁鍗℃Ы缂栧彿鏀瑰彉鏄惁鏈夊崱鐨勫睘鎬у�间负0锛堟棤鍗★級
+	 * @param slotNumber 鍗℃Ы缂栧彿锛堜粠1寮�濮嬶級
+	 * @param caozuo 鎿嶄綔绫诲瀷锛�1琛ㄧず绠$悊鍛橈紝0琛ㄧず绯荤粺
+	 * @return 淇敼鎴愬姛杩斿洖true锛屽惁鍒欒繑鍥瀎alse
+	 */
+	public static boolean changgehaska(int slotNumber, int caozuo) {
+	    if (!isValidSlotNumber(slotNumber)) {
+	        return false;
 	    }
-	    return String.valueOf(count);
+	    Fkj slot = slotArray[slotNumber - 1];
+	    slot.setHasCard("0");
+	    slot.setCardNumber("0000");
+	    slot.setUpdateTime(getCurrentTime());
+	    
+	    // 璁板綍鍙栧崱鏃ュ織
+	    String operator =caozuo==1? "绠$悊鍛�" : "绯荤粺";
+	    String logMessage = String.format("鍙栧崱鎿嶄綔锛氬崱妲�%d琚�%s鍙栧崱", slotNumber, operator);
+	    dialog.Charulog.logOperation(logMessage);
+	    
+	    return true;
 	}
 }
\ No newline at end of file

--
Gitblit v1.9.3