package com.gkhy.safePlatform.riskCtrl.utils;
|
|
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateUtil;
|
import com.gkhy.safePlatform.account.rpc.apimodel.model.enums.DepartmentLevelEnum;
|
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.model.dto.resp.EmergencyExecuteNumDetailRPCResp;
|
import com.gkhy.safePlatform.emergency.rpc.api.model.dto.resp.EmergencyExecuteNumRPCResp;
|
import com.gkhy.safePlatform.emergency.rpc.api.model.dto.resp.EmergencyExecuteTimeRPCResp;
|
import com.gkhy.safePlatform.incidentManage.rpc.api.model.dto.resp.IncidentManageCountDetailRPCResp;
|
import com.gkhy.safePlatform.incidentManage.rpc.api.model.dto.resp.IncidentManageCountRPCResp;
|
import com.gkhy.safePlatform.incidentManage.rpc.api.model.dto.resp.IncidentManageRPCResp;
|
import com.gkhy.safePlatform.riskCtrl.constant.SpiWeighValue;
|
import com.gkhy.safePlatform.riskCtrl.model.bo.EmergencyCountBO;
|
import com.gkhy.safePlatform.riskCtrl.model.bo.EmergencyDataBO;
|
import com.gkhy.safePlatform.riskCtrl.model.bo.IncidentDataBO;
|
import com.gkhy.safePlatform.riskCtrl.model.bo.RiskDataBO;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
import java.time.ZoneId;
|
import java.util.Date;
|
import java.util.List;
|
|
public class SpiItemAnalysisHandler {
|
|
/**
|
* 计算I1
|
* @param riskDataBO
|
* @return
|
*/
|
public BigDecimal calI1(RiskDataBO riskDataBO){
|
if(riskDataBO == null)
|
return null;
|
BigDecimal A =
|
BigDecimal.valueOf(riskDataBO.getGeneralRiskData().getRiskCount()+riskDataBO.getMajorRiskData().getRiskCount());
|
BigDecimal A1 = BigDecimal.valueOf(riskDataBO.getCauseDeathCount());
|
BigDecimal A2 = BigDecimal.valueOf(riskDataBO.getCauseHeavyInjureCount());
|
BigDecimal A3 = BigDecimal.valueOf(riskDataBO.getCauseLightInjureCount());
|
BigDecimal a123 = A1.add(A2).add(A3);
|
BigDecimal I1 = BigDecimal.valueOf(0);
|
if(a123.compareTo(BigDecimal.valueOf(0)) != 0){
|
I1 = A.divide(A1.add(A2).add(A3),BigDecimal.ROUND_CEILING)
|
.multiply(A1.multiply(SpiWeighValue.RISK_A1).add(A2.multiply(SpiWeighValue.RISK_A2)).add(A3.multiply(SpiWeighValue.RISK_A3)));
|
|
}
|
return I1;
|
}
|
|
/**
|
* 计算I2
|
* @param riskDataBO
|
* @return
|
*/
|
public BigDecimal calI2(RiskDataBO riskDataBO){
|
if(riskDataBO == null)
|
return null;
|
BigDecimal B1 = BigDecimal.valueOf(riskDataBO.getMajorRiskData().getRiskCount());
|
BigDecimal B2 = BigDecimal.valueOf(riskDataBO.getGeneralRiskData().getRiskCount());
|
BigDecimal I2 = B1.multiply(SpiWeighValue.RISK_B1).add(B2.multiply(SpiWeighValue.RISK_B2));
|
return I2;
|
}
|
|
/**
|
* 计算I3
|
* @param riskDataBO
|
* @return
|
*/
|
public BigDecimal calI3(RiskDataBO riskDataBO){
|
if(riskDataBO == null)
|
return null;
|
BigDecimal B1 = BigDecimal.valueOf(riskDataBO.getMajorRiskData().getRiskCount());
|
BigDecimal B2 = BigDecimal.valueOf(riskDataBO.getGeneralRiskData().getRiskCount());
|
BigDecimal Cn1 = BigDecimal.valueOf(0);
|
if(riskDataBO.getMajorRiskData().getRiskCount() != null && riskDataBO.getMajorRiskData().getRiskCount() > 0){
|
BigDecimal rate =
|
BigDecimal.valueOf(riskDataBO.getMajorRiskData().getRectifyCount()).divide(BigDecimal.valueOf(riskDataBO.getMajorRiskData().getRiskCount()),BigDecimal.ROUND_CEILING);
|
if(rate.compareTo(BigDecimal.valueOf(1)) == 0){
|
Cn1 = SpiWeighValue.RISK_CN1_L1;
|
}else if(rate.compareTo(BigDecimal.valueOf(0.8)) >= 0 && rate.compareTo(BigDecimal.valueOf(1)) < 1){
|
Cn1 = SpiWeighValue.RISK_CN1_L2;
|
}else if(rate.compareTo(BigDecimal.valueOf(0.5)) >= 0 && rate.compareTo(BigDecimal.valueOf(0.8)) < 1){
|
Cn1 = SpiWeighValue.RISK_CN1_L3;
|
}else if(rate.compareTo(BigDecimal.valueOf(0.3)) >= 0 && rate.compareTo(BigDecimal.valueOf(0.5)) < 1){
|
Cn1 = SpiWeighValue.RISK_CN1_L4;
|
}else if(rate.compareTo(BigDecimal.valueOf(0.3)) < 0){
|
Cn1 = SpiWeighValue.RISK_CN1_L5;
|
}
|
}
|
BigDecimal Cn2 = BigDecimal.valueOf(0);
|
if(riskDataBO.getGeneralRiskData().getRiskCount() != null && riskDataBO.getGeneralRiskData().getRiskCount() > 0){
|
BigDecimal rate =
|
BigDecimal.valueOf(riskDataBO.getGeneralRiskData().getRectifyCount()).divide(BigDecimal.valueOf(riskDataBO.getGeneralRiskData().getRiskCount()));
|
if(rate.compareTo(BigDecimal.valueOf(1)) == 0){
|
Cn2 = SpiWeighValue.RISK_CN2_L1;
|
}else if(rate.compareTo(BigDecimal.valueOf(0.8)) >= 0 && rate.compareTo(BigDecimal.valueOf(1)) < 1){
|
Cn2 = SpiWeighValue.RISK_CN2_L2;
|
}else if(rate.compareTo(BigDecimal.valueOf(0.5)) >= 0 && rate.compareTo(BigDecimal.valueOf(0.8)) < 1){
|
Cn2 = SpiWeighValue.RISK_CN2_L3;
|
}else if(rate.compareTo(BigDecimal.valueOf(0.3)) >= 0 && rate.compareTo(BigDecimal.valueOf(0.5)) < 1){
|
Cn2 = SpiWeighValue.RISK_CN2_L4;
|
}else if(rate.compareTo(BigDecimal.valueOf(0.3)) < 0){
|
Cn2 = SpiWeighValue.RISK_CN2_L5;
|
}
|
}
|
BigDecimal I3 =
|
B1.multiply(SpiWeighValue.RISK_B1).multiply(Cn1).add(B2.multiply(SpiWeighValue.RISK_B2).multiply(Cn2));
|
return I3;
|
}
|
|
|
/**
|
* 计算I6
|
* @param emergencyDataBO
|
* @return
|
*/
|
public BigDecimal calI6(EmergencyDataBO emergencyDataBO){
|
if(emergencyDataBO == null || emergencyDataBO.getPracticeData() == null || emergencyDataBO.getPracticeData().isEmpty())
|
return null;
|
//公司级演练数量统计
|
BigDecimal emergencyCountLevelCompany = BigDecimal.valueOf(0);
|
//事业部级演练数量统计
|
BigDecimal emergencyCountLevelBUSINESS = BigDecimal.valueOf(0);
|
//车间级演练数量统计
|
BigDecimal emergencyCountLevelWORKSHOP = BigDecimal.valueOf(0);
|
//班组级演练数量统计
|
BigDecimal emergencyCountLevelGROUP = BigDecimal.valueOf(0);
|
|
for(EmergencyCountBO countBO : emergencyDataBO.getPracticeData()){
|
if(countBO.getDepLevel().equals(DepartmentLevelEnum.COMPANY.code)){
|
//公司级
|
emergencyCountLevelCompany = BigDecimal.valueOf(countBO.getPracticeCount());
|
}else if(countBO.getDepLevel().equals(DepartmentLevelEnum.BUSINESS.code)){
|
//事业部级
|
emergencyCountLevelBUSINESS = BigDecimal.valueOf(countBO.getPracticeCount());
|
}else if(countBO.getDepLevel().equals(DepartmentLevelEnum.WORKSHOP.code)){
|
//车间级
|
emergencyCountLevelWORKSHOP = BigDecimal.valueOf(countBO.getPracticeCount());
|
}else if(countBO.getDepLevel().equals(DepartmentLevelEnum.GROUP.code)){
|
//班组级
|
emergencyCountLevelGROUP = BigDecimal.valueOf(countBO.getPracticeCount());
|
}
|
}
|
|
BigDecimal I6 =
|
emergencyCountLevelCompany.multiply(SpiWeighValue.EMERGENCY_F1)
|
.add(emergencyCountLevelBUSINESS.multiply(SpiWeighValue.EMERGENCY_F2))
|
.add(emergencyCountLevelWORKSHOP.multiply(SpiWeighValue.EMERGENCY_F3))
|
.add(emergencyCountLevelGROUP.multiply(SpiWeighValue.EMERGENCY_F4));
|
return I6;
|
}
|
|
/**
|
* 计算I7值
|
* @param emergencyDataBO
|
* @param isCalMonth
|
* @param year
|
* @param month
|
* @return
|
*/
|
public BigDecimal calI7(EmergencyDataBO emergencyDataBO, boolean isCalMonth, Integer year,
|
Integer month){
|
if(emergencyDataBO == null || emergencyDataBO.getPracticeData() == null || emergencyDataBO.getPracticeData().isEmpty())
|
return null;
|
//1、计算应急演练次数
|
//公司级演练数量统计
|
BigDecimal emergencyCountLevelCompany = BigDecimal.valueOf(0);
|
//事业部级演练数量统计
|
BigDecimal emergencyCountLevelBUSINESS = BigDecimal.valueOf(0);
|
//车间级演练数量统计
|
BigDecimal emergencyCountLevelWORKSHOP = BigDecimal.valueOf(0);
|
//班组级演练数量统计
|
BigDecimal emergencyCountLevelGROUP = BigDecimal.valueOf(0);
|
|
for(EmergencyCountBO countBO : emergencyDataBO.getPracticeData()){
|
if(countBO.getDepLevel().equals(DepartmentLevelEnum.COMPANY.code)){
|
//公司级
|
emergencyCountLevelCompany = BigDecimal.valueOf(countBO.getPracticeCount());
|
}else if(countBO.getDepLevel().equals(DepartmentLevelEnum.BUSINESS.code)){
|
//事业部级
|
emergencyCountLevelBUSINESS = BigDecimal.valueOf(countBO.getPracticeCount());
|
}else if(countBO.getDepLevel().equals(DepartmentLevelEnum.WORKSHOP.code)){
|
//车间级
|
emergencyCountLevelWORKSHOP = BigDecimal.valueOf(countBO.getPracticeCount());
|
}else if(countBO.getDepLevel().equals(DepartmentLevelEnum.GROUP.code)){
|
//班组级
|
emergencyCountLevelGROUP = BigDecimal.valueOf(countBO.getPracticeCount());
|
}
|
}
|
|
//2、分析演练后时间
|
//当前时间
|
LocalDateTime nowTime = LocalDateTime.now();
|
if(isCalMonth == true){
|
//月度统计,则计算该月最后的时间
|
LocalDateTime ld = LocalDateTime.of(year,month,1,0,0,0);
|
DateTime dt = DateUtil.endOfMonth(Date.from(ld.atZone(ZoneId.systemDefault()).toInstant()));
|
if(year == nowTime.getYear() && month == nowTime.getMonthValue()){
|
//查询的是当月
|
}else {
|
//查询的是往年往月
|
nowTime = dt.toLocalDateTime();
|
}
|
}
|
//公司级最后一次演练时间
|
LocalDateTime lastExecuteTimeCompany = null;
|
//事业部级最后一次演练时间
|
LocalDateTime lastExecuteTimeBUSINESS = null;
|
//车间级最后一次演练时间
|
LocalDateTime lastExecuteTimeWORKSHOP = null;
|
//班组级最后一次演练时间
|
LocalDateTime lastExecuteTimeGROUP = null;
|
for(EmergencyCountBO countBO : emergencyDataBO.getPracticeData()){
|
LocalDateTime lastExecTime = countBO.getLastPracticeTime();
|
if(countBO.getDepLevel().equals(DepartmentLevelEnum.COMPANY.code)){
|
//公司级
|
if(lastExecuteTimeCompany == null) {
|
lastExecuteTimeCompany = lastExecTime;
|
} else {
|
if(lastExecuteTimeCompany.isBefore(lastExecTime))
|
lastExecuteTimeCompany = lastExecTime;
|
}
|
}else if(countBO.getDepLevel().equals(DepartmentLevelEnum.BUSINESS.code)){
|
//事业部级
|
if(lastExecuteTimeBUSINESS == null) {
|
lastExecuteTimeBUSINESS = lastExecTime;
|
} else {
|
if(lastExecuteTimeBUSINESS.isBefore(lastExecTime))
|
lastExecuteTimeBUSINESS = lastExecTime;
|
}
|
}else if(countBO.getDepLevel().equals(DepartmentLevelEnum.WORKSHOP.code)){
|
//车间级
|
if(lastExecuteTimeWORKSHOP == null) {
|
lastExecuteTimeWORKSHOP = lastExecTime;
|
} else {
|
if(lastExecuteTimeWORKSHOP.isBefore(lastExecTime))
|
lastExecuteTimeWORKSHOP = lastExecTime;
|
}
|
}else if(countBO.getDepLevel().equals(DepartmentLevelEnum.GROUP.code)){
|
//班组级
|
if(lastExecuteTimeGROUP == null) {
|
lastExecuteTimeGROUP = lastExecTime;
|
} else {
|
if(lastExecuteTimeGROUP.isBefore(lastExecTime))
|
lastExecuteTimeGROUP = lastExecTime;
|
}
|
}
|
}
|
|
//公司级演练后权值
|
BigDecimal i7WeightValCompany = BigDecimal.valueOf(0);
|
//事业部级演练后权值
|
BigDecimal i7WeightValBUSINESS = BigDecimal.valueOf(0);
|
//车间级演练后权值
|
BigDecimal i7WeightValWORKSHOP = BigDecimal.valueOf(0);
|
//班组级演练后权值
|
BigDecimal i7WeightValGROUP = BigDecimal.valueOf(0);
|
|
//计算各级别演习间隔天数对应权值
|
//公司级
|
if(lastExecuteTimeCompany != null){
|
if(lastExecuteTimeCompany.plusDays(21).isBefore(nowTime)){
|
i7WeightValCompany = SpiWeighValue.EMERGENCY_GN1_L4;
|
}else if(lastExecuteTimeCompany.plusDays(14).isBefore(nowTime)){
|
i7WeightValCompany = SpiWeighValue.EMERGENCY_GN1_L3;
|
}else if(lastExecuteTimeCompany.plusDays(7).isBefore(nowTime)){
|
i7WeightValCompany = SpiWeighValue.EMERGENCY_GN1_L2;
|
}else {
|
i7WeightValCompany = SpiWeighValue.EMERGENCY_GN1_L1;
|
}
|
}
|
//事业部级
|
if(lastExecuteTimeBUSINESS != null){
|
if(lastExecuteTimeBUSINESS.plusDays(21).isBefore(nowTime)){
|
i7WeightValBUSINESS = SpiWeighValue.EMERGENCY_GN2_L4;
|
}else if(lastExecuteTimeBUSINESS.plusDays(14).isBefore(nowTime)){
|
i7WeightValBUSINESS = SpiWeighValue.EMERGENCY_GN2_L3;
|
}else if(lastExecuteTimeBUSINESS.plusDays(7).isBefore(nowTime)){
|
i7WeightValBUSINESS = SpiWeighValue.EMERGENCY_GN2_L2;
|
}else {
|
i7WeightValBUSINESS = SpiWeighValue.EMERGENCY_GN2_L1;
|
}
|
}
|
//车间级
|
if(lastExecuteTimeWORKSHOP != null){
|
if(lastExecuteTimeWORKSHOP.plusDays(21).isBefore(nowTime)){
|
i7WeightValWORKSHOP = SpiWeighValue.EMERGENCY_GN3_L4;
|
}else if(lastExecuteTimeWORKSHOP.plusDays(14).isBefore(nowTime)){
|
i7WeightValWORKSHOP = SpiWeighValue.EMERGENCY_GN3_L3;
|
}else if(lastExecuteTimeWORKSHOP.plusDays(7).isBefore(nowTime)){
|
i7WeightValWORKSHOP = SpiWeighValue.EMERGENCY_GN3_L2;
|
}else {
|
i7WeightValWORKSHOP = SpiWeighValue.EMERGENCY_GN3_L1;
|
}
|
}
|
//班组级
|
if(lastExecuteTimeGROUP != null){
|
if(lastExecuteTimeGROUP.plusDays(21).isBefore(nowTime)){
|
i7WeightValGROUP = SpiWeighValue.EMERGENCY_GN4_L4;
|
}else if(lastExecuteTimeGROUP.plusDays(14).isBefore(nowTime)){
|
i7WeightValGROUP = SpiWeighValue.EMERGENCY_GN4_L3;
|
}else if(lastExecuteTimeGROUP.plusDays(7).isBefore(nowTime)){
|
i7WeightValGROUP = SpiWeighValue.EMERGENCY_GN4_L2;
|
}else {
|
i7WeightValGROUP = SpiWeighValue.EMERGENCY_GN4_L1;
|
}
|
}
|
|
//计算I7值
|
BigDecimal i7 = emergencyCountLevelCompany.multiply(SpiWeighValue.EMERGENCY_F1).multiply(i7WeightValCompany)
|
.add(emergencyCountLevelBUSINESS.multiply(SpiWeighValue.EMERGENCY_F2).multiply(i7WeightValBUSINESS))
|
.add(emergencyCountLevelWORKSHOP.multiply(SpiWeighValue.EMERGENCY_F3).multiply(i7WeightValWORKSHOP))
|
.add(emergencyCountLevelGROUP.multiply(SpiWeighValue.EMERGENCY_F4).multiply(i7WeightValGROUP));
|
return i7;
|
}
|
|
|
/**
|
* 计算I8值
|
* @param incidentDataBO
|
* @return
|
*/
|
public BigDecimal calI8Val(IncidentDataBO incidentDataBO){
|
if(incidentDataBO == null)
|
return null;
|
//特大事故计数
|
BigDecimal lv1Count = BigDecimal.valueOf(0);
|
if(incidentDataBO.getL1AccidentData() != null){
|
lv1Count = BigDecimal.valueOf(incidentDataBO.getL1AccidentData().getAccidentCount());
|
}
|
//重大事故计数
|
BigDecimal lv2Count = BigDecimal.valueOf(0);
|
if(incidentDataBO.getL2AccidentData() != null){
|
lv2Count = BigDecimal.valueOf(incidentDataBO.getL2AccidentData().getAccidentCount());
|
}
|
//较大事故计数
|
BigDecimal lv3Count = BigDecimal.valueOf(0);
|
if(incidentDataBO.getL3AccidentData() != null){
|
lv3Count = BigDecimal.valueOf(incidentDataBO.getL3AccidentData().getAccidentCount());
|
}
|
//一般事故计数
|
BigDecimal lv4Count = BigDecimal.valueOf(0);
|
if(incidentDataBO.getL4AccidentData() != null){
|
lv4Count = BigDecimal.valueOf(incidentDataBO.getL4AccidentData().getAccidentCount());
|
}
|
//未遂事故
|
BigDecimal lv5Count = BigDecimal.valueOf(0);
|
if(incidentDataBO.getL5AccidentData() != null){
|
lv5Count = BigDecimal.valueOf(incidentDataBO.getL5AccidentData().getAccidentCount());
|
}
|
|
//计算I8值
|
BigDecimal I8 =
|
lv1Count.multiply(SpiWeighValue.INCIDENT_H1).add(lv2Count.multiply(SpiWeighValue.INCIDENT_H2))
|
.add(lv3Count.multiply(SpiWeighValue.INCIDENT_H3))
|
.add(lv4Count.multiply(SpiWeighValue.INCIDENT_H4))
|
.add(lv5Count.multiply(SpiWeighValue.INCIDENT_H5));
|
return I8;
|
}
|
|
|
/**
|
* 计算I9
|
* @param incidentDataBO
|
* @return
|
*/
|
public BigDecimal calI9Val(IncidentDataBO incidentDataBO){
|
if(incidentDataBO == null)
|
return null;
|
//特大事故计数
|
BigDecimal lv1Count = BigDecimal.valueOf(0);
|
//重大事故计数
|
BigDecimal lv2Count = BigDecimal.valueOf(0);
|
//较大事故计数
|
BigDecimal lv3Count = BigDecimal.valueOf(0);
|
//一般事故计数
|
BigDecimal lv4Count = BigDecimal.valueOf(0);
|
//未遂事故计数
|
BigDecimal lv5Count = BigDecimal.valueOf(0);
|
|
//特别重大事故导致的死亡计数
|
BigDecimal lv1DeathCount = BigDecimal.valueOf(0);
|
//特别重大事故导致的轻伤计数
|
BigDecimal lv1LightInjuryCount = BigDecimal.valueOf(0);
|
//特别重大事故导致的重伤计数
|
BigDecimal lv1HeavyInjuryCount = BigDecimal.valueOf(0);
|
//特别重大事故导致的经济损失
|
BigDecimal lv1LossMoney = BigDecimal.valueOf(0);
|
|
//重大事故导致的死亡计数
|
BigDecimal lv2DeathCount = BigDecimal.valueOf(0);
|
//重大事故导致的轻伤计数
|
BigDecimal lv2LightInjuryCount = BigDecimal.valueOf(0);
|
//重大事故导致的重伤计数
|
BigDecimal lv2HeavyInjuryCount = BigDecimal.valueOf(0);
|
//重大事故导致的经济损失
|
BigDecimal lv2LossMoney = BigDecimal.valueOf(0);
|
|
//较大事故导致的死亡计数
|
BigDecimal lv3DeathCount = BigDecimal.valueOf(0);
|
//较大事故导致的轻伤计数
|
BigDecimal lv3LightInjuryCount = BigDecimal.valueOf(0);
|
//较大事故导致的重伤计数
|
BigDecimal lv3HeavyInjuryCount = BigDecimal.valueOf(0);
|
//较大事故导致的经济损失
|
BigDecimal lv3LossMoney = BigDecimal.valueOf(0);
|
|
//一般事故导致的死亡计数
|
BigDecimal lv4DeathCount = BigDecimal.valueOf(0);
|
//一般事故导致的轻伤计数
|
BigDecimal lv4LightInjuryCount = BigDecimal.valueOf(0);
|
//一般事故导致的重伤计数
|
BigDecimal lv4HeavyInjuryCount = BigDecimal.valueOf(0);
|
//一般事故导致的经济损失
|
BigDecimal lv4LossMoney = BigDecimal.valueOf(0);
|
|
//未遂事故导致的死亡计数
|
BigDecimal lv5DeathCount = BigDecimal.valueOf(0);
|
//未遂事故导致的轻伤计数
|
BigDecimal lv5LightInjuryCount = BigDecimal.valueOf(0);
|
//未遂事故导致的重伤计数
|
BigDecimal lv5HeavyInjuryCount = BigDecimal.valueOf(0);
|
//未遂事故导致的经济损失
|
BigDecimal lv5LossMoney = BigDecimal.valueOf(0);
|
|
if(incidentDataBO.getL1AccidentData() != null){
|
lv1Count = BigDecimal.valueOf(incidentDataBO.getL1AccidentData().getAccidentCount());
|
lv1DeathCount = BigDecimal.valueOf(incidentDataBO.getL1AccidentData().getCauseDeathCount());
|
lv1HeavyInjuryCount = BigDecimal.valueOf(incidentDataBO.getL1AccidentData().getCauseHeavyInjureCount());
|
lv1LightInjuryCount = BigDecimal.valueOf(incidentDataBO.getL1AccidentData().getCauseLightInjureCount());
|
lv1LossMoney = incidentDataBO.getL1AccidentData().getLoss();
|
}
|
|
if(incidentDataBO.getL2AccidentData() != null){
|
lv2Count = BigDecimal.valueOf(incidentDataBO.getL2AccidentData().getAccidentCount());
|
lv2DeathCount = BigDecimal.valueOf(incidentDataBO.getL2AccidentData().getCauseDeathCount());
|
lv2HeavyInjuryCount = BigDecimal.valueOf(incidentDataBO.getL2AccidentData().getCauseHeavyInjureCount());
|
lv2LightInjuryCount = BigDecimal.valueOf(incidentDataBO.getL2AccidentData().getCauseLightInjureCount());
|
lv2LossMoney = incidentDataBO.getL2AccidentData().getLoss();
|
}
|
|
if(incidentDataBO.getL3AccidentData() != null){
|
lv3Count = BigDecimal.valueOf(incidentDataBO.getL3AccidentData().getAccidentCount());
|
lv3DeathCount = BigDecimal.valueOf(incidentDataBO.getL3AccidentData().getCauseDeathCount());
|
lv3HeavyInjuryCount = BigDecimal.valueOf(incidentDataBO.getL3AccidentData().getCauseHeavyInjureCount());
|
lv3LightInjuryCount = BigDecimal.valueOf(incidentDataBO.getL3AccidentData().getCauseLightInjureCount());
|
lv3LossMoney = incidentDataBO.getL3AccidentData().getLoss();
|
}
|
|
if(incidentDataBO.getL4AccidentData() != null){
|
lv4Count = BigDecimal.valueOf(incidentDataBO.getL4AccidentData().getAccidentCount());
|
lv4DeathCount = BigDecimal.valueOf(incidentDataBO.getL4AccidentData().getCauseDeathCount());
|
lv4HeavyInjuryCount = BigDecimal.valueOf(incidentDataBO.getL4AccidentData().getCauseHeavyInjureCount());
|
lv4LightInjuryCount = BigDecimal.valueOf(incidentDataBO.getL4AccidentData().getCauseLightInjureCount());
|
lv4LossMoney = incidentDataBO.getL4AccidentData().getLoss();
|
}
|
|
if(incidentDataBO.getL5AccidentData() != null){
|
lv5Count = BigDecimal.valueOf(incidentDataBO.getL5AccidentData().getAccidentCount());
|
lv5DeathCount = BigDecimal.valueOf(incidentDataBO.getL5AccidentData().getCauseDeathCount());
|
lv5HeavyInjuryCount = BigDecimal.valueOf(incidentDataBO.getL5AccidentData().getCauseHeavyInjureCount());
|
lv5LightInjuryCount = BigDecimal.valueOf(incidentDataBO.getL5AccidentData().getCauseLightInjureCount());
|
lv5LossMoney = incidentDataBO.getL5AccidentData().getLoss();
|
}
|
|
|
|
//计算Jn值
|
//特别重大事故
|
BigDecimal J1 =
|
lv1DeathCount.multiply(SpiWeighValue.INCIDENT_JX1)
|
.add(lv1HeavyInjuryCount.multiply(SpiWeighValue.INCIDENT_JX2))
|
.add(lv1LightInjuryCount.multiply(SpiWeighValue.INCIDENT_JX3))
|
.add(lv1LossMoney.divide(BigDecimal.valueOf(100000),BigDecimal.ROUND_CEILING).multiply(SpiWeighValue.INCIDENT_JX4));
|
//重大事故
|
BigDecimal J2 =
|
lv2DeathCount.multiply(SpiWeighValue.INCIDENT_JX1)
|
.add(lv2HeavyInjuryCount.multiply(SpiWeighValue.INCIDENT_JX2))
|
.add(lv2LightInjuryCount.multiply(SpiWeighValue.INCIDENT_JX3))
|
.add(lv2LossMoney.divide(BigDecimal.valueOf(100000),BigDecimal.ROUND_CEILING).multiply(SpiWeighValue.INCIDENT_JX4));
|
//较大事故
|
BigDecimal J3 =
|
lv3DeathCount.multiply(SpiWeighValue.INCIDENT_JX1)
|
.add(lv3HeavyInjuryCount.multiply(SpiWeighValue.INCIDENT_JX2))
|
.add(lv3LightInjuryCount.multiply(SpiWeighValue.INCIDENT_JX3))
|
.add(lv3LossMoney.divide(BigDecimal.valueOf(100000),BigDecimal.ROUND_CEILING).multiply(SpiWeighValue.INCIDENT_JX4));
|
//一般事故
|
BigDecimal J4 =
|
lv4DeathCount.multiply(SpiWeighValue.INCIDENT_JX1)
|
.add(lv4HeavyInjuryCount.multiply(SpiWeighValue.INCIDENT_JX2))
|
.add(lv4LightInjuryCount.multiply(SpiWeighValue.INCIDENT_JX3))
|
.add(lv4LossMoney.divide(BigDecimal.valueOf(100000),BigDecimal.ROUND_CEILING).multiply(SpiWeighValue.INCIDENT_JX4));
|
|
|
//计算I9值
|
BigDecimal I9 =
|
lv1Count.multiply(J1).add(lv2Count.multiply(J2)).add(lv3Count.multiply(J3)).add(lv4Count.multiply(J4));
|
return I9;
|
}
|
|
}
|