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; /** * [类的简要说明] *
* [详细描述,可选] *
* * @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 + ""); } } }