186 lines
6.2 KiB
Java
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 + "");
|
|
}
|
|
|
|
}
|
|
}
|