From c5d8988ee71197363fb69bc9aae230b02025a094 Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Sat, 20 Sep 2025 14:56:17 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=85=A8=E5=B1=80scenari?= =?UTF-8?q?o=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hivekion/room/bean/AbtParentTask.java | 20 ++++++------- .../hivekion/room/bean/BattleRootTask.java | 5 ++-- .../java/com/hivekion/room/bean/Room.java | 28 ++++++++++++++++++- 3 files changed, 38 insertions(+), 15 deletions(-) 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)); + } + } + + } + } From 6f2cef9edc8c3a7c85dcb05311484a28c34b3fb4 Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Sat, 20 Sep 2025 15:07:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=85=A8=E5=B1=80scenari?= =?UTF-8?q?o=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hivekion/room/bean/BattleRootTask.java | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index 362c74b..2492101 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -82,14 +82,8 @@ public class BattleRootTask extends AbtParentTask { this.initBean(); if(this.getRoomStatus()) { long initDuringTime = this.getDuringTime(); - StatisticBean statisticBean = null; - try { - statisticBean = statisticService.statistic(scenarioTask.getResourceId()); - }catch (Exception ex){ - ex.printStackTrace(); - } + redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"duringTime",String.valueOf(initDuringTime)); String jsonStr = (String)redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo"); - ScenarioInfo scenarioInfo =JSONObject.parseObject(jsonStr,ScenarioInfo.class); HashMap battleParams = new HashMap<>(); //初始化本次战斗任务各种资源数 @@ -105,9 +99,9 @@ public class BattleRootTask extends AbtParentTask { battleParams.put("teamLng",scenarioInfo.getTeam().getLng().toString()); battleParams.put("duringTime",Long.valueOf(initDuringTime).toString()); log.info("===============================初始化本次战斗任务各种资源数===================================="); - double suppleAmount =statisticBean.getAmmunition().getTotal(); - int suppleDeath =statisticBean.getPerson().getDeath(); - int suppleInjured =statisticBean.getPerson().getInjured(); + double suppleAmount =scenarioInfo.getAmmunition().getTotal(); + int suppleDeath =scenarioInfo.getPerson().getDeath(); + int suppleInjured =scenarioInfo.getPerson().getInjured(); final Map suppleFlagMap = new HashMap<>(); suppleFlagMap.put("ammunition",false); suppleFlagMap.put("death",false); @@ -130,7 +124,7 @@ public class BattleRootTask extends AbtParentTask { JSONObject jsonObject = new JSONObject(); try { long duringTime = getDuringTime(); - long lastDuringTime = Long.valueOf(battleParams.get("duringTime").toString()); + long lastDuringTime = Long.valueOf(redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"duringTime").toString()); long intervalDuringTime = duringTime - lastDuringTime; double ammunition = Double.valueOf(battleParams.get("ammunition").toString()); double food = Double.valueOf(battleParams.get("food").toString()); @@ -166,8 +160,8 @@ public class BattleRootTask extends AbtParentTask { scenarioInfo.getWater().setCurrent(Double.valueOf(water - waterConsume)); 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); + redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"duringTime",String.valueOf(duringTime)); + redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "scenarioInfo",JSONObject.toJSONString(scenarioInfo)); }catch (Exception ex){ log.error("==============================设置消耗信息失败=============================================",ex.getMessage()); }