diff --git a/src/main/java/com/hivekion/room/bean/AbtParentTask.java b/src/main/java/com/hivekion/room/bean/AbtParentTask.java index 9a7a990..e54634a 100644 --- a/src/main/java/com/hivekion/room/bean/AbtParentTask.java +++ b/src/main/java/com/hivekion/room/bean/AbtParentTask.java @@ -63,9 +63,7 @@ public abstract class AbtParentTask implements TaskAction { //http请求 protected WebClient webClient = WebClient.create(); - private RedisUtil redisUtil; - private com.hivekion.statistic.service.ScenarioService scenarioService; /** * 任务相对与想定的开始时间 */ @@ -309,19 +307,19 @@ public abstract class AbtParentTask implements TaskAction { //房间统一管理定时器;房间关闭后,定时器销毁 addScheduledExecutorServiceRefenceToRoom(schedule); } + private RedisUtil redisUtil; //统一推送方法 protected void pushStatus(String resourceId) { - if( scenarioService == null) { - scenarioService = SpringUtil.getBean(com.hivekion.statistic.service.ScenarioService.class); - } - ScenarioInfo scenarioInfo = scenarioService.listScenarioInfo(this.scenarioTask.getScenarioId(),roomId,resourceId); - - if( redisUtil == null){ + if( redisUtil == null) { redisUtil = SpringUtil.getBean(RedisUtil.class); - redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo",JSON.toJSONString(scenarioInfo)); - }else{ - redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo",JSON.toJSONString(scenarioInfo)); } + String jsonStr= (String) redisUtil.hget(this.scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo"); + ResponseCmdInfo respObj = new ResponseCmdInfo<>(); + respObj.setData(jsonStr); + respObj.setRoom(roomId); + respObj.setScenarioId(scenarioTask.getScenarioId()); + respObj.setCmdType("scenarioInfo"); + Global.sendCmdInfoQueue.add(respObj); } } diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index ded8903..362c74b 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -129,7 +129,6 @@ public class BattleRootTask extends AbtParentTask { String teamLng = null; JSONObject jsonObject = new JSONObject(); try { - HashMap battleParams = (HashMap) redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId()); long duringTime = getDuringTime(); long lastDuringTime = Long.valueOf(battleParams.get("duringTime").toString()); long intervalDuringTime = duringTime - lastDuringTime; @@ -165,8 +164,8 @@ public class BattleRootTask extends AbtParentTask { scenarioInfo.getFuel().setCurrent(Double.valueOf(fuel - fuelConsume)); scenarioInfo.getMedical().setCurrent(Double.valueOf(medical - medicalConsume)); scenarioInfo.getWater().setCurrent(Double.valueOf(water - waterConsume)); - battleParams.put("death",Long.valueOf(death+deathConsume).toString()); - battleParams.put("injured",Long.valueOf(injured +injuredConsume).toString()); + scenarioInfo.getPerson().setDeath(Long.valueOf(death+deathConsume).intValue()); + scenarioInfo.getPerson().setInjured(Long.valueOf(injured +injuredConsume).intValue()); battleParams.put("duringTime",Long.valueOf(duringTime).toString()); redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), battleParams); }catch (Exception ex){ diff --git a/src/main/java/com/hivekion/room/bean/Room.java b/src/main/java/com/hivekion/room/bean/Room.java index 9d364b1..c76d5c4 100644 --- a/src/main/java/com/hivekion/room/bean/Room.java +++ b/src/main/java/com/hivekion/room/bean/Room.java @@ -1,8 +1,11 @@ package com.hivekion.room.bean; +import cn.hutool.extra.spring.SpringUtil; +import com.alibaba.fastjson2.JSON; import com.hivekion.Global; import com.hivekion.baseData.entity.Scenario; import com.hivekion.common.entity.ResponseCmdInfo; +import com.hivekion.common.redis.RedisUtil; import com.hivekion.common.utils; import com.hivekion.common.uuid.IdUtils; import com.hivekion.room.func.TaskAction; @@ -22,6 +25,9 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; + +import com.hivekion.scenario.entity.ScenarioResource; +import com.hivekion.statistic.bean.ScenarioInfo; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -52,6 +58,10 @@ public class Room implements AutoCloseable { * 想定信息 */ private Scenario scenario; + + private RedisUtil redisUtil; + + private com.hivekion.statistic.service.ScenarioService scenarioService; /** * 任务容器 */ @@ -93,7 +103,7 @@ public class Room implements AutoCloseable { totalTime.set(time); startTask(); //初始化系统资源 物资人员等信息 - + initRoomParam(); } /** @@ -206,5 +216,21 @@ public class Room implements AutoCloseable { return status.get(); } + public void initRoomParam(){ + if( scenarioService == null) { + scenarioService = SpringUtil.getBean(com.hivekion.statistic.service.ScenarioService.class); + } + for(ScenarioResource scenarioResource:this.scenario.getResourceList() ){ + ScenarioInfo scenarioInfo = scenarioService.listScenarioInfo(scenarioResource.getScenarioId(),roomId,scenarioResource.getId()); + if( redisUtil == null){ + redisUtil = SpringUtil.getBean(RedisUtil.class); + redisUtil.hset(scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId(),"scenarioInfo", JSON.toJSONString(scenarioInfo)); + }else{ + redisUtil.hset(scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId(),"scenarioInfo",JSON.toJSONString(scenarioInfo)); + } + } + + } + }