diff --git a/src/main/java/com/hivekion/baseData/controller/WeatherResourceController.java b/src/main/java/com/hivekion/baseData/controller/WeatherResourceController.java index bc1ae55..779f177 100644 --- a/src/main/java/com/hivekion/baseData/controller/WeatherResourceController.java +++ b/src/main/java/com/hivekion/baseData/controller/WeatherResourceController.java @@ -1,5 +1,6 @@ package com.hivekion.baseData.controller; +import com.hivekion.baseData.domain.TblWeaponVo.TblWeaponModelVo; import com.hivekion.baseData.domain.tblvehicleVo.VehicleAddInputVo; import com.hivekion.baseData.entity.WeatherResource; import com.hivekion.baseData.service.IWeatherResourceService; @@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.stereotype.Controller; import javax.annotation.Resource; +import java.io.Serializable; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; @@ -37,12 +39,21 @@ public class WeatherResourceController extends BaseController{ @ApiOperation(value = "新增天气信息", notes = "") @AutoLog(value = "新增天气信息", operationType = OperationTypeEnum.INSERT, module = "基础数据/新增车辆信息") public boolean add(@RequestBody WeatherResource inputVo) throws Exception { - DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDateTime begDate = LocalDateTime.parse(inputVo.getLastBegTimeStr(),dtf); - LocalDateTime endDate = LocalDateTime.parse(inputVo.getLastEndTimeStr(),dtf); - inputVo.setLastBegTime(begDate); - inputVo.setLastEndTime(endDate); - return weatherResourceService.save(inputVo); + if(inputVo.getId() == null) { + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime begDate = LocalDateTime.parse(inputVo.getLastBegTimeStr(), dtf); + LocalDateTime endDate = LocalDateTime.parse(inputVo.getLastEndTimeStr(), dtf); + inputVo.setLastBegTime(begDate); + inputVo.setLastEndTime(endDate); + return weatherResourceService.save(inputVo); + }else{ + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime begDate = LocalDateTime.parse(inputVo.getLastBegTimeStr(), dtf); + LocalDateTime endDate = LocalDateTime.parse(inputVo.getLastEndTimeStr(), dtf); + inputVo.setLastBegTime(begDate); + inputVo.setLastEndTime(endDate); + return weatherResourceService.updateById(inputVo); + } } @ApiOperation(value = "查询天气列表", notes = "") @@ -75,4 +86,11 @@ public class WeatherResourceController extends BaseController{ weatherResourceService.removeById(id); return ResponseData.success(null); } + + @GetMapping("/getInfo") + @ApiOperation(value = "获取天气详细信息", notes = "") + @AutoLog(value = "获取天气详细信息", operationType = OperationTypeEnum.SELECT, module = "天气详细信息") + public WeatherResource getInfo(@RequestParam("id") Integer id) { + return weatherResourceService.getById(id); + } } 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 97b8a3a..83b65d4 100644 --- a/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java +++ b/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java @@ -22,13 +22,21 @@ public class WeatherResourceServiceImpl extends ServiceImpl list(WeatherResource ebe) { + if(ebe.getScenarioId() != null){ + return this.list(new QueryWrapper().eq("scenario_id",ebe.getScenarioId())); + }else{ + return this.list(); + } - return this.list(new QueryWrapper().eq("scenario_id",ebe.getScenarioId())); } @Override public Long count(WeatherResource ebe) { - return this.list(new QueryWrapper().eq("scenario_id",ebe.getScenarioId())).stream().count(); + if(ebe.getScenarioId() != null){ + return this.list(new QueryWrapper().eq("scenario_id",ebe.getScenarioId())).stream().count(); + }else{ + return this.list().stream().count(); + } } } diff --git a/src/main/java/com/hivekion/room/bean/AbtParentTask.java b/src/main/java/com/hivekion/room/bean/AbtParentTask.java index c55ebbf..7affc26 100644 --- a/src/main/java/com/hivekion/room/bean/AbtParentTask.java +++ b/src/main/java/com/hivekion/room/bean/AbtParentTask.java @@ -233,6 +233,7 @@ public abstract class AbtParentTask implements TaskAction { beforeLat = lat; } + log.info("路线节点个数::{},总距离::{}",distanceInfoMap.size(),distanceInfoMap.lastKey()); //设置第一个开始位置 startPoint.set(distanceInfoMap.firstKey()); } @@ -257,21 +258,19 @@ public abstract class AbtParentTask implements TaskAction { if (this.getRoomStatus()) { //自动生成的任务不需要判断油量;不要在生成新的任务 - log.info("{}-fromSource::{}", scenarioTask.getResourceId(), scenarioTask.getFromSource()); + if (!"general".equals(scenarioTask.getFromSource())) { double currentFuel = getCurrentFuel(); double totalFuel = statisticBean.getFuel().getTotal(); - log.info("totalFuel::{}", totalFuel); + if (currentFuel <= 0 || totalFuel <= 0) { log.error("{}:油量为零停止移动", this.scenarioTask.getResourceId()); return; } - log.info("{}-当前比值{},阈值{}", scenarioTask.getResourceId(), - currentFuel * 100 / totalFuel, - fuelThreshold); + if (currentFuel * 100 / totalFuel < fuelThreshold && !requestFlag.get()) { - log.info("{}-油料不足,需要补充,新建需求和任务", scenarioTask.getResourceId()); + log.error("{}-油料不足,需要补充,新建需求和任务", scenarioTask.getResourceId()); requestFlag.set(true); //需要产生需求 @@ -281,7 +280,7 @@ public abstract class AbtParentTask implements TaskAction { return; } if (currentFuel * 100 / totalFuel < fuelThreshold) { - log.error("{}:油量不足停止移动,等待补给", this.scenarioTask.getResourceId()); + return; } } @@ -293,7 +292,7 @@ public abstract class AbtParentTask implements TaskAction { if (duringAction != null) { duringAction.doSomeThing(); } - log.info("移动中..... 放大系数{}", RoomManager.getMag(roomId)); + //跑动距离 double distance = duringTime.getAndAdd(RoomManager.getMag(roomId)) * speed; @@ -302,7 +301,7 @@ public abstract class AbtParentTask implements TaskAction { if (endPoint == null) { endPoint = distanceInfoMap.lastEntry(); } - + log.info("当前距离{}",distance); //ws数据 List dataList = new ArrayList<>(); HashMap dataMap = new HashMap<>(); @@ -515,36 +514,43 @@ public abstract class AbtParentTask implements TaskAction { task.setScenarioId(scenarioTask.getScenarioId()); task.setResourceId(supplierResource.getId()); task.setTaskType("1"); - + task.setName("油料保障任务-移动第一节点(自动)"); task.setFromLat(supplierResource.getLat()); task.setFromLng(supplierResource.getLng()); task.setToLat(fuelResource.getLat()); task.setToLng(fuelResource.getLng()); task.setStartTime(LocalDateTime.now()); task.setFromSource("general"); - log.info("承担保障任务的resourceId::{}", supplierResource.getId()); + log.info("油料保障任务-移动resourceId::{}", supplierResource.getId()); SpringUtil.getBean(ScenarioTaskServiceImpl.class).save(task); MoveTask moveTask = new MoveTask(task, this.roomId, new TaskAction() { @Override public void doSomeThing() { - //创建一个保障任务 + if(coordinate!=null){ + //创建一个送达任务 + log.info("目标地址::{},{}",coordinate.getLat(),coordinate.getLng()); + + ScenarioTask task = new ScenarioTask(); + task.setId(IdUtils.simpleUUID()); + task.setScenarioId(scenarioTask.getScenarioId()); + task.setResourceId(supplierResource.getId()); + task.setTaskType("6"); + task.setName("油料保障任务-移动第二节点(自动)"); + task.setInsureResourceId(scenarioTask.getResourceId()); + task.setSupplierNum(statisticBean.getFuel().getTotal() - minusFuel); + task.setToLat(coordinate.getLat() + ""); + task.setToLng(coordinate.getLng() + ""); + task.setStartTime(LocalDateTime.now()); + task.setFromLat(fuelResource.getLat()); + task.setFromLng(fuelResource.getLng()); + task.setFromSource("general"); + SpringUtil.getBean(ScenarioTaskServiceImpl.class).save(task); + SupplierTask supplierTask = new SupplierTask(task, roomId); + RoomManager.addAction(roomId, 0, supplierTask); + }else{ + log.error("没有目标地址"); + } - ScenarioTask task = new ScenarioTask(); - task.setId(IdUtils.simpleUUID()); - task.setScenarioId(scenarioTask.getScenarioId()); - task.setResourceId(supplierResource.getId()); - task.setTaskType("6"); - task.setInsureResourceId(scenarioTask.getResourceId()); - task.setSupplierNum(statisticBean.getFuel().getTotal() - minusFuel); - task.setToLat(coordinate.getLat() + ""); - task.setToLng(coordinate.getLng() + ""); - task.setStartTime(LocalDateTime.now()); - task.setFromLat(fuelResource.getLat()); - task.setFromLng(fuelResource.getLng()); - task.setFromSource("general"); - SpringUtil.getBean(ScenarioTaskServiceImpl.class).save(task); - SupplierTask supplierTask = new SupplierTask(task, roomId); - RoomManager.addAction(roomId, 0, supplierTask); } @Override diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index d84ddcb..fc38319 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -105,7 +105,7 @@ public class BattleRootTask extends AbtParentTask { this.createBattleTaskOnTimingHandle(new BizTaskOnTiming() { @Override public void execTask() { - log.info("===============================定时检查统计各种资源消耗量 begin===================================="); + log.info("===============================战斗检查统计各种资源消耗量 begin===================================="); Long deathConsume = null; Long injuredConsume = null; Double ammunitionConsume = null; @@ -118,7 +118,8 @@ public class BattleRootTask extends AbtParentTask { JSONObject jsonObject = new JSONObject(); String jsonStr = (String)redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo"); ScenarioInfo scenarioInfoOnTime =JSONObject.parseObject(jsonStr,ScenarioInfo.class); - + String updJsonStr = (String) redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "updScenarioInfo"); + EditScenarioInfo updScenarioInfo = JSON.parseObject(updJsonStr, EditScenarioInfo.class); try { long duringTime = getDuringTime(); @@ -134,77 +135,86 @@ public class BattleRootTask extends AbtParentTask { teamLng = scenarioInfoOnTime.getTeam().getLng().toString(); if(scenarioInfoOnTime.getPerson().getCurrent() >0) { // - int deathParam = RandomUtil.getSecureRandom().nextInt(6); - int baseParam = deathParam/2; - if(deathParam !=0 ) { - deathConsume = Long.valueOf(deathParam % baseParam); - }else{ - deathConsume =0L; + do { + int deathParam = RandomUtil.getSecureRandom().nextInt(6); + int baseParam = deathParam / 2; + if (deathParam != 0 && baseParam != 0) { + deathConsume = Long.valueOf(deathParam % baseParam); + } else { + deathConsume = 0L; + } + injuredConsume = Long.valueOf(RandomUtil.getSecureRandom().nextInt(3)); } - injuredConsume = Long.valueOf(RandomUtil.getSecureRandom().nextInt(3)); + while(scenarioInfoOnTime.getPerson().getCurrent() - Long.valueOf(deathConsume).intValue()-Long.valueOf(injuredConsume).intValue() < 0); + ammunitionConsume = intervalDuringTime * (0.1D + RandomUtil.getSecureRandom().nextDouble()); foodConsume = FOOD_SPREED; waterConsume = WATER_SPREED; medicalConsume = MEDICAL_SPREED; - - - 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() -Double.valueOf(food - foodConsume)> 0) { - scenarioInfoOnTime.getFood().setCurrent(Double.valueOf(food - foodConsume)); - }else{ - scenarioInfoOnTime.getFood().setCurrent(0D); - } - 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() - 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()); - if(scenarioInfoOnTime.getPerson().getCurrent() - Long.valueOf(deathConsume).intValue()-Long.valueOf(injuredConsume).intValue() <0){ + 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() - Double.valueOf(ammunition - ammunitionConsume)>0) { + updScenarioInfo.getJbxx().getPerson().setDeath(Long.valueOf(death + deathConsume).intValue()); + updScenarioInfo.getJbxx().getPerson().setInjured(Long.valueOf(injured + 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()); + } + }else { + if(scenarioInfoOnTime.getPerson().getTotal() - scenarioInfoOnTime.getPerson().getInjured()-scenarioInfoOnTime.getPerson().getDeath() > 0){ + scenarioInfoOnTime.getPerson().setInjured(scenarioInfoOnTime.getPerson().getTotal() - scenarioInfoOnTime.getPerson().getInjured()-scenarioInfoOnTime.getPerson().getDeath()); + updScenarioInfo.getJbxx().getPerson().setInjured(scenarioInfoOnTime.getPerson().getTotal() - scenarioInfoOnTime.getPerson().getInjured()-scenarioInfoOnTime.getPerson().getDeath()); + } + + + } + if(scenarioInfoOnTime.getAmmunition().getCurrent() - Double.valueOf(ammunitionConsume)>0) { + scenarioInfoOnTime.getAmmunition().setCurrent(Double.valueOf(ammunition - ammunitionConsume)); + }else{ + scenarioInfoOnTime.getAmmunition().setCurrent(0D); + } + if(scenarioInfoOnTime.getFood().getCurrent() -Double.valueOf(foodConsume)> 0) { + scenarioInfoOnTime.getFood().setCurrent(Double.valueOf(food - foodConsume)); + }else{ + scenarioInfoOnTime.getFood().setCurrent(0D); + } + if(scenarioInfoOnTime.getMedical().getCurrent() -Double.valueOf(medicalConsume)> 0) { + scenarioInfoOnTime.getMedical().setCurrent(Double.valueOf(medical - medicalConsume)); + }else{ + scenarioInfoOnTime.getMedical().setCurrent(0D); + } + if(scenarioInfoOnTime.getWater().getCurrent() - Double.valueOf(waterConsume)> 0) { + scenarioInfoOnTime.getWater().setCurrent(Double.valueOf(water - waterConsume)); + }else{ + scenarioInfoOnTime.getWater().setCurrent(0D); + } + if(updScenarioInfo.getJbxx().getAmmunition().getCurrent() - Double.valueOf(ammunitionConsume)>0) { updScenarioInfo.getJbxx().getAmmunition().setCurrent(Double.valueOf(ammunition - ammunitionConsume)); }else{ updScenarioInfo.getJbxx().getAmmunition().setCurrent(0D); } - if(updScenarioInfo.getJbxx().getFood().getCurrent() - Double.valueOf(food - foodConsume) > 0) { + if(updScenarioInfo.getJbxx().getFood().getCurrent() - Double.valueOf(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() - Double.valueOf(medical - medicalConsume)> 0) { + if(updScenarioInfo.getJbxx().getMedical().getCurrent() - Double.valueOf(medicalConsume)> 0) { updScenarioInfo.getJbxx().getMedical().setCurrent(Double.valueOf(medical - medicalConsume)); }else{ updScenarioInfo.getJbxx().getMedical().setCurrent(0D); } - if(updScenarioInfo.getJbxx().getWater().getCurrent() -Double.valueOf(water - waterConsume)> 0) { + if(updScenarioInfo.getJbxx().getWater().getCurrent() -Double.valueOf(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()); - 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<>(); @@ -215,37 +225,17 @@ public class BattleRootTask extends AbtParentTask { 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)); - }else{ - log.info("=========================scenarioInfoOnTime.getPerson().getCurrent()==========={}========================================================",scenarioInfoOnTime.getPerson().getCurrent()); - 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(0)); - } - if(updScenarioInfo.getJbxx().getFood().getCurrent() < 0) { - updScenarioInfo.getJbxx().getFood().setCurrent(Double.valueOf(0)); - } -// updScenarioInfo.getJbxx().getFuel().setCurrent(Double.valueOf(fuel - fuelConsume)); - if(updScenarioInfo.getJbxx().getMedical().getCurrent() < 0) { - updScenarioInfo.getJbxx().getMedical().setCurrent(Double.valueOf(0)); - } - if(updScenarioInfo.getJbxx().getWater().getCurrent() < 0) { - updScenarioInfo.getJbxx().getWater().setCurrent(Double.valueOf(0)); - } - updScenarioInfo.getJbxx().getPerson().setCurrent(0); - redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "updScenarioInfo", JSON.toJSONString(updScenarioInfo)); - } - if(scenarioInfoOnTime.getAmmunition().getCurrent() - Double.valueOf(ammunition - ammunitionConsume)<0) { + + if(scenarioInfoOnTime.getAmmunition().getCurrent() <0) { scenarioInfoOnTime.getAmmunition().setCurrent(0D); } - if(scenarioInfoOnTime.getFood().getCurrent() -Double.valueOf(food - foodConsume)<0) { + if(scenarioInfoOnTime.getFood().getCurrent()<0) { scenarioInfoOnTime.getAmmunition().setCurrent(0D); } - if(scenarioInfoOnTime.getMedical().getCurrent() -Double.valueOf(medical - medicalConsume)<0) { + if(scenarioInfoOnTime.getMedical().getCurrent()<0) { scenarioInfoOnTime.getAmmunition().setCurrent(0D); } - if(scenarioInfoOnTime.getWater().getCurrent() - Double.valueOf(water - waterConsume)<0) { + if(scenarioInfoOnTime.getWater().getCurrent()<0) { scenarioInfoOnTime.getAmmunition().setCurrent(0D); } redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "scenarioInfo", JSONObject.toJSONString(scenarioInfoOnTime)); @@ -362,8 +352,8 @@ public class BattleRootTask extends AbtParentTask { 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); + updJsonStr = (String) redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "updScenarioInfo"); + 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)); @@ -394,8 +384,8 @@ public class BattleRootTask extends AbtParentTask { ScenarioInfo scenarioInfoInjured =JSONObject.parseObject(jsonInjured,ScenarioInfo.class); scenarioInfoInjured.getPerson().setInjured(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); + updJsonStr = (String) redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "updScenarioInfo"); + updScenarioInfo = JSON.parseObject(updJsonStr, EditScenarioInfo.class); updScenarioInfo.getJbxx().getPerson().setInjured(Long.valueOf(0).intValue()); redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "updScenarioInfo", JSON.toJSONString(updScenarioInfo)); @@ -407,7 +397,7 @@ public class BattleRootTask extends AbtParentTask { ex.printStackTrace(); log.error("===========BattleRootTask supplierRequestService.saveBatch error====================",ex.getMessage()); } - log.info("===============================定时检查统计各种资源消耗量 end===================================="); + log.info("===============================战斗检查统计各种资源消耗量 end===================================="); } }); @@ -435,7 +425,6 @@ public class BattleRootTask extends AbtParentTask { if ("SUPPLIER_MEDICAL".equals(teaminfo.getRoleCode())) { supplierResource = resource; - break; } } diff --git a/src/main/java/com/hivekion/room/bean/MoveTask.java b/src/main/java/com/hivekion/room/bean/MoveTask.java index 9a256bc..de101e5 100644 --- a/src/main/java/com/hivekion/room/bean/MoveTask.java +++ b/src/main/java/com/hivekion/room/bean/MoveTask.java @@ -107,6 +107,7 @@ public class MoveTask extends AbtParentTask implements TaskAction { //修改油料 EditScenarioInfo editScenarioInfo = getEditScenarioInfo( this.scenarioTask.getResourceId()); + editScenarioInfo.getJbxx().getFuel().setCurrent(editScenarioInfo.getJbxx().getFuel().getCurrent()-currentUseUp); setEditScenarioInfo(editScenarioInfo,scenarioTask.getResourceId()); diff --git a/src/main/java/com/hivekion/room/bean/SupplierTask.java b/src/main/java/com/hivekion/room/bean/SupplierTask.java index 3629d32..34857dd 100644 --- a/src/main/java/com/hivekion/room/bean/SupplierTask.java +++ b/src/main/java/com/hivekion/room/bean/SupplierTask.java @@ -1,14 +1,8 @@ package com.hivekion.room.bean; -import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.fastjson2.JSON; -import com.hivekion.common.redis.RedisUtil; import com.hivekion.room.func.TaskAction; import com.hivekion.scenario.entity.ScenarioTask; import com.hivekion.statistic.bean.EditScenarioInfo; -import com.hivekion.statistic.bean.ScenarioInfo; -import com.hivekion.statistic.bean.StatisticBean; -import com.hivekion.statistic.service.StatisticService; import lombok.extern.slf4j.Slf4j; /** @@ -30,8 +24,7 @@ public class SupplierTask extends AbtParentTask implements TaskAction { @Override public void doSomeThing() { - StatisticBean statistic = SpringUtil.getBean(StatisticService.class) - .statistic(scenarioTask.getResourceId()); + initPath(); //初始化路径 updatePath(50, null, new TaskAction() { @@ -41,19 +34,19 @@ public class SupplierTask extends AbtParentTask implements TaskAction { //达到终点点后,给目标补充物资 switch (scenarioTask.getTaskType()) { case "4": - supplierAmmunition(statistic); + supplierAmmunition(); break; case "5": - supplierWater(statistic); + supplierWater(); break; case "6": - supplierFuel(statistic); + supplierFuel(); break; case "7": - supplierFood(statistic); + supplierFood(); break; case "8": - supplierMedical(statistic); + supplierMedical(); break; } //推送最新状态信息 @@ -73,164 +66,87 @@ public class SupplierTask extends AbtParentTask implements TaskAction { }); } - private void supplierMedical(StatisticBean statistic) { - //保障分队 - Object supplierObj = SpringUtil.getBean(RedisUtil.class).hget( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "scenarioInfo"); - //被保障分队 - Object insureObj = SpringUtil.getBean(RedisUtil.class).hget( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), - "scenarioInfo"); - if(supplierObj!=null&&insureObj!=null){ + private void supplierMedical() { + EditScenarioInfo supplierInfo = getEditScenarioInfo(scenarioTask.getResourceId()); + EditScenarioInfo insuranceInfo = getEditScenarioInfo(scenarioTask.getInsureResourceId()); - ScenarioInfo scenarioSupplierInfo = JSON.parseObject(supplierObj.toString(), ScenarioInfo.class); - ScenarioInfo scenarioInsureInfo = JSON.parseObject(insureObj.toString(), ScenarioInfo.class); + if (supplierInfo != null && insuranceInfo != null) { + double insuranceCurrent = insuranceInfo.getJbxx().getMedical().getCurrent(); - scenarioSupplierInfo.getMedical().setCurrent(scenarioInsureInfo.getMedical().getCurrent() - statistic.getMedical().getTotal()); - scenarioInsureInfo.getMedical().setCurrent(statistic.getMedical().getTotal()); + supplierInfo.getJbxx().getMedical().setCurrent( + supplierInfo.getJbxx().getMedical().getCurrent() - insuranceCurrent < 0 ? 0 + : (supplierInfo.getJbxx().getMedical().getCurrent() - insuranceCurrent)); - - SpringUtil.getBean(RedisUtil.class).hset( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), - "scenarioInfo",JSON.toJSONString(scenarioInsureInfo)); - - SpringUtil.getBean(RedisUtil.class).hset( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "scenarioInfo",JSON.toJSONString(scenarioSupplierInfo)); - - } - } - - private void supplierFuel(StatisticBean statistic) { - - //保障分队 - Object supplierObj = SpringUtil.getBean(RedisUtil.class).hget( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "scenarioInfo"); - //被保障分队 - Object insureObj = SpringUtil.getBean(RedisUtil.class).hget( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), - "scenarioInfo"); - if(supplierObj!=null&&insureObj!=null){ - - - ScenarioInfo scenarioSupplierInfo = JSON.parseObject(supplierObj.toString(), ScenarioInfo.class); - ScenarioInfo scenarioInsureInfo = JSON.parseObject(insureObj.toString(), ScenarioInfo.class); - - scenarioSupplierInfo.getFuel().setCurrent(scenarioInsureInfo.getFuel().getCurrent() - statistic.getFuel().getTotal()); - - scenarioInsureInfo.getFuel().setCurrent(statistic.getFuel().getTotal()); - - EditScenarioInfo insureEdit = getEditScenarioInfo(scenarioTask.getInsureResourceId()); - double supplierNum = statistic.getFuel().getTotal() - statistic.getFuel().getCurrent(); - insureEdit.getJbxx().getFuel().setCurrent(statistic.getFuel().getTotal()); - setEditScenarioInfo(insureEdit,scenarioTask.getInsureResourceId()); - - EditScenarioInfo supplerEdit = getEditScenarioInfo(scenarioTask.getResourceId()); - supplerEdit.getJbxx().getFuel().setCurrent(statistic.getFuel().getTotal()-supplierNum); - setEditScenarioInfo(supplerEdit,scenarioTask.getResourceId()); - - SpringUtil.getBean(RedisUtil.class).hset( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), - "scenarioInfo",JSON.toJSONString(scenarioInsureInfo)); - - SpringUtil.getBean(RedisUtil.class).hset( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "scenarioInfo",JSON.toJSONString(scenarioSupplierInfo)); + insuranceInfo.getJbxx().getMedical() + .setCurrent(insuranceInfo.getJbxx().getMedical().getTotal()); } } + private void supplierFuel() { + EditScenarioInfo supplierInfo = getEditScenarioInfo(scenarioTask.getResourceId()); + EditScenarioInfo insuranceInfo = getEditScenarioInfo(scenarioTask.getInsureResourceId()); + if (supplierInfo != null && insuranceInfo != null) { + double insuranceCurrent = insuranceInfo.getJbxx().getFuel().getCurrent(); - private void supplierAmmunition(StatisticBean statistic) { + supplierInfo.getJbxx().getFuel().setCurrent( + supplierInfo.getJbxx().getFuel().getCurrent() - insuranceCurrent < 0 ? 0 + : (supplierInfo.getJbxx().getFuel().getCurrent() - insuranceCurrent)); - //保障分队 - Object supplierObj = SpringUtil.getBean(RedisUtil.class).hget( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "scenarioInfo"); - //被保障分队 - Object insureObj = SpringUtil.getBean(RedisUtil.class).hget( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), - "scenarioInfo"); - if(supplierObj!=null&&insureObj!=null){ + insuranceInfo.getJbxx().getFuel() + .setCurrent(insuranceInfo.getJbxx().getFuel().getTotal()); - ScenarioInfo scenarioSupplierInfo = JSON.parseObject(supplierObj.toString(), ScenarioInfo.class); - ScenarioInfo scenarioInsureInfo = JSON.parseObject(insureObj.toString(), ScenarioInfo.class); + } - scenarioSupplierInfo.getAmmunition().setCurrent(scenarioInsureInfo.getAmmunition().getCurrent() - statistic.getAmmunition().getTotal()); - scenarioInsureInfo.getAmmunition().setCurrent(statistic.getAmmunition().getTotal()); + } - SpringUtil.getBean(RedisUtil.class).hset( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), - "scenarioInfo",JSON.toJSONString(scenarioInsureInfo)); + private void supplierAmmunition() { + EditScenarioInfo supplierInfo = getEditScenarioInfo(scenarioTask.getResourceId()); + EditScenarioInfo insuranceInfo = getEditScenarioInfo(scenarioTask.getInsureResourceId()); + if (supplierInfo != null && insuranceInfo != null) { + double insuranceCurrent = insuranceInfo.getJbxx().getAmmunition().getCurrent(); - SpringUtil.getBean(RedisUtil.class).hset( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "scenarioInfo",JSON.toJSONString(scenarioSupplierInfo)); + supplierInfo.getJbxx().getAmmunition().setCurrent( + supplierInfo.getJbxx().getAmmunition().getCurrent() - insuranceCurrent < 0 ? 0 + : (supplierInfo.getJbxx().getAmmunition().getCurrent() - insuranceCurrent)); + + insuranceInfo.getJbxx().getAmmunition() + .setCurrent(insuranceInfo.getJbxx().getAmmunition().getTotal()); } } - private void supplierWater(StatisticBean statistic) { + private void supplierWater() { + EditScenarioInfo supplierInfo = getEditScenarioInfo(scenarioTask.getResourceId()); + EditScenarioInfo insuranceInfo = getEditScenarioInfo(scenarioTask.getInsureResourceId()); + if (supplierInfo != null && insuranceInfo != null) { + double insuranceCurrent = insuranceInfo.getJbxx().getWater().getCurrent(); - //保障分队 - Object supplierObj = SpringUtil.getBean(RedisUtil.class).hget( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "scenarioInfo"); - //被保障分队 - Object insureObj = SpringUtil.getBean(RedisUtil.class).hget( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), - "scenarioInfo"); - if(supplierObj!=null&&insureObj!=null){ + supplierInfo.getJbxx().getWater().setCurrent( + supplierInfo.getJbxx().getWater().getCurrent() - insuranceCurrent < 0 ? 0 + : (supplierInfo.getJbxx().getWater().getCurrent() - insuranceCurrent)); - ScenarioInfo scenarioSupplierInfo = JSON.parseObject(supplierObj.toString(), ScenarioInfo.class); - ScenarioInfo scenarioInsureInfo = JSON.parseObject(insureObj.toString(), ScenarioInfo.class); - - scenarioSupplierInfo.getWater().setCurrent(scenarioInsureInfo.getWater().getCurrent() - statistic.getWater().getTotal()); - scenarioInsureInfo.getWater().setCurrent(statistic.getWater().getTotal()); - - - SpringUtil.getBean(RedisUtil.class).hset( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), - "scenarioInfo",JSON.toJSONString(scenarioInsureInfo)); - - SpringUtil.getBean(RedisUtil.class).hset( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "scenarioInfo",JSON.toJSONString(scenarioSupplierInfo)); + insuranceInfo.getJbxx().getWater() + .setCurrent(insuranceInfo.getJbxx().getWater().getTotal()); } } - private void supplierFood(StatisticBean statistic) { - //保障分队 - Object supplierObj = SpringUtil.getBean(RedisUtil.class).hget( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "scenarioInfo"); - //被保障分队 - Object insureObj = SpringUtil.getBean(RedisUtil.class).hget( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), - "scenarioInfo"); - if(supplierObj!=null&&insureObj!=null){ + private void supplierFood() { + EditScenarioInfo supplierInfo = getEditScenarioInfo(scenarioTask.getResourceId()); + EditScenarioInfo insuranceInfo = getEditScenarioInfo(scenarioTask.getInsureResourceId()); + if (supplierInfo != null && insuranceInfo != null) { + double insuranceCurrent = insuranceInfo.getJbxx().getFood().getCurrent(); - ScenarioInfo scenarioSupplierInfo = JSON.parseObject(supplierObj.toString(), ScenarioInfo.class); - ScenarioInfo scenarioInsureInfo = JSON.parseObject(insureObj.toString(), ScenarioInfo.class); + supplierInfo.getJbxx().getFood().setCurrent( + supplierInfo.getJbxx().getFood().getCurrent() - insuranceCurrent < 0 ? 0 + : (supplierInfo.getJbxx().getFood().getCurrent() - insuranceCurrent)); - scenarioSupplierInfo.getFood().setCurrent(scenarioInsureInfo.getFood().getCurrent() - statistic.getFood().getTotal()); - scenarioInsureInfo.getFood().setCurrent(statistic.getFood().getTotal()); - - - SpringUtil.getBean(RedisUtil.class).hset( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), - "scenarioInfo",JSON.toJSONString(scenarioInsureInfo)); - - SpringUtil.getBean(RedisUtil.class).hset( - scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), - "scenarioInfo",JSON.toJSONString(scenarioSupplierInfo)); + insuranceInfo.getJbxx().getFood() + .setCurrent(insuranceInfo.getJbxx().getFood().getTotal()); } - } } 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 4b5c61f..72633b6 100644 --- a/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java +++ b/src/main/java/com/hivekion/scenario/service/impl/ScenarioTaskServiceImpl.java @@ -149,11 +149,11 @@ public class ScenarioTaskServiceImpl extends //增加任务 private void addTaskEvent(Scenario scenario, String roomId) { - log.info("--------------------hello"); + ScenarioTask scenarioTask = new ScenarioTask(); scenarioTask.setScenarioId(scenario.getId()); List taskList = this.queryTaskList(scenarioTask); - log.info("taskList.size ::{}", taskList.size()); + for (ScenarioTask task : taskList) { try { long diff = Duration.between(scenario.getStartTime(),task.getStartTime()) diff --git a/src/main/java/com/hivekion/ws/WsServer.java b/src/main/java/com/hivekion/ws/WsServer.java index e0fa719..44691a5 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("{},{}", scenarioId, room); + // log.info("{},{}", 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 ad78788..50c871e 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -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://192.168.0.53:8989/route +path.planning.url=http://127.0.0.1:8989/route diff --git a/src/main/resources/application-rule.properties b/src/main/resources/application-rule.properties index e7387b5..d39d9bf 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 = 99.80 +fuel.warn = 55.80 medical.warn = 1 death.spreed = 3 injured.spreed = 3