|
@@ -140,21 +140,22 @@ public class TaskController {
|
|
|
queryWrapper.eq(CompareScenarios::getReportId, reportId);
|
|
|
List<CompareScenarios> compareScenarios = compareScenariosService.list(queryWrapper);
|
|
|
List<Integer> scenarioIds = compareScenarios.stream().map(CompareScenarios::getId).collect(Collectors.toList());
|
|
|
- //根据对比方案Id 从关联表里获得对比记录ID
|
|
|
- LambdaQueryWrapper<CompareScenariosAndRecords> queryRecordsByIDs = new LambdaQueryWrapper<>();
|
|
|
- queryRecordsByIDs.in(CompareScenariosAndRecords::getScenariosID, scenarioIds);
|
|
|
- List<CompareScenariosAndRecords> scenariosRecords = scenariosRecordsService.list(queryRecordsByIDs);
|
|
|
- List<Integer> recordIds = scenariosRecords.stream().map(CompareScenariosAndRecords::getRecordID).collect(Collectors.toList());
|
|
|
+ //根据对比方案Id 从关联表里获得对比记录特征关联ID
|
|
|
+ LambdaQueryWrapper<AssoScenarIOS> queryRecordsByIDs = new LambdaQueryWrapper<>();
|
|
|
+ queryRecordsByIDs.in(AssoScenarIOS::getScenariosID, scenarioIds);
|
|
|
+ List<AssoScenarIOS> scenariosRecords = scenariosRecordsService.list(queryRecordsByIDs);
|
|
|
+ List<Integer> recordfeatureRecordIds = scenariosRecords.stream().map(AssoScenarIOS::getFeatureRecordID).collect(Collectors.toList());
|
|
|
+ //根据关联ID查出报告Id和特征Id
|
|
|
+ LambdaQueryWrapper<AssoRecordsFeature> wrapper =new LambdaQueryWrapper<>();
|
|
|
+ wrapper.in(AssoRecordsFeature::getId,recordfeatureRecordIds);
|
|
|
+ List<AssoRecordsFeature> assoRecordsFeatures =assoRecordsFeatureService.list(wrapper);
|
|
|
+ List<Integer> recordIds =assoRecordsFeatures.stream().map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
|
|
|
//根据对比记录ID查询对比记录
|
|
|
LambdaQueryWrapper<CompareRecords> queryPatentByIDs = new LambdaQueryWrapper<>();
|
|
|
queryPatentByIDs.in(CompareRecords::getId, recordIds);
|
|
|
List<CompareRecords> compareRecords = compareRecordsService.list(queryPatentByIDs);
|
|
|
//根据对比记录ID获得专利号
|
|
|
List<String> PatentNos = compareRecords.stream().map(CompareRecords::getPatentNo).collect(Collectors.toList());
|
|
|
- //根据对比记录ID从对比记录特征关联表里获得关联数据
|
|
|
- LambdaQueryWrapper<AssoRecordsFeature> queryAssoByRecordId = new LambdaQueryWrapper<>();
|
|
|
- queryAssoByRecordId.in(AssoRecordsFeature::getRecordsId, recordIds);
|
|
|
- List<AssoRecordsFeature> assoRecordsFeatures = assoRecordsFeatureService.list(queryAssoByRecordId);
|
|
|
PatentVO patentVO = new PatentVO();
|
|
|
patentVO.setPatentNos(PatentNos);
|
|
|
//根据专利号查询专利详细信息
|
|
@@ -196,13 +197,16 @@ public class TaskController {
|
|
|
List<Integer> rightIds = new ArrayList<>();
|
|
|
for (int i = 0; i < compareScenarios.size(); i++) {
|
|
|
CompareScenarios item1 = compareScenarios.get(i);
|
|
|
+ //获得单个对比方案的
|
|
|
+ List<AssoScenarIOS> partScenariosRecords = scenariosRecords.stream().filter(item -> item.getScenariosID().equals(item1.getId())).collect(Collectors.toList());
|
|
|
+ List<Integer> featureRecordsIds = partScenariosRecords.stream().map(AssoScenarIOS::getFeatureRecordID).collect(Collectors.toList());
|
|
|
+ List<AssoRecordsFeature> assoRecordsFeatures1 = assoRecordsFeatures.stream().filter(item->featureRecordsIds.contains(item.getId())).collect(Collectors.toList());
|
|
|
+ List<Integer> partRecordIds=assoRecordsFeatures1.stream().map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
|
|
|
+ List<Integer> partFetIds =assoRecordsFeatures1.stream().map(AssoRecordsFeature::getFeatureId).collect(Collectors.toList());
|
|
|
//获得单个对比方案的权要的所有特征
|
|
|
- List<Features> partFeatures = allFeatures.stream().filter(item -> item.getRightId().equals(item1.getRightId())).collect(Collectors.toList());
|
|
|
+ List<Features> partFeatures = allFeatures.stream().filter(item -> partFetIds.contains(item.getId())).collect(Collectors.toList());
|
|
|
List<Integer> partFeatureIds = partFeatures.stream().map(Features::getId).collect(Collectors.toList());
|
|
|
- //获得单个对比方案的
|
|
|
- List<CompareScenariosAndRecords> partScenariosRecords = scenariosRecords.stream().filter(item -> item.getScenariosID().equals(item1.getId())).collect(Collectors.toList());
|
|
|
- List<Integer> recordsIds = partScenariosRecords.stream().map(CompareScenariosAndRecords::getRecordID).collect(Collectors.toList());
|
|
|
- List<CompareRecords> records = compareRecords.stream().filter(item -> recordsIds.contains(item.getId())).collect(Collectors.toList());
|
|
|
+ List<CompareRecords> records = compareRecords.stream().filter(item -> partRecordIds.contains(item.getId())).collect(Collectors.toList());
|
|
|
//存放单条对比结果的map
|
|
|
Map<String, Object> temMap = new HashMap<>();
|
|
|
if (partFeatures.get(0).getRightType().equals(1)) {
|
|
@@ -211,8 +215,9 @@ public class TaskController {
|
|
|
temMap.put("rightName", "附属" + partFeatures.get(0).getRightName());
|
|
|
}
|
|
|
temMap.put("rightId", item1.getRightId());
|
|
|
+ temMap.put("remark",item1.getContrastResult());
|
|
|
// 从关联数据里获得特征id
|
|
|
- if (rightIds.contains(item1.getRightId())) {
|
|
|
+ if (!rightIds.contains(item1.getRightId())) {
|
|
|
rightIds.add(item1.getRightId());
|
|
|
}
|
|
|
//存放对比方案每一个特征记录
|
|
@@ -221,9 +226,9 @@ public class TaskController {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("featureContent", tem.getContent());
|
|
|
AssoRecordsFeature assoRecordsFeature = assoRecordsFeatures.stream().filter(item -> item.getFeatureId().equals(tem.getId())).findFirst().orElse(new AssoRecordsFeature());
|
|
|
- map.put("compareResult", assoRecordsFeature.getComResult());
|
|
|
+ map.put("compareResult", assoRecordsFeature.getComResult()!=null?assoRecordsFeature.getComResult():"");
|
|
|
CompareRecords record = records.stream().filter(item -> item.getId().equals(assoRecordsFeature.getRecordsId())).findFirst().orElse(new CompareRecords());
|
|
|
- map.put("compareContent", record.getContent());
|
|
|
+ map.put("compareContent", record.getContent()!=null?record.getContent():"");
|
|
|
maps.add(map);
|
|
|
});
|
|
|
//方案内容
|
|
@@ -237,50 +242,41 @@ public class TaskController {
|
|
|
}
|
|
|
});
|
|
|
//比较所有专利号和权要所有权要的大小,如果相等则将该专利加入到新颖性列表中
|
|
|
+
|
|
|
List<String> noveltyFiles = new ArrayList<>();
|
|
|
patentNOs.forEach(
|
|
|
item -> {
|
|
|
List<Integer> temRecordIds = records.stream().filter(tm -> tm.getPatentNo().equals(item)).map(CompareRecords::getId).collect(Collectors.toList());
|
|
|
List<Integer> temFIds = assoRecordsFeatures.stream().filter(tm -> temRecordIds.contains(tm.getRecordsId())).map(AssoRecordsFeature::getFeatureId).collect(Collectors.toList());
|
|
|
+ String tmName = item;
|
|
|
+ if (OtherName.containsKey(item)) {
|
|
|
+ tmName = OtherName.get(item).toString();
|
|
|
+ }
|
|
|
if (temFIds.size() == partFeatures.size()) {
|
|
|
- String tmName = item;
|
|
|
- if (OtherName.containsKey(item)) {
|
|
|
- tmName = OtherName.get(item).toString();
|
|
|
- }
|
|
|
noveltyFiles.add(tmName);
|
|
|
}
|
|
|
}
|
|
|
);
|
|
|
- //创造性模块
|
|
|
+
|
|
|
+ //创造性列表
|
|
|
List<String> creativeFiles = new ArrayList<>();
|
|
|
- partFeatureIds.forEach(
|
|
|
+ //当前方案所有的特征Id
|
|
|
+ partFeatures.forEach(
|
|
|
item -> {
|
|
|
- List<Integer> temRecordIDs = assoRecordsFeatures.stream().filter(tm -> tm.getFeatureId().equals(item)).map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
|
|
|
- List<CompareRecords> temRecords = records.stream().filter(tm -> temRecordIDs.contains(tm.getId())).collect(Collectors.toList());
|
|
|
- List<String> temStrs = new ArrayList<>();
|
|
|
- temRecords.forEach(
|
|
|
- tm -> {
|
|
|
- String name = tm.getPatentNo();
|
|
|
- if (OtherName.containsKey(tm.getPatentNo())) {
|
|
|
- name = OtherName.get(tm.getPatentNo()).toString();
|
|
|
- }
|
|
|
-
|
|
|
- if (!temStrs.contains(name)) {
|
|
|
- temStrs.add(name);
|
|
|
- }
|
|
|
- }
|
|
|
- );
|
|
|
- List<CompareScenariosAndRecords> andRecords = partScenariosRecords.stream().filter(tm -> tm.getFeaturesID().equals(item)).collect(Collectors.toList());
|
|
|
- if (andRecords.size() != 0) {
|
|
|
- temStrs.add("C");
|
|
|
- }
|
|
|
- String join = StringUtils.join(temStrs, "+");
|
|
|
- creativeFiles.add(join);
|
|
|
+ String tmName = item.getSignPatentNo();
|
|
|
+ if (OtherName.containsKey(tmName)) {
|
|
|
+ tmName = OtherName.get(tmName).toString();
|
|
|
+ }
|
|
|
+ if(!creativeFiles.contains(tmName)){
|
|
|
+ creativeFiles.add(tmName);}
|
|
|
}
|
|
|
);
|
|
|
-
|
|
|
- String creative = StringUtils.join(creativeFiles, "、");
|
|
|
- String novelty = StringUtils.join(noveltyFiles, "-");
|
|
|
+ List<AssoScenarIOS> andRecords = partScenariosRecords.stream().filter(tm -> tm.getScenariosID().equals(item1.getId())).collect(Collectors.toList());
|
|
|
+ if (andRecords.size() != 0) {
|
|
|
+ creativeFiles.add("C");
|
|
|
+ }
|
|
|
+ String creative =creativeFiles.size()==0?"": StringUtils.join(creativeFiles, "+");
|
|
|
+ String novelty =noveltyFiles.size()==0?"": StringUtils.join(noveltyFiles, "-");
|
|
|
//新颖性
|
|
|
temMap.put("novelty", novelty);
|
|
|
//创造性
|
|
@@ -288,22 +284,48 @@ public class TaskController {
|
|
|
scenariosMaps.add(temMap);
|
|
|
|
|
|
}
|
|
|
- List<Object> allRightScenarios=new ArrayList<>();
|
|
|
+ List<Map<String,Object>> allRightScenarios=new ArrayList<>();
|
|
|
+ List<Map<String,Object>> resultMaps =new ArrayList<>();
|
|
|
rightIds.forEach(tem -> {
|
|
|
+ Map<String,Object> map =new HashMap<>();
|
|
|
+ Map<String,Object> resultMap =new HashMap<>();
|
|
|
List<Map<String, Object>> rightScenarios = new ArrayList<>();
|
|
|
- scenariosMaps.forEach(item -> {
|
|
|
+ //存放新颖性信息
|
|
|
+ List<String> noveList=new ArrayList<>();
|
|
|
+ List<String> creaList=new ArrayList<>();
|
|
|
+ //存放创造性信息
|
|
|
+ for (int t=0;t<scenariosMaps.size();t++){
|
|
|
+ Map<String,Object> item =scenariosMaps.get(t);
|
|
|
if (item.get("rightId").equals(tem)) {
|
|
|
+ item.put("scenariosName","对比组合"+(t+1));
|
|
|
rightScenarios.add(item);
|
|
|
+ if(item.get("novelty").toString()!="") {
|
|
|
+ if(!noveList.contains(item.get("novelty").toString())){
|
|
|
+ noveList.add(item.get("novelty").toString());}
|
|
|
+ }
|
|
|
+ if(item.get("creative").toString()!=""){
|
|
|
+ if(!creaList.contains(item.get("creative").toString())){
|
|
|
+ creaList.add(item.get("creative").toString());}
|
|
|
+ }
|
|
|
}
|
|
|
- });
|
|
|
- allRightScenarios.add(rightScenarios);
|
|
|
+
|
|
|
+ }
|
|
|
+ map.put("rightScenrios",rightScenarios);
|
|
|
+ map.put("rightName",rightScenarios.get(0).get("rightName"));
|
|
|
+ String creative =creaList.size()==0?"": StringUtils.join(creaList, "、");
|
|
|
+ String novelty =noveList.size()==0?"": StringUtils.join(noveList, "-");
|
|
|
+ resultMap.put("rightName",rightScenarios.get(0).get("rightName"));
|
|
|
+ resultMap.put("rightNovelty",novelty);
|
|
|
+ resultMap.put("rightCreative",creative);
|
|
|
+ allRightScenarios.add(map);
|
|
|
+ resultMaps.add(resultMap);
|
|
|
});
|
|
|
|
|
|
|
|
|
// 为表格的显示绑定行循环
|
|
|
LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
|
|
|
// 将bz设置为行循环绑定的数据源的key,即key是bz的value会在模板中的{{bz}}处进行解析
|
|
|
- Configure configure = Configure.builder().bind("patentList", policy).bind("compareResult", policy).bind("fileDetails", policy).build();
|
|
|
+ Configure configure = Configure.builder().bind("patentList", policy).bind("fileDetails", policy).bind("allResults", policy).build();
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
|
//1.系统数据
|
|
@@ -312,10 +334,10 @@ public class TaskController {
|
|
|
map.put("sys", new SystemMO(ds[0], ds[1], ds[2], "", "reportName"));
|
|
|
map.put("sss", "saeqeq");
|
|
|
map.put("patentList", patentListMaps);
|
|
|
- map.put("compareResult", allRightScenarios);
|
|
|
+ map.put("combinations", allRightScenarios);
|
|
|
+ map.put("allResults",resultMaps);
|
|
|
// 读取模板、数据并渲染
|
|
|
XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(map);
|
|
|
-
|
|
|
// 文件是否已存在,则删除
|
|
|
File file = new File(outPath);
|
|
|
if (file.exists()) {
|