simulation-backend/src/main/java/com/hivekion/statistic/service/impl/StatisticServiceImpl.java

113 lines
4.3 KiB
Java
Raw Normal View History

2025-09-14 14:19:32 +08:00
package com.hivekion.statistic.service.impl;
2025-09-14 22:34:55 +08:00
import com.hivekion.baseData.entity.Fightpowerstaff;
2025-09-14 14:19:32 +08:00
import com.hivekion.baseData.entity.OrgSupplier;
2025-09-14 22:34:55 +08:00
import com.hivekion.baseData.service.FightpowerstaffService;
2025-09-14 14:19:32 +08:00
import com.hivekion.baseData.service.OrgSupplierService;
2025-09-14 21:56:23 +08:00
import com.hivekion.scenario.entity.ScenarioOrgPost;
2025-09-14 14:19:32 +08:00
import com.hivekion.scenario.entity.ScenarioResource;
2025-09-14 21:56:23 +08:00
import com.hivekion.scenario.service.IScenarioOrgPostService;
2025-09-14 14:19:32 +08:00
import com.hivekion.scenario.service.ScenarioResourceService;
import com.hivekion.statistic.bean.StatisticBean;
import com.hivekion.statistic.service.StatisticService;
import com.hivekion.supplier.entity.SuppliesDict;
import com.hivekion.supplier.service.SuppliesDictService;
import java.util.List;
import java.util.Map;
2025-09-14 21:56:23 +08:00
import java.util.stream.Collectors;
2025-09-14 14:19:32 +08:00
import javax.annotation.Resource;
2025-09-14 21:56:23 +08:00
import lombok.extern.slf4j.Slf4j;
2025-09-14 14:19:32 +08:00
import org.springframework.stereotype.Service;
/**
* [类的简要说明]
* <p>
* [详细描述可选]
* <p>
*
* @author LiDongYU
* @since 2025/7/22
*/
@Service
2025-09-14 21:56:23 +08:00
@Slf4j
2025-09-14 14:19:32 +08:00
public class StatisticServiceImpl implements StatisticService {
@Resource
private ScenarioResourceService scenarioResourceService;
@Resource
private OrgSupplierService orgSupplierService;
@Resource
private SuppliesDictService suppliesDictService;
2025-09-14 21:56:23 +08:00
@Resource
private IScenarioOrgPostService scenarioOrgPostService;
2025-09-14 22:34:55 +08:00
@Resource
private FightpowerstaffService fightpowerstaffService;
2025-09-14 14:19:32 +08:00
@Override
public StatisticBean statistic(String resourceId) {
StatisticBean statisticBean = new StatisticBean();
//获取分队信息
ScenarioResource resourceInstance = scenarioResourceService.getById(resourceId);
if(resourceInstance == null){
return statisticBean;
}
2025-09-14 21:56:23 +08:00
2025-09-14 14:19:32 +08:00
statisticBean.getTeam().setType(resourceInstance.getType());
statisticBean.getTeam().setLat(resourceInstance.getLat());
statisticBean.getTeam().setLng(resourceInstance.getLng());
statisticBean.getTeam().setTeamName(resourceInstance.getResourceName());
2025-09-14 21:56:23 +08:00
//获取关联的组织机构信息
ScenarioOrgPost post = new ScenarioOrgPost();
post.setResourceId(resourceId);
List<ScenarioOrgPost> orgPostList = scenarioOrgPostService.selectByCondition(post);
List<Integer> orgList = orgPostList.stream().map(ScenarioOrgPost::getOrgId)
.collect(Collectors.toList());
//获取人员信息
2025-09-14 22:34:55 +08:00
List<Fightpowerstaff> staffList = fightpowerstaffService.queryByOrgIds(orgList);
int sum = staffList.stream()
.mapToInt(Fightpowerstaff::getNumber)
.sum();
statisticBean.getPerson().setCurrent(sum);
statisticBean.getPerson().setTotal(sum);
2025-09-14 14:19:32 +08:00
//获取物资信息
2025-09-14 21:56:23 +08:00
List<OrgSupplier> suppliers = orgSupplierService.selectByOrgIds(orgList);
2025-09-14 22:34:55 +08:00
2025-09-14 14:19:32 +08:00
Map<String, SuppliesDict> supplierMap = suppliesDictService.supplierDictMap();
2025-09-14 22:34:55 +08:00
2025-09-14 14:19:32 +08:00
suppliers.forEach(supplier -> {
2025-09-14 22:34:55 +08:00
2025-09-14 21:56:23 +08:00
SuppliesDict dict = supplierMap.get(supplier.getSupplierId());
2025-09-14 22:34:55 +08:00
2025-09-14 14:19:32 +08:00
if (dict != null) {
switch (dict.getCode()) {
case "FOOD":
2025-09-14 21:56:23 +08:00
statisticBean.getFood().setTotal(statisticBean.getFood().getTotal()+supplier.getAccount());
statisticBean.getFood().setCurrent(statisticBean.getFood().getCurrent()+supplier.getAccount());
2025-09-14 14:19:32 +08:00
break;
case "WATER":
2025-09-14 21:56:23 +08:00
statisticBean.getWater().setTotal(statisticBean.getWater().getTotal()+supplier.getAccount());
statisticBean.getWater().setCurrent(statisticBean.getWater().getCurrent()+supplier.getAccount());
2025-09-14 14:19:32 +08:00
break;
case "FUEL":
2025-09-14 21:56:23 +08:00
statisticBean.getFuel().setTotal(statisticBean.getFuel().getTotal()+supplier.getAccount());
statisticBean.getFuel().setCurrent(statisticBean.getFuel().getCurrent()+supplier.getAccount());
2025-09-14 14:19:32 +08:00
break;
case "MEDICAL":
2025-09-14 21:56:23 +08:00
statisticBean.getMedical().setTotal( statisticBean.getMedical().getTotal()+supplier.getAccount());
statisticBean.getMedical().setCurrent( statisticBean.getMedical().getCurrent()+supplier.getAccount());
2025-09-14 14:19:32 +08:00
break;
case "AMMUNITION":
2025-09-14 21:56:23 +08:00
statisticBean.getAmmunition().setTotal( statisticBean.getAmmunition().getTotal()+supplier.getAccount());
statisticBean.getAmmunition().setCurrent(statisticBean.getAmmunition().getCurrent()+supplier.getAccount());
2025-09-14 14:19:32 +08:00
break;
default:
break;
}
}
});
return statisticBean;
}
}