You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
4.3 KiB
Java
124 lines
4.3 KiB
Java
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<DiseaseMapper, Disease>
|
|
implements DiseaseService {
|
|
|
|
@Override
|
|
public List<Disease> 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<? extends Disease> queryPageList(Integer pageNum, Integer pageSize, DiseaseReqVo diseaseReqVo) {
|
|
return super.getBaseMapper().queryPageList(new Page<>(pageNum, pageSize), diseaseReqVo);
|
|
}
|
|
|
|
@Override
|
|
public List<String> queryAllDiseaseListByDiseaseId(List<String> 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<String> queryDiseaseListByDiseaseCode(List<String> codeId) {
|
|
List<String> diseaseIdList = new ArrayList<>();
|
|
List<Disease> 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<UploadDiseaseDTO> 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<String> codeIdList = Arrays.stream(categoryCode.split("/")).toList();
|
|
List<String> 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;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|