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/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/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/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 9f7e080..0276910 100644 --- a/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java +++ b/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java @@ -136,33 +136,50 @@ public class ScenarioTaskServiceImpl extends * @param roomId 房间ID */ private void weatherTrigger(Scenario currentScenario, String roomId) { - try { - QueryWrapper weatherResourceQueryWrapper = new QueryWrapper<>(); - weatherResourceQueryWrapper.eq("scenario_id", currentScenario.getId()); - List weatherResourceList = this.weatherResourceService.list(weatherResourceQueryWrapper); - ResponseCmdInfo responseCmdInfo = new ResponseCmdInfo(); - responseCmdInfo.setScenarioId(currentScenario.getId()); - responseCmdInfo.setRoom(roomId); - JSONArray weatherMsgArray = new JSONArray(); - for (WeatherResource weatherResource : weatherResourceList) { - JSONObject jsonObject = new JSONObject(); - DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - jsonObject.putOnce("begTime", dtf.format(weatherResource.getLastBegTime())); - jsonObject.putOnce("endTime", dtf.format(weatherResource.getLastEndTime())); - weatherMsgArray.add(jsonObject); - responseCmdInfo.setCmdType("66-" + weatherResource.getWeatherType()); - } - responseCmdInfo.setData(weatherMsgArray); - System.out.println(responseCmdInfo.toString()); - Global.sendCmdInfoQueue.add(responseCmdInfo); - } catch (Exception ex) { + //获取到 reids中天气数据 + //每个天气开始遍历 + //获取天气开始的时间 ,最好加一个状态,提示天气任务的开始,运行 + //想定的开始时间+想定目前持续的时间 - log.error(ex.getMessage()); - } +// try { +// QueryWrapper weatherResourceQueryWrapper = new QueryWrapper<>(); +// weatherResourceQueryWrapper.eq("scenario_id", currentScenario.getId()); +// List weatherResourceList = this.weatherResourceService.list(weatherResourceQueryWrapper); +// ResponseCmdInfo responseCmdInfo = new ResponseCmdInfo(); +// responseCmdInfo.setScenarioId(currentScenario.getId()); +// responseCmdInfo.setRoom(roomId); +// JSONArray weatherMsgArray = new JSONArray(); +// for (WeatherResource weatherResource : weatherResourceList) { +// JSONObject jsonObject = new JSONObject(); +// DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); +// jsonObject.putOnce("begTime", dtf.format(weatherResource.getLastBegTime())); +// jsonObject.putOnce("endTime", dtf.format(weatherResource.getLastEndTime())); +// weatherMsgArray.add(jsonObject); +// responseCmdInfo.setCmdType("66-" + weatherResource.getWeatherType()); +// } +// responseCmdInfo.setData(weatherMsgArray); +// System.out.println(responseCmdInfo.toString()); +// Global.sendCmdInfoQueue.add(responseCmdInfo); +// } catch (Exception ex) { +// +// log.error(ex.getMessage()); +// } } - + /** + * 获取当前想定从开始到现在时间 + * @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{ Object statusObj = redisUtil.hget(roomId + "_" + currentScenario.getId(), "status"); 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..9570c48 100644 --- a/src/main/java/com/hivekion/statistic/service/impl/StatisticServiceImpl.java +++ b/src/main/java/com/hivekion/statistic/service/impl/StatisticServiceImpl.java @@ -2,7 +2,9 @@ package com.hivekion.statistic.service.impl; import com.hivekion.baseData.entity.OrgSupplier; 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 +12,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 +27,7 @@ import org.springframework.stereotype.Service; * @since 2025/7/22 */ @Service +@Slf4j public class StatisticServiceImpl implements StatisticService { @Resource @@ -31,7 +36,8 @@ public class StatisticServiceImpl implements StatisticService { private OrgSupplierService orgSupplierService; @Resource private SuppliesDictService suppliesDictService; - + @Resource + private IScenarioOrgPostService scenarioOrgPostService; @Override public StatisticBean statistic(String resourceId) { StatisticBean statisticBean = new StatisticBean(); @@ -40,37 +46,50 @@ 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 suppliers = orgSupplierService.getByOrgId(resourceInstance.getResourceId()); + List suppliers = orgSupplierService.selectByOrgIds(orgList); + log.info("suppliers size::{}",suppliers.size()); Map supplierMap = suppliesDictService.supplierDictMap(); + log.info("supplierMap::{}",supplierMap); suppliers.forEach(supplier -> { - SuppliesDict dict = supplierMap.get(supplier.getId()); + log.info("supplier:{},{}",supplier,supplier.getId()); + SuppliesDict dict = supplierMap.get(supplier.getSupplierId()); + log.info("dict:{}",dict); 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..ae05bcb 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,12 @@ public class WsServer { } + try{ + session.getBasicRemote().sendText(testWeatherJson()); + }catch (Exception e){ + log.error("error::",e); + } + } } @@ -111,10 +120,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(){ + ResponseCmdInfo responseCmdInfo = new ResponseCmdInfo(); + responseCmdInfo.setCmdType("66-raining"); + 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/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 @@ - + + + + + + + + + +