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.entity.RiskAssessPlanEvaluateMes; import com.gkhy.labRiskManage.domain.riskReport.model.bo.AssessMesInsertBO; import com.gkhy.labRiskManage.domain.riskReport.model.dto.EvaluateInsertDTO; import com.gkhy.labRiskManage.domain.riskReport.model.dto.EvaluateMethodDeleteDTO; import com.gkhy.labRiskManage.domain.riskReport.model.dto.MesInsertDTO; import com.gkhy.labRiskManage.domain.riskReport.model.dto.MesQueryDTO; import com.gkhy.labRiskManage.domain.riskReport.repository.jpa.RiskAssessPlanEvaluateMesRepository; import com.gkhy.labRiskManage.domain.riskReport.service.RiskAssessPlanEvaluateMesService; 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; /** * 评价方法MES */ @Service public class RiskAssessPlanEvaluateMesServiceImpl implements RiskAssessPlanEvaluateMesService { @Autowired private RiskAssessPlanEvaluateMesRepository mesRepository; /** * 评价方法MES - 插入 */ @Override public MesInsertDTO InsertMes(Long currentUserId, AssessMesInsertBO mesInsertBO) { EvaluateInsertDTO insertDTO = new EvaluateInsertDTO(); insertDTO.setResult(1); IdentificationMethodCheck methodCheck = new IdentificationMethodCheck(); //校验辨识方法是否存在 int result = methodCheck.identificationMethodCheck(mesInsertBO.getIdentificationId(), mesInsertBO.getIdentificationMethod()); if (result == 0){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "辨识方法不存在"); } if (ObjectUtils.isEmpty(mesInsertBO.getAssessPlanId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价的计划不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getMesM())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_M的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getMesE())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_E的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getMesS())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_S的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getRiskValue())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesM())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_M的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesE())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_E的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesS())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_S的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getOriginalRiskValue())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有风险数值不能为空"); } RiskAssessPlanEvaluateMes mesByIdentification = mesRepository.getMesByIdentification(mesInsertBO.getIdentificationId(), mesInsertBO.getIdentificationMethod()); if (!ObjectUtils.isEmpty(mesByIdentification)){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "该辨识已经被评价,无需重复操作"); } if (ObjectUtils.isEmpty(mesInsertBO.getEvaluateDesc())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价专家意见不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getSafeRiskAnalysis())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "安全风险分析内容不能为空"); } BigDecimal value = mesInsertBO.getMesM().multiply(mesInsertBO.getMesE()).multiply(mesInsertBO.getMesS()); //BigDecimal类型比较,结果为0是相等 if (value.compareTo(mesInsertBO.getRiskValue()) != 0){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值计算有误,无法保存"); } //设置参数 LocalDateTime date = LocalDateTime.now(); RiskAssessPlanEvaluateMes mes = new RiskAssessPlanEvaluateMes(); if (value.compareTo(new BigDecimal(10)) < 0){ mes.setRiskLevel(MethodEnum.RISK_LEVEL_1.getCode()); mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_1.getCode()); mes.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){ mes.setRiskLevel(MethodEnum.RISK_LEVEL_2.getCode()); mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_2.getCode()); mes.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){ mes.setRiskLevel(MethodEnum.RISK_LEVEL_3.getCode()); mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_3.getCode()); mes.setRiskColor(MethodEnum.RISK_LEVEL_3.getCode()); }else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) > 0){ mes.setRiskLevel(MethodEnum.RISK_LEVEL_4.getCode()); mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_4.getCode()); mes.setRiskColor(MethodEnum.RISK_LEVEL_4.getCode()); } mes.setIdentificationId(mesInsertBO.getIdentificationId()); mes.setIdentificationMethod(mesInsertBO.getIdentificationMethod()); mes.setAssessPlanId(mesInsertBO.getAssessPlanId()); mes.setMesM(mesInsertBO.getMesM()); mes.setMesE(mesInsertBO.getMesE()); mes.setMesS(mesInsertBO.getMesS()); mes.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue()); mes.setCreateTime(date); mes.setUpdateTime(date); mes.setRiskValue(mesInsertBO.getRiskValue()); mes.setManageLevel(mesInsertBO.getManageLevel()); mes.setStatus((byte) 1); mes.setEvaluateDesc(mesInsertBO.getEvaluateDesc()); mes.setEducationMeasure(mesInsertBO.getEducationMeasure()); mes.setTechnologyMeasure(mesInsertBO.getTechnologyMeasure()); mes.setManageMeasure(mesInsertBO.getManageMeasure()); mes.setPersonalProtectionMeasure(mesInsertBO.getPersonalProtectionMeasure()); mes.setEmergencyMeasure(mesInsertBO.getEmergencyMeasure()); mes.setOriginalMesM(mesInsertBO.getOriginalMesM()); mes.setOriginalMesE(mesInsertBO.getOriginalMesE()); mes.setOriginalMesS(mesInsertBO.getOriginalMesS()); mes.setOriginalRiskValue(mesInsertBO.getOriginalRiskValue()); mes.setOriginalRiskLevelValue(mesInsertBO.getOriginalRiskLevelValue()); mes.setOriginalRiskLevel(mesInsertBO.getOriginalRiskLevel()); mes.setOriginalRiskColor(mesInsertBO.getOriginalRiskColor()); mes.setOriginalManageLevel(mesInsertBO.getOriginalManageLevel()); mes.setAdviseTechnologyMeasure(mesInsertBO.getAdviseTechnologyMeasure()); mes.setAdviseManageMeasure(mesInsertBO.getAdviseManageMeasure()); mes.setAdviseEmergencyMeasure(mesInsertBO.getAdviseEmergencyMeasure()); mes.setAdviseEducationMeasure(mesInsertBO.getAdviseEducationMeasure()); mes.setAdvisePersonalProtectionMeasure(mesInsertBO.getAdvisePersonalProtectionMeasure()); mes.setSafeRiskAnalysis(mesInsertBO.getSafeRiskAnalysis()); RiskAssessPlanEvaluateMes insertResult = mesRepository.save(mes); return BeanCopyUtils.copyBean(insertResult, MesInsertDTO.class); } /** * 评价方法MES - 修改 */ @Override public MesInsertDTO updateMes(Long currentUserId, AssessMesInsertBO mesInsertBO) { EvaluateInsertDTO insertDTO = new EvaluateInsertDTO(); insertDTO.setResult(1); if (ObjectUtils.isEmpty(mesInsertBO.getId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要修改的评价内容不能为空"); } RiskAssessPlanEvaluateMes mesById = mesRepository.getMesById(mesInsertBO.getId()); if (ObjectUtils.isEmpty(mesById)){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要修改的评价不存在"); } if (ObjectUtils.isEmpty(mesInsertBO.getAssessPlanId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价的计划不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getMesM())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_M的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getMesE())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_E的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getMesS())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_S的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getRiskValue())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getEvaluateDesc())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价专家意见不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesM())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_M的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesE())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_E的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesS())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_S的数值不能为空"); } if (ObjectUtils.isEmpty(mesInsertBO.getOriginalRiskValue())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有风险数值不能为空"); } BigDecimal value = mesInsertBO.getMesM().multiply(mesInsertBO.getMesE()).multiply(mesInsertBO.getMesS()); //BigDecimal类型比较,结果为0是相等 if (value.compareTo(mesInsertBO.getRiskValue()) != 0){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值计算有误,无法保存"); } //设置参数 LocalDateTime date = LocalDateTime.now(); RiskAssessPlanEvaluateMes mes = BeanCopyUtils.copyBean(mesById, RiskAssessPlanEvaluateMes.class); if (value.compareTo(new BigDecimal(10)) < 0){ mes.setRiskLevel(MethodEnum.RISK_LEVEL_1.getCode()); mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_1.getCode()); mes.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){ mes.setRiskLevel(MethodEnum.RISK_LEVEL_2.getCode()); mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_2.getCode()); mes.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){ mes.setRiskLevel(MethodEnum.RISK_LEVEL_3.getCode()); mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_3.getCode()); mes.setRiskColor(MethodEnum.RISK_LEVEL_3.getCode()); }else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) > 0){ mes.setRiskLevel(MethodEnum.RISK_LEVEL_4.getCode()); mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_4.getCode()); mes.setRiskColor(MethodEnum.RISK_LEVEL_4.getCode()); } mes.setMesM(mesInsertBO.getMesM()); mes.setMesE(mesInsertBO.getMesE()); mes.setMesS(mesInsertBO.getMesS()); mes.setUpdateTime(date); mes.setRiskValue(mesInsertBO.getRiskValue()); mes.setManageLevel(mesInsertBO.getManageLevel()); mes.setMesE(mesInsertBO.getMesE()); mes.setMesM(mesInsertBO.getMesM()); mes.setMesS(mesInsertBO.getMesS()); mes.setEvaluateDesc(mesInsertBO.getEvaluateDesc()); mes.setEducationMeasure(mesInsertBO.getEducationMeasure()); mes.setTechnologyMeasure(mesInsertBO.getTechnologyMeasure()); mes.setManageMeasure(mesInsertBO.getManageMeasure()); mes.setPersonalProtectionMeasure(mesInsertBO.getPersonalProtectionMeasure()); mes.setEmergencyMeasure(mesInsertBO.getEmergencyMeasure()); mes.setOriginalMesM(mesInsertBO.getOriginalMesM()); mes.setOriginalMesE(mesInsertBO.getOriginalMesE()); mes.setOriginalMesS(mesInsertBO.getOriginalMesS()); mes.setOriginalRiskValue(mesInsertBO.getOriginalRiskValue()); mes.setOriginalRiskLevelValue(mesInsertBO.getOriginalRiskLevelValue()); mes.setOriginalRiskLevel(mesInsertBO.getOriginalRiskLevel()); mes.setOriginalRiskColor(mesInsertBO.getOriginalRiskColor()); mes.setOriginalManageLevel(mesInsertBO.getOriginalManageLevel()); mes.setAdviseTechnologyMeasure(mesInsertBO.getAdviseTechnologyMeasure()); mes.setAdviseManageMeasure(mesInsertBO.getAdviseManageMeasure()); mes.setAdviseEmergencyMeasure(mesInsertBO.getAdviseEmergencyMeasure()); mes.setAdviseEducationMeasure(mesInsertBO.getAdviseEducationMeasure()); mes.setAdvisePersonalProtectionMeasure(mesInsertBO.getAdvisePersonalProtectionMeasure()); mes.setSafeRiskAnalysis(mesInsertBO.getSafeRiskAnalysis()); RiskAssessPlanEvaluateMes insertResult = mesRepository.save(mes); return BeanCopyUtils.copyBean(insertResult, MesInsertDTO.class); } /** * 评价方法MES - 查询 */ @Override public MesQueryDTO getMesByPlanId(Long id) { RiskAssessPlanEvaluateMes mesById = mesRepository.getMesById(id); if (ObjectUtils.isEmpty(mesById)){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "mes评价方法不存在或已被删除"); } return BeanCopyUtils.copyBean(mesById, MesQueryDTO.class); } /** * 评价方法MES - 删除 */ @Override public EvaluateMethodDeleteDTO deleteMesByPlanId(Long currentUserId, RiskAssessPlanEvaluateDeleteReqBO deleteReqBO) { if (ObjectUtils.isEmpty(deleteReqBO.getMesId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要删除的评价项目不能为空"); } RiskAssessPlanEvaluateMes mesById = mesRepository.getMesById(deleteReqBO.getMesId()); if (ObjectUtils.isEmpty(mesById)){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要删除的评价项目为空,或已被删除"); } if (!mesById.getAssessPlanId().equals(deleteReqBO.getId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评估计划与评价项不匹配,无法删除"); } EvaluateMethodDeleteDTO deleteDTO = new EvaluateMethodDeleteDTO(); mesById.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue()); LocalDateTime date = LocalDateTime.now(); mesById.setUpdateTime(date); RiskAssessPlanEvaluateMes deleteResult = mesRepository.save(mesById); if (ObjectUtils.isEmpty(deleteResult)){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价方法不存在或已被删除"); } deleteDTO.setResult(StatusEnum.DELETED.getCode().byteValue()); return deleteDTO; } /** * 评价方法MES - list */ @Override public List listMesByPlanId(Long id) { List mesList = mesRepository.listMesByPlanId(id); return BeanCopyUtils.copyBeanList(mesList, MesQueryDTO.class); } @Override public List getMesByIds(List assessPlanIds) { return mesRepository.getMesByIds(assessPlanIds); } @Override public int deleteMesByAssessPlanId(Long id) { List mesList = mesRepository.getMesByAssessPlanId(id); if (mesList.size() < 1){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价方法不存在或已被删除"); } int i = 0; for (RiskAssessPlanEvaluateMes mes : mesList) { mes.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue()); RiskAssessPlanEvaluateMes save = mesRepository.save(mes); if (ObjectUtils.isEmpty(save)){ i = 1; } } return i; } @Override public int deleteMesByPlan(Long id) { List mesListByPlanId = mesRepository.getMesByPlanId(id); if (ObjectUtils.isEmpty(mesListByPlanId)){ return StatusEnum.SUCCESS.getCode(); } for (RiskAssessPlanEvaluateMes riskAssessPlanEvaluateMes : mesListByPlanId) { riskAssessPlanEvaluateMes.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue()); } List result = mesRepository.saveAll(mesListByPlanId); if (result.size() != mesListByPlanId.size()){ return StatusEnum.FAIL.getCode(); } return StatusEnum.SUCCESS.getCode(); } @Override public RiskAssessPlanEvaluateMes getMesByIdentificationId(Long id, Byte identificationMethod) { return mesRepository.getMesByIdentification(id, identificationMethod); } }