package com.gkhy.labRiskManage.domain.riskReport.service.impl; import com.gkhy.labRiskManage.api.controller.riskReport.dto.respDto.ReportSourceTypeQueryRespDTO; import com.gkhy.labRiskManage.application.riskReport.dto.bo.ReportSourceTypeAppInsertBO; import com.gkhy.labRiskManage.application.riskReport.dto.bo.ReportSourceTypeAppUpdateBO; 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.basic.model.dto.RiskSourceTypeDTO; import com.gkhy.labRiskManage.domain.basic.service.BasicExperimentRiskSourceTypeService; import com.gkhy.labRiskManage.domain.riskReport.entity.ReportExperimentRiskSourceType; import com.gkhy.labRiskManage.domain.riskReport.model.bo.ReportSourceTypeInsertBO; import com.gkhy.labRiskManage.domain.riskReport.model.bo.ReportSourceTypeUpdateBO; import com.gkhy.labRiskManage.domain.riskReport.model.dto.ReportPersonInsertDTO; import com.gkhy.labRiskManage.domain.riskReport.model.dto.ReportSourceTypeInsertDTO; import com.gkhy.labRiskManage.domain.riskReport.model.dto.ReportSourceTypeQueryDTO; import com.gkhy.labRiskManage.domain.riskReport.repository.jpa.ReportExperimentRiskSourceTypeRepository; import com.gkhy.labRiskManage.domain.riskReport.service.ReportExperimentRiskSourceTypeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; /** * 风险评估报告-实验可能有的危险源或危险因素类型 */ @Service public class ReportExperimentRiskSourceTypeServiceImpl implements ReportExperimentRiskSourceTypeService { @Autowired private ReportExperimentRiskSourceTypeRepository sourceTypeRepository; @Autowired private BasicExperimentRiskSourceTypeService basicTypeService; /** * 危险因素类型 - 插入 */ @Override public List insertReportSourceType(Long currentUserId, List reportSourceTypeInsertBO) { if (reportSourceTypeInsertBO.size() != 8){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险源类型不符合标准,请重新填写"); } List typeInsertBO = BeanCopyUtils.copyBeanList(reportSourceTypeInsertBO, ReportSourceTypeInsertBO.class); List sourceTypeLists = new ArrayList<>(); for (ReportSourceTypeInsertBO sourceTypeInsertBO : typeInsertBO) { if (ObjectUtils.isEmpty(sourceTypeInsertBO.getReportId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "报告id不能为空"); } if (ObjectUtils.isEmpty(sourceTypeInsertBO.getRiskSourceTypeId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险类型不能为空"); } RiskSourceTypeDTO typeById = basicTypeService.getTypeById(sourceTypeInsertBO.getReportId()); if (ObjectUtils.isEmpty(typeById )){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR.getCode(), "危险类型不存在"); } if (ObjectUtils.isEmpty(sourceTypeInsertBO.getStatus())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险类型,不能为空"); } ReportExperimentRiskSourceType sourceType = BeanCopyUtils.copyBean(sourceTypeInsertBO, ReportExperimentRiskSourceType.class); //补全数据 LocalDateTime date = LocalDateTime.now(); sourceType.setReportId(sourceTypeInsertBO.getReportId()); sourceType.setRiskSourceType(typeById.getRiskSourceType()); sourceType.setCreateTime(date); sourceType.setUpdateTime(date); sourceType.setCreateByUserId(currentUserId); sourceType.setUpdateByUserId(currentUserId); sourceType.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue()); sourceTypeLists.add(sourceType); } List insertResult = sourceTypeRepository.saveAll(sourceTypeLists); if (insertResult.size() != typeInsertBO.size()){ throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR.getCode(), "风险源类型写入失败"); } return BeanCopyUtils.copyBeanList(insertResult, ReportSourceTypeInsertDTO.class); } /** * 危险因素类型 - 修改 */ @Override public List updateReportSourceType(Long currentUserId, List reportSourceTypeAppUpdateBO) { if (reportSourceTypeAppUpdateBO.size() != 8){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险源类型不符合标准,请重新填写"); } List typeUpdateBO = BeanCopyUtils.copyBeanList(reportSourceTypeAppUpdateBO, ReportSourceTypeUpdateBO.class); List sourceTypeLists = new ArrayList<>(); for (ReportSourceTypeUpdateBO updateBO : typeUpdateBO) { if (ObjectUtils.isEmpty(updateBO.getId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险类型id不能为空"); } if (ObjectUtils.isEmpty(updateBO.getReportId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "报告id不能为空"); } if (ObjectUtils.isEmpty(updateBO.getRiskSourceTypeId())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险类型不能为空"); } RiskSourceTypeDTO typeById = basicTypeService.getTypeById(updateBO.getReportId()); if (ObjectUtils.isEmpty(typeById )){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR.getCode(), "危险类型不存在"); } if (ObjectUtils.isEmpty(updateBO.getStatus())){ throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险类型是否存在不能为空"); } ReportExperimentRiskSourceType type = sourceTypeRepository.getTypeById(updateBO.getId()); ReportExperimentRiskSourceType sourceType = BeanCopyUtils.copyBean(type, ReportExperimentRiskSourceType.class); //补全数据 LocalDateTime date = LocalDateTime.now(); sourceType.setRiskSourceType(typeById.getRiskSourceType()); sourceType.setUpdateTime(date); sourceType.setUpdateByUserId(currentUserId); sourceTypeLists.add(sourceType); } List updateResult = sourceTypeRepository.saveAll(sourceTypeLists); if (updateResult.size() != reportSourceTypeAppUpdateBO.size()){ throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR.getCode(), "风险源类型写入失败"); } return BeanCopyUtils.copyBeanList(updateResult, ReportSourceTypeInsertDTO.class); } /** * 危险因素类型 - 查询 by 报告id */ @Override public List getSourceTypeByReportId(Long id) { List sourceTypeByReportId = sourceTypeRepository.getSourceTypeByReportId(id); if (ObjectUtils.isEmpty(sourceTypeByReportId)){ return null; } return BeanCopyUtils.copyBeanList(sourceTypeByReportId, ReportSourceTypeQueryRespDTO.class); } @Override public List insertAllReportSource(List riskSourceTypeList) { List sourceTypes = sourceTypeRepository.saveAll(riskSourceTypeList); return sourceTypes; } }