package com.estate.expert.admin.service.impl;
|
|
import com.estate.expert.admin.domain.common.EntityRef;
|
import com.estate.expert.admin.domain.common.request.PageReq;
|
import com.estate.expert.admin.domain.common.response.PageResp;
|
import com.estate.expert.admin.domain.standard.expert.ExpertFunc;
|
import com.estate.expert.admin.domain.standard.expert.system.SysExpert;
|
import com.estate.expert.admin.domain.standard.expert.system.SysExpertDto;
|
import com.estate.expert.admin.domain.standard.expert.system.SysExpertRepository;
|
import com.estate.expert.admin.domain.standard.hierachy.HierarchyData;
|
import com.estate.expert.admin.domain.standard.model.Model;
|
import com.estate.expert.admin.service.UserService;
|
import com.estate.expert.admin.service.expert.SysExpertService;
|
import com.estate.expert.admin.service.model.SystemModelService;
|
import com.estate.expert.admin.utils.tree.TreeRoot;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
|
import javax.annotation.Resource;
|
import java.util.List;
|
|
/**
|
* 系统专家服务实现
|
*/
|
@Service
|
@Slf4j
|
public class SysExpertServiceImpl extends ExpertServiceImpl <SysExpert, SysExpertDto>
|
implements SysExpertService {
|
|
@Resource
|
private SysExpertRepository repository;
|
@Resource
|
private SystemModelService systemModelService;
|
@Resource
|
private UserService userService;
|
|
@Override
|
public SysExpert getDefaultExpert() {
|
return getByName("默认综合专家");
|
}
|
|
@Override
|
public void createDefaultExpert() {
|
var expert = getDefaultExpert();
|
if (expert != null) {
|
return;
|
}
|
|
var model = systemModelService.getDefaultModel();
|
var expertDto = SysExpertDto.builder()
|
.name("默认综合专家")
|
.model(EntityRef.builder().id(model.getId()).name(model.getName()).build())
|
.expertInquiryWeight(1.0f)
|
.matrixWeight(1.0f)
|
.membershipWeight(1.0f)
|
.expertFuncs(List.of(ExpertFunc.SCORE_FUNC, ExpertFunc.FUZZY_FUNC))
|
.build();
|
add(userService.getSystemUser(), expertDto);
|
}
|
|
@Override
|
public PageResp<SysExpertDto> list(String keyword, Integer modelId, PageReq pageReq) {
|
var page = repository.listExperts(keyword, modelId, pageReq.toPageRequest());
|
return PageResp.of(page, toDto(page.getContent()));
|
}
|
|
@Override
|
public List<Integer> listModelProblemIds(Model model) {
|
return systemModelService.listModelProblemIds(model);
|
}
|
|
@Override
|
public TreeRoot<HierarchyData> getModelTree(Model model) {
|
return systemModelService.getHierarchyTree(model.getId());
|
}
|
|
@Override
|
protected boolean existModel(Integer modelId) {
|
return systemModelService.existsById(modelId);
|
}
|
|
@Override
|
public List<SysExpert> listScoreExperts(Integer modelId) {
|
return listExperts(modelId, ExpertFunc.SCORE_FUNC);
|
}
|
|
@Override
|
public List<SysExpert> listFuzzyExperts(Integer modelId) {
|
return listExperts(modelId, ExpertFunc.FUZZY_FUNC);
|
}
|
|
private List<SysExpert> listExperts(Integer modelId, ExpertFunc func) {
|
return repository.listExperts(modelId).stream().filter(e -> !CollectionUtils.isEmpty(e.getExpertFuncs()) && e.getExpertFuncs().contains(func)).toList();
|
}
|
}
|