Compare commits

..

No commits in common. "25507ce2aafeb1dc11323d4bacfb02c1a7db4f91" and "50395edce46440cbe07cd4f3f940690d08e2ef1d" have entirely different histories.

4 changed files with 92 additions and 145 deletions

View File

@ -106,7 +106,6 @@ public class Scenario extends SearchInputVo {
private String leftBottomLat; private String leftBottomLat;
@TableField(value = "right_bottom_lat") @TableField(value = "right_bottom_lat")
private String rightBottomLat; private String rightBottomLat;
private String desc;
/** /**
* 想定关联的资源列表 * 想定关联的资源列表
*/ */

View File

@ -14,7 +14,6 @@ import com.hivekion.enums.WsCmdTypeEnum;
import com.hivekion.room.RoomManager; import com.hivekion.room.RoomManager;
import com.hivekion.room.func.TaskAction; import com.hivekion.room.func.TaskAction;
import com.hivekion.scenario.entity.ScenarioTask; import com.hivekion.scenario.entity.ScenarioTask;
import com.hivekion.statistic.bean.ScenarioInfo;
import java.time.Duration; import java.time.Duration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -34,7 +33,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClient;
@ -218,8 +216,8 @@ public abstract class AbtParentTask implements TaskAction {
if(!this.canMoved.get()){ if(!this.canMoved.get()){
return; return;
} }
log.info("{}-移动中,canRemove::{}", this.scenarioTask.getResourceId(), log.info("{}-移动中,canRemove::{}",this.scenarioTask.getResourceId(),this.canMoved.get());
this.canMoved.get());
if(duringAction!=null){ if(duringAction!=null){
duringAction.doSomeThing(); duringAction.doSomeThing();
@ -313,20 +311,13 @@ public abstract class AbtParentTask implements TaskAction {
//房间统一管理定时器房间关闭后定时器销毁 //房间统一管理定时器房间关闭后定时器销毁
addScheduledExecutorServiceRefenceToRoom(schedule); addScheduledExecutorServiceRefenceToRoom(schedule);
} }
private RedisUtil redisUtil; private RedisUtil redisUtil;
//统一推送方法 //统一推送方法
protected void pushStatus(String resourceId) { protected void pushStatus(String resourceId) {
if (StringUtils.isBlank(resourceId)) {
return;
}
if( redisUtil == null) { if( redisUtil == null) {
redisUtil = SpringUtil.getBean(RedisUtil.class); redisUtil = SpringUtil.getBean(RedisUtil.class);
} }
String jsonStr = (String) redisUtil.hget( String jsonStr= (String) redisUtil.hget(this.scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo");
this.scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),
"scenarioInfo");
ResponseCmdInfo<String> respObj = new ResponseCmdInfo<>(); ResponseCmdInfo<String> respObj = new ResponseCmdInfo<>();
respObj.setData(jsonStr); respObj.setData(jsonStr);
respObj.setRoom(roomId); respObj.setRoom(roomId);
@ -334,7 +325,6 @@ public abstract class AbtParentTask implements TaskAction {
respObj.setCmdType("scenarioInfo"); respObj.setCmdType("scenarioInfo");
Global.sendCmdInfoQueue.add(respObj); Global.sendCmdInfoQueue.add(respObj);
} }
} }
interface BizTaskOnTiming { interface BizTaskOnTiming {

View File

@ -161,7 +161,7 @@ public class MoveTask extends AbtParentTask implements TaskAction {
//需要产生需求 //需要产生需求
produceFuelRequest(); produceFuelRequest();
//产生任务 //产生任务
produceTask(fuel); produceTask();
} }
@ -200,7 +200,7 @@ public class MoveTask extends AbtParentTask implements TaskAction {
SpringUtil.getBean(SupplierRequestServiceImpl.class).save(supplierRequest); SpringUtil.getBean(SupplierRequestServiceImpl.class).save(supplierRequest);
} }
private void produceTask(double fuel) { private void produceTask() {
try { try {
log.info("{}-产生自动保障任务", this.scenarioTask.getResourceId()); log.info("{}-产生自动保障任务", this.scenarioTask.getResourceId());
List<ScenarioResource> resourceList = SpringUtil.getBean(BattleSupplierServiceImpl.class) List<ScenarioResource> resourceList = SpringUtil.getBean(BattleSupplierServiceImpl.class)
@ -214,7 +214,7 @@ public class MoveTask extends AbtParentTask implements TaskAction {
task.setResourceId(resourceList.get(0).getId()); task.setResourceId(resourceList.get(0).getId());
task.setTaskType("6"); task.setTaskType("6");
task.setInsureResourceId(scenarioTask.getResourceId()); task.setInsureResourceId(scenarioTask.getResourceId());
task.setSupplierNum(statisticBean.getFuel().getTotal()-fuel); task.setSupplierNum(statisticBean.getFuel().getTotal());
task.setToLat(this.coordinateReference.get().getLat() + ""); task.setToLat(this.coordinateReference.get().getLat() + "");
task.setToLng(this.coordinateReference.get().getLng() + ""); task.setToLng(this.coordinateReference.get().getLng() + "");
task.setStartTime(LocalDateTime.now()); task.setStartTime(LocalDateTime.now());

View File

@ -1,11 +1,9 @@
package com.hivekion.room.bean; package com.hivekion.room.bean;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson2.JSON;
import com.hivekion.common.redis.RedisUtil; import com.hivekion.common.redis.RedisUtil;
import com.hivekion.room.func.TaskAction; import com.hivekion.room.func.TaskAction;
import com.hivekion.scenario.entity.ScenarioTask; import com.hivekion.scenario.entity.ScenarioTask;
import com.hivekion.statistic.bean.ScenarioInfo;
import com.hivekion.statistic.bean.StatisticBean; import com.hivekion.statistic.bean.StatisticBean;
import com.hivekion.statistic.service.StatisticService; import com.hivekion.statistic.service.StatisticService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -57,7 +55,7 @@ public class SupplierTask extends AbtParentTask implements TaskAction {
} }
//推送最新状态信息 //推送最新状态信息
pushStatus(scenarioTask.getResourceId()); pushStatus(scenarioTask.getResourceId());
pushStatus(scenarioTask.getInsureResourceId()); pushStatus(scenarioTask.getResourceId());
} }
@Override @Override
@ -73,152 +71,112 @@ public class SupplierTask extends AbtParentTask implements TaskAction {
} }
private void supplierMedical(StatisticBean statistic) { 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){
ScenarioInfo scenarioSupplierInfo = JSON.parseObject(supplierObj.toString(), ScenarioInfo.class); //增加被保障分队的量
ScenarioInfo scenarioInsureInfo = JSON.parseObject(insureObj.toString(), ScenarioInfo.class); SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(),
"medical", statistic.getMedical().getTotal() + "");
scenarioSupplierInfo.getMedical().setCurrent(scenarioInsureInfo.getMedical().getCurrent() - statistic.getMedical().getTotal()); //获取保障任务的药品信息
scenarioInsureInfo.getMedical().setCurrent(statistic.getMedical().getTotal()); Object supplierObj = SpringUtil.getBean(RedisUtil.class)
.hget(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
SpringUtil.getBean(RedisUtil.class).hset( "medical");
scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), //减少保障分队的量
"scenarioInfo",JSON.toJSONString(scenarioInsureInfo)); if (supplierObj != null) {
double supplierMedical = Double.parseDouble(supplierObj.toString());
SpringUtil.getBean(RedisUtil.class).hset(
scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),
"scenarioInfo",JSON.toJSONString(scenarioSupplierInfo));
double remain = supplierMedical - statistic.getMedical().getTotal();
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"medical", remain + "");
} }
} }
private void supplierFuel(StatisticBean statistic) { private void supplierFuel(StatisticBean statistic) {
//保障分队 SpringUtil.getBean(RedisUtil.class)
Object supplierObj = SpringUtil.getBean(RedisUtil.class).hget( .hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(),
scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "fuel", statistic.getFuel().getTotal() + "");
"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); Object supplierObj = SpringUtil.getBean(RedisUtil.class)
ScenarioInfo scenarioInsureInfo = JSON.parseObject(insureObj.toString(), ScenarioInfo.class); .hget(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
scenarioSupplierInfo.getFuel().setCurrent(scenarioInsureInfo.getFuel().getCurrent() - statistic.getFuel().getTotal()); "fuel");
scenarioInsureInfo.getFuel().setCurrent(statistic.getFuel().getTotal()); //减少保障分队的量
if (supplierObj != null) {
double supplierMedical = Double.parseDouble(supplierObj.toString());
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));
double remain = supplierMedical - statistic.getFuel().getTotal();
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"fuel", remain + "");
} }
} }
private void supplierAmmunition(StatisticBean statistic) { private void supplierAmmunition(StatisticBean statistic) {
//保障分队 SpringUtil.getBean(RedisUtil.class)
Object supplierObj = SpringUtil.getBean(RedisUtil.class).hget( .hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(),
scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "ammunition", statistic.getAmmunition().getTotal() + "");
"scenarioInfo"); Object supplierObj = SpringUtil.getBean(RedisUtil.class)
//被保障分队 .hget(scenarioTask.getScenarioId() + "-" + roomId + "-"
Object insureObj = SpringUtil.getBean(RedisUtil.class).hget( + scenarioTask.getResourceId(),
scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), "ammunition");
"scenarioInfo"); //减少保障分队的量
if(supplierObj!=null&&insureObj!=null){ if (supplierObj != null) {
double supplierMedical = Double.parseDouble(supplierObj.toString());
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));
SpringUtil.getBean(RedisUtil.class).hset(
scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),
"scenarioInfo",JSON.toJSONString(scenarioSupplierInfo));
double remain = supplierMedical - statistic.getAmmunition().getTotal();
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"ammunition", remain + "");
} }
} }
private void supplierWater(StatisticBean statistic) { private void supplierWater(StatisticBean statistic) {
//保障分队 SpringUtil.getBean(RedisUtil.class)
Object supplierObj = SpringUtil.getBean(RedisUtil.class).hget( .hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(),
scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), "water", statistic.getWater().getTotal() + "");
"scenarioInfo"); Object supplierObj = SpringUtil.getBean(RedisUtil.class)
//被保障分队 .hget(scenarioTask.getScenarioId() + "-" + roomId + "-"
Object insureObj = SpringUtil.getBean(RedisUtil.class).hget( + scenarioTask.getResourceId(),
scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), "water");
"scenarioInfo"); //减少保障分队的量
if(supplierObj!=null&&insureObj!=null){ if (supplierObj != null) {
double supplierMedical = Double.parseDouble(supplierObj.toString());
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));
double remain = supplierMedical - statistic.getWater().getTotal();
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"water", remain + "");
} }
} }
private void supplierFood(StatisticBean statistic) { 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){
ScenarioInfo scenarioSupplierInfo = JSON.parseObject(supplierObj.toString(), ScenarioInfo.class); SpringUtil.getBean(RedisUtil.class)
ScenarioInfo scenarioInsureInfo = JSON.parseObject(insureObj.toString(), ScenarioInfo.class); .hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(),
"food", statistic.getFood().getTotal() + "");
scenarioSupplierInfo.getFood().setCurrent(scenarioInsureInfo.getFood().getCurrent() - statistic.getFood().getTotal()); Object supplierObj = SpringUtil.getBean(RedisUtil.class)
scenarioInsureInfo.getFood().setCurrent(statistic.getFood().getTotal()); .hget(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"food");
SpringUtil.getBean(RedisUtil.class).hset( //减少保障分队的量
scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(), if (supplierObj != null) {
"scenarioInfo",JSON.toJSONString(scenarioInsureInfo)); double supplierMedical = Double.parseDouble(supplierObj.toString());
SpringUtil.getBean(RedisUtil.class).hset(
scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),
"scenarioInfo",JSON.toJSONString(scenarioSupplierInfo));
double remain = supplierMedical - statistic.getFood().getTotal();
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"food", remain + "");
} }
} }
} }