|
@@ -1,5 +1,6 @@
|
|
|
package cn.cslg.report.service.business;
|
|
|
|
|
|
+import cn.cslg.report.common.model.BaseEntity;
|
|
|
import cn.cslg.report.common.model.dto.PatentQueryFieldSourceDTO;
|
|
|
import cn.cslg.report.common.model.vo.PatentField;
|
|
|
import cn.cslg.report.common.model.vo.PatentQueryFieldSourceVO;
|
|
@@ -42,6 +43,8 @@ public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportFie
|
|
|
private final ReportFieldOptionService reportFieldOptionService;
|
|
|
private final ReportFieldTreeService reportFieldTreeService;
|
|
|
private final ReportFieldPatentLinkService reportFieldPatentLinkService;
|
|
|
+
|
|
|
+
|
|
|
public String add(ReportField reportField) {
|
|
|
ReportField temp = this.getProjectFieldByName(reportField.getName(), reportField.getReportId());
|
|
|
if (temp != null) {
|
|
@@ -214,7 +217,11 @@ public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportFie
|
|
|
//根据fieldId 从patent_field中获得 自定义字段对象
|
|
|
LambdaQueryWrapper<ReportField> wrapper =new LambdaQueryWrapper<>();
|
|
|
wrapper.eq(ReportField::getId,params.getFieldId());
|
|
|
+ if(this.list(wrapper).size()==0){
|
|
|
+ return list;
|
|
|
+ }
|
|
|
ReportField reportField =this.list(wrapper).get(0);
|
|
|
+
|
|
|
//根据自定义字段的类型,从三张值表中查询该自定义字段所有值的id
|
|
|
Integer type1 =reportField.getType();
|
|
|
switch (type1){
|
|
@@ -272,114 +279,201 @@ public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportFie
|
|
|
lambdaQueryWrapper.eq(ReportFieldPatentLink::getFieldId,params.getFieldId())
|
|
|
.in(ReportFieldPatentLink::getOptionId,valueIds);
|
|
|
List<ReportFieldPatentLink> reportFieldPatentLinks =reportFieldPatentLinkService.list(lambdaQueryWrapper);
|
|
|
+ if(reportFieldPatentLinks.size()==0) {
|
|
|
+ return list;
|
|
|
+ }
|
|
|
list.forEach(tem->{
|
|
|
List<ReportFieldPatentLink> part =reportFieldPatentLinks.stream().filter(tm->tm.getFieldId().equals(params.getFieldId())&&tm.getOptionId().equals(tem.getKey()
|
|
|
)).collect(Collectors.toList());
|
|
|
tem.setCount(part.size());
|
|
|
- tem.setType(type1);
|
|
|
+ tem.setType(type1);
|
|
|
});
|
|
|
//根据值id从ReportFieldPatentLink表中获得信息
|
|
|
return list;
|
|
|
|
|
|
}
|
|
|
+ public List<PatentQueryFieldSourceVO> getPatentQuerySourcePageList2(PatentQueryFieldSourceVO params){
|
|
|
+ List<PatentQueryFieldSourceVO> list =new ArrayList<>();
|
|
|
+ //根据fieldId 从patent_field中获得 自定义字段对象
|
|
|
+ LambdaQueryWrapper<ReportField> wrapper =new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(ReportField::getId,params.getFieldId());
|
|
|
+ ReportField reportField =this.list(wrapper).get(0);
|
|
|
+ //根据自定义字段的类型,从三张值表中查询该自定义字段所有值的id
|
|
|
+ Integer type1 =reportField.getType();
|
|
|
+ switch (type1){
|
|
|
+ //数字
|
|
|
+ case 0:
|
|
|
+ //日期
|
|
|
+ case 1:
|
|
|
+ //文本
|
|
|
+ case 2:
|
|
|
+ LambdaQueryWrapper<ReportFieldText> queryWrapper =new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(ReportFieldText::getFieldId,params.getFieldId());
|
|
|
+ List<ReportFieldText> reportFieldTexts =reportFieldTextService.list(queryWrapper);
|
|
|
+ reportFieldTexts.forEach(item->{
|
|
|
+ PatentQueryFieldSourceVO patentQueryFieldSourceVO=new PatentQueryFieldSourceVO();
|
|
|
+ patentQueryFieldSourceVO.setFieldId(params.getFieldId());
|
|
|
+ patentQueryFieldSourceVO.setKey(item.getId());
|
|
|
+ patentQueryFieldSourceVO.setLabel(item.getText());
|
|
|
+ list.add(patentQueryFieldSourceVO);
|
|
|
+ });
|
|
|
+ break;
|
|
|
+
|
|
|
+ //单选
|
|
|
+ case 4:
|
|
|
+
|
|
|
+ //多选
|
|
|
+ case 5:
|
|
|
+ LambdaQueryWrapper<ReportFieldOption> queryWrapper5 =new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper5.eq(ReportFieldOption::getFieldId,params.getFieldId());
|
|
|
+ List<ReportFieldOption> reportFieldOption =reportFieldOptionService.list(queryWrapper5);
|
|
|
+ reportFieldOption.forEach(item->{
|
|
|
+ PatentQueryFieldSourceVO patentQueryFieldSourceVO=new PatentQueryFieldSourceVO();
|
|
|
+ patentQueryFieldSourceVO.setFieldId(params.getFieldId());
|
|
|
+ patentQueryFieldSourceVO.setKey(item.getId());
|
|
|
+ patentQueryFieldSourceVO.setLabel(item.getName());
|
|
|
+ list.add(patentQueryFieldSourceVO);
|
|
|
+ });
|
|
|
+ break;
|
|
|
|
|
|
-// public IPage<PatentQueryFieldSourceDTO> getPatentAttributeSourcePageList(PatentQueryFieldSourceVO params) {
|
|
|
-// this.setPatentQuerySourceParams(params);
|
|
|
-// if (params.getKey().equals("40-0")) {
|
|
|
-// Integer projectId = params.getProjectId();
|
|
|
-// List<PatentQueryFieldSourceDTO> dataList = baseMapper.getCountStatus(projectId);
|
|
|
-// List<PatentQueryFieldSourceDTO> lstA = new ArrayList<>();
|
|
|
-// List<PatentQueryFieldSourceDTO> lstB = new ArrayList<>();
|
|
|
-// dataList.forEach(item -> {
|
|
|
-// if (StringUtils.changeStringToString(item.getLabel(), "\\|").size() > 1) {
|
|
|
-// lstA.add(item);
|
|
|
-// } else {
|
|
|
-// lstB.add(item);
|
|
|
-// }
|
|
|
-// });
|
|
|
-// lstA.forEach(item -> {
|
|
|
-// List<String> stringList = StringUtils.changeStringToString(item.getLabel(), "\\|");
|
|
|
-//
|
|
|
-// stringList.forEach(x -> {
|
|
|
-// List<PatentQueryFieldSourceDTO> lstC = new ArrayList<>();
|
|
|
-// for (PatentQueryFieldSourceDTO patentQueryFieldSourceDTO : lstB) {
|
|
|
-// if (!lstB.stream().map(PatentQueryFieldSourceDTO::getLabel).collect(Collectors.toList()).contains(x)) {
|
|
|
-// PatentQueryFieldSourceDTO a = new PatentQueryFieldSourceDTO();
|
|
|
-// a.setCount(item.getCount());
|
|
|
-// a.setLabel(x);
|
|
|
-// lstC.add(a);
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// if (patentQueryFieldSourceDTO.getLabel().equals(x)) {
|
|
|
-// patentQueryFieldSourceDTO.setCount(patentQueryFieldSourceDTO.getCount() + item.getCount());
|
|
|
-// }
|
|
|
-// }
|
|
|
-// lstB.addAll(lstC);
|
|
|
-// });
|
|
|
-// });
|
|
|
-// List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Collections.singletonList(Constants.PATENT_STATUS));
|
|
|
-// lstB.forEach(b -> {
|
|
|
-// Integer status = Integer.parseInt(systemDictList.stream()
|
|
|
-// .filter(systemDict -> systemDict.getType().equals(Constants.PATENT_STATUS) && systemDict.getLabel().equals(b.getLabel()))
|
|
|
-// .findFirst()
|
|
|
-// .orElse(new SystemDict()).getValue());
|
|
|
-// b.setValue(String.valueOf(status));
|
|
|
-// });
|
|
|
-// IPage<PatentQueryFieldSourceDTO> pageList = baseMapper.getPatentQuerySourcePageList(new Page<>(params.getCurrent(), params.getSize()), params, new ArrayList<>());
|
|
|
-// pageList.setRecords(lstB);
|
|
|
-// return pageList;
|
|
|
-// }
|
|
|
-// IPage<PatentQueryFieldSourceDTO> pageList = baseMapper.getPatentQuerySourcePageList(new Page<>(params.getCurrent(), params.getSize()), params, new ArrayList<>());
|
|
|
-// pageList.getRecords().forEach(item -> item.setIds(null));
|
|
|
-// return pageList;
|
|
|
-// }
|
|
|
-
|
|
|
-// private void setPatentQuerySourceParams(PatentQueryFieldSourceVO params) {
|
|
|
-// List<Integer> field = StringUtils.changeStringToInteger(params.getKey(), "-");
|
|
|
-// Integer type = 0;
|
|
|
-// Integer level = 0;
|
|
|
-// Integer status = 0;
|
|
|
-// switch (params.getKey()) {
|
|
|
-// case "18-6":
|
|
|
-// case "18-7":
|
|
|
-// case "18-8":
|
|
|
-// case "23-6":
|
|
|
-// case "23-7":
|
|
|
-// case "23-8":
|
|
|
-// params.setApplicantType(2);
|
|
|
-// break;
|
|
|
-// case "19-6":
|
|
|
-// case "19-7":
|
|
|
-// case "19-8":
|
|
|
-// case "24-6":
|
|
|
-// case "24-7":
|
|
|
-// case "24-8":
|
|
|
-// params.setApplicantType(1);
|
|
|
-// break;
|
|
|
-// case "29-17":
|
|
|
-// case "30-17":
|
|
|
-// case "29-18":
|
|
|
-// case "29-19":
|
|
|
-// case "29-20":
|
|
|
-// case "30-18":
|
|
|
-// case "30-19":
|
|
|
-// case "30-20":
|
|
|
-// params.setApplicantType(field.get(0) == 29 ? 2 : 1);
|
|
|
-// break;
|
|
|
-// default:
|
|
|
-// params.setCustomFieldId(field.get(0));
|
|
|
-// if (params.getType().equals("6") && field.get(1).equals(0)) {
|
|
|
-// params.setCustomFieldTreeType(0);
|
|
|
-// } else {
|
|
|
-// params.setCustomFieldTreeType(null);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
+ //树
|
|
|
+ case 6:
|
|
|
+ LambdaQueryWrapper<ReportFieldTree> queryWrapper6 =new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper6.eq(ReportFieldTree::getFieldId,params.getFieldId());
|
|
|
+ List<ReportFieldTree> reportFieldTrees =reportFieldTreeService.list(queryWrapper6);
|
|
|
+ reportFieldTrees.forEach(item->{
|
|
|
+ PatentQueryFieldSourceVO patentQueryFieldSourceVO=new PatentQueryFieldSourceVO();
|
|
|
+ patentQueryFieldSourceVO.setFieldId(params.getFieldId());
|
|
|
+ patentQueryFieldSourceVO.setKey(item.getId());
|
|
|
+ patentQueryFieldSourceVO.setLabel(item.getName());
|
|
|
+ list.add(patentQueryFieldSourceVO);
|
|
|
+ });
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ List<Integer> valueIds =list.stream().map(PatentQueryFieldSourceVO::getKey).collect(Collectors.toList());
|
|
|
+ LambdaQueryWrapper<ReportFieldPatentLink> lambdaQueryWrapper =new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(ReportFieldPatentLink::getFieldId,params.getFieldId())
|
|
|
+ .in(ReportFieldPatentLink::getOptionId,valueIds);
|
|
|
+ List<ReportFieldPatentLink> reportFieldPatentLinks =reportFieldPatentLinkService.list(lambdaQueryWrapper);
|
|
|
+ list.forEach(tem->{
|
|
|
+ List<ReportFieldPatentLink> part =reportFieldPatentLinks.stream().filter(tm->tm.getFieldId().equals(params.getFieldId())&&tm.getOptionId().equals(tem.getKey()
|
|
|
+ )).collect(Collectors.toList());
|
|
|
+ for(ReportFieldPatentLink reportFieldPatentLink : part){
|
|
|
+ PatentQueryFieldSourceVO patentQueryFieldSourceVO = new PatentQueryFieldSourceVO();
|
|
|
+ patentQueryFieldSourceVO.setPatentNo(reportFieldPatentLink.getPatentNo());
|
|
|
+ list.add(patentQueryFieldSourceVO);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ return list;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 模糊查询自定义字段(参数:自定义字段的id,和模糊查询的字段文本类型)
|
|
|
+ * 文本类型,单选,数字类型不用查
|
|
|
+ * @return 返回自定义字段
|
|
|
+ */
|
|
|
+ public String getReportField(int id,String name) {
|
|
|
+
|
|
|
+ LambdaQueryWrapper<ReportField> wrapper =new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(ReportField::getId,id);
|
|
|
+ ReportField reportField =this.list(wrapper).get(0);
|
|
|
+ Integer type1 =reportField.getType();
|
|
|
+ if(type1==1){
|
|
|
+ LambdaQueryWrapper<ReportFieldText> queryWrapper =new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(ReportFieldText::getFieldId, id)
|
|
|
+ .like(ReportFieldText::getText, name);
|
|
|
+ return Response.success(reportFieldTextService.list(queryWrapper));
|
|
|
+ }
|
|
|
+ else if(type1==5){
|
|
|
+ LambdaQueryWrapper<ReportFieldOption> queryWrapper5 =new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper5.eq(ReportFieldOption::getFieldId,id)
|
|
|
+ .like(ReportFieldOption::getName,name);
|
|
|
+ return Response.success( reportFieldOptionService.list(queryWrapper5));
|
|
|
+ }
|
|
|
+ else if(type1==6){
|
|
|
+ LambdaQueryWrapper<ReportFieldTree> queryWrapper6 =new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper6.eq(ReportFieldTree::getFieldId,id)
|
|
|
+ .like(ReportFieldTree::getName,name);
|
|
|
+ return Response.success(reportFieldTreeService.list(queryWrapper6));
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return Response.error();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 自定义字段的id查询专利号
|
|
|
+ * 并集:当自定义字段的id相同的时候取并集
|
|
|
+ * 交集:当自定义字段的id不同的时候取交集
|
|
|
+ * @param params PatentQueryFieldSourceVO
|
|
|
+ * @return PatentQueryFieldSourceVO
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ public String getPatent(List<PatentQueryFieldSourceVO> params)throws IOException{
|
|
|
+ //为一的时候只取一个
|
|
|
+ if(params.size()==1){
|
|
|
+ return Response.success(this.getPatentQuerySourcePageList2(params.get(0)));
|
|
|
+ }
|
|
|
+ //为0的时候错误
|
|
|
+ if(params.size()==0){
|
|
|
+ return Response.error();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return Response.success (this.gather(params));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<PatentQueryFieldSourceVO> gather(List<PatentQueryFieldSourceVO> params) throws IOException{
|
|
|
+ List<List<PatentQueryFieldSourceVO>> VO=new ArrayList<>();
|
|
|
+ List<PatentQueryFieldSourceVO> list=new ArrayList<>(params);
|
|
|
+ List<PatentQueryFieldSourceVO> list1=new ArrayList<>();
|
|
|
+ Map<Integer, List<PatentQueryFieldSourceVO>> map=new HashMap<>();
|
|
|
+ for(int i=0;i<list.size()-1;i++){
|
|
|
+ for (int j=i+1;j<list.size();j++){
|
|
|
+ if(list.get(i).getFieldId().equals(list.get(j).getFieldId())){
|
|
|
+ list.remove(list.get(j));
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for(int i=0;i<list.size();i++){
|
|
|
+ List<PatentQueryFieldSourceVO> list2=new ArrayList<>();
|
|
|
+ list2.add(list.get(i));
|
|
|
+ for(int j=0;j<params.size();j++){
|
|
|
+ if(list.get(i).getFieldId().equals(params.get(j).getFieldId())){
|
|
|
+ list2.add(params.get(j));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ map.put(list.get(i).getFieldId(),list2);
|
|
|
+ }
|
|
|
+ for( List<PatentQueryFieldSourceVO> a:map.values()){
|
|
|
+ List<PatentQueryFieldSourceVO> param=new ArrayList<>();
|
|
|
+ for(PatentQueryFieldSourceVO patentQueryFieldSourceVO :a){
|
|
|
+ List<PatentQueryFieldSourceVO> patentQuerySourcePageList2 = this.getPatentQuerySourcePageList2(patentQueryFieldSourceVO);
|
|
|
+ param.addAll(patentQuerySourcePageList2);
|
|
|
+
|
|
|
+ }
|
|
|
+ param.stream().distinct().collect(Collectors.toList());
|
|
|
+ VO.add(param);
|
|
|
+ }
|
|
|
+ List<PatentQueryFieldSourceVO> list2 = VO.get(0);
|
|
|
+ VO.forEach(item -> {
|
|
|
+ list2.retainAll((Collection<?>) item);
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ return list2;
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
|
|
|
|