package com.gkhy.labRiskManage.domain.riskReport.service.impl; import com.gkhy.labRiskManage.api.controller.riskReport.dto.repDto.RiskAssessPlanEvaluateDeleteReqBO; import com.gkhy.labRiskManage.commons.enums.MethodEnum; import com.gkhy.labRiskManage.commons.enums.ResultCode; import com.gkhy.labRiskManage.commons.enums.StatusEnum; import com.gkhy.labRiskManage.commons.exception.BusinessException; import com.gkhy.labRiskManage.commons.utils.BeanCopyUtils; import com.gkhy.labRiskManage.domain.riskReport.entity.RiskAssessPlanEvaluateLec; import com.gkhy.labRiskManage.domain.riskReport.entity.RiskAssessPlanEvaluateLs; import com.gkhy.labRiskManage.domain.riskReport.model.bo.AssessLSInsertBO; import com.gkhy.labRiskManage.domain.riskReport.model.dto.*; import com.gkhy.labRiskManage.domain.riskReport.repository.jpa.RiskAssessPlanEvaluateLsRepository; import com.gkhy.labRiskManage.domain.riskReport.service.RiskAssessPlanEvaluateLsService; import com.gkhy.labRiskManage.domain.riskReport.utils.IdentificationMethodCheck; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; /** * 评价方法LS */ @Service public class RiskAssessPlanEvaluateLsServiceImpl implements RiskAssessPlanEvaluateLsService { @Autowired private RiskAssessPlanEvaluateLsRepository lsRepository; /** * 评价方法LS - 插入 */ @Override public LsInsertDTO insertLs(Long currentUserId, AssessLSInsertBO lsInsertBO) { EvaluateInsertDTO insertDTO = new EvaluateInsertDTO(); insertDTO.setResult(1); IdentificationMethodCheck methodCheck = new IdentificationMethodCheck(); //校验辨识方法是否存在 int result = methodCheck.identificationMethodCheck(lsInsertBO.getIdentificationId(), lsInsertBO.getIdentificationMethod()); if (result == 0){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "辨识方法不存在"); } if (ObjectUtils.isEmpty(lsInsertBO.getAssessPlanId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价的计划不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getLsL())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "LS_L的数值不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getLsS())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "LS_S的数值不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getRiskValue())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getOriginalLsL())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有LS_L的数值不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getOriginalLsS())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有LS_S的数值不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getOriginalRiskValue())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有风险数值不能为空"); } RiskAssessPlanEvaluateLs lsByIdentification = lsRepository.getLsByIdentification(lsInsertBO.getIdentificationId(), lsInsertBO.getIdentificationMethod()); if (!ObjectUtils.isEmpty(lsByIdentification)){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "该辨识已经被评价,无需重复操作"); } if (ObjectUtils.isEmpty(lsInsertBO.getEvaluateDesc())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价专家意见不能为空"); } BigDecimal value = lsInsertBO.getLsL().multiply(lsInsertBO.getLsS()); //BigDecimal类型比较,结果为0是相等 if (value.compareTo(lsInsertBO.getRiskValue()) != 0){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值计算有误,无法保存"); } if (ObjectUtils.isEmpty(lsInsertBO.getSafeRiskAnalysis())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "安全风险分析内容不能为空"); } RiskAssessPlanEvaluateLs ls = new RiskAssessPlanEvaluateLs(); //设置参数 if (value.compareTo(new BigDecimal(10)) < 0){ ls.setRiskLevel(MethodEnum.RISK_LEVEL_1.getCode()); ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_1.getCode()); ls.setRiskColor(MethodEnum.RISK_LEVEL_1.getCode()); }else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_1.getCode())) > 0 && value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_2.getCode())) < 0){ ls.setRiskLevel(MethodEnum.RISK_LEVEL_2.getCode()); ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_2.getCode()); ls.setRiskColor(MethodEnum.RISK_LEVEL_2.getCode()); }else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_2.getCode())) > 0 && value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) < 0){ ls.setRiskLevel(MethodEnum.RISK_LEVEL_3.getCode()); ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_3.getCode()); ls.setRiskColor(MethodEnum.RISK_LEVEL_3.getCode()); }else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) > 0){ ls.setRiskLevel(MethodEnum.RISK_LEVEL_4.getCode()); ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_4.getCode()); ls.setRiskColor(MethodEnum.RISK_LEVEL_4.getCode()); } LocalDateTime date = LocalDateTime.now(); ls.setIdentificationId(lsInsertBO.getIdentificationId()); ls.setIdentificationMethod(lsInsertBO.getIdentificationMethod()); ls.setAssessPlanId(lsInsertBO.getAssessPlanId()); ls.setLsL(lsInsertBO.getLsL()); ls.setLsS(lsInsertBO.getLsS()); ls.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue()); ls.setCreateTime(date); ls.setUpdateTime(date); ls.setRiskValue(lsInsertBO.getRiskValue()); ls.setManageLevel(lsInsertBO.getManageLevel()); ls.setStatus((byte) 1); ls.setEvaluateDesc(lsInsertBO.getEvaluateDesc()); ls.setEducationMeasure(lsInsertBO.getEducationMeasure()); ls.setTechnologyMeasure(lsInsertBO.getTechnologyMeasure()); ls.setManageMeasure(lsInsertBO.getManageMeasure()); ls.setPersonalProtectionMeasure(lsInsertBO.getPersonalProtectionMeasure()); ls.setEmergencyMeasure(lsInsertBO.getEmergencyMeasure()); ls.setOriginalLsL(lsInsertBO.getOriginalLsL()); ls.setOriginalLsS(lsInsertBO.getOriginalLsS()); ls.setOriginalRiskValue(lsInsertBO.getOriginalRiskValue()); ls.setOriginalRiskLevelValue(lsInsertBO.getOriginalRiskLevelValue()); ls.setOriginalRiskLevel(lsInsertBO.getOriginalRiskLevel()); ls.setOriginalRiskColor(lsInsertBO.getOriginalRiskColor()); ls.setOriginalManageLevel(lsInsertBO.getOriginalManageLevel()); ls.setAdviseTechnologyMeasure(lsInsertBO.getAdviseTechnologyMeasure()); ls.setAdviseManageMeasure(lsInsertBO.getAdviseManageMeasure()); ls.setAdviseEmergencyMeasure(lsInsertBO.getAdviseEmergencyMeasure()); ls.setAdviseEducationMeasure(lsInsertBO.getAdviseEducationMeasure()); ls.setAdvisePersonalProtectionMeasure(lsInsertBO.getAdvisePersonalProtectionMeasure()); ls.setSafeRiskAnalysis(lsInsertBO.getSafeRiskAnalysis()); RiskAssessPlanEvaluateLs insertResult = lsRepository.save(ls); return BeanCopyUtils.copyBean(insertResult, LsInsertDTO.class); } /** * 评价方法LS - 修改 */ @Override public LecInsertDTO updateLs(Long currentUserId, AssessLSInsertBO lsInsertBO) { EvaluateInsertDTO insertDTO = new EvaluateInsertDTO(); insertDTO.setResult(1); if (ObjectUtils.isEmpty(lsInsertBO.getId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要修改的评价内容不能为空"); } RiskAssessPlanEvaluateLs lsById = lsRepository.getLsById(lsInsertBO.getId()); if (ObjectUtils.isEmpty(lsById)){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要修改的评价不存在"); } if (ObjectUtils.isEmpty(lsInsertBO.getAssessPlanId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价的计划不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getLsL())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "LS_L的数值不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getLsS())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "LS_S的数值不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getRiskValue())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getEvaluateDesc())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价专家意见不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getOriginalLsL())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有LS_L的数值不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getOriginalLsS())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有LS_S的数值不能为空"); } if (ObjectUtils.isEmpty(lsInsertBO.getOriginalRiskValue())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有风险数值不能为空"); } BigDecimal value = lsInsertBO.getLsL().multiply(lsInsertBO.getLsS()); //BigDecimal类型比较,结果为0是相等 if (value.compareTo(lsInsertBO.getRiskValue()) != 0){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值计算有误,无法保存"); } if (ObjectUtils.isEmpty(lsInsertBO.getSafeRiskAnalysis())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "安全风险分析内容不能为空"); } //设置参数 LocalDateTime date = LocalDateTime.now(); RiskAssessPlanEvaluateLs ls = BeanCopyUtils.copyBean(lsById, RiskAssessPlanEvaluateLs.class); if (value.compareTo(new BigDecimal(10)) < 0){ ls.setRiskLevel(MethodEnum.RISK_LEVEL_1.getCode()); ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_1.getCode()); ls.setRiskColor(MethodEnum.RISK_LEVEL_1.getCode()); }else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_1.getCode())) > 0 && value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_2.getCode())) < 0){ ls.setRiskLevel(MethodEnum.RISK_LEVEL_2.getCode()); ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_2.getCode()); ls.setRiskColor(MethodEnum.RISK_LEVEL_2.getCode()); }else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_2.getCode())) > 0 && value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) < 0){ ls.setRiskLevel(MethodEnum.RISK_LEVEL_3.getCode()); ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_3.getCode()); ls.setRiskColor(MethodEnum.RISK_LEVEL_3.getCode()); }else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) > 0){ ls.setRiskLevel(MethodEnum.RISK_LEVEL_4.getCode()); ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_4.getCode()); ls.setRiskColor(MethodEnum.RISK_LEVEL_4.getCode()); } ls.setLsL(lsInsertBO.getLsL()); ls.setLsS(lsInsertBO.getLsS()); ls.setUpdateTime(date); ls.setRiskValue(lsInsertBO.getRiskValue()); ls.setManageLevel(lsInsertBO.getManageLevel()); ls.setEvaluateDesc(lsInsertBO.getEvaluateDesc()); ls.setEducationMeasure(lsInsertBO.getEducationMeasure()); ls.setTechnologyMeasure(lsInsertBO.getTechnologyMeasure()); ls.setManageMeasure(lsInsertBO.getManageMeasure()); ls.setPersonalProtectionMeasure(lsInsertBO.getPersonalProtectionMeasure()); ls.setEmergencyMeasure(lsInsertBO.getEmergencyMeasure()); ls.setOriginalLsL(lsInsertBO.getOriginalLsL()); ls.setOriginalLsS(lsInsertBO.getOriginalLsS()); ls.setOriginalRiskValue(lsInsertBO.getOriginalRiskValue()); ls.setOriginalRiskLevelValue(lsInsertBO.getOriginalRiskLevelValue()); ls.setOriginalRiskLevel(lsInsertBO.getOriginalRiskLevel()); ls.setOriginalRiskColor(lsInsertBO.getOriginalRiskColor()); ls.setOriginalManageLevel(lsInsertBO.getOriginalManageLevel()); ls.setAdviseTechnologyMeasure(lsInsertBO.getAdviseTechnologyMeasure()); ls.setAdviseManageMeasure(lsInsertBO.getAdviseManageMeasure()); ls.setAdviseEmergencyMeasure(lsInsertBO.getAdviseEmergencyMeasure()); ls.setAdviseEducationMeasure(lsInsertBO.getAdviseEducationMeasure()); ls.setAdvisePersonalProtectionMeasure(lsInsertBO.getAdvisePersonalProtectionMeasure()); ls.setSafeRiskAnalysis(lsInsertBO.getSafeRiskAnalysis()); RiskAssessPlanEvaluateLs insertResult = lsRepository.save(ls); return BeanCopyUtils.copyBean(insertResult, LecInsertDTO.class); } /** * 评价方法LS - 查询 */ @Override public LsQueryDTO getLsByPlanId(Long id) { RiskAssessPlanEvaluateLs lsById = lsRepository.getLsById(id); if (ObjectUtils.isEmpty(lsById)){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "ls评价方法不存在或已被删除"); } return BeanCopyUtils.copyBean(lsById, LsQueryDTO.class); } /** * 评价方法LS - 删除 */ @Override public EvaluateMethodDeleteDTO deleteLsByPlanId(Long currentUserId, RiskAssessPlanEvaluateDeleteReqBO deleteReqBO) { if (ObjectUtils.isEmpty(deleteReqBO.getLsId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要删除的评价项目不能为空"); } RiskAssessPlanEvaluateLs lsById = lsRepository.getLsById(deleteReqBO.getLsId()); if (ObjectUtils.isEmpty(lsById)){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要删除的评价项目为空,或已被删除"); } if (!lsById.getAssessPlanId().equals(deleteReqBO.getId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评估计划与评价项不匹配,无法删除"); } EvaluateMethodDeleteDTO deleteDTO = new EvaluateMethodDeleteDTO(); lsById.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue()); LocalDateTime date = LocalDateTime.now(); lsById.setUpdateTime(date); RiskAssessPlanEvaluateLs deleteResult = lsRepository.save(lsById); if (ObjectUtils.isEmpty(deleteResult)){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价方法不存在或已被删除"); } deleteDTO.setResult(StatusEnum.DELETED.getCode().byteValue()); return deleteDTO; } /** * 评价方法LS - list */ @Override public List listLsByPlanId(Long id) { List lsList = lsRepository.listLsByPlanId(id); return BeanCopyUtils.copyBeanList(lsList, LsQueryDTO.class); } @Override public List getLsByIds(List assessPlanIds) { return lsRepository.getLsByIds(assessPlanIds); } @Override public int deleteLsByAssessPlanId(Long id) { List lsList = lsRepository.getLsByAssessPlanId(id); if (lsList.size() < 1){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价方法不存在或已被删除"); } int i = 0; for (RiskAssessPlanEvaluateLs ls : lsList) { ls.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue()); RiskAssessPlanEvaluateLs save = lsRepository.save(ls); if (ObjectUtils.isEmpty(save)){ i = 1; } } return i; } @Override public int deleteLsByPlan(Long id) { List lsListByPlanId = lsRepository.getLsByPlanId(id); if (ObjectUtils.isEmpty(lsListByPlanId)){ return StatusEnum.SUCCESS.getCode(); } for (RiskAssessPlanEvaluateLs riskAssessPlanEvaluateLs : lsListByPlanId) { riskAssessPlanEvaluateLs.setEvaluateDesc(StatusEnum.DELETED.getDesc()); } List result = lsRepository.saveAll(lsListByPlanId); if (result.size() != lsListByPlanId.size()){ return StatusEnum.FAIL.getCode(); } return StatusEnum.SUCCESS.getCode(); } @Override public RiskAssessPlanEvaluateLs getLsByIdentificationId(Long id, Byte identificationMethod) { return lsRepository.getLsByIdentification(id, identificationMethod); } }