package cn.cslg.pas.service; import cn.cslg.pas.common.utils.Response; import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils; import cn.cslg.pas.domain.PatentField; import cn.cslg.pas.domain.ProjectField; import cn.cslg.pas.common.core.base.Constants; import cn.cslg.pas.common.model.vo.SystemFieldVO; import cn.cslg.pas.common.utils.CacheUtils; import cn.dev33.satoken.stp.StpUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; /** *

* 系统字段 服务类 *

* * @author 王岩 * @since 2022-03-04 */ @Service @RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class PatentFieldService { private final CacheUtils cacheUtils; private final ProjectFieldService projectFieldService; private final List finalDefaultList = Arrays.asList("name", "ipcList", "applicationNo", "applicationDate", "applicant2", "applicant4"); private final List finalDefaultQuery = Arrays.asList("13", "18-6", "19-6", "25-12"); private final List finalProjectField = Arrays.asList("clientName", "scenarioid", "typeid", "technicalTheme"); private final LoginUtils loginUtils; public List getUserFieldDataList(Integer projectId, String from) { List patentFieldList = this.getList(from); List projectField = projectFieldService.getProjectFieldByProjectId(projectId); if (from.equals(Constants.SYSTEM_FIELD_QUERY)) { projectField = projectField.stream().filter(item -> !item.getType().equals(6)).collect(Collectors.toList()); } patentFieldList.addAll(projectField.stream().map(item -> { PatentField field = new PatentField(); field.setName(item.getName()); field.setType(String.valueOf(item.getType())); field.setKey(String.valueOf(item.getId())); return field; }).collect(Collectors.toList())); return patentFieldList; } public List getUserSetting(SystemFieldVO params) { Integer createId =loginUtils.getId(); if (params.getRefresh() != null && params.getRefresh()) { cacheUtils.deleteUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3,createId); } List dataList = this.getUserFieldDataList(params.getProjectId(), params.getType()); List userSetting = cacheUtils.getUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3,createId); if (userSetting == null || userSetting.size() == 0) { List defaultList = new ArrayList<>(); List patentFieldList = this.getList(params.getType()); switch (params.getType()) { case Constants.SYSTEM_FIELD_QUERY: defaultList = patentFieldList.stream().filter(item -> finalDefaultQuery.contains(item.getKey())).collect(Collectors.toList()); break; case Constants.SYSTEM_FIELD_PATENT_LIST: defaultList = patentFieldList.stream().filter(item -> finalDefaultList.contains(item.getKey())).collect(Collectors.toList()); break; case Constants.SYSTEM_FIELD_PROJECT: defaultList = patentFieldList.stream().filter(item -> finalProjectField.contains(item.getKey())).collect(Collectors.toList()); break; } cacheUtils.setUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3, defaultList,createId); userSetting = defaultList; } List finalUserSetting = userSetting; dataList.forEach(item -> { PatentField setting = finalUserSetting.stream().filter(patentField -> patentField.getKey().equals(item.getKey())).findFirst().orElse(null); item.setHidden(setting == null); item.setOrder(setting == null ? 0 : setting.getOrder()); }); return dataList.stream().sorted(Comparator.comparing(PatentField::getOrder)).collect(Collectors.toList()); } public List setUserSetting(SystemFieldVO params) { List patentFieldList = params.getData().stream().filter(item -> !item.getHidden()).collect(Collectors.toList()); for (int i = 0; i < patentFieldList.size(); i++) { patentFieldList.get(i).setHidden(null); patentFieldList.get(i).setOrder(i); } Integer createId =loginUtils.getId(); cacheUtils.setUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3, patentFieldList,createId); params.setRefresh(false); return this.getUserSetting(params); } public List getList() { List dataList = new ArrayList() {{ // add(new SystemField("name", "标题", Constants.SYSTEM_FIELD_QUERY, 1)); // add(new SystemField("abstract", "摘要", Constants.SYSTEM_FIELD_QUERY, 1)); // add(new SystemField("41-1", "公开(公告)号", Constants.SYSTEM_FIELD_QUERY, 1)); // add(new SystemField("41-2", "申请号", Constants.SYSTEM_FIELD_QUERY, 2)); add(new PatentField("18-6", "申请人", Constants.SYSTEM_FIELD_QUERY, 3)); add(new PatentField("19-6", "权利人", Constants.SYSTEM_FIELD_QUERY, 4)); add(new PatentField("20-0", "发明人", Constants.SYSTEM_FIELD_QUERY, 5)); add(new PatentField("18-7", "[标]申请人", Constants.SYSTEM_FIELD_QUERY, 6)); add(new PatentField("19-7", "[标]权利人", Constants.SYSTEM_FIELD_QUERY, 7)); add(new PatentField("18-8", "[合并]申请人", Constants.SYSTEM_FIELD_QUERY, 8)); add(new PatentField("19-8", "[合并]权利人", Constants.SYSTEM_FIELD_QUERY, 9)); add(new PatentField("20-1", "[合并]发明人", Constants.SYSTEM_FIELD_QUERY, 9)); add(new PatentField("13", "IPC分类号", Constants.SYSTEM_FIELD_QUERY, 10)); add(new PatentField("15", "CPC分类号", Constants.SYSTEM_FIELD_QUERY, 11)); add(new PatentField("17", "UPC分类号", Constants.SYSTEM_FIELD_QUERY, 12)); add(new PatentField("16", "LOC分类号", Constants.SYSTEM_FIELD_QUERY, 13)); add(new PatentField("25-12", "申请年", Constants.SYSTEM_FIELD_QUERY, 14)); add(new PatentField("28-0", "受理局", Constants.SYSTEM_FIELD_QUERY, 15)); add(new PatentField("37-0", "专利类型", Constants.SYSTEM_FIELD_QUERY, 16)); add(new PatentField("29-17", "申请人国家", Constants.SYSTEM_FIELD_QUERY, 17)); add(new PatentField("29-18", "申请人地区", Constants.SYSTEM_FIELD_QUERY, 18)); add(new PatentField("36-0", "专利状态", Constants.SYSTEM_FIELD_QUERY, 19)); add(new PatentField("40-0", "法律事件", Constants.SYSTEM_FIELD_QUERY, 20)); add(new PatentField("26-12", "公开年", Constants.SYSTEM_FIELD_QUERY, 21)); add(new PatentField("54-0", "标签", Constants.SYSTEM_FIELD_QUERY, 22)); add(new PatentField("pname", "标题", Constants.SYSTEM_FIELD_EXPORT, 1)); add(new PatentField("pname_out", "标题(译)", Constants.SYSTEM_FIELD_EXPORT, 1)); add(new PatentField("patentno", "专利号", Constants.SYSTEM_FIELD_EXPORT, 2)); add(new PatentField("abstract", "摘要", Constants.SYSTEM_FIELD_EXPORT, 3)); add(new PatentField("abstract_out", "摘要(译)", Constants.SYSTEM_FIELD_EXPORT, 3)); add(new PatentField("abstract_path", "摘要附图", Constants.SYSTEM_FIELD_EXPORT, 4)); add(new PatentField("applicationno", "申请号", Constants.SYSTEM_FIELD_EXPORT, 5)); add(new PatentField("appdate", "申请日", Constants.SYSTEM_FIELD_EXPORT, 6)); add(new PatentField("publicno", "公开号", Constants.SYSTEM_FIELD_EXPORT, 7)); add(new PatentField("publicdate", "公开日", Constants.SYSTEM_FIELD_EXPORT, 8)); add(new PatentField("fpublicdate", "首次公开日", Constants.SYSTEM_FIELD_EXPORT, 9)); add(new PatentField("publictono", "授权号", Constants.SYSTEM_FIELD_EXPORT, 10)); add(new PatentField("publictodate", "授权日", Constants.SYSTEM_FIELD_EXPORT, 11)); add(new PatentField("tags", "标签", Constants.SYSTEM_FIELD_EXPORT, 12)); add(new PatentField("bureau", "受理局", Constants.SYSTEM_FIELD_EXPORT, 13)); add(new PatentField("simplefamily", "简单同族", Constants.SYSTEM_FIELD_EXPORT, 14)); add(new PatentField("inpadocfamily", "Inpadoc同族", Constants.SYSTEM_FIELD_EXPORT, 15)); add(new PatentField("patsnapfamily", "扩展同族", Constants.SYSTEM_FIELD_EXPORT, 15)); add(new PatentField("intclassno", "IPC主分类号", Constants.SYSTEM_FIELD_EXPORT, 16)); add(new PatentField("ipc", "IPC分类号", Constants.SYSTEM_FIELD_EXPORT, 16)); add(new PatentField("intclasscpcno", "CPC分类号", Constants.SYSTEM_FIELD_EXPORT, 17)); add(new PatentField("intclassupcno", "UPC主分类号", Constants.SYSTEM_FIELD_EXPORT, 18)); add(new PatentField("upc", "UPC分类号", Constants.SYSTEM_FIELD_EXPORT, 18)); add(new PatentField("intclasslocno", "LOC分类号", Constants.SYSTEM_FIELD_EXPORT, 19)); add(new PatentField("pstatus", "专利状态", Constants.SYSTEM_FIELD_EXPORT, 20)); add(new PatentField("ptype", "专利类型", Constants.SYSTEM_FIELD_EXPORT, 21)); add(new PatentField("law_datetime", "发生日期", Constants.SYSTEM_FIELD_EXPORT, 22)); add(new PatentField("law_status", "法律状态", Constants.SYSTEM_FIELD_EXPORT, 23)); add(new PatentField("law_simplestatus", "简单法律状态", Constants.SYSTEM_FIELD_EXPORT, 24)); add(new PatentField("law_content", "事务内容", Constants.SYSTEM_FIELD_EXPORT, 25)); add(new PatentField("applicant", "申请人", Constants.SYSTEM_FIELD_EXPORT, 26)); add(new PatentField("applicant1", "[标]申请人", Constants.SYSTEM_FIELD_EXPORT, 26)); add(new PatentField("rightholder", "权利人", Constants.SYSTEM_FIELD_EXPORT, 27)); add(new PatentField("rightholder1", "[标]权利人", Constants.SYSTEM_FIELD_EXPORT, 27)); add(new PatentField("applicantcountry", "申请人国家", Constants.SYSTEM_FIELD_EXPORT, 28)); add(new PatentField("rightholdercountry", "权利人国家", Constants.SYSTEM_FIELD_EXPORT, 29)); add(new PatentField("applicantaddress", "申请人地址", Constants.SYSTEM_FIELD_EXPORT, 30)); add(new PatentField("rightholderaddress", "权利人地址", Constants.SYSTEM_FIELD_EXPORT, 31)); // add(new SystemField("applicantaddr", "申请人省市区", Constants.SYSTEM_FIELD_EXPORT, 32)); // add(new SystemField("rightholderaddr", "权利人省市区", Constants.SYSTEM_FIELD_EXPORT, 33)); add(new PatentField("firstapplicant", "第一申请人", Constants.SYSTEM_FIELD_EXPORT, 34)); add(new PatentField("firstrightholder", "第一权利人", Constants.SYSTEM_FIELD_EXPORT, 34)); add(new PatentField("firstapplicantaddr", "第一申请人地址", Constants.SYSTEM_FIELD_EXPORT, 35)); add(new PatentField("firstrightholderaddr", "第一权利人地址", Constants.SYSTEM_FIELD_EXPORT, 35)); add(new PatentField("firstapplicantnum", "申请人数量", Constants.SYSTEM_FIELD_EXPORT, 36)); add(new PatentField("inventor", "发明人", Constants.SYSTEM_FIELD_EXPORT, 37)); add(new PatentField("firstnventoraddr", "第一发明人地址", Constants.SYSTEM_FIELD_EXPORT, 38)); add(new PatentField("firstnventor", "第一发明人", Constants.SYSTEM_FIELD_EXPORT, 39)); add(new PatentField("inventornum", "发明人数量", Constants.SYSTEM_FIELD_EXPORT, 40)); add(new PatentField("num2", "权利要求数量", Constants.SYSTEM_FIELD_EXPORT, 41)); add(new PatentField("content", "权利要求", Constants.SYSTEM_FIELD_EXPORT, 42)); add(new PatentField("content_out", "权利要求(译)", Constants.SYSTEM_FIELD_EXPORT, 42)); add(new PatentField("selfcontent", "独立权利要求", Constants.SYSTEM_FIELD_EXPORT, 43)); add(new PatentField("priorityno", "优先权号", Constants.SYSTEM_FIELD_EXPORT, 44)); add(new PatentField("prioritycountry", "优先权国家", Constants.SYSTEM_FIELD_EXPORT, 45)); add(new PatentField("prioritydate", "优先权日", Constants.SYSTEM_FIELD_EXPORT, 46)); add(new PatentField("page", "文献页数", Constants.SYSTEM_FIELD_EXPORT, 47)); add(new PatentField("code", "文献代码", Constants.SYSTEM_FIELD_EXPORT, 48)); add(new PatentField("manual", "说明书", Constants.SYSTEM_FIELD_EXPORT, 49)); add(new PatentField("simplefamilynum", "简单同族数量", Constants.SYSTEM_FIELD_EXPORT, 50)); add(new PatentField("inpadocfamilynum", "Inpadoc同族数量", Constants.SYSTEM_FIELD_EXPORT, 51)); add(new PatentField("patsnapfamilynum", "扩展同族数量", Constants.SYSTEM_FIELD_EXPORT, 51)); add(new PatentField("quoteno", "引用专利数量", Constants.SYSTEM_FIELD_EXPORT, 52)); add(new PatentField("quotedno", "被引用数量", Constants.SYSTEM_FIELD_EXPORT, 53)); add(new PatentField("quotedno3", "三年内被引用数量", Constants.SYSTEM_FIELD_EXPORT, 54)); add(new PatentField("quotedno5", "五年内被引用数量", Constants.SYSTEM_FIELD_EXPORT, 55)); add(new PatentField("agency", "代理机构", Constants.SYSTEM_FIELD_EXPORT, 56)); add(new PatentField("agent", "代理人", Constants.SYSTEM_FIELD_EXPORT, 57)); add(new PatentField("wonational", "WO国家阶段", Constants.SYSTEM_FIELD_EXPORT, 58)); add(new PatentField("examiner", "审查员", Constants.SYSTEM_FIELD_EXPORT, 59)); add(new PatentField("assexaminer", "助理审查员", Constants.SYSTEM_FIELD_EXPORT, 60)); add(new PatentField("quote", "引用专利", Constants.SYSTEM_FIELD_EXPORT, 61)); add(new PatentField("quoted", "被引用专利", Constants.SYSTEM_FIELD_EXPORT, 62)); add(new PatentField("nonpatentquote", "非专利引用文献", Constants.SYSTEM_FIELD_EXPORT, 63)); add(new PatentField("epcountry", "指定国状态", Constants.SYSTEM_FIELD_EXPORT, 64)); add(new PatentField("name", "标题", Constants.SYSTEM_FIELD_PATENT_LIST, 1)); // add(new PatentField("nameOut", "标题(译)", Constants.SYSTEM_FIELD_PATENT_LIST, 1)); add(new PatentField("abstractStr", "摘要", Constants.SYSTEM_FIELD_PATENT_LIST, 3)); // add(new PatentField("abstractOut", "摘要(译)", Constants.SYSTEM_FIELD_PATENT_LIST, 3)); add(new PatentField("applicationNo", "申请号", Constants.SYSTEM_FIELD_PATENT_LIST, 4)); add(new PatentField("applicationDate", "申请日", Constants.SYSTEM_FIELD_PATENT_LIST, 5)); add(new PatentField("publicDate", "公开日", Constants.SYSTEM_FIELD_PATENT_LIST, 7)); add(new PatentField("publicAccreditDate", "授权日", Constants.SYSTEM_FIELD_PATENT_LIST, 8)); add(new PatentField("label", "标签", Constants.SYSTEM_FIELD_PATENT_LIST, 9)); add(new PatentField("simpleFamily", "简单同族", Constants.SYSTEM_FIELD_PATENT_LIST, 10)); add(new PatentField("inpadocFamily", "Inpadoc同族", Constants.SYSTEM_FIELD_PATENT_LIST, 11)); add(new PatentField("patSnapFamily", "扩展同族", Constants.SYSTEM_FIELD_PATENT_LIST, 11)); add(new PatentField("ipcList", "IPC分类号", Constants.SYSTEM_FIELD_PATENT_LIST, 12)); add(new PatentField("cpcList", "CPC分类号", Constants.SYSTEM_FIELD_PATENT_LIST, 13)); add(new PatentField("upcList", "UPC分类号", Constants.SYSTEM_FIELD_PATENT_LIST, 14)); add(new PatentField("locList", "LOC分类号", Constants.SYSTEM_FIELD_PATENT_LIST, 15)); add(new PatentField("rightNum", "权利要求数", Constants.SYSTEM_FIELD_PATENT_LIST, 16)); add(new PatentField("simpleStatus", "专利状态", Constants.SYSTEM_FIELD_PATENT_LIST, 17)); add(new PatentField("type", "专利类型", Constants.SYSTEM_FIELD_PATENT_LIST, 18)); add(new PatentField("applicant1", "[标]权利人", Constants.SYSTEM_FIELD_PATENT_LIST, 19)); add(new PatentField("applicant2", "权利人", Constants.SYSTEM_FIELD_PATENT_LIST, 20)); add(new PatentField("applicant3", "[标]申请人", Constants.SYSTEM_FIELD_PATENT_LIST, 21)); add(new PatentField("applicant4", "申请人", Constants.SYSTEM_FIELD_PATENT_LIST, 22)); add(new PatentField("inventor", "发明人", Constants.SYSTEM_FIELD_PATENT_LIST, 23)); add(new PatentField("quoteNum", "引用专利数量", Constants.SYSTEM_FIELD_PATENT_LIST, 24)); add(new PatentField("quotedNum", "被引用数量", Constants.SYSTEM_FIELD_PATENT_LIST, 25)); add(new PatentField("agency", "代理机构", Constants.SYSTEM_FIELD_PATENT_LIST, 26)); add(new PatentField("agent", "代理人", Constants.SYSTEM_FIELD_PATENT_LIST, 27)); add(new PatentField("publicAccreditNo", "授权号", Constants.SYSTEM_FIELD_PATENT_LIST, 28)); add(new PatentField("publicNo", "公开号", Constants.SYSTEM_FIELD_PATENT_LIST, 29)); add(new PatentField("clientName", "委托方", Constants.SYSTEM_FIELD_PROJECT, 1)); add(new PatentField("scenarioid", "应用场景", Constants.SYSTEM_FIELD_PROJECT, 1)); add(new PatentField("typeid", "调查类型", Constants.SYSTEM_FIELD_PROJECT, 1)); add(new PatentField("technicalTheme", "技术主题", Constants.SYSTEM_FIELD_PROJECT, 1)); add(new PatentField("contractNo", "合同号", Constants.SYSTEM_FIELD_PROJECT, 1)); add(new PatentField("caseDate", "委案日", Constants.SYSTEM_FIELD_PROJECT, 1)); add(new PatentField("createName", "创建人", Constants.SYSTEM_FIELD_PROJECT, 1)); add(new PatentField("createTime", "创建时间", Constants.SYSTEM_FIELD_PROJECT, 1)); add(new PatentField("departmentName", "所属部门", Constants.SYSTEM_FIELD_PROJECT, 1)); add(new PatentField("personnelName", "专题库负责人", Constants.SYSTEM_FIELD_PROJECT, 1)); }}; return dataList; } public List getList(String type) { List patentFieldList = this.getList(); return patentFieldList.stream().filter(item -> item.getType().equals(type)).collect(Collectors.toList()); } //获得专题库的所有自定义字段 //获得自定义字段列表 public List getPageList(Integer projectId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ProjectField::getProjectId, projectId); queryWrapper.orderByDesc(ProjectField::getId); List projectFields = projectFieldService.list(queryWrapper); return projectFields; } }