From f5ba96e225f776de231aaa94d945783bf921a568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=8E=89=E4=B8=9C?= <129883742+liyudong2018@users.noreply.github.com> Date: Sat, 20 Sep 2025 15:48:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hivekion/room/bean/AbtParentTask.java | 6 ++--- .../java/com/hivekion/room/bean/MoveTask.java | 26 ++++++++++++++++--- .../java/com/hivekion/room/bean/Room.java | 3 +++ .../service/ScenarioResourceService.java | 1 + .../impl/ScenarioResourceServiceImpl.java | 7 +++++ 5 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/hivekion/room/bean/AbtParentTask.java b/src/main/java/com/hivekion/room/bean/AbtParentTask.java index e54634a..4f1d157 100644 --- a/src/main/java/com/hivekion/room/bean/AbtParentTask.java +++ b/src/main/java/com/hivekion/room/bean/AbtParentTask.java @@ -28,10 +28,9 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; - -import com.hivekion.statistic.bean.ScenarioInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.core.env.Environment; import org.springframework.web.reactive.function.client.WebClient; @@ -62,7 +61,8 @@ public abstract class AbtParentTask implements TaskAction { protected final String roomId; //http请求 protected WebClient webClient = WebClient.create(); - + protected final AtomicBoolean canMoved = new AtomicBoolean(true); + protected final AtomicReference coordinateReference = new AtomicReference<>(); /** * 任务相对与想定的开始时间 diff --git a/src/main/java/com/hivekion/room/bean/MoveTask.java b/src/main/java/com/hivekion/room/bean/MoveTask.java index 24f9a71..a94ae62 100644 --- a/src/main/java/com/hivekion/room/bean/MoveTask.java +++ b/src/main/java/com/hivekion/room/bean/MoveTask.java @@ -1,6 +1,7 @@ package com.hivekion.room.bean; import cn.hutool.extra.spring.SpringUtil; +import com.alibaba.fastjson2.JSON; import com.hivekion.Global; import com.hivekion.common.entity.ResponseCmdInfo; import com.hivekion.common.redis.RedisUtil; @@ -13,6 +14,7 @@ import com.hivekion.scenario.entity.ScenarioTask; import com.hivekion.scenario.service.impl.BattleConsumeServiceImpl; import com.hivekion.scenario.service.impl.BattleSupplierServiceImpl; import com.hivekion.scenario.service.impl.ScenarioTaskServiceImpl; +import com.hivekion.statistic.bean.ScenarioInfo; import com.hivekion.statistic.bean.StatisticBean; import com.hivekion.statistic.service.impl.StatisticServiceImpl; import com.hivekion.supplier.entity.SupplierRequest; @@ -138,7 +140,13 @@ public class MoveTask extends AbtParentTask implements TaskAction { return; } fuel = fuel - currentUseUp; + Object statisticObj = redis.hget( + scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), + "scenarioInfo"); + if (statisticObj != null) { + setCurrentFuel(currentUseUp); + } redis.hset( scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "fuelConsume", fuel); @@ -226,14 +234,24 @@ public class MoveTask extends AbtParentTask implements TaskAction { } private double getCurrentFuel() { - Object currentFuelObj = redis.hget( + Object statisticObj = redis.hget( scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "fuel"); - if (currentFuelObj != null) { - return Double.parseDouble(currentFuelObj.toString()); + "scenarioInfo"); + if (statisticObj != null) { + ScenarioInfo scenarioInfo = JSON.parseObject(statisticObj.toString(), ScenarioInfo.class); + return scenarioInfo.getFuel().getCurrent(); } return 0; } + private void setCurrentFuel(double num) { + Object statisticObj = redis.hget( + scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), + "scenarioInfo"); + if (statisticObj != null) { + ScenarioInfo scenarioInfo = JSON.parseObject(statisticObj.toString(), ScenarioInfo.class); + scenarioInfo.getFuel().setCurrent( scenarioInfo.getFuel().getCurrent()-num); + } + } } diff --git a/src/main/java/com/hivekion/room/bean/Room.java b/src/main/java/com/hivekion/room/bean/Room.java index c76d5c4..fd665a2 100644 --- a/src/main/java/com/hivekion/room/bean/Room.java +++ b/src/main/java/com/hivekion/room/bean/Room.java @@ -10,6 +10,7 @@ import com.hivekion.common.utils; import com.hivekion.common.uuid.IdUtils; import com.hivekion.room.func.TaskAction; import com.hivekion.scenario.bean.ScenarioWsParam; +import com.hivekion.scenario.service.impl.ScenarioResourceServiceImpl; import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.Map; @@ -220,6 +221,8 @@ public class Room implements AutoCloseable { if( scenarioService == null) { scenarioService = SpringUtil.getBean(com.hivekion.statistic.service.ScenarioService.class); } + //设置资源列表 + scenario.setResourceList(SpringUtil.getBean(ScenarioResourceServiceImpl.class).getResourceListByScenarioId(scenario.getId())); for(ScenarioResource scenarioResource:this.scenario.getResourceList() ){ ScenarioInfo scenarioInfo = scenarioService.listScenarioInfo(scenarioResource.getScenarioId(),roomId,scenarioResource.getId()); if( redisUtil == null){ diff --git a/src/main/java/com/hivekion/scenario/service/ScenarioResourceService.java b/src/main/java/com/hivekion/scenario/service/ScenarioResourceService.java index 1143c03..d4b7e88 100644 --- a/src/main/java/com/hivekion/scenario/service/ScenarioResourceService.java +++ b/src/main/java/com/hivekion/scenario/service/ScenarioResourceService.java @@ -16,4 +16,5 @@ import java.util.Map; public interface ScenarioResourceService extends IService { List getResourceList(ScenarioResource resource); Map resourceMap(); + List getResourceListByScenarioId(Integer scenarioId); } diff --git a/src/main/java/com/hivekion/scenario/service/impl/ScenarioResourceServiceImpl.java b/src/main/java/com/hivekion/scenario/service/impl/ScenarioResourceServiceImpl.java index a0974b8..a0d367f 100644 --- a/src/main/java/com/hivekion/scenario/service/impl/ScenarioResourceServiceImpl.java +++ b/src/main/java/com/hivekion/scenario/service/impl/ScenarioResourceServiceImpl.java @@ -106,4 +106,11 @@ public class ScenarioResourceServiceImpl extends return this.list().stream().collect(Collectors.toMap(ScenarioResource::getId, r -> r)); } + + @Override + public List getResourceListByScenarioId(Integer scenarioId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("scenario_id", scenarioId); + return this.list(queryWrapper); + } }