diff --git a/wms-webapi/src/main/java/top/wms/admin/controller/vm/VmCommandController.java b/wms-webapi/src/main/java/top/wms/admin/controller/vm/VmCommandController.java index 4370ebd..fd6ccfd 100644 --- a/wms-webapi/src/main/java/top/wms/admin/controller/vm/VmCommandController.java +++ b/wms-webapi/src/main/java/top/wms/admin/controller/vm/VmCommandController.java @@ -48,12 +48,12 @@ public class VmCommandController { } - @GetMapping("/start") + @PostMapping("/start") public boolean startTask() { return saveBmpTaskService.startTask(); } - @GetMapping("/stop") + @PostMapping("/stop") public boolean stopTask() { return saveBmpTaskService.stopTask(); } diff --git a/wms-webapi/src/main/java/top/wms/admin/controller/weighManage/ah/AHDZCConnect.java b/wms-webapi/src/main/java/top/wms/admin/controller/weighManage/ah/AHDZCConnect.java index 57b387c..7cc1d59 100644 --- a/wms-webapi/src/main/java/top/wms/admin/controller/weighManage/ah/AHDZCConnect.java +++ b/wms-webapi/src/main/java/top/wms/admin/controller/weighManage/ah/AHDZCConnect.java @@ -4,7 +4,10 @@ import com.fazecast.jSerialComm.SerialPort; import com.fazecast.jSerialComm.SerialPortDataListener; import com.fazecast.jSerialComm.SerialPortEvent; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import top.continew.starter.web.model.R; import java.nio.charset.Charset; import java.util.concurrent.Executors; @@ -19,11 +22,12 @@ import java.util.regex.Pattern; /** * 安衡电子秤连接类 */ -@Component +@RestController +@RequestMapping("/api/weigh/ah") @Slf4j public class AHDZCConnect { - private static final String PORT_NAME = "COM12"; + private static final String PORT_NAME = "COM5"; private static final int BAUD_RATE = 9600; private static final int DATA_BITS = 8; private static final int STOP_BITS = 1; @@ -47,18 +51,33 @@ public class AHDZCConnect { private ScheduledExecutorService executorService; - // @PostConstruct - public void init() { - // 项目启动时初始化并启动服务 + /** + * 初始化并启动电子秤服务 + */ + @PostMapping("/init") + public R init() { + // 先停止旧的服务,确保资源释放 + stop(); + // 重置状态变量 + isRunning.set(true); + isConnecting.set(false); + reconnectAttempts.set(0); + currentReconnectDelay.set(INITIAL_RECONNECT_DELAY); + // 重新初始化并启动服务 ScaleService(); start(); - + return R.ok(); } - // @PreDestroy - public void destroy() { - // 项目关闭时停止服务 + /** + * 停止电子秤服务 + */ + @PostMapping("/destroy") + public R destroy() { + log.info("调用停止电子称"); + // 停止服务 stop(); + return R.ok(); } public void ScaleService() { @@ -68,7 +87,12 @@ public class AHDZCConnect { return t; }); - Runtime.getRuntime().addShutdownHook(new Thread(this::stop, "Shutdown-Hook")); + // 设置30分钟后自动关闭线程池 + executorService.schedule(() -> { + log.info("线程池运行时间已达30分钟,准备自动关闭..."); + stop(); + }, 30 * 60, TimeUnit.SECONDS); + } public void start() {