package com.ruoyi.project.tr.criterionDetail.service.impl;
|
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.text.Convert;
|
import com.ruoyi.project.enumerate.TrEvaluationMethodTypeEnum;
|
import com.ruoyi.project.tr.criterionDetail.domain.CriterionDetail;
|
import com.ruoyi.project.tr.criterionDetail.domain.CriterionDetailDTO;
|
import com.ruoyi.project.tr.criterionDetail.mapper.CriterionDetailMapper;
|
import com.ruoyi.project.tr.criterionDetail.service.ICriterionDetailService;
|
import com.ruoyi.project.tr.determination.domain.Determination;
|
import com.ruoyi.project.tr.determination.service.IDeterminationService;
|
import com.ruoyi.project.tr.riskLevel.domain.RiskLevel;
|
import com.ruoyi.project.tr.riskLevel.service.IRiskLevelService;
|
import com.ruoyi.project.tr.rsStandard.domain.RsStandard;
|
import com.ruoyi.project.tr.rsStandard.service.IRsStandardService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
import java.util.HashMap;
|
import java.util.List;
|
|
/**
|
* 准则明细Service业务层处理
|
*
|
* @author wm
|
* @date 2020-05-05
|
*/
|
@Service
|
public class CriterionDetailServiceImpl implements ICriterionDetailService
|
{
|
@Autowired
|
private CriterionDetailMapper criterionDetailMapper;
|
|
@Autowired
|
private IRiskLevelService riskLevelService;
|
|
@Autowired
|
private IDeterminationService determinationService;
|
|
@Autowired
|
private IRsStandardService rsStandardService;
|
|
|
/**
|
* 查询准则明细
|
*
|
* @param detailId 准则明细ID
|
* @return 准则明细
|
*/
|
@Override
|
public CriterionDetail selectCriterionDetailById(Long detailId)
|
{
|
return criterionDetailMapper.selectCriterionDetailById(detailId);
|
}
|
|
/**
|
* 查询准则明细列表
|
*
|
* @param criterionDetail 准则明细
|
* @return 准则明细
|
*/
|
@Override
|
public List<CriterionDetail> selectCriterionDetailList(CriterionDetail criterionDetail)
|
{
|
return criterionDetailMapper.selectCriterionDetailList(criterionDetail);
|
}
|
|
|
/**
|
* 新增准则明细
|
*
|
* @param criterionDetail 准则明细
|
* @return 结果
|
*/
|
@Override
|
public int insertCriterionDetail(CriterionDetail criterionDetail)
|
{
|
criterionDetail.setCreateTime(DateUtils.getNowDate());
|
return criterionDetailMapper.insertCriterionDetail(criterionDetail);
|
}
|
|
/**
|
* 修改准则明细
|
*
|
* @param criterionDetail 准则明细
|
* @return 结果
|
*/
|
@Override
|
public int updateCriterionDetail(CriterionDetail criterionDetail)
|
{
|
criterionDetail.setUpdateTime(DateUtils.getNowDate());
|
return criterionDetailMapper.updateCriterionDetail(criterionDetail);
|
}
|
|
/**
|
* 删除准则明细对象
|
*
|
* @param ids 需要删除的数据ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteCriterionDetailByIds(String ids)
|
{
|
return criterionDetailMapper.deleteCriterionDetailByIds(Convert.toStrArray(ids));
|
}
|
|
/**
|
* 删除准则明细信息
|
*
|
* @param detailId 准则明细ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteCriterionDetailById(Long detailId)
|
{
|
return criterionDetailMapper.deleteCriterionDetailById(detailId);
|
}
|
|
|
|
|
@Override
|
public HashMap<String, String> calculation(CriterionDetailDTO criterionDetailDTO)
|
{
|
Integer methodId = criterionDetailDTO.getEvaluationMethodType();
|
|
BigDecimal sum = BigDecimal.ZERO;
|
|
if (TrEvaluationMethodTypeEnum.LS.getMethodId().equals(methodId)) {
|
if(criterionDetailDTO.getLS_L()!=null && criterionDetailDTO.getLS_S()!=null){
|
//LS 评分方法积分
|
CriterionDetail l = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getLS_L());
|
CriterionDetail s = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getLS_S());
|
sum = l.getDetailScore().multiply(s.getDetailScore());
|
}
|
|
}else if (TrEvaluationMethodTypeEnum.LEC.getMethodId().equals(criterionDetailDTO.getEvaluationMethodType())){
|
if(criterionDetailDTO.getLEC_L()!=null && criterionDetailDTO.getLEC_E()!=null && criterionDetailDTO.getLEC_C()!=null){
|
//LEC 评分方法积分
|
CriterionDetail l = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getLEC_L());
|
CriterionDetail e = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getLEC_E());
|
CriterionDetail c = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getLEC_C());
|
sum = l.getDetailScore().multiply(e.getDetailScore()).multiply(c.getDetailScore());
|
}
|
|
}else if (TrEvaluationMethodTypeEnum.MES.getMethodId().equals(criterionDetailDTO.getEvaluationMethodType())){
|
if(criterionDetailDTO.getMES_M()!=null && criterionDetailDTO.getMES_E()!=null && criterionDetailDTO.getMES_S()!=null){
|
//MES 评分方法积分
|
CriterionDetail m = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getMES_M());
|
CriterionDetail e = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getMES_E());
|
CriterionDetail s = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getMES_S());
|
sum = m.getDetailScore().multiply(e.getDetailScore()).multiply(s.getDetailScore());
|
}
|
}else if (TrEvaluationMethodTypeEnum.RS.getMethodId().equals(criterionDetailDTO.getEvaluationMethodType())){
|
if(criterionDetailDTO.getRS_R()!=null && criterionDetailDTO.getRS_S()!=null){
|
//MES 评分方法积分
|
CriterionDetail r = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getRS_R());
|
CriterionDetail s = criterionDetailMapper.selectCriterionDetailById(criterionDetailDTO.getRS_S());
|
|
//根据对应 的可能性,和等级,获取确切的分值
|
RsStandard rsStandard = rsStandardService.selectRsStandardByKenengxingAndDengji(r.getRsRKenengxing(),s.getRsSDengji()) ;
|
|
if (StringUtils.isNotNull(rsStandard)){
|
sum = rsStandard.getResult();
|
}
|
}
|
}
|
|
//查询判断标准
|
List <Determination> determinationList = determinationService.selectDeterminationListByMethod(Long.parseLong(methodId.toString()));
|
|
Determination d_result =new Determination();
|
for(Determination d : determinationList){
|
//判断是否在这条范围之内
|
boolean flag = (sum.compareTo(d.getRiskMinNum())>0&& sum.compareTo(d.getRiskMaxNum())<0)
|
||sum.compareTo(d.getRiskMinNum())==0|| sum.compareTo(d.getRiskMaxNum())==0;
|
if(flag){
|
d_result =d;
|
}
|
}
|
|
//查询颜色标准
|
List <RiskLevel> riskLevelList = riskLevelService.selectRiskLevelListByMethodId(Long.parseLong(methodId.toString()));
|
RiskLevel r_result = new RiskLevel();
|
for(RiskLevel r : riskLevelList){
|
//判断是否在这条范围之内
|
boolean flag =(sum.compareTo(r.getLevelBeginNum())>0&& sum.compareTo(r.getLevelEndNum())<0)
|
||sum.compareTo(r.getLevelBeginNum())==0 ||sum.compareTo(r.getLevelEndNum())==0;
|
if(flag){
|
r_result =r;
|
}
|
}
|
|
sum = sum.setScale(2);
|
|
HashMap<String ,String> map = new HashMap<>();
|
|
|
/** 现有措施评价风险值 */
|
map.put("Fengxianzhi",sum.toString());
|
/** 现有措施评价级别 */
|
map.put("Jibie",d_result.getRiskLevel());
|
/** 现有措施评价风险级别 */
|
map.put("FengxianJibie",r_result.getRiskLevel());
|
/** 现有措施评价风险色 */
|
map.put("Fengxianse",r_result.getLevelColor());
|
/** 现有措施评价管控层级(1班组级,2车间级,3部门级,4公司级) */
|
map.put("GuankongCengji",r_result.getLevelControlLevel());
|
|
return map;
|
|
}
|
|
|
/**
|
* 根据规则id,查询该规则下,对应的评分细则
|
* @param criterionId
|
* @return
|
*/
|
@Override
|
public List<CriterionDetail> selectCriterionDetailListByCriterionId(Long criterionId){
|
CriterionDetail detail = new CriterionDetail();
|
detail.setCriterionId(criterionId);
|
|
return criterionDetailMapper.selectCriterionDetailList(detail);
|
}
|
}
|