392 lines
19 KiB
Java
392 lines
19 KiB
Java
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;
|
|
import com.hivekion.supplier.entity.SuppliesDict;
|
|
import com.hivekion.supplier.service.ISupplierRequestService;
|
|
import com.hivekion.supplier.service.SuppliesDictService;
|
|
import com.hivekion.team.entity.Teaminfo;
|
|
import com.hivekion.team.service.ITeaminfoService;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
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")
|
|
@Slf4j
|
|
public class ScenarioServiceImpl implements ScenarioService {
|
|
|
|
@Resource
|
|
private ScenarioResourceService scenarioResourceService;
|
|
@Resource
|
|
private OrgSupplierService orgSupplierService;
|
|
@Resource
|
|
private SuppliesDictService suppliesDictService;
|
|
@Resource
|
|
private IScenarioOrgPostService scenarioOrgPostService;
|
|
@Resource
|
|
private FightpowerstaffService fightpowerstaffService;
|
|
|
|
@Resource
|
|
private ScenarioTaskService scenarioTaskService;
|
|
@Resource
|
|
private ISupplierRequestService supplierRequestService;
|
|
|
|
@Resource
|
|
private ITeaminfoService teamInfoService;
|
|
|
|
@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();
|
|
//图标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);
|
|
if (resourceMap.get(resourceId) != null) {
|
|
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 {
|
|
scenarioInfo.getTeam().setType(resourceInstance.getType());
|
|
scenarioInfo.getTeam().setLat(resourceInstance.getLat());
|
|
scenarioInfo.getTeam().setLng(resourceInstance.getLng());
|
|
}catch (Exception ex){
|
|
log.error("============={}==========================",resourceId);
|
|
ex.printStackTrace();
|
|
}
|
|
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.getTeam().setTeamName(map.get(resource.getResourceId()).getName());
|
|
resourceInstance.setResourceName(map.get(resource.getResourceId()).getName());
|
|
}
|
|
}
|
|
try {
|
|
scenarioInfo.getTeam().setType(resourceInstance.getType());
|
|
scenarioInfo.getTeam().setLat(resourceInstance.getLat());
|
|
scenarioInfo.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<>();
|
|
}else{
|
|
int sum = staffList.stream()
|
|
.mapToInt(Fightpowerstaff::getNumber)
|
|
.sum();
|
|
scenarioInfo.getPerson().setCurrent(sum);
|
|
scenarioInfo.getPerson().setTotal(sum);
|
|
}
|
|
//获取物资信息
|
|
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.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;
|
|
}
|
|
}
|
|
});
|
|
}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;
|
|
}
|
|
|
|
@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<>();
|
|
}else{
|
|
int sum = staffList.stream()
|
|
.mapToInt(Fightpowerstaff::getNumber)
|
|
.sum();
|
|
scenarioInfo.getJbxx().getPerson().setCurrent(sum);
|
|
scenarioInfo.getJbxx().getPerson().setTotal(sum);
|
|
}
|
|
//获取物资信息
|
|
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;
|
|
}
|
|
}
|