任务相关
This commit is contained in:
parent
3c8b8a5ce6
commit
79850327fb
|
@ -23,10 +23,10 @@ public class RoomManager {
|
||||||
|
|
||||||
private static final Map<String, Room> roomsMap = new ConcurrentHashMap<>();
|
private static final Map<String, Room> roomsMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public static void startRoom(String id, Scenario scenario, long time) {
|
public static void startRoom(String id, Scenario scenario, long duringTime) {
|
||||||
Room room = new Room(id, scenario);
|
Room room = new Room(id, scenario);
|
||||||
roomsMap.put(id, room);
|
roomsMap.put(id, room);
|
||||||
room.start(time);
|
room.start(duringTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void stopRoom(String id) {
|
public static void stopRoom(String id) {
|
||||||
|
|
|
@ -90,7 +90,6 @@ public abstract class AbtParentTask implements TaskAction {
|
||||||
private StatisticBean statisticBean;
|
private StatisticBean statisticBean;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public AbtParentTask(ScenarioTask scenarioTask, String roomId) {
|
public AbtParentTask(ScenarioTask scenarioTask, String roomId) {
|
||||||
this.scenarioTask = scenarioTask;
|
this.scenarioTask = scenarioTask;
|
||||||
this.roomId = roomId;
|
this.roomId = roomId;
|
||||||
|
@ -250,11 +249,16 @@ public abstract class AbtParentTask implements TaskAction {
|
||||||
schedule.scheduleWithFixedDelay(() -> {
|
schedule.scheduleWithFixedDelay(() -> {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
Room room = RoomManager.getRoom(this.roomId);
|
||||||
|
if (room == null || room.isTimeExpired()) {
|
||||||
|
log.error("房间不存在或者已经到达想定结束时间");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.getRoomStatus()) {
|
if (this.getRoomStatus()) {
|
||||||
//自动生成的任务不需要判断油量;不要在生成新的任务
|
//自动生成的任务不需要判断油量;不要在生成新的任务
|
||||||
log.info("{}-fromSource::{}",scenarioTask.getResourceId(),scenarioTask.getFromSource());
|
log.info("{}-fromSource::{}", scenarioTask.getResourceId(), scenarioTask.getFromSource());
|
||||||
if(!"general".equals(scenarioTask.getFromSource())) {
|
if (!"general".equals(scenarioTask.getFromSource())) {
|
||||||
double currentFuel = getCurrentFuel();
|
double currentFuel = getCurrentFuel();
|
||||||
double totalFuel = statisticBean.getFuel().getTotal();
|
double totalFuel = statisticBean.getFuel().getTotal();
|
||||||
log.info("totalFuel::{}", totalFuel);
|
log.info("totalFuel::{}", totalFuel);
|
||||||
|
@ -282,7 +286,6 @@ public abstract class AbtParentTask implements TaskAction {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (distanceInfoMap.isEmpty()) {
|
if (distanceInfoMap.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -290,7 +293,7 @@ public abstract class AbtParentTask implements TaskAction {
|
||||||
if (duringAction != null) {
|
if (duringAction != null) {
|
||||||
duringAction.doSomeThing();
|
duringAction.doSomeThing();
|
||||||
}
|
}
|
||||||
log.info("移动中..... 放大系数{}",RoomManager.getMag(roomId));
|
log.info("移动中..... 放大系数{}", RoomManager.getMag(roomId));
|
||||||
//跑动距离
|
//跑动距离
|
||||||
double distance = duringTime.getAndAdd(RoomManager.getMag(roomId)) * speed;
|
double distance = duringTime.getAndAdd(RoomManager.getMag(roomId)) * speed;
|
||||||
|
|
||||||
|
@ -348,7 +351,7 @@ public abstract class AbtParentTask implements TaskAction {
|
||||||
this.scenarioTask.getResourceId());
|
this.scenarioTask.getResourceId());
|
||||||
editScenarioInfo.getJbxx().getTeam().setLat(coordinate.getLat() + "");
|
editScenarioInfo.getJbxx().getTeam().setLat(coordinate.getLat() + "");
|
||||||
editScenarioInfo.getJbxx().getTeam().setLng(coordinate.getLng() + "");
|
editScenarioInfo.getJbxx().getTeam().setLng(coordinate.getLng() + "");
|
||||||
setEditScenarioInfo(editScenarioInfo,scenarioTask.getResourceId());
|
setEditScenarioInfo(editScenarioInfo, scenarioTask.getResourceId());
|
||||||
pushStatus(scenarioTask.getResourceId());
|
pushStatus(scenarioTask.getResourceId());
|
||||||
|
|
||||||
} else if (Double.compare(distance, endPoint.getKey()) == 0) {
|
} else if (Double.compare(distance, endPoint.getKey()) == 0) {
|
||||||
|
@ -399,7 +402,7 @@ public abstract class AbtParentTask implements TaskAction {
|
||||||
return JSON.parseObject(updJsonStr, EditScenarioInfo.class);
|
return JSON.parseObject(updJsonStr, EditScenarioInfo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setEditScenarioInfo(EditScenarioInfo editScenarioInfo,String resourceId) {
|
protected void setEditScenarioInfo(EditScenarioInfo editScenarioInfo, String resourceId) {
|
||||||
SpringUtil.getBean(RedisUtil.class).hset(
|
SpringUtil.getBean(RedisUtil.class).hset(
|
||||||
this.scenarioTask.getScenarioId() + "-" + roomId + "-" + resourceId,
|
this.scenarioTask.getScenarioId() + "-" + roomId + "-" + resourceId,
|
||||||
"updScenarioInfo", JSON.toJSONString(editScenarioInfo));
|
"updScenarioInfo", JSON.toJSONString(editScenarioInfo));
|
||||||
|
@ -473,7 +476,6 @@ public abstract class AbtParentTask implements TaskAction {
|
||||||
// 找出油料保障分队
|
// 找出油料保障分队
|
||||||
for (ScenarioResource resource : resourceList) {
|
for (ScenarioResource resource : resourceList) {
|
||||||
|
|
||||||
|
|
||||||
Teaminfo teaminfo = teamInfoMap.get(resource.getResourceId());
|
Teaminfo teaminfo = teamInfoMap.get(resource.getResourceId());
|
||||||
|
|
||||||
if ("SUPPLIER_FUEL".equals(teaminfo.getRoleCode())) {
|
if ("SUPPLIER_FUEL".equals(teaminfo.getRoleCode())) {
|
||||||
|
|
|
@ -109,7 +109,9 @@ public class Room implements AutoCloseable {
|
||||||
*/
|
*/
|
||||||
public void start(long time) {
|
public void start(long time) {
|
||||||
status.set(true);
|
status.set(true);
|
||||||
|
log.info("想定持续时间{}", time);
|
||||||
totalTime.set(time);
|
totalTime.set(time);
|
||||||
|
|
||||||
startTask();
|
startTask();
|
||||||
//初始化系统资源 物资人员等信息
|
//初始化系统资源 物资人员等信息
|
||||||
initRoomParam();
|
initRoomParam();
|
||||||
|
@ -158,7 +160,10 @@ public class Room implements AutoCloseable {
|
||||||
public long getDuringTime() {
|
public long getDuringTime() {
|
||||||
return duringTime.get();
|
return duringTime.get();
|
||||||
}
|
}
|
||||||
|
//是否到达想定结束时间
|
||||||
|
public boolean isTimeExpired() {
|
||||||
|
return totalTime.get() - duringTime.get() <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
// 启动定时任务
|
// 启动定时任务
|
||||||
private void startTask() {
|
private void startTask() {
|
||||||
|
@ -174,6 +179,7 @@ public class Room implements AutoCloseable {
|
||||||
if (totalTime.get() - curTime > 0) {
|
if (totalTime.get() - curTime > 0) {
|
||||||
sendRemainTime((totalTime.get() - curTime));
|
sendRemainTime((totalTime.get() - curTime));
|
||||||
} else {
|
} else {
|
||||||
|
log.info("想定结束,持续时间{}", curTime);
|
||||||
future.cancel(true);
|
future.cancel(true);
|
||||||
scheduler.shutdownNow();
|
scheduler.shutdownNow();
|
||||||
}
|
}
|
||||||
|
@ -182,7 +188,12 @@ public class Room implements AutoCloseable {
|
||||||
if (!actions.isEmpty()) {
|
if (!actions.isEmpty()) {
|
||||||
actions.forEach((key, action) -> {
|
actions.forEach((key, action) -> {
|
||||||
action.forEach((taskAction, task) -> {
|
action.forEach((taskAction, task) -> {
|
||||||
|
try {
|
||||||
actionExecutor.submit(task::doSomeThing);
|
actionExecutor.submit(task::doSomeThing);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("error::", e);
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -207,7 +218,7 @@ public class Room implements AutoCloseable {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws Exception {
|
public void close() {
|
||||||
actionMap.clear();
|
actionMap.clear();
|
||||||
if (future != null && !future.isCancelled()) {
|
if (future != null && !future.isCancelled()) {
|
||||||
future.cancel(true);
|
future.cancel(true);
|
||||||
|
@ -218,7 +229,7 @@ public class Room implements AutoCloseable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendRemainTime(long remainTime) {
|
private void sendRemainTime(long remainTime) {
|
||||||
|
log.info("remain_time{}", remainTime);
|
||||||
Map<String, Object> timeMap = new HashMap<>();
|
Map<String, Object> timeMap = new HashMap<>();
|
||||||
timeMap.put("update_time_str", utils.formatSeconds(remainTime));
|
timeMap.put("update_time_str", utils.formatSeconds(remainTime));
|
||||||
timeMap.put("remain_time", remainTime);
|
timeMap.put("remain_time", remainTime);
|
||||||
|
@ -273,17 +284,7 @@ public class Room implements AutoCloseable {
|
||||||
resourcePathMap.put(resourceId, obj);
|
resourcePathMap.put(resourceId, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getResourcePath(String resourceId) {
|
|
||||||
return resourcePathMap.get(resourceId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addResourceLastPosition(String resourceId, Coordinate obj) {
|
|
||||||
resourceCoordinateMap.put(resourceId, obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Coordinate getResourceLastPosition(String resourceId) {
|
|
||||||
return resourceCoordinateMap.get(resourceId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, Object> getPathMap() {
|
public Map<String, Object> getPathMap() {
|
||||||
return resourcePathMap;
|
return resourcePathMap;
|
||||||
|
|
|
@ -164,7 +164,7 @@ public class ScenarioRoomController extends BaseController {
|
||||||
ResponseCmdInfo<Object> respObj = new ResponseCmdInfo<>();
|
ResponseCmdInfo<Object> respObj = new ResponseCmdInfo<>();
|
||||||
Map<String, Object> dataMap = new HashMap<>();
|
Map<String, Object> dataMap = new HashMap<>();
|
||||||
dataMap.put("mag", mag);
|
dataMap.put("mag", mag);
|
||||||
dataMap.put("status", RoomManager.getRoom(room.getId()).getStatus());
|
dataMap.put("status", RoomManager.getRoom(room.getId())==null?0:RoomManager.getRoom(room.getId()).getStatus());
|
||||||
respObj.setData(dataMap);
|
respObj.setData(dataMap);
|
||||||
respObj.setRoom(room.getId());
|
respObj.setRoom(room.getId());
|
||||||
respObj.setScenarioId(room.getScenarioId());
|
respObj.setScenarioId(room.getScenarioId());
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
spring.datasource.dynamic.primary=dm
|
spring.datasource.dynamic.primary=dm
|
||||||
spring.datasource.dynamic.strict=false
|
spring.datasource.dynamic.strict=false
|
||||||
spring.datasource.dynamic.datasource.dm.url=jdbc:dm://192.168.0.53:5236/SIMULATION
|
spring.datasource.dynamic.datasource.dm.url=jdbc:dm://127.0.0.1:5236/SIMULATION
|
||||||
spring.datasource.dynamic.datasource.dm.driver-class-name=dm.jdbc.driver.DmDriver
|
spring.datasource.dynamic.datasource.dm.driver-class-name=dm.jdbc.driver.DmDriver
|
||||||
spring.datasource.dynamic.datasource.dm.username=SYSDBA
|
spring.datasource.dynamic.datasource.dm.username=SYSDBA
|
||||||
spring.datasource.dynamic.datasource.dm.password=Admin123
|
spring.datasource.dynamic.datasource.dm.password=SYSDBA001
|
||||||
|
|
||||||
spring.redis.database=0
|
spring.redis.database=0
|
||||||
spring.redis.host=127.0.0.1
|
spring.redis.host=127.0.0.1
|
||||||
|
@ -51,4 +51,4 @@ get.all.user = http://127.0.0.1/oauth2Server/api/outside/syncUserAll
|
||||||
#get.all.dept=http://127.0.0.1/oatuh2Server/api/outside/synDeptAll
|
#get.all.dept=http://127.0.0.1/oatuh2Server/api/outside/synDeptAll
|
||||||
logout.url=http://127.0.0.1:99/oauth2Server/oauth2/logout
|
logout.url=http://127.0.0.1:99/oauth2Server/oauth2/logout
|
||||||
|
|
||||||
path.planning.url=http://127.0.0.1:8989/route
|
path.planning.url=http://192.168.0.53:8989/route
|
||||||
|
|
Loading…
Reference in New Issue
Block a user