diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 35753ab..0a04fd7 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,9 +4,10 @@
-
+
+
-
+
@@ -122,7 +123,7 @@
-
+
@@ -132,7 +133,15 @@
1757833150037
-
+
+
+ 1757833985847
+
+
+
+ 1757833985847
+
+
@@ -151,7 +160,8 @@
-
+
+
diff --git a/src/main/java/com/simulationservice/service/DemandThread.java b/src/main/java/com/simulationservice/service/DemandThread.java
new file mode 100644
index 0000000..39697c9
--- /dev/null
+++ b/src/main/java/com/simulationservice/service/DemandThread.java
@@ -0,0 +1,23 @@
+package com.simulationservice.service;
+import java.io.IOException;
+import java.lang.*;
+import com.simulationservice.service.CustomThread;
+/**
+ * 生成保障需求线程,用于对各个作战单元的资源消耗进行判断产生需求
+ */
+public class DemandThread extends CustomThread {
+
+ @Override
+ public void processBuss() {
+ //进行业务逻辑处理
+ if (max < 0) max = 1000;
+ max--;
+ String info = String.valueOf(max) + " " + getRoomId();
+ try {
+ WebSocketServer.sendInfo(info, "1111");
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/src/main/java/com/simulationservice/service/InferenceTaskService.java b/src/main/java/com/simulationservice/service/InferenceTaskService.java
index 34e5acb..3f30041 100644
--- a/src/main/java/com/simulationservice/service/InferenceTaskService.java
+++ b/src/main/java/com/simulationservice/service/InferenceTaskService.java
@@ -9,15 +9,32 @@ import org.springframework.stereotype.Service;
@Service
public class InferenceTaskService {
+ private DemandThread demandThread;
@Async
public boolean loadScenario(String roomId, String scenarioId) {
+ //
+ demandThread = new DemandThread();
+ demandThread.setRoomId(roomId);
+ demandThread.setScenarioId(scenarioId);
+ demandThread.start();
return true;
}
@Async
public void executeTask() {
- // 启动我们的任务
- //new MyTask().run();
+ demandThread.startThread();
+ }
+
+ @Async
+ public void stopTask() {
+ // 停止我们的任务
+ demandThread.stopThread();
+ }
+
+ @Async
+ public void closeTask() {
+ // 停止我们的任务
+ demandThread.closeThread();
}
}
diff --git a/src/main/java/com/simulationservice/service/TaskAssignThread.java b/src/main/java/com/simulationservice/service/TaskAssignThread.java
new file mode 100644
index 0000000..63ddbfa
--- /dev/null
+++ b/src/main/java/com/simulationservice/service/TaskAssignThread.java
@@ -0,0 +1,24 @@
+package com.simulationservice.service;
+import java.io.IOException;
+import java.lang.*;
+import com.simulationservice.service.CustomThread;
+/**
+ * 任务分配线程,用于处理保障任务使用
+ */
+public class TaskAssignThread extends CustomThread {
+
+ @Override
+ public void processBuss() {
+
+ //进行业务逻辑处理
+ if (max < 0) max = 1000;
+ max--;
+ String info = String.valueOf(max) + " " + getRoomId();
+ try {
+ WebSocketServer.sendInfo(info, "3333");
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/src/main/java/com/simulationservice/service/TaskThread.java b/src/main/java/com/simulationservice/service/TaskThread.java
new file mode 100644
index 0000000..09f8918
--- /dev/null
+++ b/src/main/java/com/simulationservice/service/TaskThread.java
@@ -0,0 +1,23 @@
+package com.simulationservice.service;
+import java.io.IOException;
+import java.lang.*;
+import com.simulationservice.service.CustomThread;
+/**
+ * 保障任务线程,用于处理需求消耗生成的保障需求
+ */
+public class TaskThread extends CustomThread {
+
+ @Override
+ public void processBuss() {
+
+ if (max < 0) max = 1000;
+ max--;
+ String info = String.valueOf(max) + " " + getRoomId();
+ try {
+ WebSocketServer.sendInfo(info, "2222");
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/src/main/java/com/simulationservice/service/TimeSyncThread.java b/src/main/java/com/simulationservice/service/TimeSyncThread.java
new file mode 100644
index 0000000..3be8f6d
--- /dev/null
+++ b/src/main/java/com/simulationservice/service/TimeSyncThread.java
@@ -0,0 +1,40 @@
+package com.simulationservice.service;
+import java.io.IOException;
+import java.lang.*;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.simulationservice.service.CustomThread;
+/**
+ * 时间同步线程,用于处理想定的倒计时和想定时间结束
+ */
+public class TimeSyncThread extends CustomThread {
+
+ private String beginTime; //开始时间
+ private long continueTime; //持续时间
+
+ @Override
+ public void processBuss() {
+
+ //系统当前时间倒计时
+ Date date = new Date();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String formattedDate = sdf.format(date);
+ System.out.println(formattedDate);
+
+ //String dateString = "2023-04-01 12:00:00";
+
+ try {
+ Date dateT = sdf.parse(beginTime);
+ System.out.println(dateT);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void setBeginTime(String beginTime) {
+ this.beginTime = beginTime;
+ }
+
+}
diff --git a/src/main/java/com/simulationservice/service/WasterThread.java b/src/main/java/com/simulationservice/service/WasterThread.java
new file mode 100644
index 0000000..6770333
--- /dev/null
+++ b/src/main/java/com/simulationservice/service/WasterThread.java
@@ -0,0 +1,23 @@
+package com.simulationservice.service;
+import java.io.IOException;
+import java.lang.*;
+import com.simulationservice.service.CustomThread;
+/**
+ * 作战分队物资消耗线程,用于各个作战单元的资源消耗
+ */
+public class WasterThread extends CustomThread {
+
+ @Override
+ public void processBuss() {
+ //进行业务逻辑处理
+ if (max < 0) max = 1000;
+ max--;
+ String info = String.valueOf(max) + " " + getRoomId();
+ try {
+ WebSocketServer.sendInfo(info, "1111");
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/src/main/java/com/simulationservice/util/CustomThread.java b/src/main/java/com/simulationservice/util/CustomThread.java
new file mode 100644
index 0000000..69d667e
--- /dev/null
+++ b/src/main/java/com/simulationservice/util/CustomThread.java
@@ -0,0 +1,64 @@
+package com.simulationservice.service;
+import java.lang.*;
+/**
+ * 需求消耗线程,用于各个作战单元的需求消耗
+ */
+public abstract class CustomThread extends Thread {
+
+ private boolean running = false;
+ private boolean exit = false;
+ private String scenarioId = ""; //想定Id
+ private String roomId = ""; //房间号
+ int max = 1000;
+
+ @Override
+ public void run() {
+ //此处让这个新线程每隔0.1s执行一次打印操作
+ while (true) {
+ try {
+ if (exit)
+ break;
+ if (running == false) {
+ Thread.sleep(100);
+ continue;
+ }
+ processBuss();
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+ }
+
+ public abstract void processBuss();
+
+ public String getScenarioId() {
+ return this.scenarioId;
+ }
+
+ public void setScenarioId(String scenarioId) {
+ this.scenarioId = scenarioId;
+ }
+
+ public String getRoomId() {
+ return this.roomId;
+ }
+
+ public void setRoomId(String roomId) {
+ this.roomId = roomId;
+ }
+
+ public void startThread() {
+ running = true;
+ }
+
+ public void stopThread() {
+ running = false;
+ }
+
+ public void closeThread() {
+ exit = true;
+ }
+}