From 3fa7529f8ecf755d4775b64e766c69af2d254e0b Mon Sep 17 00:00:00 2001
From: wangwenhua <12345678>
Date: Sun, 21 Sep 2025 03:48:48 +0800
Subject: [PATCH 1/3] =?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
---
src/main/java/com/hivekion/ws/WsServer.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/main/java/com/hivekion/ws/WsServer.java b/src/main/java/com/hivekion/ws/WsServer.java
index 9e11408..785bd67 100644
--- a/src/main/java/com/hivekion/ws/WsServer.java
+++ b/src/main/java/com/hivekion/ws/WsServer.java
@@ -12,7 +12,9 @@ import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestParam;
/**
* [类的简要说明]
From 4b2b3324ebe8960a63ccda65349c2bfa5d0b6532 Mon Sep 17 00:00:00 2001
From: wangwenhua <12345678>
Date: Sun, 21 Sep 2025 03:49:30 +0800
Subject: [PATCH 2/3] =?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
---
.../bean/BattleConsumeStatistic.java | 33 +++++++++++++++++++
.../controller/StatisticController.java | 8 +++++
.../statistic/service/StatisticService.java | 5 +++
.../service/impl/StatisticServiceImpl.java | 22 +++++++++++++
4 files changed, 68 insertions(+)
create mode 100644 src/main/java/com/hivekion/statistic/bean/BattleConsumeStatistic.java
diff --git a/src/main/java/com/hivekion/statistic/bean/BattleConsumeStatistic.java b/src/main/java/com/hivekion/statistic/bean/BattleConsumeStatistic.java
new file mode 100644
index 0000000..a3c4032
--- /dev/null
+++ b/src/main/java/com/hivekion/statistic/bean/BattleConsumeStatistic.java
@@ -0,0 +1,33 @@
+package com.hivekion.statistic.bean;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class BattleConsumeStatistic {
+
+ private String resourceId;
+
+ private Double ammunition;
+
+ private Integer death;
+
+ private Integer injured;
+
+ private Double fuel;
+
+ private Double food;
+
+ private Double water;
+
+ private Double medical;
+
+ private String lat;
+
+ private String lng;
+
+
+ private String consumeDateStr;
+}
diff --git a/src/main/java/com/hivekion/statistic/controller/StatisticController.java b/src/main/java/com/hivekion/statistic/controller/StatisticController.java
index ec2d499..7f9874c 100644
--- a/src/main/java/com/hivekion/statistic/controller/StatisticController.java
+++ b/src/main/java/com/hivekion/statistic/controller/StatisticController.java
@@ -1,6 +1,7 @@
package com.hivekion.statistic.controller;
import com.hivekion.common.entity.ResponseData;
+import com.hivekion.statistic.bean.BattleConsumeStatistic;
import com.hivekion.statistic.bean.StatisticBean;
import com.hivekion.statistic.service.StatisticService;
import javax.annotation.Resource;
@@ -8,6 +9,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
+
/**
* [类的简要说明]
*
@@ -30,4 +33,9 @@ public class StatisticController {
return ResponseData.success(statisticService.statistic(resourceId));
}
+
+ public ResponseData> listBattleConsumeStatistic(){
+ List qryList = this.statisticService.listBattleConsumeStatistic();
+ return ResponseData.success(qryList);
+ }
}
diff --git a/src/main/java/com/hivekion/statistic/service/StatisticService.java b/src/main/java/com/hivekion/statistic/service/StatisticService.java
index b4210a7..1859081 100644
--- a/src/main/java/com/hivekion/statistic/service/StatisticService.java
+++ b/src/main/java/com/hivekion/statistic/service/StatisticService.java
@@ -1,7 +1,10 @@
package com.hivekion.statistic.service;
+import com.hivekion.statistic.bean.BattleConsumeStatistic;
import com.hivekion.statistic.bean.StatisticBean;
+import java.util.List;
+
/**
* [类的简要说明]
*
@@ -13,4 +16,6 @@ import com.hivekion.statistic.bean.StatisticBean;
*/
public interface StatisticService {
StatisticBean statistic(String resourceId);
+
+ List listBattleConsumeStatistic();
}
diff --git a/src/main/java/com/hivekion/statistic/service/impl/StatisticServiceImpl.java b/src/main/java/com/hivekion/statistic/service/impl/StatisticServiceImpl.java
index 534a854..b5ad7f7 100644
--- a/src/main/java/com/hivekion/statistic/service/impl/StatisticServiceImpl.java
+++ b/src/main/java/com/hivekion/statistic/service/impl/StatisticServiceImpl.java
@@ -8,17 +8,21 @@ import com.hivekion.baseData.entity.OrgSupplier;
import com.hivekion.baseData.service.FightpowerstaffService;
import com.hivekion.baseData.service.OrgSupplierService;
import com.hivekion.scenario.bean.BattleSuppleVo;
+import com.hivekion.scenario.entity.BattleConsume;
import com.hivekion.scenario.entity.BattleSupplier;
import com.hivekion.scenario.entity.ScenarioOrgPost;
import com.hivekion.scenario.entity.ScenarioResource;
+import com.hivekion.scenario.service.IBattleConsumeService;
import com.hivekion.scenario.service.IBattleSupplierService;
import com.hivekion.scenario.service.IScenarioOrgPostService;
import com.hivekion.scenario.service.ScenarioResourceService;
+import com.hivekion.statistic.bean.BattleConsumeStatistic;
import com.hivekion.statistic.bean.StatisticBean;
import com.hivekion.statistic.service.StatisticService;
import com.hivekion.supplier.entity.SuppliesDict;
import com.hivekion.supplier.service.SuppliesDictService;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -63,6 +67,9 @@ public class StatisticServiceImpl implements StatisticService {
@Resource
private ScenarioResourceService resourceService;
+ @Resource
+ private IBattleConsumeService battleConsumeService;
+
@Override
public StatisticBean statistic(String resourceId) {
@@ -166,4 +173,19 @@ public class StatisticServiceImpl implements StatisticService {
return statisticBean;
}
+ @Override
+ public List listBattleConsumeStatistic() {
+ List qryList = this.battleConsumeService.list();
+ List qryResult = new ArrayList<>();
+ qryList.stream().forEach(battleConsume -> {
+ BattleConsumeStatistic battleConsumeStatistic = new BattleConsumeStatistic();
+ BeanUtil.copyProperties(battleConsume,battleConsumeStatistic);
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ String consumeDateStr = dateTimeFormatter.format(battleConsume.getConsumeDate());
+ battleConsumeStatistic.setConsumeDateStr(consumeDateStr);
+ qryResult.add(battleConsumeStatistic);
+ });
+ return qryResult;
+ }
+
}
From a2d687beb15c47100d2c9c15c35bd4a58e286aef Mon Sep 17 00:00:00 2001
From: wangwenhua <12345678>
Date: Sun, 21 Sep 2025 06:23:47 +0800
Subject: [PATCH 3/3] =?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 | 2 +-
.../hivekion/room/bean/BattleRootTask.java | 359 +++++++++---------
.../controller/StatisticController.java | 2 +-
3 files changed, 186 insertions(+), 177 deletions(-)
diff --git a/src/main/java/com/hivekion/room/bean/AbtParentTask.java b/src/main/java/com/hivekion/room/bean/AbtParentTask.java
index f1da22d..db58a27 100644
--- a/src/main/java/com/hivekion/room/bean/AbtParentTask.java
+++ b/src/main/java/com/hivekion/room/bean/AbtParentTask.java
@@ -140,7 +140,7 @@ public abstract class AbtParentTask implements TaskAction {
1);
schedule.scheduleWithFixedDelay(() -> {
bizTaskOnTiming.execTask();
- }, 0, 10, TimeUnit.SECONDS);
+ }, 0, 5, TimeUnit.SECONDS);
//房间统一管理定时器;房间关闭后,定时器销毁
addScheduledExecutorServiceRefenceToRoom(schedule);
}
diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java
index 39087d4..93a18e5 100644
--- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java
+++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java
@@ -9,6 +9,7 @@ import com.hivekion.Global;
import com.hivekion.common.entity.ResponseCmdInfo;
import com.hivekion.common.redis.RedisUtil;
import com.hivekion.common.uuid.IdUtils;
+import com.hivekion.room.RoomManager;
import com.hivekion.scenario.entity.BattleConsume;
import com.hivekion.scenario.entity.ScenarioTask;
import com.hivekion.scenario.service.IBattleConsumeService;
@@ -49,10 +50,10 @@ public class BattleRootTask extends AbtParentTask {
private IBattleConsumeService battleConsumeService;
- private static final Double FOOD_SPREED = 2.3D;
- private static final Double WATER_SPREED = 3.6D;
- private static final Double FUEL_SPREED = 3.6D;
- private static final Double MEDICAL_SPREED = 1.6D;
+ private static final Double FOOD_SPREED = 0.3D;
+ private static final Double WATER_SPREED = 0.1D;
+// private static final Double FUEL_SPREED = 3.6D;
+ private static final Double MEDICAL_SPREED = 0.2D;
private final AtomicBoolean isAlreadyProduceTask = new AtomicBoolean(false);
@@ -82,19 +83,7 @@ public class BattleRootTask extends AbtParentTask {
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<>();
- //初始化本次战斗任务各种资源数
- battleParams.put("ammunition",Double.valueOf(scenarioInfo.getAmmunition().getTotal()).toString());
- battleParams.put("food",Double.valueOf(scenarioInfo.getFood().getTotal()).toString());
- battleParams.put("fuel",Double.valueOf(scenarioInfo.getFuel().getTotal()).toString());
- battleParams.put("medical",Double.valueOf(scenarioInfo.getMedical().getTotal()).toString());
- battleParams.put("water",Double.valueOf(scenarioInfo.getWater().getTotal()).toString());
- battleParams.put("person",Integer.valueOf(scenarioInfo.getPerson().getTotal()).toString());
- battleParams.put("death",Integer.valueOf(scenarioInfo.getPerson().getDeath()).toString());
- battleParams.put("injured",Integer.valueOf(scenarioInfo.getPerson().getInjured()).toString());
- battleParams.put("teamLat",scenarioInfo.getTeam().getLat().toString());
- battleParams.put("teamLng",scenarioInfo.getTeam().getLng().toString());
- battleParams.put("duringTime",Long.valueOf(initDuringTime).toString());
+
log.info("===============================初始化本次战斗任务各种资源数====================================");
double suppleAmount =scenarioInfo.getAmmunition().getTotal();
int suppleDeath =scenarioInfo.getPerson().getDeath();
@@ -113,111 +102,130 @@ public class BattleRootTask extends AbtParentTask {
Double ammunitionConsume = null;
Double foodConsume = null;
Double waterConsume = null;
- Double fuelConsume = null;
+// Double fuelConsume = null;
Double medicalConsume = null;
String teamLat = null;
String teamLng = null;
JSONObject jsonObject = new JSONObject();
+ String jsonStr = (String)redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo");
+ ScenarioInfo scenarioInfoOnTime =JSONObject.parseObject(jsonStr,ScenarioInfo.class);
+
try {
+
long duringTime = getDuringTime();
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());
- double fuel = Double.valueOf(battleParams.get("fuel").toString());
- double medical = Double.valueOf(battleParams.get("medical").toString());
- double water = Double.valueOf(battleParams.get("water").toString());
- long death = Long.valueOf(battleParams.get("death").toString());
- long injured = Long.valueOf(battleParams.get("injured").toString());
- teamLat = battleParams.get( "teamLat").toString();
- teamLng = battleParams.get( "teamLng").toString();
- //
- deathConsume = RandomUtil.getSecureRandom().nextInt(3) * intervalDuringTime;
- injuredConsume = RandomUtil.getSecureRandom().nextInt(6) * intervalDuringTime;
- ammunitionConsume = intervalDuringTime * (1D+RandomUtil.getSecureRandom().nextDouble());
- foodConsume = intervalDuringTime * FOOD_SPREED;
- waterConsume = intervalDuringTime * WATER_SPREED;
- fuelConsume = intervalDuringTime * FUEL_SPREED;
- medicalConsume = intervalDuringTime * MEDICAL_SPREED;
+ double ammunition = Double.valueOf(scenarioInfoOnTime.getAmmunition().getCurrent());
+ double food = Double.valueOf(scenarioInfoOnTime.getFood().getCurrent());
+ double medical = Double.valueOf(scenarioInfoOnTime.getMedical().getCurrent());
+ double water = Double.valueOf(scenarioInfoOnTime.getWater().getCurrent());
+ long death = Long.valueOf(scenarioInfoOnTime.getPerson().getDeath());
+ long injured = Long.valueOf(scenarioInfoOnTime.getPerson().getInjured());
+ teamLat = scenarioInfoOnTime.getTeam().getLat().toString();
+ teamLng = scenarioInfoOnTime.getTeam().getLng().toString();
+ if(scenarioInfoOnTime.getPerson().getCurrent() >0) {
+ //
+ deathConsume = RandomUtil.getSecureRandom().nextInt(2) * intervalDuringTime* RoomManager.getMag(roomId);
+ injuredConsume = RandomUtil.getSecureRandom().nextInt(3) * intervalDuringTime* RoomManager.getMag(roomId);
+ ammunitionConsume = intervalDuringTime * (0.1D + RandomUtil.getSecureRandom().nextDouble())* RoomManager.getMag(roomId);
+ foodConsume = intervalDuringTime * FOOD_SPREED* RoomManager.getMag(roomId);
+ waterConsume = intervalDuringTime * WATER_SPREED* RoomManager.getMag(roomId);
- battleParams.put("ammunition",Double.valueOf(ammunition - ammunitionConsume).toString());
- battleParams.put("food",Double.valueOf(food - foodConsume).toString());
- battleParams.put("fuel",Double.valueOf(fuel - fuelConsume).toString());
- battleParams.put("medical",Double.valueOf(medical - medicalConsume).toString());
- battleParams.put("water",Double.valueOf(water - waterConsume).toString());
- battleParams.put("death",Long.valueOf(death+deathConsume).toString());
- battleParams.put("injured",Long.valueOf(injured +injuredConsume).toString());
- battleParams.put("duringTime",Long.valueOf(duringTime).toString());
+ medicalConsume = intervalDuringTime * MEDICAL_SPREED* RoomManager.getMag(roomId);
- scenarioInfo.getAmmunition().setCurrent(Double.valueOf(ammunition - ammunitionConsume));
- scenarioInfo.getFood().setCurrent(Double.valueOf(food - foodConsume));
- scenarioInfo.getFuel().setCurrent(Double.valueOf(fuel - fuelConsume));
- scenarioInfo.getMedical().setCurrent(Double.valueOf(medical - medicalConsume));
- scenarioInfo.getWater().setCurrent(Double.valueOf(water - waterConsume));
- scenarioInfo.getPerson().setDeath(Long.valueOf(death+deathConsume).intValue());
- scenarioInfo.getPerson().setInjured(Long.valueOf(injured +injuredConsume).intValue());
- scenarioInfo.getPerson().setCurrent(scenarioInfo.getPerson().getCurrent()-Long.valueOf(death+deathConsume).intValue());
- String updJsonStr= (String) redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"updScenarioInfo");
- EditScenarioInfo updScenarioInfo = JSON.parseObject(updJsonStr, EditScenarioInfo.class);
- updScenarioInfo.getJbxx().getAmmunition().setCurrent(Double.valueOf(ammunition - ammunitionConsume));
- updScenarioInfo.getJbxx().getFood().setCurrent(Double.valueOf(food - foodConsume));
- updScenarioInfo.getJbxx().getFuel().setCurrent(Double.valueOf(fuel - fuelConsume));
- updScenarioInfo.getJbxx().getMedical().setCurrent(Double.valueOf(medical - medicalConsume));
- updScenarioInfo.getJbxx().getWater().setCurrent(Double.valueOf(water - waterConsume));
- 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(death+deathConsume).intValue());
- redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),
- "updScenarioInfo", JSON.toJSONString(updScenarioInfo));
- ResponseCmdInfo respObj = new ResponseCmdInfo<>();
- respObj.setData(JSON.toJSONString(updScenarioInfo));
- respObj.setRoom(roomId);
- respObj.setScenarioId(scenarioTask.getScenarioId());
- respObj.setCmdType("updScenarioInfo");
- Global.sendCmdInfoQueue.add(respObj);
- redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"duringTime",String.valueOf(duringTime));
- redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "scenarioInfo",JSONObject.toJSONString(scenarioInfo));
+ if(scenarioInfoOnTime.getAmmunition().getCurrent() >0) {
+ scenarioInfoOnTime.getAmmunition().setCurrent(Double.valueOf(ammunition - ammunitionConsume));
+ }
+ if(scenarioInfoOnTime.getFood().getCurrent() > 0) {
+ scenarioInfoOnTime.getFood().setCurrent(Double.valueOf(food - foodConsume));
+ }
+ if(scenarioInfoOnTime.getMedical().getCurrent() > 0) {
+ scenarioInfoOnTime.getMedical().setCurrent(Double.valueOf(medical - medicalConsume));
+ }
+ if(scenarioInfoOnTime.getWater().getCurrent() > 0) {
+ scenarioInfoOnTime.getWater().setCurrent(Double.valueOf(water - waterConsume));
+ }
+ scenarioInfoOnTime.getPerson().setDeath(Long.valueOf(death + deathConsume).intValue());
+ scenarioInfoOnTime.getPerson().setInjured(Long.valueOf(injured + injuredConsume).intValue());
+ scenarioInfoOnTime.getPerson().setCurrent(scenarioInfo.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) {
+ updScenarioInfo.getJbxx().getAmmunition().setCurrent(Double.valueOf(ammunition - ammunitionConsume));
+ }
+ if(updScenarioInfo.getJbxx().getFood().getCurrent() > 0) {
+ updScenarioInfo.getJbxx().getFood().setCurrent(Double.valueOf(food - foodConsume));
+ }
+// updScenarioInfo.getJbxx().getFuel().setCurrent(Double.valueOf(fuel - fuelConsume));
+ if(updScenarioInfo.getJbxx().getMedical().getCurrent() > 0) {
+ updScenarioInfo.getJbxx().getMedical().setCurrent(Double.valueOf(medical - medicalConsume));
+ }
+ if(updScenarioInfo.getJbxx().getWater().getCurrent() > 0) {
+ updScenarioInfo.getJbxx().getWater().setCurrent(Double.valueOf(water - waterConsume));
+ }
+ 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());
+ redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),
+ "updScenarioInfo", JSON.toJSONString(updScenarioInfo));
+ ResponseCmdInfo respObj = new ResponseCmdInfo<>();
+ respObj.setData(JSON.toJSONString(updScenarioInfo));
+ respObj.setRoom(roomId);
+ respObj.setScenarioId(scenarioTask.getScenarioId());
+ respObj.setCmdType("updScenarioInfo");
+ Global.sendCmdInfoQueue.add(respObj);
+ redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "duringTime", String.valueOf(duringTime));
+ redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "scenarioInfo", JSONObject.toJSONString(scenarioInfoOnTime));
+ }
}catch (Exception ex){
+ ex.printStackTrace();
log.error("==============================设置消耗信息失败=============================================",ex.getMessage());
}
try {
- //推送消耗數據
- ResponseCmdInfo sendConsumeMsg = new ResponseCmdInfo<>();
- jsonObject.put("deathConsume", deathConsume);
- jsonObject.put("injuredConsume", injuredConsume);
- jsonObject.put("ammunitionConsume", ammunitionConsume);
- jsonObject.put("foodConsume", foodConsume);
- jsonObject.put("waterConsume", waterConsume);
- jsonObject.put("fuelConsume", fuelConsume);
- jsonObject.put("medicalConsume", medicalConsume);
- jsonObject.put("teamLat",teamLat);
- jsonObject.put("teamLng",teamLng);
- jsonObject.put("resourceId",scenarioTask.getResourceId());
- LocalDateTime currentDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
- jsonObject.put("consumeDate",currentDateTime);
- sendConsumeMsg.setData(jsonObject.toString());
- sendConsumeMsg.setRoom(roomId);
- sendConsumeMsg.setScenarioId(scenarioTask.getScenarioId());
- sendConsumeMsg.setCmdType("battleConsume");
- Global.sendCmdInfoQueue.add(sendConsumeMsg);
- BattleConsume battleConsume = new BattleConsume();
- battleConsume.setLat(teamLat);
- battleConsume.setLng(teamLng);
- battleConsume.setId(IdUtils.simpleUUID());
- battleConsume.setAmmunition(ammunitionConsume);
- battleConsume.setDeath(Integer.valueOf(Double.valueOf(deathConsume).intValue()));
- battleConsume.setInjured(Integer.valueOf(Double.valueOf(injuredConsume).intValue()));
- battleConsume.setFood(foodConsume);
- battleConsume.setFuel(fuelConsume);
- battleConsume.setMedical(medicalConsume);
- battleConsume.setWater(waterConsume);
- battleConsume.setResourceId(scenarioTask.getResourceId());
- battleConsume.setConsumeDate(currentDateTime);
- battleConsumeService.save(battleConsume);
- if(injuredConsume>2&&!isAlreadyProduceTask.get()){
- //产生一个
+ if(scenarioInfoOnTime.getPerson().getCurrent() >0) {
+ //推送消耗數據
+ String battleConsumeStr = "";
+ ResponseCmdInfo sendConsumeMsg = new ResponseCmdInfo<>();
+ LocalDateTime currentDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+ battleConsumeStr += currentDateTime.toString() + " 战斗消耗 [";
+ battleConsumeStr += "死亡人数:" + deathConsume;
+ battleConsumeStr += "受伤人数:" + injuredConsume;
+ battleConsumeStr += "弹药消耗:" + ammunitionConsume;
+ battleConsumeStr += "食品消耗:" + foodConsume;
+ battleConsumeStr += "用水消耗:" + waterConsume;
+ battleConsumeStr += "药材消耗:" + medicalConsume + "]";
+ jsonObject.put("teamLat",teamLat);
+ jsonObject.put("teamLng",teamLng);
+ jsonObject.put("resourceId", scenarioTask.getResourceId());
+ jsonObject.put("消耗时间", currentDateTime);
+ jsonObject.put("日志类型", "战斗消耗");
+
+ sendConsumeMsg.setData(battleConsumeStr);
+ sendConsumeMsg.setRoom(roomId);
+ sendConsumeMsg.setScenarioId(scenarioTask.getScenarioId());
+ sendConsumeMsg.setCmdType("battleConsume");
+ Global.sendCmdInfoQueue.add(sendConsumeMsg);
+ BattleConsume battleConsume = new BattleConsume();
+ battleConsume.setLat(teamLat);
+ battleConsume.setLng(teamLng);
+ battleConsume.setId(IdUtils.simpleUUID());
+ battleConsume.setAmmunition(ammunitionConsume);
+ battleConsume.setDeath(Integer.valueOf(Double.valueOf(deathConsume).intValue()));
+ battleConsume.setInjured(Integer.valueOf(Double.valueOf(injuredConsume).intValue()));
+ battleConsume.setFood(foodConsume);
+// battleConsume.setFuel(fuelConsume);
+ battleConsume.setMedical(medicalConsume);
+ battleConsume.setWater(waterConsume);
+ battleConsume.setResourceId(scenarioTask.getResourceId());
+ battleConsume.setConsumeDate(currentDateTime);
+ battleConsumeService.save(battleConsume);
+ if (injuredConsume > 2 && !isAlreadyProduceTask.get()) {
+ //产生一个
+
+ }
}
}catch (Exception ex){
ex.printStackTrace();
@@ -225,76 +233,77 @@ public class BattleRootTask extends AbtParentTask {
}
try {
- LocalDateTime currentDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
- String death = SpringUtil.getBean(Environment.class).getProperty("death.warn");
- String injured = SpringUtil.getBean(Environment.class).getProperty("injured.warn");
- String ammunition = SpringUtil.getBean(Environment.class).getProperty("ammunition.warn");
- log.info("===========person ammunition==={}===={}====={}========",death,injured,ammunition);
- String saveJsonStr= (String) redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo");
- ScenarioInfo scenarioInfo =JSONObject.parseObject(saveJsonStr,ScenarioInfo.class);
- Double restAmmunition = Double.valueOf(scenarioInfo.getAmmunition().getCurrent());
+ if(scenarioInfoOnTime.getPerson().getCurrent() >0) {
+ LocalDateTime currentDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+ String death = SpringUtil.getBean(Environment.class).getProperty("death.warn");
+ String injured = SpringUtil.getBean(Environment.class).getProperty("injured.warn");
+ String ammunition = SpringUtil.getBean(Environment.class).getProperty("ammunition.warn");
+ log.info("===========person ammunition==={}===={}====={}========", death, injured, ammunition);
+
+ Double restAmmunition = Double.valueOf(scenarioInfoOnTime.getAmmunition().getCurrent());
// StatisticBean battleResourceStat = statisticService.statistic(scenarioTask.getResourceId());
- Double ammunitionConsumeRate = restAmmunition/scenarioInfo.getAmmunition().getTotal()*100;
- if(Double.valueOf(ammunitionConsumeRate) <= Double.valueOf(ammunition) && suppleFlagMap.get("ammunition") == false){
- SupplierRequest supplierRequest = new SupplierRequest();
- supplierRequest.setId(IdUtils.simpleUUID());
- supplierRequest.setFromResourceId(scenarioTask.getResourceId());
- supplierRequest.setSupplierNum(String.valueOf(suppleAmount));
- supplierRequest.setSupplierType("ammunition");
- supplierRequest.setGeneralTime(currentDateTime);
- supplierRequest.setLat(jsonObject.get("teamLat").toString());
- supplierRequest.setLng(jsonObject.get("teamLng").toString());
- supplierRequestService.save(supplierRequest);
- ResponseCmdInfo respObj = new ResponseCmdInfo<>();
- respObj.setData(JSON.toJSONString(supplierRequest));
- respObj.setRoom(roomId);
- respObj.setScenarioId(scenarioTask.getScenarioId());
- respObj.setCmdType("ammunitionRequest");
- Global.sendCmdInfoQueue.add(respObj);
- suppleFlagMap.put("ammunition",true) ;
- }
- Long restDeath = Long.valueOf(scenarioInfo.getPerson().getDeath());
- Long deathConsumeRate = 0L;
- if(scenarioInfo.getPerson().getTotal() !=0) {
- deathConsumeRate = restDeath * 100 / scenarioInfo.getPerson().getTotal();
- }
- if(deathConsumeRate >= Long.valueOf(death) && suppleFlagMap.get("death") == false){
- SupplierRequest supplierRequest = new SupplierRequest();
- supplierRequest.setId(IdUtils.simpleUUID());
- supplierRequest.setFromResourceId(scenarioTask.getResourceId());
- supplierRequest.setSupplierNum(String.valueOf(suppleDeath));
- supplierRequest.setSupplierType("death");
- supplierRequest.setGeneralTime(currentDateTime);
- supplierRequest.setLat(jsonObject.get("teamLat").toString());
- supplierRequest.setLng(jsonObject.get("teamLng").toString());
- supplierRequestService.save(supplierRequest);
- ResponseCmdInfo respObj = new ResponseCmdInfo<>();
- respObj.setData(JSON.toJSONString(supplierRequest));
- respObj.setRoom(roomId);
- respObj.setScenarioId(scenarioTask.getScenarioId());
- respObj.setCmdType("deathRequest");
- Global.sendCmdInfoQueue.add(respObj);
- suppleFlagMap.put("death",true) ;
- }
- Long restInjured = Long.valueOf(scenarioInfo.getPerson().getInjured());
- Long injuredConsumeRate = restInjured*100/scenarioInfo.getPerson().getTotal();
- if(Long.valueOf(injuredConsumeRate) <= Long.valueOf(injured) && suppleFlagMap.get("injured") == false){
- SupplierRequest supplierRequest = new SupplierRequest();
- supplierRequest.setId(IdUtils.simpleUUID());
- supplierRequest.setFromResourceId(scenarioTask.getResourceId());
- supplierRequest.setSupplierNum(String.valueOf(suppleInjured));
- supplierRequest.setSupplierType("injured");
- supplierRequest.setGeneralTime(currentDateTime);
- supplierRequest.setLat(jsonObject.get("teamLat").toString());
- supplierRequest.setLng(jsonObject.get("teamLng").toString());
- supplierRequestService.save(supplierRequest);
- ResponseCmdInfo respObj = new ResponseCmdInfo<>();
- respObj.setData(JSON.toJSONString(supplierRequest));
- respObj.setRoom(roomId);
- respObj.setScenarioId(scenarioTask.getScenarioId());
- respObj.setCmdType("injuredRequest");
- Global.sendCmdInfoQueue.add(respObj);
- suppleFlagMap.put("injured",true) ;
+ Double ammunitionConsumeRate = restAmmunition / scenarioInfoOnTime.getAmmunition().getTotal() * 100;
+ if (Double.valueOf(ammunitionConsumeRate) <= Double.valueOf(ammunition) && suppleFlagMap.get("ammunition") == false) {
+ SupplierRequest supplierRequest = new SupplierRequest();
+ supplierRequest.setId(IdUtils.simpleUUID());
+ supplierRequest.setFromResourceId(scenarioTask.getResourceId());
+ supplierRequest.setSupplierNum(String.valueOf(suppleAmount));
+ supplierRequest.setSupplierType("ammunition");
+ supplierRequest.setGeneralTime(currentDateTime);
+ supplierRequest.setLat(jsonObject.get("teamLat").toString());
+ supplierRequest.setLng(jsonObject.get("teamLng").toString());
+ supplierRequestService.save(supplierRequest);
+ ResponseCmdInfo respObj = new ResponseCmdInfo<>();
+ respObj.setData(JSON.toJSONString(supplierRequest));
+ respObj.setRoom(roomId);
+ respObj.setScenarioId(scenarioTask.getScenarioId());
+ respObj.setCmdType("ammunitionRequest");
+ Global.sendCmdInfoQueue.add(respObj);
+ suppleFlagMap.put("ammunition", true);
+ }
+ Long restDeath = Long.valueOf(scenarioInfo.getPerson().getDeath());
+ Long deathConsumeRate = 0L;
+ if (scenarioInfo.getPerson().getTotal() != 0) {
+ deathConsumeRate = restDeath * 100 / scenarioInfoOnTime.getPerson().getTotal();
+ }
+ if (deathConsumeRate >= Long.valueOf(death) && suppleFlagMap.get("death") == false) {
+ SupplierRequest supplierRequest = new SupplierRequest();
+ supplierRequest.setId(IdUtils.simpleUUID());
+ supplierRequest.setFromResourceId(scenarioTask.getResourceId());
+ supplierRequest.setSupplierNum(String.valueOf(suppleDeath));
+ supplierRequest.setSupplierType("death");
+ supplierRequest.setGeneralTime(currentDateTime);
+ supplierRequest.setLat(jsonObject.get("teamLat").toString());
+ supplierRequest.setLng(jsonObject.get("teamLng").toString());
+ supplierRequestService.save(supplierRequest);
+ ResponseCmdInfo respObj = new ResponseCmdInfo<>();
+ respObj.setData(JSON.toJSONString(supplierRequest));
+ respObj.setRoom(roomId);
+ respObj.setScenarioId(scenarioTask.getScenarioId());
+ respObj.setCmdType("deathRequest");
+ Global.sendCmdInfoQueue.add(respObj);
+ suppleFlagMap.put("death", true);
+ }
+ Long restInjured = Long.valueOf(scenarioInfoOnTime.getPerson().getInjured());
+ Long injuredConsumeRate = restInjured * 100 / scenarioInfoOnTime.getPerson().getTotal();
+ if (Long.valueOf(injuredConsumeRate) <= Long.valueOf(injured) && suppleFlagMap.get("injured") == false) {
+ SupplierRequest supplierRequest = new SupplierRequest();
+ supplierRequest.setId(IdUtils.simpleUUID());
+ supplierRequest.setFromResourceId(scenarioTask.getResourceId());
+ supplierRequest.setSupplierNum(String.valueOf(suppleInjured));
+ supplierRequest.setSupplierType("injured");
+ supplierRequest.setGeneralTime(currentDateTime);
+ supplierRequest.setLat(jsonObject.get("teamLat").toString());
+ supplierRequest.setLng(jsonObject.get("teamLng").toString());
+ supplierRequestService.save(supplierRequest);
+ ResponseCmdInfo respObj = new ResponseCmdInfo<>();
+ respObj.setData(JSON.toJSONString(supplierRequest));
+ respObj.setRoom(roomId);
+ respObj.setScenarioId(scenarioTask.getScenarioId());
+ respObj.setCmdType("injuredRequest");
+ Global.sendCmdInfoQueue.add(respObj);
+ suppleFlagMap.put("injured", true);
+ }
}
}catch (Exception ex){
ex.printStackTrace();
diff --git a/src/main/java/com/hivekion/statistic/controller/StatisticController.java b/src/main/java/com/hivekion/statistic/controller/StatisticController.java
index 7f9874c..fdd8e09 100644
--- a/src/main/java/com/hivekion/statistic/controller/StatisticController.java
+++ b/src/main/java/com/hivekion/statistic/controller/StatisticController.java
@@ -28,12 +28,12 @@ public class StatisticController {
private StatisticService statisticService;
@GetMapping("/info")
-
public ResponseData statistic(String resourceId) {
return ResponseData.success(statisticService.statistic(resourceId));
}
+ @GetMapping("/battleConsume")
public ResponseData> listBattleConsumeStatistic(){
List qryList = this.statisticService.listBattleConsumeStatistic();
return ResponseData.success(qryList);