diff --git a/src/main/java/com/hivekion/baseData/entity/OrgSupplier.java b/src/main/java/com/hivekion/baseData/entity/OrgSupplier.java
index 46c737a..39c0d75 100644
--- a/src/main/java/com/hivekion/baseData/entity/OrgSupplier.java
+++ b/src/main/java/com/hivekion/baseData/entity/OrgSupplier.java
@@ -33,5 +33,6 @@ public class OrgSupplier implements Serializable {
@TableField(exist = false)
private String name;
+
}
diff --git a/src/main/java/com/hivekion/baseData/mapper/FightpowerstaffMapper.java b/src/main/java/com/hivekion/baseData/mapper/FightpowerstaffMapper.java
index 8a036de..82ed3a1 100644
--- a/src/main/java/com/hivekion/baseData/mapper/FightpowerstaffMapper.java
+++ b/src/main/java/com/hivekion/baseData/mapper/FightpowerstaffMapper.java
@@ -2,6 +2,7 @@ package com.hivekion.baseData.mapper;
import com.hivekion.baseData.entity.Fightpowerstaff;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import java.util.List;
/**
*
@@ -12,5 +13,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @since 2025-08-07
*/
public interface FightpowerstaffMapper extends BaseMapper {
-
+ List queryByOrgIds(List ids);
}
diff --git a/src/main/java/com/hivekion/baseData/mapper/OrgSupplierMapper.java b/src/main/java/com/hivekion/baseData/mapper/OrgSupplierMapper.java
index 7557d68..22346d9 100644
--- a/src/main/java/com/hivekion/baseData/mapper/OrgSupplierMapper.java
+++ b/src/main/java/com/hivekion/baseData/mapper/OrgSupplierMapper.java
@@ -2,7 +2,7 @@ package com.hivekion.baseData.mapper;
import com.hivekion.baseData.entity.OrgSupplier;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
+import java.util.List;
/**
*
* Mapper 接口
@@ -12,5 +12,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @since 2025-09-14
*/
public interface OrgSupplierMapper extends BaseMapper {
-
+ List selectByOrgIds(List ids);
}
diff --git a/src/main/java/com/hivekion/baseData/service/FightpowerstaffService.java b/src/main/java/com/hivekion/baseData/service/FightpowerstaffService.java
index 9dec0ed..6836223 100644
--- a/src/main/java/com/hivekion/baseData/service/FightpowerstaffService.java
+++ b/src/main/java/com/hivekion/baseData/service/FightpowerstaffService.java
@@ -14,4 +14,5 @@ import java.util.List;
*/
public interface FightpowerstaffService extends IService {
List queryListByOrgId(Integer orgId);
+ List queryByOrgIds(List ids);
}
diff --git a/src/main/java/com/hivekion/baseData/service/OrgSupplierService.java b/src/main/java/com/hivekion/baseData/service/OrgSupplierService.java
index 17f338a..a8832d3 100644
--- a/src/main/java/com/hivekion/baseData/service/OrgSupplierService.java
+++ b/src/main/java/com/hivekion/baseData/service/OrgSupplierService.java
@@ -13,5 +13,6 @@ import java.util.List;
* @since 2025-09-14
*/
public interface OrgSupplierService extends IService {
- public List getByOrgId(Integer orgId);
+ List getByOrgId(Integer orgId);
+ List selectByOrgIds(List ids);
}
diff --git a/src/main/java/com/hivekion/baseData/service/impl/FightpowerstaffServiceImpl.java b/src/main/java/com/hivekion/baseData/service/impl/FightpowerstaffServiceImpl.java
index aab299d..681ed37 100644
--- a/src/main/java/com/hivekion/baseData/service/impl/FightpowerstaffServiceImpl.java
+++ b/src/main/java/com/hivekion/baseData/service/impl/FightpowerstaffServiceImpl.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hivekion.baseData.entity.Fightpowerstaff;
import com.hivekion.baseData.mapper.FightpowerstaffMapper;
import com.hivekion.baseData.service.FightpowerstaffService;
+import java.util.Collections;
import java.util.List;
import org.springframework.stereotype.Service;
@@ -27,4 +28,9 @@ public class FightpowerstaffServiceImpl extends
queryWrapper.eq("parent_id", orgId);
return this.list(queryWrapper);
}
+
+ @Override
+ public List queryByOrgIds(List ids) {
+ return this.baseMapper.queryByOrgIds(ids);
+ }
}
diff --git a/src/main/java/com/hivekion/baseData/service/impl/OrgSupplierServiceImpl.java b/src/main/java/com/hivekion/baseData/service/impl/OrgSupplierServiceImpl.java
index 7492a0f..86275d3 100644
--- a/src/main/java/com/hivekion/baseData/service/impl/OrgSupplierServiceImpl.java
+++ b/src/main/java/com/hivekion/baseData/service/impl/OrgSupplierServiceImpl.java
@@ -27,4 +27,9 @@ public class OrgSupplierServiceImpl extends ServiceImpl selectByOrgIds(List ids) {
+ return this.baseMapper.selectByOrgIds(ids);
+ }
}
diff --git a/src/main/java/com/hivekion/scenario/service/IScenarioOrgPostService.java b/src/main/java/com/hivekion/scenario/service/IScenarioOrgPostService.java
index 2ca5367..37beb64 100644
--- a/src/main/java/com/hivekion/scenario/service/IScenarioOrgPostService.java
+++ b/src/main/java/com/hivekion/scenario/service/IScenarioOrgPostService.java
@@ -17,4 +17,5 @@ public interface IScenarioOrgPostService extends IService {
void removeByCondition(ScenarioOrgPost scenarioOrgPost);
List selectByCondition(ScenarioOrgPost scenarioOrgPost);
List getSelectOrgId(ScenarioOrgPost scenarioOrgPost);
+
}
diff --git a/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java b/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java
index 222ec5c..5b71f01 100644
--- a/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java
+++ b/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java
@@ -63,13 +63,13 @@ public class ScenarioTaskServiceImpl extends
this.start(2746,"1");
}
@Override
- public void start(Integer id, String roomId) {
- log.info("id::{},roomId::{}",id,roomId);
- Scenario currentScenario = scenarioService.getScenarioById(id);
+ public void start(Integer scenarioId, String roomId) {
+ log.info("scenarioId::{},roomId::{}",scenarioId,roomId);
+ Scenario currentScenario = scenarioService.getScenarioById(scenarioId);
//想定当前持续时间
- redisUtil.hset(roomId + "_" + id, "duringTime", "0");
+ redisUtil.hset(roomId + "_" + scenarioId, "duringTime", "0");
//想定当前状态
- redisUtil.hset(roomId + "_" + id, "states", "running");
+ redisUtil.hset(roomId + "_" + scenarioId, "states", "running");
@@ -95,18 +95,18 @@ public class ScenarioTaskServiceImpl extends
redisUtil.hset(roomId + "_" + id, "weather", JSON.toJSONString(jsonArray));
//查询任务
ScenarioTask queryTask = new ScenarioTask();
- queryTask.setScenarioId(id);
-// redisUtil.hset(roomId + "_" + id, "taskList", queryTaskList(queryTask));
+ queryTask.setScenarioId(scenarioId);
+ redisUtil.hset(roomId + "_" + scenarioId, "taskList", JSON.toJSONString(queryTaskList(queryTask)));
new Thread(() -> {
- springGlobalTaskManager.startPerSecondTask(roomId + "_" + id + "_task", () -> {
+ springGlobalTaskManager.startPerSecondTask(roomId + "_" + scenarioId + "_task", () -> {
//时间累计
increaseTime(currentScenario, roomId);
//天气触发
weatherTrigger(currentScenario, roomId);
//任务触发
-// taskTrigger(currentScenario, roomId);
+ taskTrigger(currentScenario, roomId);
});
}).start();
@@ -129,6 +129,7 @@ public class ScenarioTaskServiceImpl extends
private void increaseTime(Scenario currentScenario, String roomId) {
try{
+ log.info("currentScenario:;{}",currentScenario);
int mag = Global.roomParamMap.get(currentScenario.getId() + "_" + roomId) == null ? 1
: Global.roomParamMap.get(currentScenario.getId() + "_" + roomId).getMag();
//获取当前状态
@@ -206,9 +207,22 @@ public class ScenarioTaskServiceImpl extends
}
-
+ /**
+ * 获取当前想定从开始到现在时间
+ * @param scenario
+ * @param roomId
+ * @return
+ */
+ private int getCurrentDuringTime(Scenario scenario, String roomId) {
+ Object duringTime = redisUtil.hget(roomId + "_" + scenario.getId(), "duringTime");
+ if (duringTime != null) {
+ return (Integer) duringTime;
+ }
+ return 0;
+ }
private void taskTrigger(Scenario currentScenario, String roomId) {
try{
+ log.info("{}",currentScenario);
Object statusObj = redisUtil.hget(roomId + "_" + currentScenario.getId(), "status");
if (statusObj != null && statusObj.toString().equals("running")) {
Object taskListObj = redisUtil.hget(roomId + "_" + currentScenario.getId(), "taskList");
diff --git a/src/main/java/com/hivekion/scenario/service/impl/TaskLogicServiceImpl.java b/src/main/java/com/hivekion/scenario/service/impl/TaskLogicServiceImpl.java
index ecd2278..cd067a3 100644
--- a/src/main/java/com/hivekion/scenario/service/impl/TaskLogicServiceImpl.java
+++ b/src/main/java/com/hivekion/scenario/service/impl/TaskLogicServiceImpl.java
@@ -191,6 +191,12 @@ public class TaskLogicServiceImpl implements TaskLogicService {
Global.sendCmdInfoQueue.add(cmdInfo);
}
+ /**
+ * 获取当前想定从开始到现在时间
+ * @param scenario
+ * @param roomId
+ * @return
+ */
private int getCurrentDuringTime(Scenario scenario, String roomId) {
Object duringTime = redisUtil.hget(roomId + "_" + scenario.getId(), "duringTime");
if (duringTime != null) {
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 e70fdcd..f296fbf 100644
--- a/src/main/java/com/hivekion/statistic/service/impl/StatisticServiceImpl.java
+++ b/src/main/java/com/hivekion/statistic/service/impl/StatisticServiceImpl.java
@@ -1,8 +1,12 @@
package com.hivekion.statistic.service.impl;
+import com.hivekion.baseData.entity.Fightpowerstaff;
import com.hivekion.baseData.entity.OrgSupplier;
+import com.hivekion.baseData.service.FightpowerstaffService;
import com.hivekion.baseData.service.OrgSupplierService;
+import com.hivekion.scenario.entity.ScenarioOrgPost;
import com.hivekion.scenario.entity.ScenarioResource;
+import com.hivekion.scenario.service.IScenarioOrgPostService;
import com.hivekion.scenario.service.ScenarioResourceService;
import com.hivekion.statistic.bean.StatisticBean;
import com.hivekion.statistic.service.StatisticService;
@@ -10,7 +14,9 @@ import com.hivekion.supplier.entity.SuppliesDict;
import com.hivekion.supplier.service.SuppliesDictService;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import javax.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
@@ -23,6 +29,7 @@ import org.springframework.stereotype.Service;
* @since 2025/7/22
*/
@Service
+@Slf4j
public class StatisticServiceImpl implements StatisticService {
@Resource
@@ -31,7 +38,10 @@ public class StatisticServiceImpl implements StatisticService {
private OrgSupplierService orgSupplierService;
@Resource
private SuppliesDictService suppliesDictService;
-
+ @Resource
+ private IScenarioOrgPostService scenarioOrgPostService;
+ @Resource
+ private FightpowerstaffService fightpowerstaffService;
@Override
public StatisticBean statistic(String resourceId) {
StatisticBean statisticBean = new StatisticBean();
@@ -40,37 +50,55 @@ public class StatisticServiceImpl implements StatisticService {
if(resourceInstance == null){
return statisticBean;
}
+
statisticBean.getTeam().setType(resourceInstance.getType());
statisticBean.getTeam().setLat(resourceInstance.getLat());
statisticBean.getTeam().setLng(resourceInstance.getLng());
statisticBean.getTeam().setTeamName(resourceInstance.getResourceName());
+ //获取关联的组织机构信息
+ ScenarioOrgPost post = new ScenarioOrgPost();
+ post.setResourceId(resourceId);
+ List orgPostList = scenarioOrgPostService.selectByCondition(post);
+ List orgList = orgPostList.stream().map(ScenarioOrgPost::getOrgId)
+ .collect(Collectors.toList());
+ //获取人员信息
+ List staffList = fightpowerstaffService.queryByOrgIds(orgList);
+ int sum = staffList.stream()
+ .mapToInt(Fightpowerstaff::getNumber)
+ .sum();
+ statisticBean.getPerson().setCurrent(sum);
+ statisticBean.getPerson().setTotal(sum);
//获取物资信息
- List suppliers = orgSupplierService.getByOrgId(resourceInstance.getResourceId());
+ List suppliers = orgSupplierService.selectByOrgIds(orgList);
+
Map supplierMap = suppliesDictService.supplierDictMap();
+
suppliers.forEach(supplier -> {
- SuppliesDict dict = supplierMap.get(supplier.getId());
+
+ SuppliesDict dict = supplierMap.get(supplier.getSupplierId());
+
if (dict != null) {
switch (dict.getCode()) {
case "FOOD":
- statisticBean.getFood().setTotal(supplier.getAccount());
- statisticBean.getFood().setCurrent(supplier.getAccount());
+ statisticBean.getFood().setTotal(statisticBean.getFood().getTotal()+supplier.getAccount());
+ statisticBean.getFood().setCurrent(statisticBean.getFood().getCurrent()+supplier.getAccount());
break;
case "WATER":
- statisticBean.getWater().setTotal(supplier.getAccount());
- statisticBean.getWater().setCurrent(supplier.getAccount());
+ statisticBean.getWater().setTotal(statisticBean.getWater().getTotal()+supplier.getAccount());
+ statisticBean.getWater().setCurrent(statisticBean.getWater().getCurrent()+supplier.getAccount());
break;
case "FUEL":
- statisticBean.getFuel().setTotal(supplier.getAccount());
- statisticBean.getFuel().setCurrent(supplier.getAccount());
+ statisticBean.getFuel().setTotal(statisticBean.getFuel().getTotal()+supplier.getAccount());
+ statisticBean.getFuel().setCurrent(statisticBean.getFuel().getCurrent()+supplier.getAccount());
break;
case "MEDICAL":
- statisticBean.getMedical().setTotal(supplier.getAccount());
- statisticBean.getMedical().setCurrent(supplier.getAccount());
+ statisticBean.getMedical().setTotal( statisticBean.getMedical().getTotal()+supplier.getAccount());
+ statisticBean.getMedical().setCurrent( statisticBean.getMedical().getCurrent()+supplier.getAccount());
break;
case "AMMUNITION":
- statisticBean.getAmmunition().setTotal(supplier.getAccount());
- statisticBean.getAmmunition().setCurrent(supplier.getAccount());
+ statisticBean.getAmmunition().setTotal( statisticBean.getAmmunition().getTotal()+supplier.getAccount());
+ statisticBean.getAmmunition().setCurrent(statisticBean.getAmmunition().getCurrent()+supplier.getAccount());
break;
default:
break;
diff --git a/src/main/java/com/hivekion/ws/WsServer.java b/src/main/java/com/hivekion/ws/WsServer.java
index 63c64f5..9739497 100644
--- a/src/main/java/com/hivekion/ws/WsServer.java
+++ b/src/main/java/com/hivekion/ws/WsServer.java
@@ -1,7 +1,10 @@
package com.hivekion.ws;
+import com.alibaba.fastjson2.JSON;
import com.hivekion.Global;
import com.hivekion.common.entity.RequestCmdInfo;
+import com.hivekion.common.entity.ResponseCmdInfo;
+import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.websocket.OnClose;
@@ -57,6 +60,14 @@ public class WsServer {
}
+ try{
+ session.getBasicRemote().sendText(testWeatherJson("start_rain"));
+ Thread.sleep(10000);
+ session.getBasicRemote().sendText(testWeatherJson("start_snow"));
+ }catch (Exception e){
+ log.error("error::",e);
+ }
+
}
}
@@ -111,10 +122,24 @@ public class WsServer {
if (roomMap.containsKey(room)) {
Map singleRoomMap = roomMap.get(room);
singleRoomMap.forEach((sessionId, session) -> {
- session.getAsyncRemote().sendText(message);
+ try{
+ session.getBasicRemote().sendText(message);
+ }catch (Exception e){
+ log.error("error::",e);
+ }
+
});
}
}
}
-
+ private String testWeatherJson(String tag){
+ ResponseCmdInfo responseCmdInfo = new ResponseCmdInfo();
+ responseCmdInfo.setCmdType(tag);
+ responseCmdInfo.setRoom("123");
+ responseCmdInfo.setScenarioId(2746);
+ Map data = new HashMap<>();
+ data.put("begTime","2028-03-09 10:00:00");
+ data.put("endTime","2028-03-19 00:20:00");
+ return JSON.toJSONString(responseCmdInfo);
+ }
}
diff --git a/src/main/resources/mapper/tbl/FightpowerstaffMapper.xml b/src/main/resources/mapper/tbl/FightpowerstaffMapper.xml
index e6c7d77..6d6b815 100644
--- a/src/main/resources/mapper/tbl/FightpowerstaffMapper.xml
+++ b/src/main/resources/mapper/tbl/FightpowerstaffMapper.xml
@@ -1,5 +1,10 @@
-
+
diff --git a/src/main/resources/mapper/tbl/OrgSupplierMapper.xml b/src/main/resources/mapper/tbl/OrgSupplierMapper.xml
index 47aebc4..298cded 100644
--- a/src/main/resources/mapper/tbl/OrgSupplierMapper.xml
+++ b/src/main/resources/mapper/tbl/OrgSupplierMapper.xml
@@ -1,5 +1,19 @@
-
+
+
+
+
+
+
+
+
+
+