diff --git a/src/main/java/com/hivekion/room/bean/AbtParentTask.java b/src/main/java/com/hivekion/room/bean/AbtParentTask.java index a6c213e..d4c65b5 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/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 8b80596..45ec7cc 100644 --- a/src/main/java/com/hivekion/ws/WsServer.java +++ b/src/main/java/com/hivekion/ws/WsServer.java @@ -35,8 +35,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, @@ -88,17 +88,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); + } } @@ -116,11 +118,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