package com.hivekion.statistic.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.hivekion.baseData.entity.Fightpowerstaff; import com.hivekion.baseData.entity.OrgSupplier; import com.hivekion.baseData.service.FightpowerstaffService; import com.hivekion.baseData.service.OrgSupplierService; import com.hivekion.scenario.entity.ScenarioOrgPost; import com.hivekion.scenario.entity.ScenarioResource; import com.hivekion.scenario.entity.ScenarioTask; import com.hivekion.scenario.service.IScenarioOrgPostService; import com.hivekion.scenario.service.ScenarioResourceService; 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 java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.stereotype.Component; @Component("WebsocketScenarioService") 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; @Override public ScenarioInfo listScenarioInfo(Integer scenarioId, String roomId, String resourceId) { ScenarioInfo scenarioInfo = new ScenarioInfo(); //获取分队信息 ScenarioResource resourceInstance = scenarioResourceService.getById(resourceId); //获取关联的组织机构信息 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; if (!orgList.isEmpty()) { staffList = fightpowerstaffService.queryByOrgIds(orgList); } else { staffList = new ArrayList<>(); } if (orgList.isEmpty()) { return new ScenarioInfo(); } //获取物资信息 List suppliers = orgSupplierService.selectByOrgIds(orgList); if (suppliers == null || suppliers.isEmpty()) { return new ScenarioInfo(); } 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; } } }); ScenarioTask scenarioTask = new ScenarioTask(); scenarioTask.setScenarioId(scenarioId); scenarioTask.setRoomId(roomId); scenarioTask.setResourceId(resourceId); List scenarioTasks = scenarioTaskService.queryTaskList(scenarioTask); List supplierRequests = supplierRequestService.list( new QueryWrapper().eq("FROM_RESOURCE_ID", resourceId)); scenarioInfo.setScenarioTasks(scenarioTasks); scenarioInfo.setStaffList(staffList); scenarioInfo.setOrgPostList(orgPostList); scenarioInfo.setSuppliers(suppliers); scenarioInfo.setSupplierRequests(supplierRequests); return scenarioInfo; } }