Compare commits
2 Commits
fb0b35d38c
...
81e4cb3ce6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
81e4cb3ce6 | ||
|
|
c4bedbde70 |
|
|
@ -30,6 +30,8 @@ import java.util.concurrent.ThreadPoolExecutor;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import com.hivekion.statistic.bean.ScenarioInfo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.web.reactive.function.client.WebClient;
|
||||
|
|
@ -60,6 +62,10 @@ public abstract class AbtParentTask implements TaskAction {
|
|||
protected final String roomId;
|
||||
//http请求
|
||||
protected WebClient webClient = WebClient.create();
|
||||
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
private com.hivekion.statistic.service.ScenarioService scenarioService;
|
||||
/**
|
||||
* 任务相对与想定的开始时间
|
||||
*/
|
||||
|
|
@ -305,7 +311,17 @@ public abstract class AbtParentTask implements TaskAction {
|
|||
}
|
||||
//统一推送方法
|
||||
protected void pushStatus(String resourceId) {
|
||||
if( scenarioService == null) {
|
||||
scenarioService = SpringUtil.getBean(com.hivekion.statistic.service.ScenarioService.class);
|
||||
}
|
||||
ScenarioInfo scenarioInfo = scenarioService.listScenarioInfo(this.scenarioTask.getScenarioId(),roomId,resourceId);
|
||||
|
||||
if( redisUtil == null){
|
||||
redisUtil = SpringUtil.getBean(RedisUtil.class);
|
||||
redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo",JSON.toJSONString(scenarioInfo));
|
||||
}else{
|
||||
redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo",JSON.toJSONString(scenarioInfo));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -88,23 +88,22 @@ public class BattleRootTask extends AbtParentTask {
|
|||
}catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
}
|
||||
String jsonStr = (String)redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo");
|
||||
|
||||
ScenarioInfo scenarioInfo =JSONObject.parseObject(jsonStr,ScenarioInfo.class);
|
||||
HashMap<String,Object> battleParams = new HashMap<>();
|
||||
|
||||
// statisticBean.getAmmunition().getCurrent()
|
||||
//初始化本次战斗任务各种资源数
|
||||
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("person",Integer.valueOf(statisticBean.getPerson().getTotal()).toString());
|
||||
battleParams.put("death",Integer.valueOf(statisticBean.getPerson().getDeath()).toString());
|
||||
battleParams.put("injured",Integer.valueOf(statisticBean.getPerson().getInjured()).toString());
|
||||
battleParams.put("teamLat",statisticBean.getTeam().getLat().toString());
|
||||
battleParams.put("teamLng",statisticBean.getTeam().getLng().toString());
|
||||
battleParams.put("ammunition",Double.valueOf(scenarioInfo.getAmmunition().getTotal()).toString());
|
||||
battleParams.put("food",Double.valueOf(scenarioInfo.getFood().getTotal()).toString());
|
||||
battleParams.put("fuel",Double.valueOf(scenarioInfo.getFuel().getTotal()).toString());
|
||||
battleParams.put("medical",Double.valueOf(scenarioInfo.getMedical().getTotal()).toString());
|
||||
battleParams.put("water",Double.valueOf(scenarioInfo.getWater().getTotal()).toString());
|
||||
battleParams.put("person",Integer.valueOf(scenarioInfo.getPerson().getTotal()).toString());
|
||||
battleParams.put("death",Integer.valueOf(scenarioInfo.getPerson().getDeath()).toString());
|
||||
battleParams.put("injured",Integer.valueOf(scenarioInfo.getPerson().getInjured()).toString());
|
||||
battleParams.put("teamLat",scenarioInfo.getTeam().getLat().toString());
|
||||
battleParams.put("teamLng",scenarioInfo.getTeam().getLng().toString());
|
||||
battleParams.put("duringTime",Long.valueOf(initDuringTime).toString());
|
||||
redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),battleParams);
|
||||
log.info("===============================初始化本次战斗任务各种资源数====================================");
|
||||
double suppleAmount =statisticBean.getAmmunition().getTotal();
|
||||
int suppleDeath =statisticBean.getPerson().getDeath();
|
||||
|
|
@ -160,6 +159,15 @@ public class BattleRootTask extends AbtParentTask {
|
|||
battleParams.put("death",Long.valueOf(death+deathConsume).toString());
|
||||
battleParams.put("injured",Long.valueOf(injured +injuredConsume).toString());
|
||||
battleParams.put("duringTime",Long.valueOf(duringTime).toString());
|
||||
|
||||
scenarioInfo.getAmmunition().setCurrent(Double.valueOf(ammunition - ammunitionConsume));
|
||||
scenarioInfo.getFood().setCurrent(Double.valueOf(food - foodConsume));
|
||||
scenarioInfo.getFuel().setCurrent(Double.valueOf(fuel - fuelConsume));
|
||||
scenarioInfo.getMedical().setCurrent(Double.valueOf(medical - medicalConsume));
|
||||
scenarioInfo.getWater().setCurrent(Double.valueOf(water - waterConsume));
|
||||
battleParams.put("death",Long.valueOf(death+deathConsume).toString());
|
||||
battleParams.put("injured",Long.valueOf(injured +injuredConsume).toString());
|
||||
battleParams.put("duringTime",Long.valueOf(duringTime).toString());
|
||||
redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), battleParams);
|
||||
}catch (Exception ex){
|
||||
log.error("==============================设置消耗信息失败=============================================",ex.getMessage());
|
||||
|
|
|
|||
|
|
@ -18,11 +18,7 @@ import java.util.Map;
|
|||
import java.util.Objects;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
|
@ -32,7 +28,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||
* @author liDongYu
|
||||
* @since 2025-09-15
|
||||
*/
|
||||
@Controller
|
||||
@RestController
|
||||
@RequestMapping("/battleSupplier")
|
||||
public class BattleSupplierController {
|
||||
|
||||
|
|
@ -47,7 +43,7 @@ public class BattleSupplierController {
|
|||
public ResponseData<Void> save(@RequestBody BattleSupplier battleSupplier) {
|
||||
if (battleSupplier.getId() == null) {
|
||||
battleSupplier.setId(IdUtils.simpleUUID());
|
||||
BattleSupplier tmp = battleSupplierService.getOne(new QueryWrapper<BattleSupplier>().eq("BATTLE_RESOURCE_ID",battleSupplier.getBattleResourceId()).or().eq("SUPPLIER_RESOURCE_ID",battleSupplier.getSupplierResourceId()));
|
||||
BattleSupplier tmp = battleSupplierService.getOne(new QueryWrapper<BattleSupplier>().eq("BATTLE_RESOURCE_ID",battleSupplier.getBattleResourceId()).eq("SUPPLIER_RESOURCE_ID",battleSupplier.getSupplierResourceId()));
|
||||
if(Objects.isNull(tmp)) {
|
||||
battleSupplierService.save(battleSupplier);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,4 +25,17 @@ public class ScenarioInfo implements Serializable {
|
|||
|
||||
private List<SupplierRequest> supplierRequests;
|
||||
|
||||
private TeamInfo team = new TeamInfo();
|
||||
private PersonInfo person = new PersonInfo();
|
||||
//弹药
|
||||
private AmmunitionInfo ammunition = new AmmunitionInfo();
|
||||
//食品
|
||||
private FoodInfo food = new FoodInfo();
|
||||
//水
|
||||
private WaterInfo water = new WaterInfo();
|
||||
//油
|
||||
private FuelInfo fuel = new FuelInfo();
|
||||
//药材
|
||||
private MedicalInfo medical = new MedicalInfo();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import com.hivekion.scenario.service.ScenarioTaskService;
|
|||
import com.hivekion.statistic.bean.ScenarioInfo;
|
||||
import com.hivekion.statistic.service.ScenarioService;
|
||||
import com.hivekion.supplier.entity.SupplierRequest;
|
||||
import com.hivekion.supplier.entity.SuppliesDict;
|
||||
import com.hivekion.supplier.service.ISupplierRequestService;
|
||||
import com.hivekion.supplier.service.SuppliesDictService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
|
@ -21,6 +22,7 @@ import org.springframework.stereotype.Component;
|
|||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component("WebsocketScenarioService")
|
||||
|
|
@ -43,6 +45,7 @@ public class ScenarioServiceImpl implements ScenarioService {
|
|||
private ISupplierRequestService supplierRequestService;
|
||||
@Override
|
||||
public ScenarioInfo listScenarioInfo(Integer scenarioId, String roomId, String resourceId) {
|
||||
ScenarioInfo scenarioInfo = new ScenarioInfo();
|
||||
//获取分队信息
|
||||
ScenarioResource resourceInstance = scenarioResourceService.getById(resourceId);
|
||||
//获取关联的组织机构信息
|
||||
|
|
@ -59,14 +62,51 @@ public class ScenarioServiceImpl implements ScenarioService {
|
|||
}
|
||||
//获取物资信息
|
||||
List<OrgSupplier> suppliers = orgSupplierService.selectByOrgIds(orgList);
|
||||
Map<String, SuppliesDict> supplierMap = suppliesDictService.supplierDictMap();
|
||||
|
||||
suppliers.forEach(supplier -> {
|
||||
|
||||
SuppliesDict dict = supplierMap.get(supplier.getSupplierId());
|
||||
|
||||
if (dict != null) {
|
||||
switch (dict.getCode()) {
|
||||
case "FOOD":
|
||||
scenarioInfo.getFood().setTotal(scenarioInfo.getFood().getTotal()+supplier.getAccount());
|
||||
scenarioInfo.getFood().setCurrent(scenarioInfo.getFood().getCurrent()+supplier.getAccount());
|
||||
break;
|
||||
case "WATER":
|
||||
scenarioInfo.getWater().setTotal(scenarioInfo.getWater().getTotal()+supplier.getAccount());
|
||||
scenarioInfo.getWater().setCurrent(scenarioInfo.getWater().getCurrent()+supplier.getAccount());
|
||||
break;
|
||||
case "FUEL":
|
||||
scenarioInfo.getFuel().setTotal(scenarioInfo.getFuel().getTotal()+supplier.getAccount());
|
||||
scenarioInfo.getFuel().setCurrent(scenarioInfo.getFuel().getCurrent()+supplier.getAccount());
|
||||
break;
|
||||
case "MEDICAL":
|
||||
scenarioInfo.getMedical().setTotal( scenarioInfo.getMedical().getTotal()+supplier.getAccount());
|
||||
scenarioInfo.getMedical().setCurrent( scenarioInfo.getMedical().getCurrent()+supplier.getAccount());
|
||||
break;
|
||||
|
||||
case "AMMUNITION":
|
||||
scenarioInfo.getAmmunition().setTotal( scenarioInfo.getAmmunition().getTotal()+supplier.getAccount());
|
||||
scenarioInfo.getAmmunition().setCurrent(scenarioInfo.getAmmunition().getCurrent()+supplier.getAccount());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
ScenarioTask scenarioTask = new ScenarioTask();
|
||||
scenarioTask.setScenarioId(scenarioId);
|
||||
scenarioTask.setRoomId(roomId);
|
||||
scenarioTask.setResourceId(resourceId);
|
||||
|
||||
|
||||
List<ScenarioTask> scenarioTasks = scenarioTaskService.queryTaskList(scenarioTask);
|
||||
|
||||
List<SupplierRequest> supplierRequests = supplierRequestService.list(new QueryWrapper<SupplierRequest>().eq("FROM_RESOURCE_ID",resourceId));
|
||||
ScenarioInfo scenarioInfo = new ScenarioInfo();
|
||||
|
||||
scenarioInfo.setScenarioTasks(scenarioTasks);
|
||||
scenarioInfo.setStaffList(staffList);
|
||||
scenarioInfo.setOrgPostList(orgPostList);
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@ public class StatisticServiceImpl implements StatisticService {
|
|||
//获取分队信息
|
||||
ScenarioResource resourceInstance = scenarioResourceService.getById(resourceId);
|
||||
if(resourceInstance == null){
|
||||
log.info("==========================");
|
||||
return statisticBean;
|
||||
}
|
||||
Map<Integer, Teaminfo> map = teamInfoService.teamInfoMap();
|
||||
|
|
@ -110,7 +111,7 @@ public class StatisticServiceImpl implements StatisticService {
|
|||
List<Integer> orgList = orgPostList.stream().map(ScenarioOrgPost::getOrgId)
|
||||
.collect(Collectors.toList());
|
||||
if(CollectionUtil.isEmpty(orgList)){
|
||||
return new StatisticBean();
|
||||
return statisticBean;
|
||||
}
|
||||
//获取人员信息
|
||||
if(!orgList.isEmpty()){
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user