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.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
import com.hivekion.statistic.bean.ScenarioInfo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.web.reactive.function.client.WebClient;
|
import org.springframework.web.reactive.function.client.WebClient;
|
||||||
|
|
@ -60,6 +62,10 @@ public abstract class AbtParentTask implements TaskAction {
|
||||||
protected final String roomId;
|
protected final String roomId;
|
||||||
//http请求
|
//http请求
|
||||||
protected WebClient webClient = WebClient.create();
|
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) {
|
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){
|
}catch (Exception ex){
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
|
String jsonStr = (String)redisUtil.hget(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"scenarioInfo");
|
||||||
|
|
||||||
HashMap<String,Object> battleParams = new HashMap<>();
|
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("ammunition",Double.valueOf(scenarioInfo.getAmmunition().getTotal()).toString());
|
||||||
battleParams.put("food",Double.valueOf(statisticBean.getFood().getTotal()).toString());
|
battleParams.put("food",Double.valueOf(scenarioInfo.getFood().getTotal()).toString());
|
||||||
battleParams.put("fuel",Double.valueOf(statisticBean.getFuel().getTotal()).toString());
|
battleParams.put("fuel",Double.valueOf(scenarioInfo.getFuel().getTotal()).toString());
|
||||||
battleParams.put("medical",Double.valueOf(statisticBean.getMedical().getTotal()).toString());
|
battleParams.put("medical",Double.valueOf(scenarioInfo.getMedical().getTotal()).toString());
|
||||||
battleParams.put("water",Double.valueOf(statisticBean.getWater().getTotal()).toString());
|
battleParams.put("water",Double.valueOf(scenarioInfo.getWater().getTotal()).toString());
|
||||||
battleParams.put("person",Integer.valueOf(statisticBean.getPerson().getTotal()).toString());
|
battleParams.put("person",Integer.valueOf(scenarioInfo.getPerson().getTotal()).toString());
|
||||||
battleParams.put("death",Integer.valueOf(statisticBean.getPerson().getDeath()).toString());
|
battleParams.put("death",Integer.valueOf(scenarioInfo.getPerson().getDeath()).toString());
|
||||||
battleParams.put("injured",Integer.valueOf(statisticBean.getPerson().getInjured()).toString());
|
battleParams.put("injured",Integer.valueOf(scenarioInfo.getPerson().getInjured()).toString());
|
||||||
battleParams.put("teamLat",statisticBean.getTeam().getLat().toString());
|
battleParams.put("teamLat",scenarioInfo.getTeam().getLat().toString());
|
||||||
battleParams.put("teamLng",statisticBean.getTeam().getLng().toString());
|
battleParams.put("teamLng",scenarioInfo.getTeam().getLng().toString());
|
||||||
battleParams.put("duringTime",Long.valueOf(initDuringTime).toString());
|
battleParams.put("duringTime",Long.valueOf(initDuringTime).toString());
|
||||||
redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),battleParams);
|
|
||||||
log.info("===============================初始化本次战斗任务各种资源数====================================");
|
log.info("===============================初始化本次战斗任务各种资源数====================================");
|
||||||
double suppleAmount =statisticBean.getAmmunition().getTotal();
|
double suppleAmount =statisticBean.getAmmunition().getTotal();
|
||||||
int suppleDeath =statisticBean.getPerson().getDeath();
|
int suppleDeath =statisticBean.getPerson().getDeath();
|
||||||
|
|
@ -160,6 +159,15 @@ public class BattleRootTask extends AbtParentTask {
|
||||||
battleParams.put("death",Long.valueOf(death+deathConsume).toString());
|
battleParams.put("death",Long.valueOf(death+deathConsume).toString());
|
||||||
battleParams.put("injured",Long.valueOf(injured +injuredConsume).toString());
|
battleParams.put("injured",Long.valueOf(injured +injuredConsume).toString());
|
||||||
battleParams.put("duringTime",Long.valueOf(duringTime).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);
|
redisUtil.hset(scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(), battleParams);
|
||||||
}catch (Exception ex){
|
}catch (Exception ex){
|
||||||
log.error("==============================设置消耗信息失败=============================================",ex.getMessage());
|
log.error("==============================设置消耗信息失败=============================================",ex.getMessage());
|
||||||
|
|
|
||||||
|
|
@ -18,11 +18,7 @@ import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
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;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
|
@ -32,7 +28,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
* @author liDongYu
|
* @author liDongYu
|
||||||
* @since 2025-09-15
|
* @since 2025-09-15
|
||||||
*/
|
*/
|
||||||
@Controller
|
@RestController
|
||||||
@RequestMapping("/battleSupplier")
|
@RequestMapping("/battleSupplier")
|
||||||
public class BattleSupplierController {
|
public class BattleSupplierController {
|
||||||
|
|
||||||
|
|
@ -47,7 +43,7 @@ public class BattleSupplierController {
|
||||||
public ResponseData<Void> save(@RequestBody BattleSupplier battleSupplier) {
|
public ResponseData<Void> save(@RequestBody BattleSupplier battleSupplier) {
|
||||||
if (battleSupplier.getId() == null) {
|
if (battleSupplier.getId() == null) {
|
||||||
battleSupplier.setId(IdUtils.simpleUUID());
|
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)) {
|
if(Objects.isNull(tmp)) {
|
||||||
battleSupplierService.save(battleSupplier);
|
battleSupplierService.save(battleSupplier);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,4 +25,17 @@ public class ScenarioInfo implements Serializable {
|
||||||
|
|
||||||
private List<SupplierRequest> supplierRequests;
|
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.bean.ScenarioInfo;
|
||||||
import com.hivekion.statistic.service.ScenarioService;
|
import com.hivekion.statistic.service.ScenarioService;
|
||||||
import com.hivekion.supplier.entity.SupplierRequest;
|
import com.hivekion.supplier.entity.SupplierRequest;
|
||||||
|
import com.hivekion.supplier.entity.SuppliesDict;
|
||||||
import com.hivekion.supplier.service.ISupplierRequestService;
|
import com.hivekion.supplier.service.ISupplierRequestService;
|
||||||
import com.hivekion.supplier.service.SuppliesDictService;
|
import com.hivekion.supplier.service.SuppliesDictService;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -21,6 +22,7 @@ import org.springframework.stereotype.Component;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component("WebsocketScenarioService")
|
@Component("WebsocketScenarioService")
|
||||||
|
|
@ -43,6 +45,7 @@ public class ScenarioServiceImpl implements ScenarioService {
|
||||||
private ISupplierRequestService supplierRequestService;
|
private ISupplierRequestService supplierRequestService;
|
||||||
@Override
|
@Override
|
||||||
public ScenarioInfo listScenarioInfo(Integer scenarioId, String roomId, String resourceId) {
|
public ScenarioInfo listScenarioInfo(Integer scenarioId, String roomId, String resourceId) {
|
||||||
|
ScenarioInfo scenarioInfo = new ScenarioInfo();
|
||||||
//获取分队信息
|
//获取分队信息
|
||||||
ScenarioResource resourceInstance = scenarioResourceService.getById(resourceId);
|
ScenarioResource resourceInstance = scenarioResourceService.getById(resourceId);
|
||||||
//获取关联的组织机构信息
|
//获取关联的组织机构信息
|
||||||
|
|
@ -59,14 +62,51 @@ public class ScenarioServiceImpl implements ScenarioService {
|
||||||
}
|
}
|
||||||
//获取物资信息
|
//获取物资信息
|
||||||
List<OrgSupplier> suppliers = orgSupplierService.selectByOrgIds(orgList);
|
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 scenarioTask = new ScenarioTask();
|
||||||
scenarioTask.setScenarioId(scenarioId);
|
scenarioTask.setScenarioId(scenarioId);
|
||||||
scenarioTask.setRoomId(roomId);
|
scenarioTask.setRoomId(roomId);
|
||||||
scenarioTask.setResourceId(resourceId);
|
scenarioTask.setResourceId(resourceId);
|
||||||
|
|
||||||
|
|
||||||
List<ScenarioTask> scenarioTasks = scenarioTaskService.queryTaskList(scenarioTask);
|
List<ScenarioTask> scenarioTasks = scenarioTaskService.queryTaskList(scenarioTask);
|
||||||
|
|
||||||
List<SupplierRequest> supplierRequests = supplierRequestService.list(new QueryWrapper<SupplierRequest>().eq("FROM_RESOURCE_ID",resourceId));
|
List<SupplierRequest> supplierRequests = supplierRequestService.list(new QueryWrapper<SupplierRequest>().eq("FROM_RESOURCE_ID",resourceId));
|
||||||
ScenarioInfo scenarioInfo = new ScenarioInfo();
|
|
||||||
scenarioInfo.setScenarioTasks(scenarioTasks);
|
scenarioInfo.setScenarioTasks(scenarioTasks);
|
||||||
scenarioInfo.setStaffList(staffList);
|
scenarioInfo.setStaffList(staffList);
|
||||||
scenarioInfo.setOrgPostList(orgPostList);
|
scenarioInfo.setOrgPostList(orgPostList);
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,7 @@ public class StatisticServiceImpl implements StatisticService {
|
||||||
//获取分队信息
|
//获取分队信息
|
||||||
ScenarioResource resourceInstance = scenarioResourceService.getById(resourceId);
|
ScenarioResource resourceInstance = scenarioResourceService.getById(resourceId);
|
||||||
if(resourceInstance == null){
|
if(resourceInstance == null){
|
||||||
|
log.info("==========================");
|
||||||
return statisticBean;
|
return statisticBean;
|
||||||
}
|
}
|
||||||
Map<Integer, Teaminfo> map = teamInfoService.teamInfoMap();
|
Map<Integer, Teaminfo> map = teamInfoService.teamInfoMap();
|
||||||
|
|
@ -110,7 +111,7 @@ public class StatisticServiceImpl implements StatisticService {
|
||||||
List<Integer> orgList = orgPostList.stream().map(ScenarioOrgPost::getOrgId)
|
List<Integer> orgList = orgPostList.stream().map(ScenarioOrgPost::getOrgId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
if(CollectionUtil.isEmpty(orgList)){
|
if(CollectionUtil.isEmpty(orgList)){
|
||||||
return new StatisticBean();
|
return statisticBean;
|
||||||
}
|
}
|
||||||
//获取人员信息
|
//获取人员信息
|
||||||
if(!orgList.isEmpty()){
|
if(!orgList.isEmpty()){
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user