diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java index b14dae1..4d8f653 100644 --- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java +++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java @@ -8,7 +8,9 @@ import com.hivekion.Global; import com.hivekion.common.entity.ResponseCmdInfo; import com.hivekion.common.redis.RedisUtil; import com.hivekion.common.uuid.IdUtils; +import com.hivekion.scenario.entity.BattleConsume; import com.hivekion.scenario.entity.ScenarioTask; +import com.hivekion.scenario.service.IBattleConsumeService; import com.hivekion.statistic.bean.*; import com.hivekion.statistic.service.StatisticService; import com.hivekion.statistic.service.impl.StatisticServiceImpl; @@ -18,6 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.core.env.Environment; import org.springframework.util.CollectionUtils; +import javax.swing.*; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; @@ -42,6 +45,8 @@ public class BattleRootTask extends AbtParentTask { private ISupplierRequestService supplierRequestService; + private IBattleConsumeService battleConsumeService; + private static final Integer DEATH_SPREED = 3; private static final Integer INJURED_SPREED = 3; private static final Double AMMUNITION_SPREED = 2.6D; @@ -66,6 +71,9 @@ public class BattleRootTask extends AbtParentTask { if(supplierRequestService == null){ supplierRequestService = SpringUtil.getBean(ISupplierRequestService.class); } + if(battleConsumeService == null){ + battleConsumeService = SpringUtil.getBean(IBattleConsumeService.class); + } } //执行一次 @Override @@ -85,11 +93,11 @@ public class BattleRootTask extends AbtParentTask { // statisticBean.getAmmunition().getCurrent() //初始化本次战斗任务各种资源数 - battleParams.put("ammunition",Double.valueOf(statisticBean.getAmmunition().getCurrent()).toString()); - battleParams.put("food",Double.valueOf(statisticBean.getFood().getCurrent()).toString()); - battleParams.put("fuel",Double.valueOf(statisticBean.getFuel().getCurrent()).toString()); - battleParams.put("medical",Double.valueOf(statisticBean.getMedical().getCurrent()).toString()); - battleParams.put("water",Double.valueOf(statisticBean.getWater().getCurrent()).toString()); + battleParams.put("ammunition",Double.valueOf(statisticBean.getAmmunition().getTotal()).toString()); + battleParams.put("food",Double.valueOf(statisticBean.getFood().getTotal()).toString()); + battleParams.put("fuel",Double.valueOf(statisticBean.getFuel().getTotal()).toString()); + battleParams.put("medical",Double.valueOf(statisticBean.getMedical().getTotal()).toString()); + battleParams.put("water",Double.valueOf(statisticBean.getWater().getTotal()).toString()); battleParams.put("death",Double.valueOf(statisticBean.getPerson().getDeath()).toString()); battleParams.put("injured",Double.valueOf(statisticBean.getPerson().getInjured()).toString()); battleParams.put("teamLat",statisticBean.getTeam().getLat().toString()); @@ -169,23 +177,34 @@ public class BattleRootTask extends AbtParentTask { jsonObject.put("teamLng",teamLng); sendConsumeMsg.setData(jsonObject); Global.sendCmdInfoQueue.add(sendConsumeMsg); + BattleConsume battleConsume = new BattleConsume(); + battleConsume.setLat(teamLat); + battleConsume.setLng(teamLng); + battleConsume.setId(IdUtils.simpleUUID()); + battleConsume.setAmmunition(ammunitionConsume); + battleConsume.setDeath(Integer.valueOf(deathConsume.toString())); + battleConsume.setInjured(Integer.valueOf(injuredConsume.toString())); + battleConsume.setFood(foodConsume); + battleConsume.setFuel(fuelConsume); + battleConsume.setMedical(medicalConsume); + battleConsume.setWater(waterConsume); + battleConsume.setResourceId(scenarioTask.getResourceId()); + battleConsumeService.save(battleConsume); }catch (Exception ex){ log.error("==================推送消耗數據 失败============================================",ex.getMessage()); } try { LocalDateTime currentDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); - String death = SpringUtil.getBean(Environment.class).getProperty("battle.death.warn"); - String injured = SpringUtil.getBean(Environment.class).getProperty("battle.injured.warn"); - String ammunition = SpringUtil.getBean(Environment.class).getProperty("battle.ammunition.warn"); + String death = SpringUtil.getBean(Environment.class).getProperty("death.warn"); + String injured = SpringUtil.getBean(Environment.class).getProperty("injured.warn"); + String ammunition = SpringUtil.getBean(Environment.class).getProperty("ammunition.warn"); log.info("===========person ammunition==={}===={}====={}========",death,injured,ammunition); -// String food = SpringUtil.getBean(Environment.class).getProperty("battle.food.warn"); -// String water = SpringUtil.getBean(Environment.class).getProperty("battle.water.warn"); -// String fuel = SpringUtil.getBean(Environment.class).getProperty("battle.fuel.warn"); -// String medical = SpringUtil.getBean(Environment.class).getProperty("battle.medical.warn"); - - if(Double.valueOf(battleParams.get("ammunition").toString()) <= Double.valueOf(ammunition) && suppleFlagMap.get("ammunition") == false){ - + HashMap battleConsumeMap = (HashMap) redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId()); + Double restAmmunition = Double.valueOf(battleConsumeMap.get("ammunition").toString()); + StatisticBean battleResourceStat = statisticService.statistic(scenarioTask.getResourceId()); + Double ammunitionConsumeRate = restAmmunition/battleResourceStat.getAmmunition().getTotal()*100; + if(Double.valueOf(ammunitionConsumeRate) <= Double.valueOf(ammunition) && suppleFlagMap.get("ammunition") == false){ SupplierRequest supplierRequest = new SupplierRequest(); supplierRequest.setId(IdUtils.simpleUUID()); supplierRequest.setFromResourceId(scenarioTask.getResourceId()); @@ -197,7 +216,9 @@ public class BattleRootTask extends AbtParentTask { supplierRequestService.save(supplierRequest); suppleFlagMap.put("ammunition",true) ; } - if(Long.valueOf(battleParams.get("death").toString()) <= Long.valueOf(death) && suppleFlagMap.get("death") == false){ + Long restNoDeath = Long.valueOf(battleConsumeMap.get("death").toString()); + Long deathConsumeRate = restNoDeath*100/battleResourceStat.getPerson().getDeath(); + if(deathConsumeRate <= Long.valueOf(death) && suppleFlagMap.get("death") == false){ SupplierRequest supplierRequest = new SupplierRequest(); supplierRequest.setId(IdUtils.simpleUUID()); supplierRequest.setFromResourceId(scenarioTask.getResourceId()); @@ -209,7 +230,9 @@ public class BattleRootTask extends AbtParentTask { supplierRequestService.save(supplierRequest); suppleFlagMap.put("death",true) ; } - if(Long.valueOf(battleParams.get("injured").toString()) <= Long.valueOf(injured) && suppleFlagMap.get("injured") == false){ + Long restNoInjured = Long.valueOf(battleConsumeMap.get("injured").toString()); + Long injuredConsumeRate = restNoInjured*100/battleResourceStat.getPerson().getDeath(); + if(Long.valueOf(injuredConsumeRate) <= Long.valueOf(injured) && suppleFlagMap.get("injured") == false){ SupplierRequest supplierRequest = new SupplierRequest(); supplierRequest.setId(IdUtils.simpleUUID()); supplierRequest.setFromResourceId(scenarioTask.getResourceId()); @@ -229,14 +252,11 @@ public class BattleRootTask extends AbtParentTask { } }); - } - } - } diff --git a/src/main/java/com/hivekion/scenario/controller/BattleConsumeController.java b/src/main/java/com/hivekion/scenario/controller/BattleConsumeController.java new file mode 100644 index 0000000..cb17d98 --- /dev/null +++ b/src/main/java/com/hivekion/scenario/controller/BattleConsumeController.java @@ -0,0 +1,18 @@ +package com.hivekion.scenario.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.stereotype.Controller; + +/** + *

+ * 战斗消耗 前端控制器 + *

+ * + * @author liDongYu + * @since 2025-09-19 + */ +@Controller +@RequestMapping("/scenario/battleConsume") +public class BattleConsumeController { + +} diff --git a/src/main/java/com/hivekion/scenario/entity/BattleConsume.java b/src/main/java/com/hivekion/scenario/entity/BattleConsume.java new file mode 100644 index 0000000..7c18d94 --- /dev/null +++ b/src/main/java/com/hivekion/scenario/entity/BattleConsume.java @@ -0,0 +1,153 @@ +package com.hivekion.scenario.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.math.BigDecimal; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + *

+ * 战斗消耗 + *

+ * + * @author liDongYu + * @since 2025-09-19 + */ +@TableName("TBL_BATTLE_CONSUME") +@ApiModel(value = "BattleConsume对象", description = "战斗消耗") +public class BattleConsume implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物理主键") + private String id; + + @ApiModelProperty("资源编号") + private String resourceId; + + private Double ammunition; + + private Integer death; + + private Integer injured; + + private Double fuel; + + private Double food; + + private Double water; + + private Double medical; + + private String lat; + + private String lng; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getResourceId() { + return resourceId; + } + + public void setResourceId(String resourceId) { + this.resourceId = resourceId; + } + + + + public Integer getDeath() { + return death; + } + + public void setDeath(Integer death) { + this.death = death; + } + + public Integer getInjured() { + return injured; + } + + public void setInjured(Integer injured) { + this.injured = injured; + } + + public Double getAmmunition() { + return ammunition; + } + + public void setAmmunition(Double ammunition) { + this.ammunition = ammunition; + } + + public Double getFuel() { + return fuel; + } + + public void setFuel(Double fuel) { + this.fuel = fuel; + } + + public Double getFood() { + return food; + } + + public void setFood(Double food) { + this.food = food; + } + + public Double getWater() { + return water; + } + + public void setWater(Double water) { + this.water = water; + } + + public Double getMedical() { + return medical; + } + + public void setMedical(Double medical) { + this.medical = medical; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + @Override + public String toString() { + return "BattleConsume{" + + "id = " + id + + ", resourceId = " + resourceId + + ", ammunition = " + ammunition + + ", death = " + death + + ", injured = " + injured + + ", fuel = " + fuel + + ", food = " + food + + ", water = " + water + + ", medical = " + medical + + ", lat = " + lat + + ", lng = " + lng + + "}"; + } +} diff --git a/src/main/java/com/hivekion/scenario/mapper/BattleConsumeMapper.java b/src/main/java/com/hivekion/scenario/mapper/BattleConsumeMapper.java new file mode 100644 index 0000000..e8f29e7 --- /dev/null +++ b/src/main/java/com/hivekion/scenario/mapper/BattleConsumeMapper.java @@ -0,0 +1,16 @@ +package com.hivekion.scenario.mapper; + +import com.hivekion.scenario.entity.BattleConsume; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 战斗消耗 Mapper 接口 + *

+ * + * @author liDongYu + * @since 2025-09-19 + */ +public interface BattleConsumeMapper extends BaseMapper { + +} diff --git a/src/main/java/com/hivekion/scenario/service/IBattleConsumeService.java b/src/main/java/com/hivekion/scenario/service/IBattleConsumeService.java new file mode 100644 index 0000000..6d74af7 --- /dev/null +++ b/src/main/java/com/hivekion/scenario/service/IBattleConsumeService.java @@ -0,0 +1,16 @@ +package com.hivekion.scenario.service; + +import com.hivekion.scenario.entity.BattleConsume; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 战斗消耗 服务类 + *

+ * + * @author liDongYu + * @since 2025-09-19 + */ +public interface IBattleConsumeService extends IService { + +} diff --git a/src/main/java/com/hivekion/scenario/service/impl/BattleConsumeServiceImpl.java b/src/main/java/com/hivekion/scenario/service/impl/BattleConsumeServiceImpl.java new file mode 100644 index 0000000..3b5c151 --- /dev/null +++ b/src/main/java/com/hivekion/scenario/service/impl/BattleConsumeServiceImpl.java @@ -0,0 +1,20 @@ +package com.hivekion.scenario.service.impl; + +import com.hivekion.scenario.entity.BattleConsume; +import com.hivekion.scenario.mapper.BattleConsumeMapper; +import com.hivekion.scenario.service.IBattleConsumeService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 战斗消耗 服务实现类 + *

+ * + * @author liDongYu + * @since 2025-09-19 + */ +@Service +public class BattleConsumeServiceImpl extends ServiceImpl implements IBattleConsumeService { + +} diff --git a/src/main/resources/application-rule.properties b/src/main/resources/application-rule.properties index 853a04d..71b684e 100644 --- a/src/main/resources/application-rule.properties +++ b/src/main/resources/application-rule.properties @@ -7,8 +7,8 @@ fuel.warn = 2 medical.warn = 1 death.spreed = 3; injured.spreed = 3; -ammunition_spreed = 2.6; -food_spreed = 2.3; -water_spreed = 3.6; -fuel_spreed = 3.6; -medical_spreed = 1.6; \ No newline at end of file +ammunition.spreed = 2.6; +food.spreed = 2.3; +water.spreed = 3.6; +fuel.spreed = 3.6; +medical.spreed = 1.6; \ No newline at end of file diff --git a/src/main/resources/mapper/tbl/BattleConsumeMapper.xml b/src/main/resources/mapper/tbl/BattleConsumeMapper.xml new file mode 100644 index 0000000..8537969 --- /dev/null +++ b/src/main/resources/mapper/tbl/BattleConsumeMapper.xml @@ -0,0 +1,5 @@ + + + + +