diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index 2492101..6c8a77c 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -111,7 +111,6 @@ public class BattleRootTask extends AbtParentTask { @Override public void execTask() { log.info("===============================定时检查统计各种资源消耗量 begin===================================="); - Long deathConsume = null; Long injuredConsume = null; Double ammunitionConsume = null; diff --git a/src/main/java/com/hivekion/statistic/service/impl/ScenarioServiceImpl.java b/src/main/java/com/hivekion/statistic/service/impl/ScenarioServiceImpl.java index de88e73..d9453ba 100644 --- a/src/main/java/com/hivekion/statistic/service/impl/ScenarioServiceImpl.java +++ b/src/main/java/com/hivekion/statistic/service/impl/ScenarioServiceImpl.java @@ -1,5 +1,6 @@ package com.hivekion.statistic.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.hivekion.baseData.entity.Fightpowerstaff; import com.hivekion.baseData.entity.OrgSupplier; @@ -17,6 +18,8 @@ import com.hivekion.supplier.entity.SupplierRequest; import com.hivekion.supplier.entity.SuppliesDict; import com.hivekion.supplier.service.ISupplierRequestService; import com.hivekion.supplier.service.SuppliesDictService; +import com.hivekion.team.entity.Teaminfo; +import com.hivekion.team.service.ITeaminfoService; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -43,11 +46,25 @@ public class ScenarioServiceImpl implements ScenarioService { private ScenarioTaskService scenarioTaskService; @Resource private ISupplierRequestService supplierRequestService; + + @Resource + private ITeaminfoService teamInfoService; + + @Resource + private ScenarioResourceService resourceService; @Override public ScenarioInfo listScenarioInfo(Integer scenarioId, String roomId, String resourceId) { ScenarioInfo scenarioInfo = new ScenarioInfo(); //获取分队信息 + Map map = teamInfoService.teamInfoMap(); + Map resourceMap = resourceService.resourceMap(); ScenarioResource resourceInstance = scenarioResourceService.getById(resourceId); + if (resourceMap.get(resourceId) != null) { + ScenarioResource resource = resourceMap.get(resourceId); + if (map.get(resource.getResourceId()) != null) { + scenarioInfo.getTeam().setTeamName(map.get(resource.getResourceId()).getName()); + } + } //获取关联的组织机构信息 ScenarioOrgPost post = new ScenarioOrgPost(); post.setResourceId(resourceId); @@ -55,50 +72,60 @@ public class ScenarioServiceImpl implements ScenarioService { List orgList = orgPostList.stream().map(ScenarioOrgPost::getOrgId) .collect(Collectors.toList()); List staffList = null; + List suppliers = null; if(!orgList.isEmpty()){ staffList = fightpowerstaffService.queryByOrgIds(orgList); + if(CollectionUtil.isEmpty(staffList)){ + staffList = new ArrayList<>(); + } + //获取物资信息 + suppliers = orgSupplierService.selectByOrgIds(orgList); + if(suppliers==null||suppliers.isEmpty()){ + suppliers = new ArrayList<>(); + } + Map supplierMap = suppliesDictService.supplierDictMap(); + + suppliers.forEach(supplier -> { + + SuppliesDict dict = supplierMap.get(supplier.getSupplierId()); + + if (dict != null) { + switch (dict.getCode()) { + case "FOOD": + scenarioInfo.getFood().setTotal(scenarioInfo.getFood().getTotal()+supplier.getAccount()); + scenarioInfo.getFood().setCurrent(scenarioInfo.getFood().getCurrent()+supplier.getAccount()); + break; + case "WATER": + scenarioInfo.getWater().setTotal(scenarioInfo.getWater().getTotal()+supplier.getAccount()); + scenarioInfo.getWater().setCurrent(scenarioInfo.getWater().getCurrent()+supplier.getAccount()); + break; + case "FUEL": + scenarioInfo.getFuel().setTotal(scenarioInfo.getFuel().getTotal()+supplier.getAccount()); + scenarioInfo.getFuel().setCurrent(scenarioInfo.getFuel().getCurrent()+supplier.getAccount()); + break; + case "MEDICAL": + scenarioInfo.getMedical().setTotal( scenarioInfo.getMedical().getTotal()+supplier.getAccount()); + scenarioInfo.getMedical().setCurrent( scenarioInfo.getMedical().getCurrent()+supplier.getAccount()); + break; + + case "AMMUNITION": + scenarioInfo.getAmmunition().setTotal( scenarioInfo.getAmmunition().getTotal()+supplier.getAccount()); + scenarioInfo.getAmmunition().setCurrent(scenarioInfo.getAmmunition().getCurrent()+supplier.getAccount()); + break; + default: + break; + } + } + }); }else{ staffList = new ArrayList<>(); + orgPostList = new ArrayList<>(); + suppliers = new ArrayList<>(); } - //获取物资信息 - List suppliers = orgSupplierService.selectByOrgIds(orgList); - if(suppliers==null||suppliers.isEmpty()){ - return new ScenarioInfo(); - } - Map supplierMap = suppliesDictService.supplierDictMap(); - suppliers.forEach(supplier -> { - - SuppliesDict dict = supplierMap.get(supplier.getSupplierId()); - - if (dict != null) { - switch (dict.getCode()) { - case "FOOD": - scenarioInfo.getFood().setTotal(scenarioInfo.getFood().getTotal()+supplier.getAccount()); - scenarioInfo.getFood().setCurrent(scenarioInfo.getFood().getCurrent()+supplier.getAccount()); - break; - case "WATER": - scenarioInfo.getWater().setTotal(scenarioInfo.getWater().getTotal()+supplier.getAccount()); - scenarioInfo.getWater().setCurrent(scenarioInfo.getWater().getCurrent()+supplier.getAccount()); - break; - case "FUEL": - scenarioInfo.getFuel().setTotal(scenarioInfo.getFuel().getTotal()+supplier.getAccount()); - scenarioInfo.getFuel().setCurrent(scenarioInfo.getFuel().getCurrent()+supplier.getAccount()); - break; - case "MEDICAL": - scenarioInfo.getMedical().setTotal( scenarioInfo.getMedical().getTotal()+supplier.getAccount()); - scenarioInfo.getMedical().setCurrent( scenarioInfo.getMedical().getCurrent()+supplier.getAccount()); - break; - - case "AMMUNITION": - scenarioInfo.getAmmunition().setTotal( scenarioInfo.getAmmunition().getTotal()+supplier.getAccount()); - scenarioInfo.getAmmunition().setCurrent(scenarioInfo.getAmmunition().getCurrent()+supplier.getAccount()); - break; - default: - break; - } - } - }); + scenarioInfo.getTeam().setType(resourceInstance.getType()); + scenarioInfo.getTeam().setLat(resourceInstance.getLat()); + scenarioInfo.getTeam().setLng(resourceInstance.getLng()); ScenarioTask scenarioTask = new ScenarioTask(); scenarioTask.setScenarioId(scenarioId); @@ -107,9 +134,13 @@ public class ScenarioServiceImpl implements ScenarioService { List scenarioTasks = scenarioTaskService.queryTaskList(scenarioTask); - + if(CollectionUtil.isEmpty(scenarioTasks)){ + scenarioTasks =new ArrayList<>(); + } List supplierRequests = supplierRequestService.list(new QueryWrapper().eq("FROM_RESOURCE_ID",resourceId)); - + if(CollectionUtil.isEmpty(supplierRequests)){ + supplierRequests =new ArrayList<>(); + } scenarioInfo.setScenarioTasks(scenarioTasks); scenarioInfo.setStaffList(staffList); scenarioInfo.setOrgPostList(orgPostList); diff --git a/src/main/java/com/hivekion/thread/WebsocketMsgWrapper.java b/src/main/java/com/hivekion/thread/WebsocketMsgWrapper.java index 6d3aea3..53f61e1 100644 --- a/src/main/java/com/hivekion/thread/WebsocketMsgWrapper.java +++ b/src/main/java/com/hivekion/thread/WebsocketMsgWrapper.java @@ -39,7 +39,7 @@ public class WebsocketMsgWrapper { responseCmdInfo.setRoom(roomId); try { JSONObject msgObj = (JSONObject) JSON.parse(msg); - if(msgObj.getString("cmdType").equals("scenarioInfo")){ + if(msgObj.getString("cmdType").equals("scenarioRunningInfo")){ if( redisUtil == null) { redisUtil = SpringUtil.getBean(RedisUtil.class); } @@ -52,8 +52,25 @@ public class WebsocketMsgWrapper { } } responseCmdInfo.setData(JSONArray.toJSONString(allScenario)); + responseCmdInfo.setCmdType("scenarioInfo"); } - responseCmdInfo.setCmdType("scenarioInfo"); + if(msgObj.getString("cmdType").equals("scenarioInfo")){ + List scenarioResourceList = this.scenarioResourceService.list(new QueryWrapper().eq("scenario_id",scenarioId)); + ScenarioService scenarioService = SpringUtil.getBean(ScenarioService.class); + if(scenarioService != null){ + JSONArray allScenario = new JSONArray(); + for(ScenarioResource scenarioResource : scenarioResourceList) { + ScenarioInfo scenarioInfo = scenarioService.listScenarioInfo(scenarioResource.getScenarioId(), roomId, scenarioResource.getId()); + String scenarioInfoStr = com.alibaba.fastjson2.JSON.toJSONString(scenarioInfo); + allScenario.add(scenarioInfoStr); + } + responseCmdInfo.setData(JSONArray.toJSONString(allScenario)); + }else { + log.warn("=============scenarioService is null================================"); + } + responseCmdInfo.setCmdType("scenarioInfo"); + } + Global.sendCmdInfoQueue.add(responseCmdInfo); }catch (Exception ex){ ex.printStackTrace();