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 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 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 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 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 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 selectCriterionDetailListByCriterionId(Long criterionId){ CriterionDetail detail = new CriterionDetail(); detail.setCriterionId(criterionId); return criterionDetailMapper.selectCriterionDetailList(detail); } }