package com.supervision.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.supervision.dto.UploadDiseaseDTO; import com.supervision.model.Disease; import com.supervision.service.DiseaseService; import com.supervision.mapper.DiseaseMapper; import com.supervision.util.StringChartUtil; import com.supervision.util.UserUtil; import com.supervision.vo.manage.DiseaseReqVo; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; /** * @author flevance * @description 针对表【vp_disease(疾病名称)】的数据库操作Service实现 * @createDate 2023-10-20 17:19:21 */ @Service public class DiseaseServiceImpl extends ServiceImpl implements DiseaseService { @Override public List listDiseaseNestIfComposite(String id) { Assert.notEmpty(id, "id is not allow empty"); Disease disease = super.getById(id); if (!isCompositeDisease(disease) || CollUtil.isEmpty(disease.getContainDiseaseIds())) { return CollUtil.newArrayList(disease); } return super.listByIds(disease.getContainDiseaseIds()); } @Override public IPage queryPageList(Integer pageNum, Integer pageSize, DiseaseReqVo diseaseReqVo) { return super.getBaseMapper().queryPageList(new Page<>(pageNum, pageSize), diseaseReqVo); } @Override public List queryAllDiseaseListByDiseaseId(List diseaseId) { if (CollUtil.isEmpty(diseaseId)) { return new ArrayList<>(); } return this.baseMapper.queryAllDiseaseListByDiseaseId(diseaseId); } /** * 是否是复合疾病 * * @param disease 疾病 * @return true 是复合疾病 false 不是复合疾病 */ private boolean isCompositeDisease(Disease disease) { if (Objects.isNull(disease)) { return false; } return isCompositeDisease(disease.getDiseaseType()); } private boolean isCompositeDisease(Integer integer) { if (Objects.isNull(integer)) { return false; } return Integer.valueOf(1).equals(integer); } @Override public List queryDiseaseListByDiseaseCode(List codeId) { List diseaseIdList = new ArrayList<>(); List diseaseList = this.lambdaQuery() .select(Disease::getId) .in(Disease::getCode, codeId) .list(); for (Disease disease : diseaseList) { String diseaseId = disease.getId(); diseaseIdList.add(diseaseId); } return diseaseIdList; } @Override public Disease saveDisease(List uploadDiseaseResVos) { UploadDiseaseDTO uploadDiseaseDTO = uploadDiseaseResVos.get(0); // 保存疾病 String categoryCode = uploadDiseaseDTO.getCategoryCode(); String diseaseClassificationName = uploadDiseaseDTO.getDiseaseClassificationName(); String commonName = uploadDiseaseDTO.getCommonName(); String mainSymptom = uploadDiseaseDTO.getMainSymptom(); int diseaseType = StringChartUtil.countChar(categoryCode, '/') > 0 ? 1 : 0; Disease disease = new Disease(); disease.setCode(categoryCode); disease.setDiseaseName(diseaseClassificationName); disease.setDiseaseNameAlias(commonName); disease.setStatus(0); disease.setDiseaseType(diseaseType); if (diseaseType == 1) { List codeIdList = Arrays.stream(categoryCode.split("/")).toList(); List listByDiseaseCode = queryDiseaseListByDiseaseCode(codeIdList); Assert.isTrue(listByDiseaseCode.size() != codeIdList.size(), "请检查复合疾病中的单一疾病是否存在"); disease.setContainDiseaseIds(listByDiseaseCode); } disease.setSymptom(mainSymptom); disease.setCreateUserId(UserUtil.getUser().getId()); disease.setUpdateUserId(UserUtil.getUser().getId()); save(disease); return disease; } }