package com.gkhy.safePlatform.riskCtrl.service.impl;
|
|
import cn.hutool.core.date.DateUtil;
|
import com.gkhy.safePlatform.account.rpc.apimodel.AccountDepartmentService;
|
import com.gkhy.safePlatform.account.rpc.apimodel.model.resp.DepInfoRPCRespDTO;
|
import com.gkhy.safePlatform.commons.enums.ResultCodes;
|
import com.gkhy.safePlatform.commons.vo.ResultVO;
|
import com.gkhy.safePlatform.commons.vo.SearchResultVO;
|
import com.gkhy.safePlatform.doublePrevent.rpc.apimodel.PreventRPCDataCountService;
|
import com.gkhy.safePlatform.doublePrevent.rpc.apimodel.model.req.RPCDataCountI1ReqDTO;
|
import com.gkhy.safePlatform.doublePrevent.rpc.apimodel.model.req.RPCDataCountI2ReqDTO;
|
import com.gkhy.safePlatform.doublePrevent.rpc.apimodel.model.resp.RPCDataCountI1RespDTO;
|
import com.gkhy.safePlatform.doublePrevent.rpc.apimodel.model.resp.RPCDataCountI2RespDTO;
|
import com.gkhy.safePlatform.emergency.rpc.api.EmergencyRpcAPi;
|
import com.gkhy.safePlatform.emergency.rpc.api.model.dto.req.EmergencyExecuteCountRPCReq;
|
import com.gkhy.safePlatform.emergency.rpc.api.model.dto.req.EmergencyExecuteNumRPCReq;
|
import com.gkhy.safePlatform.emergency.rpc.api.model.dto.req.EmergencyExecuteTimeRPCReq;
|
import com.gkhy.safePlatform.emergency.rpc.api.model.dto.req.EmergencydrillTimeRPCReq;
|
import com.gkhy.safePlatform.emergency.rpc.api.model.dto.resp.*;
|
import com.gkhy.safePlatform.incidentManage.rpc.api.IncidentManageRpcAPi;
|
import com.gkhy.safePlatform.incidentManage.rpc.api.model.dto.req.IncidentManageCountRPCReq;
|
import com.gkhy.safePlatform.incidentManage.rpc.api.model.dto.resp.*;
|
import com.gkhy.safePlatform.riskCtrl.model.bo.*;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.time.LocalDateTime;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Service
|
public class CollectReportDataService {
|
@DubboReference(check = false)
|
private AccountDepartmentService departmentService;
|
|
@DubboReference(check = false)
|
private PreventRPCDataCountService preventRPCDataCountService;
|
|
@DubboReference(check = false)
|
private IncidentManageRpcAPi incidentManageRpcAPi;
|
|
@DubboReference(check = false)
|
private EmergencyRpcAPi emergencyRpcAPi;
|
|
/**
|
* 获取双重预防的隐患单月统计数据
|
* @param depInfo
|
* @param year
|
* @param month
|
* @return
|
*/
|
@Transactional
|
public RiskDataBO getPreventRiskData(DepInfoRPCRespDTO depInfo, Integer year, Integer month){
|
//获取I1数据
|
RPCDataCountI1ReqDTO riskSearchReqDTO = new RPCDataCountI1ReqDTO();
|
riskSearchReqDTO.setDepId(depInfo.getDepId());
|
riskSearchReqDTO.setYear(year);
|
riskSearchReqDTO.setMonth(month);
|
if(month != null)
|
riskSearchReqDTO.setType((byte)1);
|
else
|
riskSearchReqDTO.setType((byte)2);
|
ResultVO<RPCDataCountI1RespDTO> riskI1RpcResult = preventRPCDataCountService.listMonthDangerResultCountI1(riskSearchReqDTO);
|
if(riskI1RpcResult == null || !riskI1RpcResult.getCode().equals(ResultCodes.OK.getCode())){
|
throw new RuntimeException("RPC调用出错");
|
}
|
RPCDataCountI1RespDTO i1RpcData = (RPCDataCountI1RespDTO) riskI1RpcResult.getData();
|
//获取I2数据
|
RPCDataCountI2ReqDTO riskI2SearchReqDto = new RPCDataCountI2ReqDTO();
|
riskI2SearchReqDto.setDepId(depInfo.getDepId());
|
riskI2SearchReqDto.setYear(year);
|
riskI2SearchReqDto.setMonth(month);
|
if(month != null)
|
riskI2SearchReqDto.setType((byte)1);
|
else
|
riskI2SearchReqDto.setType((byte)2);
|
ResultVO<RPCDataCountI2RespDTO> riskI2RpcResult = preventRPCDataCountService.listMonthDangerLevelCountI2(riskI2SearchReqDto);
|
if(riskI2RpcResult == null || !riskI2RpcResult.getCode().equals(ResultCodes.OK.getCode())){
|
throw new RuntimeException("RPC调用出错");
|
}
|
RPCDataCountI2RespDTO i2RpcData = (RPCDataCountI2RespDTO) riskI2RpcResult.getData();
|
|
//处理数据
|
if(i1RpcData == null || i2RpcData == null){
|
return null;
|
}
|
|
RiskDataBO riskDataBO = new RiskDataBO();
|
riskDataBO.setDepId(depInfo.getDepId());
|
riskDataBO.setDepLevel(depInfo.getDepLevel());
|
riskDataBO.setDepName(depInfo.getDepName());
|
riskDataBO.setYear(year);
|
riskDataBO.setMonth(month);
|
|
riskDataBO.setCauseDeathCount(i1RpcData.getDeathCount());
|
riskDataBO.setCauseHeavyInjureCount(i1RpcData.getHeavyInjureCount());
|
riskDataBO.setCauseLightInjureCount(i1RpcData.getLightInjureCount());
|
|
//重大隐患数据
|
RiskCountBO majorRiskData = new RiskCountBO();
|
majorRiskData.setRiskCount(i2RpcData.getHeavyRiskCount());
|
majorRiskData.setRectifyCount(i2RpcData.getHeavyRiskRectifyCount());
|
riskDataBO.setMajorRiskData(majorRiskData);
|
//一般隐患数据
|
RiskCountBO generalRiskData = new RiskCountBO();
|
generalRiskData.setRiskCount(i2RpcData.getLightRiskCount());
|
generalRiskData.setRectifyCount(i2RpcData.getLightRiskRectifyCount());
|
riskDataBO.setGeneralRiskData(generalRiskData);
|
|
return riskDataBO;
|
}
|
|
@Transactional
|
public IncidentDataBO getIncidentCountData(DepInfoRPCRespDTO depInfo, Integer year, Integer month){
|
//获取事故统计数据
|
IncidentManageCountRPCReq req = new IncidentManageCountRPCReq();
|
req.setDeptId(depInfo.getDepId());
|
req.setYear(year);
|
req.setMonth(month);
|
ResultVO<List<StatisticsDepLevelMonthAccidentRPCRespDTO>> incidentSearchResultVO =
|
incidentManageRpcAPi.getAccidentCountByDeptIdsAndMonth(req);
|
if(incidentSearchResultVO == null || !incidentSearchResultVO.getCode().equals(ResultCodes.OK.getCode()) || incidentSearchResultVO.getData() == null){
|
return null;
|
}
|
|
//定义业务数据包装对象
|
IncidentDataBO incidentDataBO = new IncidentDataBO();
|
incidentDataBO.setDepId(depInfo.getDepId());
|
incidentDataBO.setDepLevel(depInfo.getDepLevel());
|
incidentDataBO.setDepName(depInfo.getDepName());
|
incidentDataBO.setYear(year);
|
incidentDataBO.setMonth(month);
|
|
//特大事故数据
|
IncidentCauseCountBO l1DateBO = new IncidentCauseCountBO();
|
l1DateBO.init();
|
l1DateBO.setLevel((byte)1);
|
//重大事故数据
|
IncidentCauseCountBO l2DateBO = new IncidentCauseCountBO();
|
l2DateBO.init();
|
l2DateBO.setLevel((byte)2);
|
//较大事故数据
|
IncidentCauseCountBO l3DateBO = new IncidentCauseCountBO();
|
l3DateBO.init();
|
l3DateBO.setLevel((byte)3);
|
//一般事故数据
|
IncidentCauseCountBO l4DateBO = new IncidentCauseCountBO();
|
l4DateBO.init();
|
l4DateBO.setLevel((byte)4);
|
//未遂事故数据
|
IncidentCauseCountBO l5DateBO = new IncidentCauseCountBO();
|
l5DateBO.init();
|
l5DateBO.setLevel((byte)5);
|
|
List<StatisticsDepLevelMonthAccidentRPCRespDTO> rpcRespDTOList = (List<StatisticsDepLevelMonthAccidentRPCRespDTO>) incidentSearchResultVO.getData();
|
for(StatisticsDepLevelMonthAccidentRPCRespDTO respDTO : rpcRespDTOList){
|
if(respDTO.getAccidentLevelList() == null || respDTO.getAccidentLevelList().isEmpty())
|
continue;
|
for(AccidentLevelResultCountRPCRespDTO accidentLevelCountDto : respDTO.getAccidentLevelList()){
|
if(accidentLevelCountDto == null)
|
continue;
|
if(accidentLevelCountDto.getAccidentLevel().equals((byte)1)){
|
l1DateBO.setAccidentCount(l1DateBO.getAccidentCount()+accidentLevelCountDto.getAccidentCount());
|
l1DateBO.setCauseDeathCount(l1DateBO.getCauseDeathCount()+accidentLevelCountDto.getDeathCount());
|
l1DateBO.setCauseHeavyInjureCount(l1DateBO.getCauseHeavyInjureCount()+accidentLevelCountDto.getSeriousInjuryCount());
|
l1DateBO.setCauseLightInjureCount(l1DateBO.getCauseLightInjureCount()+accidentLevelCountDto.getMinorInjuryCount());
|
l1DateBO.setLoss(l1DateBO.getLoss().add(accidentLevelCountDto.getEconomicLoss()));
|
}else if(accidentLevelCountDto.getAccidentLevel().equals((byte)2)){
|
l2DateBO.setAccidentCount(l2DateBO.getAccidentCount()+accidentLevelCountDto.getAccidentCount());
|
l2DateBO.setCauseDeathCount(l2DateBO.getCauseDeathCount()+accidentLevelCountDto.getDeathCount());
|
l2DateBO.setCauseHeavyInjureCount(l2DateBO.getCauseHeavyInjureCount()+accidentLevelCountDto.getSeriousInjuryCount());
|
l2DateBO.setCauseLightInjureCount(l2DateBO.getCauseLightInjureCount()+accidentLevelCountDto.getMinorInjuryCount());
|
l2DateBO.setLoss(l2DateBO.getLoss().add(accidentLevelCountDto.getEconomicLoss()));
|
}else if(accidentLevelCountDto.getAccidentLevel().equals((byte)3)){
|
l3DateBO.setAccidentCount(l3DateBO.getAccidentCount()+accidentLevelCountDto.getAccidentCount());
|
l3DateBO.setCauseDeathCount(l3DateBO.getCauseDeathCount()+accidentLevelCountDto.getDeathCount());
|
l3DateBO.setCauseHeavyInjureCount(l3DateBO.getCauseHeavyInjureCount()+accidentLevelCountDto.getSeriousInjuryCount());
|
l3DateBO.setCauseLightInjureCount(l3DateBO.getCauseLightInjureCount()+accidentLevelCountDto.getMinorInjuryCount());
|
l3DateBO.setLoss(l3DateBO.getLoss().add(accidentLevelCountDto.getEconomicLoss()));
|
}else if(accidentLevelCountDto.getAccidentLevel().equals((byte)4)){
|
l4DateBO.setAccidentCount(l4DateBO.getAccidentCount()+accidentLevelCountDto.getAccidentCount());
|
l4DateBO.setCauseDeathCount(l4DateBO.getCauseDeathCount()+accidentLevelCountDto.getDeathCount());
|
l4DateBO.setCauseHeavyInjureCount(l4DateBO.getCauseHeavyInjureCount()+accidentLevelCountDto.getSeriousInjuryCount());
|
l4DateBO.setCauseLightInjureCount(l4DateBO.getCauseLightInjureCount()+accidentLevelCountDto.getMinorInjuryCount());
|
l4DateBO.setLoss(l4DateBO.getLoss().add(accidentLevelCountDto.getEconomicLoss()));
|
}else if(accidentLevelCountDto.getAccidentLevel().equals((byte)5)){
|
l5DateBO.setAccidentCount(l5DateBO.getAccidentCount()+accidentLevelCountDto.getAccidentCount());
|
l5DateBO.setCauseDeathCount(l5DateBO.getCauseDeathCount()+accidentLevelCountDto.getDeathCount());
|
l5DateBO.setCauseHeavyInjureCount(l5DateBO.getCauseHeavyInjureCount()+accidentLevelCountDto.getSeriousInjuryCount());
|
l5DateBO.setCauseLightInjureCount(l5DateBO.getCauseLightInjureCount()+accidentLevelCountDto.getMinorInjuryCount());
|
l5DateBO.setLoss(l5DateBO.getLoss().add(accidentLevelCountDto.getEconomicLoss()));
|
}
|
}
|
}
|
|
incidentDataBO.setL1AccidentData(l1DateBO);
|
incidentDataBO.setL2AccidentData(l2DateBO);
|
incidentDataBO.setL3AccidentData(l3DateBO);
|
incidentDataBO.setL4AccidentData(l4DateBO);
|
incidentDataBO.setL5AccidentData(l5DateBO);
|
|
return incidentDataBO;
|
}
|
|
/**
|
* 获取事故管理单月统计数据
|
* @param depInfo
|
* @param year
|
* @param month
|
* @return
|
*/
|
@Transactional
|
public IncidentDataBO getIncidentCountData_old(DepInfoRPCRespDTO depInfo, Integer year, Integer month){
|
IncidentManageCountRPCReq req = new IncidentManageCountRPCReq();
|
req.setDeptId(depInfo.getDepId());
|
req.setYear(year);
|
req.setMonth(month);
|
SearchResultVO<List<IncidentManageRPCResp>> incidentRpcSearchResultVO =
|
incidentManageRpcAPi.getCountByDeptIds(req);
|
if(incidentRpcSearchResultVO == null || !incidentRpcSearchResultVO.getCode().equals(ResultCodes.OK.getCode())){
|
throw new RuntimeException("RPC调用出错");
|
}
|
List<IncidentManageRPCResp> incidentManageRPCRespList = (List<IncidentManageRPCResp>) incidentRpcSearchResultVO.getData();
|
|
if(incidentManageRPCRespList == null || incidentManageRPCRespList.isEmpty()){
|
return null;
|
}
|
|
IncidentDataBO incidentDataBO = new IncidentDataBO();
|
incidentDataBO.setDepId(depInfo.getDepId());
|
incidentDataBO.setDepLevel(depInfo.getDepLevel());
|
incidentDataBO.setDepName(depInfo.getDepName());
|
incidentDataBO.setYear(year);
|
incidentDataBO.setMonth(month);
|
|
//特大事故数据
|
IncidentCauseCountBO l1DateBO = new IncidentCauseCountBO();
|
l1DateBO.init();
|
l1DateBO.setLevel((byte)1);
|
//重大事故数据
|
IncidentCauseCountBO l2DateBO = new IncidentCauseCountBO();
|
l2DateBO.init();
|
l2DateBO.setLevel((byte)2);
|
//较大事故数据
|
IncidentCauseCountBO l3DateBO = new IncidentCauseCountBO();
|
l3DateBO.init();
|
l3DateBO.setLevel((byte)3);
|
//一般事故数据
|
IncidentCauseCountBO l4DateBO = new IncidentCauseCountBO();
|
l4DateBO.init();
|
l4DateBO.setLevel((byte)4);
|
//未遂事故数据
|
IncidentCauseCountBO l5DateBO = new IncidentCauseCountBO();
|
l5DateBO.init();
|
l5DateBO.setLevel((byte)5);
|
|
for(IncidentManageRPCResp resp : incidentManageRPCRespList){
|
if(resp == null)
|
continue;
|
for(IncidentManageCountRPCResp countData : resp.getData()){
|
if(countData == null)
|
continue;
|
for(IncidentManageCountDetailRPCResp detail : countData.getDetail()){
|
if(detail == null)
|
continue;
|
switch (detail.getLevel()){
|
case "1" : {
|
l1DateBO.setAccidentCount(l1DateBO.getAccidentCount()+detail.getNum());
|
l1DateBO.setCauseDeathCount(l1DateBO.getCauseDeathCount()+detail.getDeathNum());
|
l1DateBO.setCauseHeavyInjureCount(l1DateBO.getCauseHeavyInjureCount()+detail.getSeriousInjuryNum());
|
l1DateBO.setCauseLightInjureCount(l1DateBO.getCauseLightInjureCount()+detail.getMinorInjuryNum());
|
l1DateBO.setLoss(l1DateBO.getLoss().add(detail.getEconomicLoss()));
|
break;
|
}
|
case "2" : {
|
l2DateBO.setAccidentCount(l2DateBO.getAccidentCount()+detail.getNum());
|
l2DateBO.setCauseDeathCount(l2DateBO.getCauseDeathCount()+detail.getDeathNum());
|
l2DateBO.setCauseHeavyInjureCount(l2DateBO.getCauseHeavyInjureCount()+detail.getSeriousInjuryNum());
|
l2DateBO.setCauseLightInjureCount(l2DateBO.getCauseLightInjureCount()+detail.getMinorInjuryNum());
|
l2DateBO.setLoss(l2DateBO.getLoss().add(detail.getEconomicLoss()));
|
break;
|
}
|
case "3" : {
|
l3DateBO.setAccidentCount(l3DateBO.getAccidentCount()+detail.getNum());
|
l3DateBO.setCauseDeathCount(l3DateBO.getCauseDeathCount()+detail.getDeathNum());
|
l3DateBO.setCauseHeavyInjureCount(l3DateBO.getCauseHeavyInjureCount()+detail.getSeriousInjuryNum());
|
l3DateBO.setCauseLightInjureCount(l3DateBO.getCauseLightInjureCount()+detail.getMinorInjuryNum());
|
l3DateBO.setLoss(l3DateBO.getLoss().add(detail.getEconomicLoss()));
|
break;
|
}
|
case "4" : {
|
l4DateBO.setAccidentCount(l4DateBO.getAccidentCount()+detail.getNum());
|
l4DateBO.setCauseDeathCount(l4DateBO.getCauseDeathCount()+detail.getDeathNum());
|
l4DateBO.setCauseHeavyInjureCount(l4DateBO.getCauseHeavyInjureCount()+detail.getSeriousInjuryNum());
|
l4DateBO.setCauseLightInjureCount(l4DateBO.getCauseLightInjureCount()+detail.getMinorInjuryNum());
|
l4DateBO.setLoss(l4DateBO.getLoss().add(detail.getEconomicLoss()));
|
break;
|
}
|
case "5" : {
|
l5DateBO.setAccidentCount(l5DateBO.getAccidentCount()+detail.getNum());
|
l5DateBO.setCauseDeathCount(l5DateBO.getCauseDeathCount()+detail.getDeathNum());
|
l5DateBO.setCauseHeavyInjureCount(l5DateBO.getCauseHeavyInjureCount()+detail.getSeriousInjuryNum());
|
l5DateBO.setCauseLightInjureCount(l5DateBO.getCauseLightInjureCount()+detail.getMinorInjuryNum());
|
l5DateBO.setLoss(l5DateBO.getLoss().add(detail.getEconomicLoss()));
|
break;
|
}
|
default:
|
break;
|
}
|
}
|
}
|
}
|
|
incidentDataBO.setL1AccidentData(l1DateBO);
|
incidentDataBO.setL2AccidentData(l2DateBO);
|
incidentDataBO.setL3AccidentData(l3DateBO);
|
incidentDataBO.setL4AccidentData(l4DateBO);
|
incidentDataBO.setL5AccidentData(l5DateBO);
|
|
return incidentDataBO;
|
}
|
|
@Transactional
|
public EmergencyDataBO getEmergencyCountData(DepInfoRPCRespDTO depInfo, Integer year, Integer month){
|
EmergencyExecuteCountRPCReq req = new EmergencyExecuteCountRPCReq();
|
req.setDeptId(depInfo.getDepId());
|
req.setYear(year);
|
req.setMonth(month);
|
//查询演练次数
|
ResultVO<List<StatisticsDepLevelMonthEexcuteRPCRespDTO>> emgcExecCountResultVO =
|
emergencyRpcAPi.getExecuteCountByDeptIdsAndMonth(req);
|
if(emgcExecCountResultVO == null || !emgcExecCountResultVO.getCode().equals(ResultCodes.OK.getCode())
|
|| emgcExecCountResultVO.getData() == null){
|
return null;
|
}
|
//查询演练时间
|
EmergencydrillTimeRPCReq timeRPCReq = new EmergencydrillTimeRPCReq();
|
timeRPCReq.setDeptId(depInfo.getDepId());
|
timeRPCReq.setYear(year);
|
timeRPCReq.setMonth(month);
|
ResultVO<List<EmergencyExecuteDepLevelLasTimeRPCRespDTO>> emgcExecTimeSearchResultVO =
|
emergencyRpcAPi.getExecuteLastTimeByDeptIdsAndTime(timeRPCReq);
|
if(emgcExecTimeSearchResultVO == null || !emgcExecTimeSearchResultVO.getCode().equals(ResultCodes.OK.getCode())
|
|| emgcExecTimeSearchResultVO.getData() == null){
|
return null;
|
}
|
|
EmergencyDataBO emergencyDataBO = new EmergencyDataBO();
|
emergencyDataBO.setDepId(depInfo.getDepId());
|
emergencyDataBO.setDepLevel(depInfo.getDepLevel());
|
emergencyDataBO.setDepName(depInfo.getDepName());
|
emergencyDataBO.setYear(year);
|
emergencyDataBO.setMonth(month);
|
|
//解析数据
|
// - 解析演练次数
|
Map<Byte,EmergencyCountBO> depLevelEmgcDataMap = new HashMap<>();
|
List<StatisticsDepLevelMonthEexcuteRPCRespDTO> emgcExecCountRespDtoList =
|
(List<StatisticsDepLevelMonthEexcuteRPCRespDTO>) emgcExecCountResultVO.getData();
|
for(StatisticsDepLevelMonthEexcuteRPCRespDTO emgcExecCountRespDto : emgcExecCountRespDtoList){
|
EmergencyCountBO dataBO = depLevelEmgcDataMap.get(emgcExecCountRespDto.getDepLevel());
|
if(dataBO == null){
|
dataBO = new EmergencyCountBO();
|
dataBO.setDepLevel(emgcExecCountRespDto.getDepLevel());
|
depLevelEmgcDataMap.put(emgcExecCountRespDto.getDepLevel(),dataBO);
|
}
|
dataBO.setPracticeCount(emgcExecCountRespDto.getExecuteCount());
|
depLevelEmgcDataMap.put(emgcExecCountRespDto.getDepLevel(), dataBO);
|
}
|
|
// - 解析演练时间
|
List<EmergencyExecuteDepLevelLasTimeRPCRespDTO> timeRPCRespList = (List<EmergencyExecuteDepLevelLasTimeRPCRespDTO>) emgcExecTimeSearchResultVO.getData();
|
for(EmergencyExecuteDepLevelLasTimeRPCRespDTO resp : timeRPCRespList){
|
if(depLevelEmgcDataMap.containsKey(resp.getDepLevel())){
|
EmergencyCountBO countBO = depLevelEmgcDataMap.get(resp.getDepLevel());
|
LocalDateTime lastTime = DateUtil.parseLocalDateTime(resp.getLastPricateTime());
|
if(countBO.getLastPracticeTime() == null){
|
countBO.setLastPracticeTime(lastTime);
|
}else if(countBO.getLastPracticeTime().isBefore(lastTime)){
|
countBO.setLastPracticeTime(lastTime);
|
}
|
}
|
}
|
|
emergencyDataBO.setPracticeData(new ArrayList<>());
|
depLevelEmgcDataMap.forEach((depLevel,dataBO)->{
|
if(dataBO != null){
|
emergencyDataBO.getPracticeData().add(dataBO);
|
}
|
});
|
|
return emergencyDataBO;
|
}
|
|
/**
|
* 获取应急演练单月统计数据
|
* @param depInfo
|
* @param year
|
* @param month
|
* @return
|
*/
|
@Transactional
|
public EmergencyDataBO getEmergencyCountData_old(DepInfoRPCRespDTO depInfo, Integer year, Integer month){
|
//获取应急演练次数数据
|
EmergencyExecuteNumRPCReq numRPCReq = new EmergencyExecuteNumRPCReq();
|
numRPCReq.setDeptId(depInfo.getDepId());
|
numRPCReq.setYear(year);
|
numRPCReq.setMonth(month);
|
SearchResultVO<List<EmergencyExecuteNumRPCResp>> emergencyRpcSearchResultVO =
|
emergencyRpcAPi.getNumByDeptIds(numRPCReq);
|
if(emergencyRpcSearchResultVO == null || !emergencyRpcSearchResultVO.getCode().equals(ResultCodes.OK.getCode())){
|
throw new RuntimeException("RPC调用出错");
|
}
|
List<EmergencyExecuteNumRPCResp> emgcExecRespList = (List<EmergencyExecuteNumRPCResp>) emergencyRpcSearchResultVO.getData();
|
//获取应急演练时间数据
|
EmergencyExecuteTimeRPCReq timeRPCReq = new EmergencyExecuteTimeRPCReq();
|
timeRPCReq.setDeptId(depInfo.getDepId());
|
SearchResultVO<List<EmergencyExecuteTimeRPCResp>> emergencyTimeRpcSearchResultVO =
|
emergencyRpcAPi.getTimeByDeptIds(timeRPCReq);
|
if(emergencyTimeRpcSearchResultVO == null || !emergencyTimeRpcSearchResultVO.getCode().equals(ResultCodes.OK.getCode())){
|
throw new RuntimeException("RPC调用出错");
|
}
|
List<EmergencyExecuteTimeRPCResp> emgcExecTimeRespList = (List<EmergencyExecuteTimeRPCResp>) emergencyTimeRpcSearchResultVO.getData();
|
|
if(emgcExecRespList == null || emgcExecRespList.isEmpty() || emgcExecTimeRespList == null || emgcExecTimeRespList.isEmpty()){
|
return null;
|
}
|
|
EmergencyDataBO emergencyDataBO = new EmergencyDataBO();
|
emergencyDataBO.setDepId(depInfo.getDepId());
|
emergencyDataBO.setDepLevel(depInfo.getDepLevel());
|
emergencyDataBO.setDepName(depInfo.getDepName());
|
emergencyDataBO.setYear(year);
|
emergencyDataBO.setMonth(month);
|
|
Map<Byte,EmergencyCountBO> depLevelEmgcDataMap = new HashMap<>();
|
for(EmergencyExecuteNumRPCResp resp : emgcExecRespList){
|
if(resp == null || resp.getDetail() == null)
|
continue;
|
if(!depLevelEmgcDataMap.containsKey(resp.getDeptLevel())){
|
EmergencyCountBO emergencyCountBO = new EmergencyCountBO();
|
emergencyCountBO.setDepLevel(resp.getDeptLevel());
|
depLevelEmgcDataMap.put(resp.getDeptLevel(), emergencyCountBO);
|
}
|
EmergencyCountBO dataBO = depLevelEmgcDataMap.get(resp.getDeptLevel());
|
for(EmergencyExecuteNumDetailRPCResp detail : resp.getDetail()){
|
if(detail == null)
|
continue;
|
dataBO.setPracticeCount(dataBO.getPracticeCount()+detail.getNum());
|
}
|
}
|
for(EmergencyExecuteTimeRPCResp resp : emgcExecTimeRespList){
|
if(resp == null)
|
continue;
|
if(!depLevelEmgcDataMap.containsKey(resp.getDeptLevel())){
|
EmergencyCountBO emergencyCountBO = new EmergencyCountBO();
|
emergencyCountBO.setDepLevel(resp.getDeptLevel());
|
depLevelEmgcDataMap.put(resp.getDeptLevel(), emergencyCountBO);
|
}
|
EmergencyCountBO dataBO = depLevelEmgcDataMap.get(resp.getDeptLevel());
|
LocalDateTime lastTime = DateUtil.parseLocalDateTime(resp.getLastTime());
|
if(dataBO.getLastPracticeTime() == null){
|
dataBO.setLastPracticeTime(lastTime);
|
}else if(dataBO.getLastPracticeTime().isBefore(lastTime)){
|
dataBO.setLastPracticeTime(lastTime);
|
}
|
}
|
emergencyDataBO.setPracticeData(new ArrayList<>());
|
depLevelEmgcDataMap.forEach((depLevel,dataBO)->{
|
if(dataBO != null){
|
emergencyDataBO.getPracticeData().add(dataBO);
|
}
|
});
|
return emergencyDataBO;
|
}
|
|
}
|