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.
virtual-patient/virtual-patient-model/src/main/java/com/supervision/service/impl/ConfigAncillaryItemServiceI...

108 lines
4.6 KiB
Java

package com.supervision.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.MD5;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.model.ConfigAncillaryItem;
import com.supervision.service.ConfigAncillaryItemService;
import com.supervision.mapper.ConfigAncillaryItemMapper;
import com.supervision.service.DiagnosisAncillaryRecordService;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.AskAncillaryHistoryResVO;
import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import com.supervision.vo.result.ConfigAncillaryItemVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author flevance
* @description 针对表【vp_config_ancillary_item(辅助检查项目配置表)】的数据库操作Service实现
* @createDate 2023-10-20 17:19:21
*/
@Service
@RequiredArgsConstructor
public class ConfigAncillaryItemServiceImpl extends ServiceImpl<ConfigAncillaryItemMapper, ConfigAncillaryItem>
implements ConfigAncillaryItemService{
private final DiagnosisAncillaryRecordService diagnosisAncillaryRecordService;
@Override
public List<ConfigAncillaryItemVo> queryVoList(AncillaryItemReqVo ancillaryItemReqVo) {
List<ConfigAncillaryItem> configAncillaryItems = findByKeyWord(ancillaryItemReqVo.getKeyWord());
if (CollUtil.isEmpty(configAncillaryItems)){
return CollUtil.newArrayList();
}
final Set<String> recordItemIds = new HashSet<>();
if (StrUtil.isNotEmpty(ancillaryItemReqVo.getProcessId())){
List<AskAncillaryHistoryResVO> askAncillaryHistoryResVOS = diagnosisAncillaryRecordService.queryAncillaryRecord(ancillaryItemReqVo.getProcessId());
recordItemIds.addAll(askAncillaryHistoryResVOS.stream().map(AskAncillaryHistoryResVO::getItemId).collect(Collectors.toSet()));
}
return configAncillaryItems.stream().map(e->{
ConfigAncillaryItemVo itemVo = BeanUtil.toBean(e,ConfigAncillaryItemVo.class);
itemVo.setExecStatus(recordItemIds.contains(itemVo.getId()) ? 1 : 0 );
return itemVo;
}).collect(Collectors.toList());
}
@Override
public List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo) {
List<ConfigAncillaryItemVo> list = this.queryVoList(ancillaryItemReqVo);
return list.stream().collect(Collectors.groupingBy(ConfigAncillaryItem::getType)).entrySet().stream().
map(ConfigAncillaryItemServiceImpl::getConfigAncillaryItemResVO)
.sorted(Comparator.comparingInt(ConfigAncillaryItemResVO::getPriority))
.collect(Collectors.toList());
}
private static ConfigAncillaryItemResVO getConfigAncillaryItemResVO(Map.Entry<String, List<ConfigAncillaryItemVo>> e) {
ConfigAncillaryItemResVO item = new ConfigAncillaryItemResVO();
item.setItemName(e.getKey());
item.setId(new MD5().digestHex16(e.getKey()));
item.setItemIdPath(CollUtil.newArrayList(item.getId()));
item.setItemList(e.getValue());
if (CollUtil.isNotEmpty(item.getItemList())){
Integer typePriority = CollUtil.getFirst(e.getValue()).getTypePriority();
item.setPriority(null == typePriority ? 9999 : typePriority);
// 对itemList进行排序
List<ConfigAncillaryItemVo> itemVoListSorted = item.getItemList().stream().peek(itemVo -> {
if (null == itemVo.getItemPriority()) {
itemVo.setItemPriority(9999);
}
itemVo.setItemIdPath(CollUtil.newArrayList(item.getId(),itemVo.getId()));
})
.sorted(Comparator.comparingInt(ConfigAncillaryItem::getItemPriority)).collect(Collectors.toList());
item.setItemList(itemVoListSorted);
}
return item;
}
private List<ConfigAncillaryItem> findByKeyWord(String keyWord){
keyWord = StrUtil.trim(keyWord);
return super.lambdaQuery().like(StrUtil.isNotEmpty(keyWord), ConfigAncillaryItem::getItemName, keyWord)
.or().like(StrUtil.isNotEmpty(keyWord), ConfigAncillaryItem::getType, keyWord).list();
}
@Override
public ConfigAncillaryItem queryAncillaryItem(String name1, String name2) {
return this.lambdaQuery()
.eq(ConfigAncillaryItem::getType, name1)
.eq(ConfigAncillaryItem::getItemName, name2)
.one();
}
}