Merge branch 'main' of http://git.hivekion.com:3000/liyudong/simulation-backend
This commit is contained in:
commit
8e9fd3537d
|
@ -333,6 +333,13 @@ public abstract class AbtParentTask implements TaskAction {
|
|||
respObj.setScenarioId(scenarioTask.getScenarioId());
|
||||
respObj.setCmdType("scenarioInfo");
|
||||
Global.sendCmdInfoQueue.add(respObj);
|
||||
String updJsonStr= (String) redisUtil.hget(this.scenarioTask.getScenarioId() + "-" + roomId + "-" + scenarioTask.getResourceId(),"updScenarioInfo");
|
||||
ResponseCmdInfo<String> respUpdObj = new ResponseCmdInfo<>();
|
||||
respUpdObj.setData(updJsonStr);
|
||||
respUpdObj.setRoom(roomId);
|
||||
respUpdObj.setScenarioId(scenarioTask.getScenarioId());
|
||||
respUpdObj.setCmdType("updScenarioInfo");
|
||||
Global.sendCmdInfoQueue.add(respObj);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.hivekion.room.bean;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
|
@ -135,9 +136,9 @@ public class BattleRootTask extends AbtParentTask {
|
|||
teamLat = battleParams.get( "teamLat").toString();
|
||||
teamLng = battleParams.get( "teamLng").toString();
|
||||
//
|
||||
deathConsume = DEATH_SPREED * intervalDuringTime;
|
||||
injuredConsume = INJURED_SPREED * intervalDuringTime;
|
||||
ammunitionConsume = intervalDuringTime * AMMUNITION_SPREED;
|
||||
deathConsume = RandomUtil.getSecureRandom().nextInt(3) * intervalDuringTime;
|
||||
injuredConsume = RandomUtil.getSecureRandom().nextInt(6) * intervalDuringTime;
|
||||
ammunitionConsume = intervalDuringTime * (1D+RandomUtil.getSecureRandom().nextDouble());
|
||||
foodConsume = intervalDuringTime * FOOD_SPREED;
|
||||
waterConsume = intervalDuringTime * WATER_SPREED;
|
||||
fuelConsume = intervalDuringTime * FUEL_SPREED;
|
||||
|
|
|
@ -28,6 +28,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import com.hivekion.scenario.entity.ScenarioResource;
|
||||
import com.hivekion.statistic.bean.EditScenarioInfo;
|
||||
import com.hivekion.statistic.bean.ScenarioInfo;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -225,13 +226,12 @@ public class Room implements AutoCloseable {
|
|||
scenario.setResourceList(SpringUtil.getBean(ScenarioResourceServiceImpl.class).getResourceListByScenarioId(scenario.getId()));
|
||||
for(ScenarioResource scenarioResource:this.scenario.getResourceList() ){
|
||||
ScenarioInfo scenarioInfo = scenarioService.listScenarioInfo(scenarioResource.getScenarioId(),roomId,scenarioResource.getId());
|
||||
|
||||
EditScenarioInfo updScenarioInfo = scenarioService.listEditScenarioInfo(scenarioResource.getScenarioId(),roomId,scenarioResource.getId());
|
||||
if( redisUtil == null){
|
||||
redisUtil = SpringUtil.getBean(RedisUtil.class);
|
||||
redisUtil.hset(scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId(),"scenarioInfo", JSON.toJSONString(scenarioInfo));
|
||||
}else{
|
||||
redisUtil.hset(scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId(),"scenarioInfo",JSON.toJSONString(scenarioInfo));
|
||||
}
|
||||
redisUtil.hset(scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId(),"scenarioInfo",JSON.toJSONString(scenarioInfo));
|
||||
redisUtil.hset(scenarioResource.getScenarioId() + "-" + roomId + "-" + scenarioResource.getId(),"updScenarioInfo", JSON.toJSONString(updScenarioInfo));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package com.hivekion.statistic.bean;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class EditBaseScenarioInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
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();
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package com.hivekion.statistic.bean;
|
||||
|
||||
import com.hivekion.baseData.entity.Fightpowerstaff;
|
||||
import com.hivekion.baseData.entity.OrgSupplier;
|
||||
import com.hivekion.scenario.entity.ScenarioOrgPost;
|
||||
import com.hivekion.scenario.entity.ScenarioResource;
|
||||
import com.hivekion.scenario.entity.ScenarioTask;
|
||||
import com.hivekion.supplier.entity.SupplierRequest;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class EditScenarioInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private List<ScenarioOrgPost> orgPostList;
|
||||
|
||||
private List<Fightpowerstaff> staffList;
|
||||
|
||||
private List<OrgSupplier> suppliers;
|
||||
|
||||
private List<ScenarioTask> scenarioTasks;
|
||||
|
||||
private List<SupplierRequest> supplierRequests;
|
||||
|
||||
private EditBaseScenarioInfo jbxx = new EditBaseScenarioInfo();
|
||||
|
||||
private ScenarioResource sdzy;
|
||||
|
||||
}
|
|
@ -1,8 +1,10 @@
|
|||
package com.hivekion.statistic.service;
|
||||
|
||||
import com.hivekion.statistic.bean.EditScenarioInfo;
|
||||
import com.hivekion.statistic.bean.ScenarioInfo;
|
||||
|
||||
public interface ScenarioService {
|
||||
|
||||
public ScenarioInfo listScenarioInfo(Integer scenarioId, String roomId, String resourceId);
|
||||
public EditScenarioInfo listEditScenarioInfo(Integer scenarioId, String roomId, String resourceId);
|
||||
}
|
||||
|
|
|
@ -2,16 +2,21 @@ package com.hivekion.statistic.service.impl;
|
|||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.hivekion.baseData.domain.TblEntity;
|
||||
import com.hivekion.baseData.entity.Fightpowerstaff;
|
||||
import com.hivekion.baseData.entity.OrgSupplier;
|
||||
import com.hivekion.baseData.service.FightpowerstaffService;
|
||||
import com.hivekion.baseData.service.ITblEntityService;
|
||||
import com.hivekion.baseData.service.OrgSupplierService;
|
||||
import com.hivekion.icon.service.IconService;
|
||||
import com.hivekion.scenario.entity.ScenarioOrgPost;
|
||||
import com.hivekion.scenario.entity.ScenarioResource;
|
||||
import com.hivekion.scenario.entity.ScenarioTask;
|
||||
import com.hivekion.scenario.service.IResourceService;
|
||||
import com.hivekion.scenario.service.IScenarioOrgPostService;
|
||||
import com.hivekion.scenario.service.ScenarioResourceService;
|
||||
import com.hivekion.scenario.service.ScenarioTaskService;
|
||||
import com.hivekion.statistic.bean.EditScenarioInfo;
|
||||
import com.hivekion.statistic.bean.ScenarioInfo;
|
||||
import com.hivekion.statistic.service.ScenarioService;
|
||||
import com.hivekion.supplier.entity.SupplierRequest;
|
||||
|
@ -54,6 +59,15 @@ public class ScenarioServiceImpl implements ScenarioService {
|
|||
|
||||
@Resource
|
||||
private ScenarioResourceService resourceService;
|
||||
|
||||
@Resource
|
||||
private ITblEntityService iTblEntityService;
|
||||
|
||||
@Resource
|
||||
private IResourceService resourcesService;
|
||||
@Resource
|
||||
private IconService iconService;
|
||||
|
||||
@Override
|
||||
public ScenarioInfo listScenarioInfo(Integer scenarioId, String roomId, String resourceId) {
|
||||
ScenarioInfo scenarioInfo = new ScenarioInfo();
|
||||
|
@ -65,6 +79,7 @@ public class ScenarioServiceImpl implements ScenarioService {
|
|||
ScenarioResource resource = resourceMap.get(resourceId);
|
||||
if (map.get(resource.getResourceId()) != null) {
|
||||
scenarioInfo.getTeam().setTeamName(map.get(resource.getResourceId()).getName());
|
||||
resourceInstance.setResourceName(map.get(resource.getResourceId()).getName());
|
||||
}
|
||||
}
|
||||
try {
|
||||
|
@ -154,4 +169,151 @@ public class ScenarioServiceImpl implements ScenarioService {
|
|||
scenarioInfo.setSupplierRequests(supplierRequests);
|
||||
return scenarioInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EditScenarioInfo listEditScenarioInfo(Integer scenarioId, String roomId, String resourceId) {
|
||||
EditScenarioInfo scenarioInfo = new EditScenarioInfo();
|
||||
//图标Map
|
||||
Map<String, String> iconMap = iconService.iconMap();
|
||||
//装备Map
|
||||
Map<Integer, TblEntity> entityMap = iTblEntityService.entityMap();
|
||||
Map<Integer,com.hivekion.scenario.entity.Resource> hResourceMap = resourcesService.listBuildResourceByType(7);
|
||||
Map<Integer,com.hivekion.scenario.entity.Resource> wResourceMap = resourcesService.listBuildResourceByType(8);
|
||||
//获取分队信息
|
||||
Map<Integer, Teaminfo> map = teamInfoService.teamInfoMap();
|
||||
Map<String, ScenarioResource> resourceMap = resourceService.resourceMap();
|
||||
ScenarioResource resourceInstance = scenarioResourceService.getById(resourceId);
|
||||
switch (resourceInstance.getResourceType()) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
if (entityMap.get(resourceInstance.getResourceId()) != null) {
|
||||
TblEntity entity = entityMap.get(resourceInstance.getResourceId());
|
||||
resourceInstance.setTitle(entity.getEntityName());
|
||||
resourceInstance.setImgBase64(
|
||||
iconMap.get(entity.getIconId()) == null ? "" : iconMap.get(entity.getIconId()));
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
if (map.get(resourceInstance.getResourceId()) != null) {
|
||||
Teaminfo teaminfo = map.get(resourceInstance.getResourceId());
|
||||
resourceInstance.setTitle(teaminfo.getName());
|
||||
resourceInstance.setImgBase64(
|
||||
iconMap.get(teaminfo.getIconId()) == null ? "" : iconMap.get(teaminfo.getIconId()));
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if(hResourceMap.get(resourceInstance.getResourceId()) != null){
|
||||
com.hivekion.scenario.entity.Resource resource1 = hResourceMap.get(resourceInstance.getResourceId());
|
||||
resourceInstance.setTitle(resource1.getResourceName());
|
||||
resourceInstance.setImgBase64(
|
||||
iconMap.get(resource1.getIcon()) == null ? "" : iconMap.get(resource1.getIcon()));
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if(wResourceMap.get(resourceInstance.getResourceId()) != null){
|
||||
com.hivekion.scenario.entity.Resource resource1 = wResourceMap.get(resourceInstance.getResourceId());
|
||||
resourceInstance.setTitle(resource1.getResourceName());
|
||||
resourceInstance.setImgBase64(
|
||||
iconMap.get(resource1.getIcon()) == null ? "" : iconMap.get(resource1.getIcon()));
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (resourceMap.get(resourceId) != null) {
|
||||
ScenarioResource resource = resourceMap.get(resourceId);
|
||||
if (map.get(resource.getResourceId()) != null) {
|
||||
scenarioInfo.getJbxx().getTeam().setTeamName(map.get(resource.getResourceId()).getName());
|
||||
resourceInstance.setResourceName(map.get(resource.getResourceId()).getName());
|
||||
}
|
||||
}
|
||||
try {
|
||||
scenarioInfo.getJbxx().getTeam().setType(resourceInstance.getType());
|
||||
scenarioInfo.getJbxx().getTeam().setLat(resourceInstance.getLat());
|
||||
scenarioInfo.getJbxx().getTeam().setLng(resourceInstance.getLng());
|
||||
}catch (Exception ex){
|
||||
log.error("============={}==========================",resourceId);
|
||||
ex.printStackTrace();
|
||||
}
|
||||
//获取关联的组织机构信息
|
||||
ScenarioOrgPost post = new ScenarioOrgPost();
|
||||
post.setResourceId(resourceId);
|
||||
List<ScenarioOrgPost> orgPostList = scenarioOrgPostService.selectByCondition(post);
|
||||
List<Integer> orgList = orgPostList.stream().map(ScenarioOrgPost::getOrgId)
|
||||
.collect(Collectors.toList());
|
||||
List<Fightpowerstaff> staffList = null;
|
||||
List<OrgSupplier> suppliers = null;
|
||||
if(!orgList.isEmpty()){
|
||||
staffList = fightpowerstaffService.queryByOrgIds(orgList);
|
||||
if(CollectionUtil.isEmpty(staffList)){
|
||||
staffList = new ArrayList<>();
|
||||
}
|
||||
//获取物资信息
|
||||
suppliers = orgSupplierService.selectByOrgIds(orgList);
|
||||
if(suppliers==null||suppliers.isEmpty()){
|
||||
suppliers = new ArrayList<>();
|
||||
}
|
||||
Map<String, SuppliesDict> supplierMap = suppliesDictService.supplierDictMap();
|
||||
|
||||
suppliers.forEach(supplier -> {
|
||||
|
||||
SuppliesDict dict = supplierMap.get(supplier.getSupplierId());
|
||||
|
||||
if (dict != null) {
|
||||
switch (dict.getCode()) {
|
||||
case "FOOD":
|
||||
scenarioInfo.getJbxx().getFood().setTotal(scenarioInfo.getJbxx().getFood().getTotal()+supplier.getAccount());
|
||||
scenarioInfo.getJbxx().getFood().setCurrent(scenarioInfo.getJbxx().getFood().getCurrent()+supplier.getAccount());
|
||||
break;
|
||||
case "WATER":
|
||||
scenarioInfo.getJbxx().getWater().setTotal(scenarioInfo.getJbxx().getWater().getTotal()+supplier.getAccount());
|
||||
scenarioInfo.getJbxx().getWater().setCurrent(scenarioInfo.getJbxx().getWater().getCurrent()+supplier.getAccount());
|
||||
break;
|
||||
case "FUEL":
|
||||
scenarioInfo.getJbxx().getFuel().setTotal(scenarioInfo.getJbxx().getFuel().getTotal()+supplier.getAccount());
|
||||
scenarioInfo.getJbxx().getFuel().setCurrent(scenarioInfo.getJbxx().getFuel().getCurrent()+supplier.getAccount());
|
||||
break;
|
||||
case "MEDICAL":
|
||||
scenarioInfo.getJbxx().getMedical().setTotal( scenarioInfo.getJbxx().getMedical().getTotal()+supplier.getAccount());
|
||||
scenarioInfo.getJbxx().getMedical().setCurrent( scenarioInfo.getJbxx().getMedical().getCurrent()+supplier.getAccount());
|
||||
break;
|
||||
|
||||
case "AMMUNITION":
|
||||
scenarioInfo.getJbxx().getAmmunition().setTotal( scenarioInfo.getJbxx().getAmmunition().getTotal()+supplier.getAccount());
|
||||
scenarioInfo.getJbxx().getAmmunition().setCurrent(scenarioInfo.getJbxx().getAmmunition().getCurrent()+supplier.getAccount());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}else{
|
||||
staffList = new ArrayList<>();
|
||||
orgPostList = new ArrayList<>();
|
||||
suppliers = new ArrayList<>();
|
||||
}
|
||||
|
||||
ScenarioTask scenarioTask = new ScenarioTask();
|
||||
scenarioTask.setScenarioId(scenarioId);
|
||||
scenarioTask.setRoomId(roomId);
|
||||
scenarioTask.setResourceId(resourceId);
|
||||
|
||||
|
||||
List<ScenarioTask> scenarioTasks = scenarioTaskService.queryTaskList(scenarioTask);
|
||||
if(CollectionUtil.isEmpty(scenarioTasks)){
|
||||
scenarioTasks =new ArrayList<>();
|
||||
}
|
||||
List<SupplierRequest> supplierRequests = supplierRequestService.list(new QueryWrapper<SupplierRequest>().eq("FROM_RESOURCE_ID",resourceId));
|
||||
if(CollectionUtil.isEmpty(supplierRequests)){
|
||||
supplierRequests =new ArrayList<>();
|
||||
}
|
||||
scenarioInfo.setScenarioTasks(scenarioTasks);
|
||||
scenarioInfo.setStaffList(staffList);
|
||||
scenarioInfo.setOrgPostList(orgPostList);
|
||||
scenarioInfo.setSuppliers(suppliers);
|
||||
scenarioInfo.setSupplierRequests(supplierRequests);
|
||||
scenarioInfo.setSdzy(resourceInstance);
|
||||
return scenarioInfo;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import com.hivekion.common.entity.ResponseCmdInfo;
|
|||
import com.hivekion.common.redis.RedisUtil;
|
||||
import com.hivekion.scenario.entity.ScenarioResource;
|
||||
import com.hivekion.scenario.service.ScenarioResourceService;
|
||||
import com.hivekion.statistic.bean.EditScenarioInfo;
|
||||
import com.hivekion.statistic.bean.ScenarioInfo;
|
||||
import com.hivekion.statistic.service.ScenarioService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -70,7 +71,34 @@ public class WebsocketMsgWrapper {
|
|||
}
|
||||
responseCmdInfo.setCmdType("scenarioInfo");
|
||||
}
|
||||
if(msgObj.getString("cmdType").equals("editScenarioInfo")){
|
||||
List<ScenarioResource> scenarioResourceList = this.scenarioResourceService.list(new QueryWrapper<ScenarioResource>().eq("scenario_id",scenarioId));
|
||||
ScenarioService scenarioService = SpringUtil.getBean(ScenarioService.class);
|
||||
if(scenarioService != null){
|
||||
JSONArray allScenario = new JSONArray();
|
||||
for(ScenarioResource scenarioResource : scenarioResourceList) {
|
||||
EditScenarioInfo editScenarioInfo = scenarioService.listEditScenarioInfo(scenarioResource.getScenarioId(), roomId, scenarioResource.getId());
|
||||
// String scenarioInfoStr = com.alibaba.fastjson2.JSON.toJSONString(scenarioInfo);
|
||||
com.alibaba.fastjson2.JSONObject jsonObject = com.alibaba.fastjson2.JSONObject.from(editScenarioInfo);
|
||||
allScenario.add(jsonObject);
|
||||
}
|
||||
responseCmdInfo.setData(JSONArray.toJSONString(allScenario));
|
||||
}else {
|
||||
log.warn("=============scenarioService is null================================");
|
||||
}
|
||||
|
||||
responseCmdInfo.setCmdType("editScenarioInfo");
|
||||
}
|
||||
if(msgObj.getString("cmdType").equals("updScenarioInfo")){
|
||||
ScenarioService scenarioService = SpringUtil.getBean(ScenarioService.class);
|
||||
if(scenarioService != null){
|
||||
EditScenarioInfo scenarioInfo = scenarioService.listEditScenarioInfo(scenarioId, roomId, msgObj.getString("resourceId"));
|
||||
responseCmdInfo.setData(JSONArray.toJSONString(scenarioInfo));
|
||||
}else {
|
||||
log.warn("=============scenarioService is null================================");
|
||||
}
|
||||
responseCmdInfo.setCmdType("updScenarioInfo");
|
||||
}
|
||||
Global.sendCmdInfoQueue.add(responseCmdInfo);
|
||||
}catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
|
|
Loading…
Reference in New Issue
Block a user