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.
108 lines
4.6 KiB
Java
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();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|