From fb926dc7a6a10d8a9cc8cb0d6c99b38a79360f92 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: Sun, 21 Sep 2025 06:24:08 +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 ++-- .../hivekion/room/bean/BattleRootTask.java | 3 -- .../java/com/hivekion/room/bean/MoveTask.java | 2 +- .../com/hivekion/room/bean/SupplierTask.java | 14 ++++++++- src/main/java/com/hivekion/ws/WsServer.java | 30 ++++++++++--------- .../resources/application-rule.properties | 4 +-- 6 files changed, 35 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/hivekion/room/bean/AbtParentTask.java b/src/main/java/com/hivekion/room/bean/AbtParentTask.java index d6bfa10..6f49f67 100644 --- a/src/main/java/com/hivekion/room/bean/AbtParentTask.java +++ b/src/main/java/com/hivekion/room/bean/AbtParentTask.java @@ -348,7 +348,7 @@ public abstract class AbtParentTask implements TaskAction { this.scenarioTask.getResourceId()); editScenarioInfo.getJbxx().getTeam().setLat(coordinate.getLat() + ""); editScenarioInfo.getJbxx().getTeam().setLng(coordinate.getLng() + ""); - setEditScenarioInfo(editScenarioInfo); + setEditScenarioInfo(editScenarioInfo,scenarioTask.getResourceId()); pushStatus(scenarioTask.getResourceId()); } else if (Double.compare(distance, endPoint.getKey()) == 0) { @@ -399,9 +399,9 @@ public abstract class AbtParentTask implements TaskAction { return JSON.parseObject(updJsonStr, EditScenarioInfo.class); } - protected void setEditScenarioInfo(EditScenarioInfo editScenarioInfo) { + protected void setEditScenarioInfo(EditScenarioInfo editScenarioInfo,String resourceId) { SpringUtil.getBean(RedisUtil.class).hset( - this.scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), + this.scenarioTask.getScenarioId() + "-" + roomId + "-" + resourceId, "updScenarioInfo", JSON.toJSONString(editScenarioInfo)); } diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index b522cb4..14e2df8 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -215,10 +215,7 @@ public class BattleRootTask extends AbtParentTask { battleConsume.setResourceId(scenarioTask.getResourceId()); battleConsume.setConsumeDate(currentDateTime); battleConsumeService.save(battleConsume); - if(injuredConsume>2&&!isAlreadyProduceTask.get()){ - //产生一个 - } }catch (Exception ex){ ex.printStackTrace(); log.error("==================推送消耗數據 失败============================================",ex.getMessage()); diff --git a/src/main/java/com/hivekion/room/bean/MoveTask.java b/src/main/java/com/hivekion/room/bean/MoveTask.java index aacff44..9a256bc 100644 --- a/src/main/java/com/hivekion/room/bean/MoveTask.java +++ b/src/main/java/com/hivekion/room/bean/MoveTask.java @@ -108,7 +108,7 @@ public class MoveTask extends AbtParentTask implements TaskAction { EditScenarioInfo editScenarioInfo = getEditScenarioInfo( this.scenarioTask.getResourceId()); editScenarioInfo.getJbxx().getFuel().setCurrent(editScenarioInfo.getJbxx().getFuel().getCurrent()-currentUseUp); - setEditScenarioInfo(editScenarioInfo); + setEditScenarioInfo(editScenarioInfo,scenarioTask.getResourceId()); //插入消耗表 insertConsumption(currentUseUp); diff --git a/src/main/java/com/hivekion/room/bean/SupplierTask.java b/src/main/java/com/hivekion/room/bean/SupplierTask.java index e169382..3629d32 100644 --- a/src/main/java/com/hivekion/room/bean/SupplierTask.java +++ b/src/main/java/com/hivekion/room/bean/SupplierTask.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSON; import com.hivekion.common.redis.RedisUtil; import com.hivekion.room.func.TaskAction; import com.hivekion.scenario.entity.ScenarioTask; +import com.hivekion.statistic.bean.EditScenarioInfo; import com.hivekion.statistic.bean.ScenarioInfo; import com.hivekion.statistic.bean.StatisticBean; import com.hivekion.statistic.service.StatisticService; @@ -32,7 +33,7 @@ public class SupplierTask extends AbtParentTask implements TaskAction { StatisticBean statistic = SpringUtil.getBean(StatisticService.class) .statistic(scenarioTask.getResourceId()); initPath(); //初始化路径 - updatePath(30, null, new TaskAction() { + updatePath(50, null, new TaskAction() { @Override public void doSomeThing() { @@ -113,12 +114,22 @@ public class SupplierTask extends AbtParentTask implements TaskAction { "scenarioInfo"); if(supplierObj!=null&&insureObj!=null){ + ScenarioInfo scenarioSupplierInfo = JSON.parseObject(supplierObj.toString(), ScenarioInfo.class); ScenarioInfo scenarioInsureInfo = JSON.parseObject(insureObj.toString(), ScenarioInfo.class); scenarioSupplierInfo.getFuel().setCurrent(scenarioInsureInfo.getFuel().getCurrent() - statistic.getFuel().getTotal()); + scenarioInsureInfo.getFuel().setCurrent(statistic.getFuel().getTotal()); + EditScenarioInfo insureEdit = getEditScenarioInfo(scenarioTask.getInsureResourceId()); + double supplierNum = statistic.getFuel().getTotal() - statistic.getFuel().getCurrent(); + insureEdit.getJbxx().getFuel().setCurrent(statistic.getFuel().getTotal()); + setEditScenarioInfo(insureEdit,scenarioTask.getInsureResourceId()); + + EditScenarioInfo supplerEdit = getEditScenarioInfo(scenarioTask.getResourceId()); + supplerEdit.getJbxx().getFuel().setCurrent(statistic.getFuel().getTotal()-supplierNum); + setEditScenarioInfo(supplerEdit,scenarioTask.getResourceId()); SpringUtil.getBean(RedisUtil.class).hset( scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), @@ -131,6 +142,7 @@ public class SupplierTask extends AbtParentTask implements TaskAction { } } + private void supplierAmmunition(StatisticBean statistic) { //保障分队 diff --git a/src/main/java/com/hivekion/ws/WsServer.java b/src/main/java/com/hivekion/ws/WsServer.java index a113a26..6b84e62 100644 --- a/src/main/java/com/hivekion/ws/WsServer.java +++ b/src/main/java/com/hivekion/ws/WsServer.java @@ -33,8 +33,8 @@ public class WsServer { // key -> 当前key下所有会话 private static final Map>> SESSION_MAP = new ConcurrentHashMap<>(); - private static final Object lock = new Object(); - + private static final Object lock = new Object(); + private static final Object receiveLock = new Object(); @OnOpen public void onOpen(Session session, @@ -86,17 +86,19 @@ public class WsServer { @OnMessage public void onMessage(String message, Session session, @PathParam("room") String room, @PathParam("scenarioId") Integer scenarioId) { - try { - log.info("onMessage::room: {}, message: {}", room, message); - RequestCmdInfo requestCmdInfo = new RequestCmdInfo(); - requestCmdInfo.setScenarioId((scenarioId)); - requestCmdInfo.setRoom(room); - requestCmdInfo.setCmdType(JSON.parseObject(message,RequestCmdInfo.class).getCmdType()); + synchronized (receiveLock) { + try { + log.info("onMessage::room: {}, message: {}", room, message); + RequestCmdInfo requestCmdInfo = new RequestCmdInfo(); + requestCmdInfo.setScenarioId((scenarioId)); + requestCmdInfo.setRoom(room); + requestCmdInfo.setCmdType(JSON.parseObject(message, RequestCmdInfo.class).getCmdType()); - requestCmdInfo.setMessage(message); - Global.receiveCmdInfoQueue.add(requestCmdInfo); - } catch (Exception e) { - log.error("onMessage::room: {}, message: {},error::", room, message, e); + requestCmdInfo.setMessage(message); + Global.receiveCmdInfoQueue.add(requestCmdInfo); + } catch (Exception e) { + log.error("onMessage::room: {}, message: {},error::", room, message, e); + } } @@ -114,11 +116,11 @@ public class WsServer { } public static void sendMessage(Integer scenarioId, String room, String message) { - // log.info("send {},{},{}", message, scenarioId, room); + // log.info("send {},{},{}", message, scenarioId, room); synchronized (lock) { Map> roomMap = SESSION_MAP.get(String.valueOf(scenarioId)); - // log.info("roomMap:{}", roomMap); + // log.info("roomMap:{}", roomMap); if (roomMap != null) { if (roomMap.containsKey(room)) { Map singleRoomMap = roomMap.get(room); diff --git a/src/main/resources/application-rule.properties b/src/main/resources/application-rule.properties index 0e71ef1..029efca 100644 --- a/src/main/resources/application-rule.properties +++ b/src/main/resources/application-rule.properties @@ -3,12 +3,12 @@ death.warn = 56 ammunition.warn = 3 food.warn = 3 water.warn = 3 -fuel.warn = 99.99 +fuel.warn = 95.99 medical.warn = 1 death.spreed = 3 injured.spreed = 3 ammunition.spreed = 2.6 food.spreed = 2.3 water.spreed = 3.6 -fuel.spreed = 0.04 +fuel.spreed = 0.4 medical.spreed = 1.6 \ No newline at end of file