From 28e4417ce5be942f3afa31667062f20fdcc390cf Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Mon, 22 Sep 2025 09:55:29 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=85=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hivekion/baseData/controller/ImgVehicleImageController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java b/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java index 3d1c029..2ee7dea 100644 --- a/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java +++ b/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java @@ -1,4 +1,4 @@ -package com.hivekion.basedata.controller; +package com.hivekion.baseData.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.stereotype.Controller; From 5105dd13e7e626f65518ccfcde35185ab50dd7a9 Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Mon, 22 Sep 2025 09:56:41 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=85=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java b/src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java index 48a3556..66cb3f6 100644 --- a/src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java +++ b/src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java @@ -1,4 +1,4 @@ -package com.hivekion.basedata.entity; +package com.hivekion.baseData.entity; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; From cd76249853c1a6785b2c0a8d539b82f588cda261 Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Mon, 22 Sep 2025 10:30:05 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WeatherResourceServiceImpl.java | 2 +- .../hivekion/room/bean/BattleRootTask.java | 45 ++++++++++++++----- .../java/com/hivekion/room/bean/Room.java | 30 ++++++++++++- src/main/java/com/hivekion/ws/WsServer.java | 2 +- 4 files changed, 65 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java b/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java index 05bc715..97b8a3a 100644 --- a/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java +++ b/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java @@ -28,7 +28,7 @@ public class WeatherResourceServiceImpl extends ServiceImpl().eq("scenario_id",ebe.getScenarioId())).stream().count(); } } diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index c283d15..997edc1 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -143,40 +143,63 @@ public class BattleRootTask extends AbtParentTask { medicalConsume = intervalDuringTime * MEDICAL_SPREED* RoomManager.getMag(roomId); - if(scenarioInfoOnTime.getAmmunition().getCurrent() >0) { + if(scenarioInfoOnTime.getAmmunition().getCurrent() - Double.valueOf(ammunition - ammunitionConsume)>0) { scenarioInfoOnTime.getAmmunition().setCurrent(Double.valueOf(ammunition - ammunitionConsume)); + }else{ + scenarioInfoOnTime.getAmmunition().setCurrent(0D); } - if(scenarioInfoOnTime.getFood().getCurrent() > 0) { + if(scenarioInfoOnTime.getFood().getCurrent() -Double.valueOf(food - foodConsume)> 0) { scenarioInfoOnTime.getFood().setCurrent(Double.valueOf(food - foodConsume)); + }else{ + scenarioInfoOnTime.getFood().setCurrent(0D); } - if(scenarioInfoOnTime.getMedical().getCurrent() > 0) { + if(scenarioInfoOnTime.getMedical().getCurrent() -Double.valueOf(medical - medicalConsume)> 0) { scenarioInfoOnTime.getMedical().setCurrent(Double.valueOf(medical - medicalConsume)); + }else{ + scenarioInfoOnTime.getMedical().setCurrent(0D); } - if(scenarioInfoOnTime.getWater().getCurrent() > 0) { + if(scenarioInfoOnTime.getWater().getCurrent() - Double.valueOf(water - waterConsume)> 0) { scenarioInfoOnTime.getWater().setCurrent(Double.valueOf(water - waterConsume)); + }else{ + scenarioInfoOnTime.getWater().setCurrent(0D); } scenarioInfoOnTime.getPerson().setDeath(Long.valueOf(death + deathConsume).intValue()); scenarioInfoOnTime.getPerson().setInjured(Long.valueOf(injured + injuredConsume).intValue()); - scenarioInfoOnTime.getPerson().setCurrent(scenarioInfoOnTime.getPerson().getCurrent() - Long.valueOf(deathConsume).intValue()-Long.valueOf(injuredConsume).intValue()); - + if(scenarioInfoOnTime.getPerson().getCurrent() - Long.valueOf(deathConsume).intValue()-Long.valueOf(injuredConsume).intValue() <0){ + scenarioInfoOnTime.getPerson().setCurrent(0); + }else { + scenarioInfoOnTime.getPerson().setCurrent(scenarioInfoOnTime.getPerson().getCurrent() - Long.valueOf(deathConsume).intValue() - Long.valueOf(injuredConsume).intValue()); + } String updJsonStr = (String) redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "updScenarioInfo"); EditScenarioInfo updScenarioInfo = JSON.parseObject(updJsonStr, EditScenarioInfo.class); - if(updScenarioInfo.getJbxx().getAmmunition().getCurrent() >0) { + if(updScenarioInfo.getJbxx().getAmmunition().getCurrent() - Double.valueOf(ammunition - ammunitionConsume)>0) { updScenarioInfo.getJbxx().getAmmunition().setCurrent(Double.valueOf(ammunition - ammunitionConsume)); + }else{ + updScenarioInfo.getJbxx().getAmmunition().setCurrent(0D); } - if(updScenarioInfo.getJbxx().getFood().getCurrent() > 0) { + if(updScenarioInfo.getJbxx().getFood().getCurrent() - Double.valueOf(food - foodConsume) > 0) { updScenarioInfo.getJbxx().getFood().setCurrent(Double.valueOf(food - foodConsume)); + }else{ + updScenarioInfo.getJbxx().getFood().setCurrent(0D); } // updScenarioInfo.getJbxx().getFuel().setCurrent(Double.valueOf(fuel - fuelConsume)); - if(updScenarioInfo.getJbxx().getMedical().getCurrent() > 0) { + if(updScenarioInfo.getJbxx().getMedical().getCurrent() - Double.valueOf(medical - medicalConsume)> 0) { updScenarioInfo.getJbxx().getMedical().setCurrent(Double.valueOf(medical - medicalConsume)); + }else{ + updScenarioInfo.getJbxx().getMedical().setCurrent(0D); } - if(updScenarioInfo.getJbxx().getWater().getCurrent() > 0) { + if(updScenarioInfo.getJbxx().getWater().getCurrent() -Double.valueOf(water - waterConsume)> 0) { updScenarioInfo.getJbxx().getWater().setCurrent(Double.valueOf(water - waterConsume)); + }else{ + updScenarioInfo.getJbxx().getWater().setCurrent(0D); } updScenarioInfo.getJbxx().getPerson().setDeath(Long.valueOf(death + deathConsume).intValue()); updScenarioInfo.getJbxx().getPerson().setInjured(Long.valueOf(injured + injuredConsume).intValue()); - updScenarioInfo.getJbxx().getPerson().setCurrent(updScenarioInfo.getJbxx().getPerson().getCurrent() - Long.valueOf(deathConsume).intValue()-Long.valueOf(injuredConsume).intValue()); + if(updScenarioInfo.getJbxx().getPerson().getCurrent() - Long.valueOf(deathConsume).intValue()-Long.valueOf(injuredConsume).intValue() <0){ + updScenarioInfo.getJbxx().getPerson().setCurrent(0); + }else { + updScenarioInfo.getJbxx().getPerson().setCurrent(updScenarioInfo.getJbxx().getPerson().getCurrent() - Long.valueOf(deathConsume).intValue() - Long.valueOf(injuredConsume).intValue()); + } redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "updScenarioInfo", JSON.toJSONString(updScenarioInfo)); ResponseCmdInfo respObj = new ResponseCmdInfo<>(); diff --git a/src/main/java/com/hivekion/room/bean/Room.java b/src/main/java/com/hivekion/room/bean/Room.java index 716ad74..026f77c 100644 --- a/src/main/java/com/hivekion/room/bean/Room.java +++ b/src/main/java/com/hivekion/room/bean/Room.java @@ -134,8 +134,12 @@ public class Room implements AutoCloseable { log.error("error::", e); } }); + //清除房间缓存数据 + this.clearScenarioCache(); } + + /** * 暂停 */ @@ -233,6 +237,7 @@ public class Room implements AutoCloseable { } public void initRoomParam() { + long begTime = System.currentTimeMillis(); if (scenarioService == null) { scenarioService = SpringUtil.getBean(com.hivekion.statistic.service.ScenarioService.class); } @@ -257,7 +262,8 @@ public class Room implements AutoCloseable { scenario.getResourceList().forEach(resource -> { scenarioResourceMap.put(resource.getId(), resource); }); - + long endTime = System.currentTimeMillis(); + log.info("======cost time============={}===================",endTime-begTime); } public void addResourcePath(String resourceId, Object obj) { @@ -293,4 +299,26 @@ public class Room implements AutoCloseable { respObj.setCmdType("room_info"); Global.sendCmdInfoQueue.add(respObj); } + + private void clearScenarioCache(){ + try { + scenario.setResourceList(SpringUtil.getBean(ScenarioResourceServiceImpl.class) + .getResourceListByScenarioId(scenario.getId())); + if (redisUtil == null) { + redisUtil = SpringUtil.getBean(RedisUtil.class); + } + for (ScenarioResource scenarioResource : this.scenario.getResourceList()) { + ScenarioInfo scenarioInfo = scenarioService.listScenarioInfo(scenarioResource.getScenarioId(), + roomId, scenarioResource.getId()); + EditScenarioInfo updScenarioInfo = scenarioService.listEditScenarioInfo( + scenarioResource.getScenarioId(), roomId, scenarioResource.getId()); + redisUtil.delete( + scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId()); + redisUtil.delete( + scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId()); + } + }catch (Exception ex){ + log.error("===================clear cached fail=========================="); + } + } } diff --git a/src/main/java/com/hivekion/ws/WsServer.java b/src/main/java/com/hivekion/ws/WsServer.java index 314af70..e0fa719 100644 --- a/src/main/java/com/hivekion/ws/WsServer.java +++ b/src/main/java/com/hivekion/ws/WsServer.java @@ -118,7 +118,7 @@ public class WsServer { } public static void sendMessage(Integer scenarioId, String room, String message) { - log.info("send {},{},{}", message, scenarioId, room); + log.info("{},{}", scenarioId, room); synchronized (lock) { Map> roomMap = SESSION_MAP.get(String.valueOf(scenarioId)); From 2237ffad9bf8ef935187a6f9c6566dbc3444e64d 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: Mon, 22 Sep 2025 14:07:22 +0800 Subject: [PATCH 04/12] =?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 --- .../baseData/controller/ImgVehicleImageController.java | 2 +- src/main/java/com/hivekion/ws/WsServer.java | 2 +- src/main/resources/application-prod.properties | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java b/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java index 3d1c029..2ee7dea 100644 --- a/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java +++ b/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java @@ -1,4 +1,4 @@ -package com.hivekion.basedata.controller; +package com.hivekion.baseData.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.stereotype.Controller; diff --git a/src/main/java/com/hivekion/ws/WsServer.java b/src/main/java/com/hivekion/ws/WsServer.java index 314af70..a1c7c39 100644 --- a/src/main/java/com/hivekion/ws/WsServer.java +++ b/src/main/java/com/hivekion/ws/WsServer.java @@ -118,7 +118,7 @@ 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)); diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 642de63..1e1f6cf 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -1,12 +1,12 @@ spring.datasource.dynamic.primary=dm spring.datasource.dynamic.strict=false -spring.datasource.dynamic.datasource.dm.url=jdbc:dm://192.168.0.53:5236/SIMULATION +spring.datasource.dynamic.datasource.dm.url=jdbc:dm://127.0.0.1:5236/SIMULATION spring.datasource.dynamic.datasource.dm.driver-class-name=dm.jdbc.driver.DmDriver -spring.datasource.dynamic.datasource.dm.username=simulation -spring.datasource.dynamic.datasource.dm.password=Simulation001 +spring.datasource.dynamic.datasource.dm.username=SYSDBA +spring.datasource.dynamic.datasource.dm.password=Admin123 spring.redis.database=0 -spring.redis.host=192.168.0.225 +spring.redis.host=127.0.0.1 spring.redis.port=6379 #spring.redis.password=123 spring.redis.timeout=5000 @@ -51,5 +51,5 @@ get.all.user = http://127.0.0.1/oauth2Server/api/outside/syncUserAll #get.all.dept=http://127.0.0.1/oatuh2Server/api/outside/synDeptAll logout.url=http://127.0.0.1:99/oauth2Server/oauth2/logout -path.planning.url=http://192.168.0.53:8989/route +path.planning.url=http://127.0.0.1:8989/route From ee75390dd64f0b79f1ad0d264073e40ebb366499 Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Mon, 22 Sep 2025 14:17:49 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/hivekion/room/bean/BattleRootTask.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index 997edc1..2c781e9 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -134,8 +134,10 @@ public class BattleRootTask extends AbtParentTask { teamLng = scenarioInfoOnTime.getTeam().getLng().toString(); if(scenarioInfoOnTime.getPerson().getCurrent() >0) { // - deathConsume = RandomUtil.getSecureRandom().nextInt(2) * intervalDuringTime; - injuredConsume = RandomUtil.getSecureRandom().nextInt(3) * intervalDuringTime; + int deathParam = RandomUtil.getSecureRandom().nextInt(6); + int baseParam = deathParam/2; + deathConsume = Long.valueOf(deathParam%baseParam) ; + injuredConsume = Long.valueOf(RandomUtil.getSecureRandom().nextInt(3)); ammunitionConsume = intervalDuringTime * (0.1D + RandomUtil.getSecureRandom().nextDouble()); foodConsume = intervalDuringTime * FOOD_SPREED; waterConsume = intervalDuringTime * WATER_SPREED; @@ -485,6 +487,4 @@ public class BattleRootTask extends AbtParentTask { - - } From ffdbe336325ff0de09011ef3d8672a6045520258 Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Mon, 22 Sep 2025 14:23:58 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/hivekion/room/bean/BattleRootTask.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index 2c781e9..7ece1f0 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -136,7 +136,11 @@ public class BattleRootTask extends AbtParentTask { // int deathParam = RandomUtil.getSecureRandom().nextInt(6); int baseParam = deathParam/2; - deathConsume = Long.valueOf(deathParam%baseParam) ; + if(deathParam !=0 ) { + deathConsume = Long.valueOf(deathParam % baseParam); + }else{ + deathConsume =0L; + } injuredConsume = Long.valueOf(RandomUtil.getSecureRandom().nextInt(3)); ammunitionConsume = intervalDuringTime * (0.1D + RandomUtil.getSecureRandom().nextDouble()); foodConsume = intervalDuringTime * FOOD_SPREED; From baa1a1f1c64b4520f4cf3e025e4b630195ffcc1f Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Mon, 22 Sep 2025 14:46:46 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hivekion/room/bean/BattleRootTask.java | 24 +++++++++++++++---- .../resources/application-rule.properties | 4 ++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index 7ece1f0..1f59338 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -143,10 +143,10 @@ public class BattleRootTask extends AbtParentTask { } injuredConsume = Long.valueOf(RandomUtil.getSecureRandom().nextInt(3)); ammunitionConsume = intervalDuringTime * (0.1D + RandomUtil.getSecureRandom().nextDouble()); - foodConsume = intervalDuringTime * FOOD_SPREED; - waterConsume = intervalDuringTime * WATER_SPREED; + foodConsume = FOOD_SPREED; + waterConsume = WATER_SPREED; - medicalConsume = intervalDuringTime * MEDICAL_SPREED* RoomManager.getMag(roomId); + medicalConsume = MEDICAL_SPREED; if(scenarioInfoOnTime.getAmmunition().getCurrent() - Double.valueOf(ammunition - ammunitionConsume)>0) { @@ -271,7 +271,11 @@ public class BattleRootTask extends AbtParentTask { battleConsume.setLng(teamLng); battleConsume.setId(IdUtils.simpleUUID()); battleConsume.setAmmunition(ammunitionConsume); - battleConsume.setDeath(Integer.valueOf(Double.valueOf(deathConsume).intValue())); + if(deathConsume == 0L){ + battleConsume.setDeath(0); + }else { + battleConsume.setDeath(Integer.valueOf(Double.valueOf(deathConsume).intValue())); + } battleConsume.setInjured(Integer.valueOf(Double.valueOf(injuredConsume).intValue())); battleConsume.setFood(foodConsume); // battleConsume.setFuel(fuelConsume); @@ -340,6 +344,18 @@ public class BattleRootTask extends AbtParentTask { respObj.setScenarioId(scenarioTask.getScenarioId()); respObj.setCmdType("deathRequest"); Global.sendCmdInfoQueue.add(respObj); + log.info("================================begin death Supplier Task====================================="); + produceTask(scenarioInfoOnTime.getPerson().getDeath()); + String jsonInjured = (String)redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo"); + ScenarioInfo scenarioInfoInjured =JSONObject.parseObject(jsonInjured,ScenarioInfo.class); + scenarioInfoInjured.getPerson().setDeath(Long.valueOf(0).intValue()); + redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "scenarioInfo", JSONObject.toJSONString(scenarioInfoInjured)); + String updJsonStr = (String) redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "updScenarioInfo"); + EditScenarioInfo updScenarioInfo = JSON.parseObject(updJsonStr, EditScenarioInfo.class); + updScenarioInfo.getJbxx().getPerson().setDeath(Long.valueOf(0).intValue()); + redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), + "updScenarioInfo", JSON.toJSONString(updScenarioInfo)); + log.info("================================end death Supplier Task====================================="); suppleFlagMap.put("death", true); } Long restInjured = Long.valueOf(scenarioInfoOnTime.getPerson().getInjured()); diff --git a/src/main/resources/application-rule.properties b/src/main/resources/application-rule.properties index 7d377bc..9e3c6dd 100644 --- a/src/main/resources/application-rule.properties +++ b/src/main/resources/application-rule.properties @@ -1,5 +1,5 @@ -injured.warn = 10 -death.warn = 56 +injured.warn = 20 +death.warn = 2 ammunition.warn = 3 food.warn = 3 water.warn = 3 From af978f62376cd0579f173d216c8ce0d97a727916 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: Mon, 22 Sep 2025 14:49:28 +0800 Subject: [PATCH 08/12] =?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 --- .../resources/application-prod.properties | 1 - src/main/resources/logback-spring.xml | 30 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/logback-spring.xml diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 1e1f6cf..e29cd56 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -52,4 +52,3 @@ get.all.user = http://127.0.0.1/oauth2Server/api/outside/syncUserAll logout.url=http://127.0.0.1:99/oauth2Server/oauth2/logout path.planning.url=http://127.0.0.1:8989/route - diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..b9c02a1 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,30 @@ + + + + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + + + /home/admin/app/logs/app.log + + + logs/app-%d{yyyy-MM-dd}.log + 30 + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + \ No newline at end of file From 6334c44e356a743c7f505087a8c8e9408e99772e Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Mon, 22 Sep 2025 15:01:09 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hivekion/room/bean/BattleRootTask.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index 1f59338..2d4271c 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -145,7 +145,6 @@ public class BattleRootTask extends AbtParentTask { ammunitionConsume = intervalDuringTime * (0.1D + RandomUtil.getSecureRandom().nextDouble()); foodConsume = FOOD_SPREED; waterConsume = WATER_SPREED; - medicalConsume = MEDICAL_SPREED; @@ -237,6 +236,19 @@ public class BattleRootTask extends AbtParentTask { redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "updScenarioInfo", JSON.toJSONString(updScenarioInfo)); } + if(scenarioInfoOnTime.getAmmunition().getCurrent() - Double.valueOf(ammunition - ammunitionConsume)<0) { + scenarioInfoOnTime.getAmmunition().setCurrent(0D); + } + if(scenarioInfoOnTime.getFood().getCurrent() -Double.valueOf(food - foodConsume)<0) { + scenarioInfoOnTime.getAmmunition().setCurrent(0D); + } + if(scenarioInfoOnTime.getMedical().getCurrent() -Double.valueOf(medical - medicalConsume)<0) { + scenarioInfoOnTime.getAmmunition().setCurrent(0D); + } + if(scenarioInfoOnTime.getWater().getCurrent() - Double.valueOf(water - waterConsume)<0) { + scenarioInfoOnTime.getAmmunition().setCurrent(0D); + } + redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "scenarioInfo", JSONObject.toJSONString(scenarioInfoOnTime)); }catch (Exception ex){ ex.printStackTrace(); log.error("==============================设置消耗信息失败=============================================",ex.getMessage()); From 3c8b8a5ce601213b2c0c9aac65aa1fe77876bb8f 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: Mon, 22 Sep 2025 16:32:58 +0800 Subject: [PATCH 10/12] =?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 --- .../common/config/WsEndpointConfig.java | 2 + .../java/com/hivekion/room/bean/Room.java | 38 +++++++++++-------- .../resources/application-prod.properties | 2 +- .../java/com/hivekion/ApplicationTest.java | 33 +++++++++++----- 4 files changed, 48 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/hivekion/common/config/WsEndpointConfig.java b/src/main/java/com/hivekion/common/config/WsEndpointConfig.java index f64b097..35eb647 100644 --- a/src/main/java/com/hivekion/common/config/WsEndpointConfig.java +++ b/src/main/java/com/hivekion/common/config/WsEndpointConfig.java @@ -2,6 +2,7 @@ package com.hivekion.common.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; import org.springframework.web.socket.server.standard.ServerEndpointExporter; /** @@ -14,6 +15,7 @@ import org.springframework.web.socket.server.standard.ServerEndpointExporter; * @since 2025/7/22 */ @Configuration + public class WsEndpointConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { diff --git a/src/main/java/com/hivekion/room/bean/Room.java b/src/main/java/com/hivekion/room/bean/Room.java index 026f77c..40aa2c4 100644 --- a/src/main/java/com/hivekion/room/bean/Room.java +++ b/src/main/java/com/hivekion/room/bean/Room.java @@ -51,7 +51,7 @@ public class Room implements AutoCloseable { private Map resourceCoordinateMap = new ConcurrentHashMap<>(); //资源路线path private Map resourcePathMap = new ConcurrentHashMap<>(); - private Map scenarioResourceMap = new ConcurrentHashMap<>(); + private Map scenarioResourceMap = new ConcurrentHashMap<>(); /** * 任务管理相关 */ @@ -70,7 +70,7 @@ public class Room implements AutoCloseable { private com.hivekion.statistic.service.ScenarioService scenarioService; - private AtomicInteger numStatus = new AtomicInteger(0); + private AtomicInteger numStatus = new AtomicInteger(0); /** * 任务容器 */ @@ -139,7 +139,6 @@ public class Room implements AutoCloseable { } - /** * 暂停 */ @@ -172,8 +171,12 @@ public class Room implements AutoCloseable { } long curTime = duringTime.addAndGet(this.mag); - - sendRemainTime((totalTime.get() - curTime)); + if (totalTime.get() - curTime > 0) { + sendRemainTime((totalTime.get() - curTime)); + } else { + future.cancel(true); + scheduler.shutdownNow(); + } NavigableMap> actions = actionMap.headMap(curTime, true); if (!actions.isEmpty()) { @@ -262,8 +265,8 @@ public class Room implements AutoCloseable { scenario.getResourceList().forEach(resource -> { scenarioResourceMap.put(resource.getId(), resource); }); - long endTime = System.currentTimeMillis(); - log.info("======cost time============={}===================",endTime-begTime); + long endTime = System.currentTimeMillis(); + log.info("======cost time============={}===================", endTime - begTime); } public void addResourcePath(String resourceId, Object obj) { @@ -285,10 +288,12 @@ public class Room implements AutoCloseable { public Map getPathMap() { return resourcePathMap; } + public Map getScenarioResourceMap() { return scenarioResourceMap; } - private void pushRoomInfo(){ + + private void pushRoomInfo() { ResponseCmdInfo respObj = new ResponseCmdInfo<>(); Map dataMap = new HashMap<>(); dataMap.put("mag", this.getMag()); @@ -300,24 +305,25 @@ public class Room implements AutoCloseable { Global.sendCmdInfoQueue.add(respObj); } - private void clearScenarioCache(){ + private void clearScenarioCache() { try { scenario.setResourceList(SpringUtil.getBean(ScenarioResourceServiceImpl.class) - .getResourceListByScenarioId(scenario.getId())); + .getResourceListByScenarioId(scenario.getId())); if (redisUtil == null) { redisUtil = SpringUtil.getBean(RedisUtil.class); } for (ScenarioResource scenarioResource : this.scenario.getResourceList()) { - ScenarioInfo scenarioInfo = scenarioService.listScenarioInfo(scenarioResource.getScenarioId(), - roomId, scenarioResource.getId()); + ScenarioInfo scenarioInfo = scenarioService.listScenarioInfo( + scenarioResource.getScenarioId(), + roomId, scenarioResource.getId()); EditScenarioInfo updScenarioInfo = scenarioService.listEditScenarioInfo( - scenarioResource.getScenarioId(), roomId, scenarioResource.getId()); + scenarioResource.getScenarioId(), roomId, scenarioResource.getId()); redisUtil.delete( - scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId()); + scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId()); redisUtil.delete( - scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId()); + scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId()); } - }catch (Exception ex){ + } catch (Exception ex) { log.error("===================clear cached fail=========================="); } } diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index e29cd56..80b6080 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -1,6 +1,6 @@ spring.datasource.dynamic.primary=dm spring.datasource.dynamic.strict=false -spring.datasource.dynamic.datasource.dm.url=jdbc:dm://127.0.0.1:5236/SIMULATION +spring.datasource.dynamic.datasource.dm.url=jdbc:dm://192.168.0.53:5236/SIMULATION spring.datasource.dynamic.datasource.dm.driver-class-name=dm.jdbc.driver.DmDriver spring.datasource.dynamic.datasource.dm.username=SYSDBA spring.datasource.dynamic.datasource.dm.password=Admin123 diff --git a/src/test/java/com/hivekion/ApplicationTest.java b/src/test/java/com/hivekion/ApplicationTest.java index 1760d2d..23e2714 100644 --- a/src/test/java/com/hivekion/ApplicationTest.java +++ b/src/test/java/com/hivekion/ApplicationTest.java @@ -2,6 +2,13 @@ package com.hivekion; import com.hivekion.baseData.entity.ModuleStatus; import com.hivekion.baseData.service.ModuleStatusService; +import com.hivekion.common.uuid.IdUtils; +import com.hivekion.scenario.entity.ScenarioResource; +import com.hivekion.scenario.service.ScenarioResourceService; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.Test; @@ -21,20 +28,26 @@ import org.springframework.test.context.junit4.SpringRunner; */ @SpringBootTest(classes = DemoApplication.class) @AutoConfigureMockMvc + @Slf4j @RunWith(SpringRunner.class) public class ApplicationTest { + @Resource private ModuleStatusService moduleStatusService; - @Test - public void modStatus(){ - ModuleStatus status = new ModuleStatus(); - status.setModuleName("评估子系统"); - status.setModuleUrl("/"); - status.setSortOrder(5); - status.setModuleStatus("0"); - status.setModuleCode("evaluation_system"); - moduleStatusService.save(status); - } + @Resource + private ScenarioResourceService scenarioResourceService; + + @Test + public void modStatus() { + ModuleStatus status = new ModuleStatus(); + status.setModuleName("评估子系统"); + status.setModuleUrl("/"); + status.setSortOrder(5); + status.setModuleStatus("0"); + status.setModuleCode("evaluation_system"); + moduleStatusService.save(status); + } + } From 79850327fbba57dcd3261b91bef575fe59278341 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: Mon, 22 Sep 2025 17:09:53 +0800 Subject: [PATCH 11/12] =?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 --- .../java/com/hivekion/room/RoomManager.java | 4 +-- .../com/hivekion/room/bean/AbtParentTask.java | 18 +++++++----- .../java/com/hivekion/room/bean/Room.java | 29 ++++++++++--------- .../controller/ScenarioRoomController.java | 2 +- .../resources/application-prod.properties | 6 ++-- 5 files changed, 31 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/hivekion/room/RoomManager.java b/src/main/java/com/hivekion/room/RoomManager.java index c2beaa6..b616a3d 100644 --- a/src/main/java/com/hivekion/room/RoomManager.java +++ b/src/main/java/com/hivekion/room/RoomManager.java @@ -23,10 +23,10 @@ public class RoomManager { private static final Map roomsMap = new ConcurrentHashMap<>(); - public static void startRoom(String id, Scenario scenario, long time) { + public static void startRoom(String id, Scenario scenario, long duringTime) { Room room = new Room(id, scenario); roomsMap.put(id, room); - room.start(time); + room.start(duringTime); } public static void stopRoom(String id) { diff --git a/src/main/java/com/hivekion/room/bean/AbtParentTask.java b/src/main/java/com/hivekion/room/bean/AbtParentTask.java index 49b1b54..c55ebbf 100644 --- a/src/main/java/com/hivekion/room/bean/AbtParentTask.java +++ b/src/main/java/com/hivekion/room/bean/AbtParentTask.java @@ -90,7 +90,6 @@ public abstract class AbtParentTask implements TaskAction { private StatisticBean statisticBean; - public AbtParentTask(ScenarioTask scenarioTask, String roomId) { this.scenarioTask = scenarioTask; this.roomId = roomId; @@ -250,11 +249,16 @@ public abstract class AbtParentTask implements TaskAction { schedule.scheduleWithFixedDelay(() -> { try { + Room room = RoomManager.getRoom(this.roomId); + if (room == null || room.isTimeExpired()) { + log.error("房间不存在或者已经到达想定结束时间"); + return; + } if (this.getRoomStatus()) { //自动生成的任务不需要判断油量;不要在生成新的任务 - log.info("{}-fromSource::{}",scenarioTask.getResourceId(),scenarioTask.getFromSource()); - if(!"general".equals(scenarioTask.getFromSource())) { + log.info("{}-fromSource::{}", scenarioTask.getResourceId(), scenarioTask.getFromSource()); + if (!"general".equals(scenarioTask.getFromSource())) { double currentFuel = getCurrentFuel(); double totalFuel = statisticBean.getFuel().getTotal(); log.info("totalFuel::{}", totalFuel); @@ -282,7 +286,6 @@ public abstract class AbtParentTask implements TaskAction { } } - if (distanceInfoMap.isEmpty()) { return; } @@ -290,7 +293,7 @@ public abstract class AbtParentTask implements TaskAction { if (duringAction != null) { duringAction.doSomeThing(); } - log.info("移动中..... 放大系数{}",RoomManager.getMag(roomId)); + log.info("移动中..... 放大系数{}", RoomManager.getMag(roomId)); //跑动距离 double distance = duringTime.getAndAdd(RoomManager.getMag(roomId)) * speed; @@ -348,7 +351,7 @@ public abstract class AbtParentTask implements TaskAction { this.scenarioTask.getResourceId()); editScenarioInfo.getJbxx().getTeam().setLat(coordinate.getLat() + ""); editScenarioInfo.getJbxx().getTeam().setLng(coordinate.getLng() + ""); - setEditScenarioInfo(editScenarioInfo,scenarioTask.getResourceId()); + setEditScenarioInfo(editScenarioInfo, scenarioTask.getResourceId()); pushStatus(scenarioTask.getResourceId()); } else if (Double.compare(distance, endPoint.getKey()) == 0) { @@ -399,7 +402,7 @@ public abstract class AbtParentTask implements TaskAction { return JSON.parseObject(updJsonStr, EditScenarioInfo.class); } - protected void setEditScenarioInfo(EditScenarioInfo editScenarioInfo,String resourceId) { + protected void setEditScenarioInfo(EditScenarioInfo editScenarioInfo, String resourceId) { SpringUtil.getBean(RedisUtil.class).hset( this.scenarioTask.getScenarioId() + "-" + roomId + "-" + resourceId, "updScenarioInfo", JSON.toJSONString(editScenarioInfo)); @@ -473,7 +476,6 @@ public abstract class AbtParentTask implements TaskAction { // 找出油料保障分队 for (ScenarioResource resource : resourceList) { - Teaminfo teaminfo = teamInfoMap.get(resource.getResourceId()); if ("SUPPLIER_FUEL".equals(teaminfo.getRoleCode())) { diff --git a/src/main/java/com/hivekion/room/bean/Room.java b/src/main/java/com/hivekion/room/bean/Room.java index 40aa2c4..a224ea4 100644 --- a/src/main/java/com/hivekion/room/bean/Room.java +++ b/src/main/java/com/hivekion/room/bean/Room.java @@ -109,7 +109,9 @@ public class Room implements AutoCloseable { */ public void start(long time) { status.set(true); + log.info("想定持续时间{}", time); totalTime.set(time); + startTask(); //初始化系统资源 物资人员等信息 initRoomParam(); @@ -158,7 +160,10 @@ public class Room implements AutoCloseable { public long getDuringTime() { return duringTime.get(); } - + //是否到达想定结束时间 + public boolean isTimeExpired() { + return totalTime.get() - duringTime.get() <= 0; + } // 启动定时任务 private void startTask() { @@ -174,6 +179,7 @@ public class Room implements AutoCloseable { if (totalTime.get() - curTime > 0) { sendRemainTime((totalTime.get() - curTime)); } else { + log.info("想定结束,持续时间{}", curTime); future.cancel(true); scheduler.shutdownNow(); } @@ -182,7 +188,12 @@ public class Room implements AutoCloseable { if (!actions.isEmpty()) { actions.forEach((key, action) -> { action.forEach((taskAction, task) -> { - actionExecutor.submit(task::doSomeThing); + try { + actionExecutor.submit(task::doSomeThing); + } catch (Exception e) { + log.error("error::", e); + } + }); }); @@ -207,7 +218,7 @@ public class Room implements AutoCloseable { } @Override - public void close() throws Exception { + public void close() { actionMap.clear(); if (future != null && !future.isCancelled()) { future.cancel(true); @@ -218,7 +229,7 @@ public class Room implements AutoCloseable { } private void sendRemainTime(long remainTime) { - + log.info("remain_time{}", remainTime); Map timeMap = new HashMap<>(); timeMap.put("update_time_str", utils.formatSeconds(remainTime)); timeMap.put("remain_time", remainTime); @@ -273,17 +284,7 @@ public class Room implements AutoCloseable { resourcePathMap.put(resourceId, obj); } - public Object getResourcePath(String resourceId) { - return resourcePathMap.get(resourceId); - } - public void addResourceLastPosition(String resourceId, Coordinate obj) { - resourceCoordinateMap.put(resourceId, obj); - } - - public Coordinate getResourceLastPosition(String resourceId) { - return resourceCoordinateMap.get(resourceId); - } public Map getPathMap() { return resourcePathMap; diff --git a/src/main/java/com/hivekion/scenario/controller/ScenarioRoomController.java b/src/main/java/com/hivekion/scenario/controller/ScenarioRoomController.java index ac89768..a51421c 100644 --- a/src/main/java/com/hivekion/scenario/controller/ScenarioRoomController.java +++ b/src/main/java/com/hivekion/scenario/controller/ScenarioRoomController.java @@ -164,7 +164,7 @@ public class ScenarioRoomController extends BaseController { ResponseCmdInfo respObj = new ResponseCmdInfo<>(); Map dataMap = new HashMap<>(); dataMap.put("mag", mag); - dataMap.put("status", RoomManager.getRoom(room.getId()).getStatus()); + dataMap.put("status", RoomManager.getRoom(room.getId())==null?0:RoomManager.getRoom(room.getId()).getStatus()); respObj.setData(dataMap); respObj.setRoom(room.getId()); respObj.setScenarioId(room.getScenarioId()); diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 80b6080..ad78788 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -1,9 +1,9 @@ spring.datasource.dynamic.primary=dm spring.datasource.dynamic.strict=false -spring.datasource.dynamic.datasource.dm.url=jdbc:dm://192.168.0.53:5236/SIMULATION +spring.datasource.dynamic.datasource.dm.url=jdbc:dm://127.0.0.1:5236/SIMULATION spring.datasource.dynamic.datasource.dm.driver-class-name=dm.jdbc.driver.DmDriver spring.datasource.dynamic.datasource.dm.username=SYSDBA -spring.datasource.dynamic.datasource.dm.password=Admin123 +spring.datasource.dynamic.datasource.dm.password=SYSDBA001 spring.redis.database=0 spring.redis.host=127.0.0.1 @@ -51,4 +51,4 @@ get.all.user = http://127.0.0.1/oauth2Server/api/outside/syncUserAll #get.all.dept=http://127.0.0.1/oatuh2Server/api/outside/synDeptAll logout.url=http://127.0.0.1:99/oauth2Server/oauth2/logout -path.planning.url=http://127.0.0.1:8989/route +path.planning.url=http://192.168.0.53:8989/route From d1d2d52d19f638465ebe3eeeea72046fdd756694 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: Mon, 22 Sep 2025 17:17:06 +0800 Subject: [PATCH 12/12] =?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 --- src/main/java/com/hivekion/room/bean/Room.java | 5 +++-- src/main/resources/application-rule.properties | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hivekion/room/bean/Room.java b/src/main/java/com/hivekion/room/bean/Room.java index a224ea4..dc252eb 100644 --- a/src/main/java/com/hivekion/room/bean/Room.java +++ b/src/main/java/com/hivekion/room/bean/Room.java @@ -111,11 +111,12 @@ public class Room implements AutoCloseable { status.set(true); log.info("想定持续时间{}", time); totalTime.set(time); - - startTask(); //初始化系统资源 物资人员等信息 initRoomParam(); pushRoomInfo(); + + startTask(); + numStatus.set(1); } diff --git a/src/main/resources/application-rule.properties b/src/main/resources/application-rule.properties index 9e3c6dd..e7387b5 100644 --- a/src/main/resources/application-rule.properties +++ b/src/main/resources/application-rule.properties @@ -3,7 +3,7 @@ death.warn = 2 ammunition.warn = 3 food.warn = 3 water.warn = 3 -fuel.warn = 95.99 +fuel.warn = 99.80 medical.warn = 1 death.spreed = 3 injured.spreed = 3