|
@@ -80,7 +80,57 @@ public class ProjectFieldService extends ServiceImpl<ProjectFieldMapper, Project
|
|
|
});
|
|
|
return dataList;
|
|
|
}
|
|
|
-
|
|
|
+ public Map<Integer,List<PatentDTO.Field>> getPatentFieldByPatentIdAndProjectId2(Integer projectId, List<Integer> patentIds) {
|
|
|
+ Map<Integer,List<PatentDTO.Field>> map =new HashMap<>();
|
|
|
+ //根据专利号和专题库id获得所有自定义字段关联数据
|
|
|
+ LambdaQueryWrapper<ProjectFieldPatentLink> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(ProjectFieldPatentLink::getPatentId, patentIds);
|
|
|
+ queryWrapper.eq(ProjectFieldPatentLink::getProjectId, projectId);
|
|
|
+ List<ProjectFieldPatentLink> linkList=projectFieldPatentLinkService.list(queryWrapper);
|
|
|
+ List<Integer> fieldIds = linkList.stream().map(ProjectFieldPatentLink::getFieldId).distinct().collect(Collectors.toList());
|
|
|
+ List<ProjectField> fieldList = this.getFieldListByIds(fieldIds);
|
|
|
+ List<ProjectFieldText> textList = projectFieldTextService.getProjectFieldTextByFieldIds(fieldIds);
|
|
|
+ List<ProjectFieldOption> optionList = projectFieldOptionService.getFieldOptionList(fieldIds);
|
|
|
+ List<ProjectFieldTree> treeList = projectFieldTreeService.getProjectFieldTreeOptionByFieldIds(fieldIds);
|
|
|
+ //遍历专利
|
|
|
+ for(Integer patentId :patentIds){
|
|
|
+ List<PatentDTO.Field> dataList = new ArrayList<>();
|
|
|
+ //获得当前专利的关联信息
|
|
|
+ List<ProjectFieldPatentLink> temLinkList =linkList.stream().filter(item->item.getPatentId().equals(patentId)).collect(Collectors.toList());
|
|
|
+ //过滤出当前专利的自定义栏位
|
|
|
+ List<Integer> temFieldIds =linkList.stream().filter(item->item.getPatentId().equals(patentId)).map(ProjectFieldPatentLink::getFieldId).distinct().collect(Collectors.toList());
|
|
|
+ List<ProjectField> temFieldList =fieldList.stream().filter(item->temFieldIds.contains(item.getId())).collect(Collectors.toList());
|
|
|
+ temFieldList.forEach(field -> {
|
|
|
+ List<Integer> valueIds =temLinkList.stream().filter(item->item.getFieldId().equals(field.getId())).map(ProjectFieldPatentLink::getOptionId).collect(Collectors.toList());
|
|
|
+ PatentDTO.Field data = new PatentDTO.Field();
|
|
|
+ data.setId(field.getId());
|
|
|
+ data.setName(field.getName());
|
|
|
+ data.setType(field.getType());
|
|
|
+ switch (field.getType()) {
|
|
|
+ case 0:
|
|
|
+ case 1:
|
|
|
+ case 2:
|
|
|
+ data.setSelected(textList.stream().filter(item -> item.getFieldId().equals(field.getId()) && valueIds.contains(item.getId())).map(ProjectFieldText::getText).distinct().collect(Collectors.toList()));
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ case 4:
|
|
|
+ case 5:
|
|
|
+ data.setSelected(optionList.stream().filter(item -> item.getFieldId().equals(field.getId()) && valueIds.contains(item.getId())).map(ProjectFieldOption::getName).distinct().collect(Collectors.toList()));
|
|
|
+ break;
|
|
|
+ case 6:
|
|
|
+ List<ProjectFieldTree> trees = treeList.stream().filter(item -> item.getFieldId().equals(field.getId())).collect(Collectors.toList());
|
|
|
+ List<ProjectFieldTree> optionTree = trees.stream().filter(item -> valueIds.contains(item.getId())).collect(Collectors.toList());
|
|
|
+ List<String> selected = new ArrayList<>();
|
|
|
+ optionTree.forEach(item -> selected.add(PatentUtils.getTreeNodeFullName(trees, item.getPath())));
|
|
|
+ data.setSelected(selected);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ dataList.add(data);
|
|
|
+ });
|
|
|
+ map.put(patentId,dataList);
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
public List<ProjectField> getProjectFieldByProjectId(Integer projectId) {
|
|
|
LambdaQueryWrapper<ProjectField> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(ProjectField::getProjectId, projectId);
|