37 changed files with 493 additions and 323 deletions
-
6src/main/java/com/qyft/ms/app/common/command/DeviceCommandGenerator.java
-
55src/main/java/com/qyft/ms/app/handler/CMDResend.java
-
13src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveClose.java
-
12src/main/java/com/qyft/ms/app/handler/debugimpl/DehumidifierValveOpen.java
-
11src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageClose.java
-
12src/main/java/com/qyft/ms/app/handler/debugimpl/HighVoltageOpen.java
-
12src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlClose.java
-
13src/main/java/com/qyft/ms/app/handler/debugimpl/LaserControlOpen.java
-
11src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelClose.java
-
13src/main/java/com/qyft/ms/app/handler/debugimpl/LightingPanelOpen.java
-
98src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXMove.java
-
14src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXOrigin.java
-
10src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXStop.java
-
10src/main/java/com/qyft/ms/app/handler/debugimpl/MotorXYZPositionGet.java
-
55src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYMove.java
-
15src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYOrigin.java
-
10src/main/java/com/qyft/ms/app/handler/debugimpl/MotorYStop.java
-
61src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZMove.java
-
13src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZOrigin.java
-
11src/main/java/com/qyft/ms/app/handler/debugimpl/MotorZStop.java
-
11src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveClose.java
-
14src/main/java/com/qyft/ms/app/handler/debugimpl/NozzleValveOpen.java
-
12src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveCloseAll.java
-
12src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenNuzzlePipeline.java
-
13src/main/java/com/qyft/ms/app/handler/debugimpl/ThreeWayValveOpenSyringePipeline.java
-
13src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveClose.java
-
12src/main/java/com/qyft/ms/app/handler/debugimpl/WashValveOpen.java
-
25src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStart.java
-
13src/main/java/com/qyft/ms/app/handler/impl/DehumidifierStop.java
-
64src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayChangeParam.java
-
64src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayContinue.java
-
52src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayPause.java
-
12src/main/java/com/qyft/ms/app/handler/impl/MatrixSprayStart.java
-
2src/main/java/com/qyft/ms/app/handler/impl/NozzlePipelinePreFill.java
-
2src/main/java/com/qyft/ms/app/handler/impl/SyringePipelineWash.java
-
6src/main/java/com/qyft/ms/device/device/DeviceInstance.java
-
34src/main/java/com/qyft/ms/device/handler/DeviceMessageHandler.java
@ -0,0 +1,55 @@ |
|||
package com.qyft.ms.app.handler; |
|||
|
|||
import com.qyft.ms.device.device.DeviceInstance; |
|||
import io.netty.channel.ChannelHandler; |
|||
import jakarta.annotation.PostConstruct; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.Setter; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.Iterator; |
|||
import java.util.Map; |
|||
import java.util.concurrent.*; |
|||
|
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
public class CMDResend { |
|||
|
|||
@Setter |
|||
private volatile CountDownLatch latch; |
|||
|
|||
private static final long CLEANUP_INTERVAL = 2000; // 5 秒清理一次 |
|||
private static final long DUPLICATE_CHECK_INTERVAL = 300;//ms |
|||
|
|||
@PostConstruct |
|||
public void init() { |
|||
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); |
|||
executorService.scheduleAtFixedRate(() -> { |
|||
try { |
|||
cleanupOldCommands(); |
|||
} catch (Exception e) { |
|||
if (!executorService.isShutdown()) { |
|||
executorService.shutdown(); // 关闭 ScheduledExecutorService |
|||
} |
|||
log.error("定时器异常", e); |
|||
} |
|||
}, CLEANUP_INTERVAL, 100, TimeUnit.MILLISECONDS); |
|||
} |
|||
|
|||
|
|||
private static void cleanupOldCommands() { |
|||
|
|||
Map<Integer, Long> receivedCommands = DeviceInstance.getInstance().getReceivedCommands(); |
|||
long currentTime = System.currentTimeMillis(); |
|||
Iterator<Map.Entry<Integer, Long>> iterator = receivedCommands.entrySet().iterator(); |
|||
while (iterator.hasNext()) { |
|||
Map.Entry<Integer, Long> entry = iterator.next(); |
|||
if (currentTime - entry.getValue() > DUPLICATE_CHECK_INTERVAL) { |
|||
iterator.remove(); |
|||
} |
|||
} |
|||
// System.out.println("清理完成,当前记录数量: " + receivedCommands.size()); |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue