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 iconMap = iconService.iconMap(); //装备Map Map entityMap = iTblEntityService.entityMap(); Map hResourceMap = resourcesService.listBuildResourceByType(7); Map wResourceMap = resourcesService.listBuildResourceByType(8); //获取分队信息 Map map = teamInfoService.teamInfoMap(); Map 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 orgPostList = scenarioOrgPostService.selectByCondition(post); List orgList = orgPostList.stream().map(ScenarioOrgPost::getOrgId) .collect(Collectors.toList()); List staffList = null; List 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 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 scenarioTasks = scenarioTaskService.queryTaskList(scenarioTask); if(CollectionUtil.isEmpty(scenarioTasks)){ scenarioTasks =new ArrayList<>(); } List supplierRequests = supplierRequestService.list(new QueryWrapper().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 iconMap = iconService.iconMap(); //装备Map Map entityMap = iTblEntityService.entityMap(); Map hResourceMap = resourcesService.listBuildResourceByType(7); Map wResourceMap = resourcesService.listBuildResourceByType(8); //获取分队信息 Map map = teamInfoService.teamInfoMap(); Map 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 orgPostList = scenarioOrgPostService.selectByCondition(post); List orgList = orgPostList.stream().map(ScenarioOrgPost::getOrgId) .collect(Collectors.toList()); List staffList = null; List 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 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 scenarioTasks = scenarioTaskService.queryTaskList(scenarioTask); if(CollectionUtil.isEmpty(scenarioTasks)){ scenarioTasks =new ArrayList<>(); } List supplierRequests = supplierRequestService.list(new QueryWrapper().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; } }