simulation-backend/src/main/java/com/hivekion/room/bean/SupplierTask.java
2025-09-20 18:21:04 +08:00

186 lines
6.2 KiB
Java

package com.hivekion.room.bean;
import cn.hutool.extra.spring.SpringUtil;
import com.hivekion.common.entity.ResponseCmdInfo;
import com.hivekion.common.redis.RedisUtil;
import com.hivekion.room.func.TaskAction;
import com.hivekion.scenario.entity.ScenarioTask;
import com.hivekion.statistic.bean.StatisticBean;
import com.hivekion.statistic.service.StatisticService;
import java.util.HashMap;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
/**
* [类的简要说明]
* <p>
* [详细描述,可选]
* <p>
*
* @author LiDongYU
* @since 2025/7/22
*/
@Slf4j
public class SupplierTask extends AbtParentTask implements TaskAction {
public SupplierTask(ScenarioTask scenarioTask, String roomId) {
super(scenarioTask, roomId);
}
@Override
public void doSomeThing() {
StatisticBean statistic = SpringUtil.getBean(StatisticService.class)
.statistic(scenarioTask.getResourceId());
initPath(); //初始化路径
updatePath(30, null, new TaskAction() {
@Override
public void doSomeThing() {
log.info("supplier team is arrived ");
//达到终点点后,给目标补充物资
switch (scenarioTask.getTaskType()) {
case "4":
supplierAmmunition(statistic);
break;
case "5":
supplierWater(statistic);
break;
case "6":
supplierFuel(statistic);
break;
case "7":
supplierFood(statistic);
break;
case "8":
supplierMedical(statistic);
break;
}
//推送最新状态信息
pushStatus(scenarioTask.getResourceId());
pushStatus(scenarioTask.getResourceId());
}
@Override
public String getId() {
return "";
}
@Override
public String getType() {
return "";
}
});
}
private void supplierMedical(StatisticBean statistic) {
//增加被保障分队的量
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(),
"medical", statistic.getMedical().getTotal() + "");
//获取保障任务的药品信息
Object supplierObj = SpringUtil.getBean(RedisUtil.class)
.hget(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"medical");
//减少保障分队的量
if (supplierObj != null) {
double supplierMedical = Double.parseDouble(supplierObj.toString());
double remain = supplierMedical - statistic.getMedical().getTotal();
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"medical", remain + "");
}
}
private void supplierFuel(StatisticBean statistic) {
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(),
"fuel", statistic.getFuel().getTotal() + "");
Object supplierObj = SpringUtil.getBean(RedisUtil.class)
.hget(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"fuel");
//减少保障分队的量
if (supplierObj != null) {
double supplierMedical = Double.parseDouble(supplierObj.toString());
double remain = supplierMedical - statistic.getFuel().getTotal();
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"fuel", remain + "");
}
}
private void supplierAmmunition(StatisticBean statistic) {
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(),
"ammunition", statistic.getAmmunition().getTotal() + "");
Object supplierObj = SpringUtil.getBean(RedisUtil.class)
.hget(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"ammunition");
//减少保障分队的量
if (supplierObj != null) {
double supplierMedical = Double.parseDouble(supplierObj.toString());
double remain = supplierMedical - statistic.getAmmunition().getTotal();
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"ammunition", remain + "");
}
}
private void supplierWater(StatisticBean statistic) {
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(),
"water", statistic.getWater().getTotal() + "");
Object supplierObj = SpringUtil.getBean(RedisUtil.class)
.hget(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"water");
//减少保障分队的量
if (supplierObj != null) {
double supplierMedical = Double.parseDouble(supplierObj.toString());
double remain = supplierMedical - statistic.getWater().getTotal();
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"water", remain + "");
}
}
private void supplierFood(StatisticBean statistic) {
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getInsureResourceId(),
"food", statistic.getFood().getTotal() + "");
Object supplierObj = SpringUtil.getBean(RedisUtil.class)
.hget(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"food");
//减少保障分队的量
if (supplierObj != null) {
double supplierMedical = Double.parseDouble(supplierObj.toString());
double remain = supplierMedical - statistic.getFood().getTotal();
SpringUtil.getBean(RedisUtil.class)
.hset(scenarioTask.getScenarioId() + "-" + roomId + "-"
+ scenarioTask.getResourceId(),
"food", remain + "");
}
}
}