package cn.cslg.pas.controller; import cn.cslg.pas.common.core.annotation.Permission; import cn.cslg.pas.common.core.base.Constants; import cn.cslg.pas.common.model.dto.PatentDTO; import cn.cslg.pas.common.model.dto.PatentMarketDataDTO; import cn.cslg.pas.common.utils.*; import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils; import cn.cslg.pas.common.utils.auth.checkAuth; import cn.cslg.pas.domain.Patent; import cn.cslg.pas.common.model.vo.*; import cn.cslg.pas.domain.PatentRight; import cn.cslg.pas.service.*; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.web.bind.annotation.*; import java.util.Collections; import java.util.List; /** *

* 专利 前端控制器 *

* * @author 王岩 * @since 2021-12-24 */ @Tag(name = "专利") @RestController @RequestMapping(Constants.API_VERSION_V2 + "/patent") @RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class PatentController { private final PatentService patentService; private final ProjectPatentLinkService projectPatentLinkService; private final TaskService taskService; private final CacheUtils cacheUtils; private final ProjectFieldPatentLinkService projectFieldPatentLinkService; private final LoginUtils loginUtils; private final PatentRightService patentRightService; private final IPatentMarketDataService patentMarketDataService; @GetMapping("/read/total") @Operation(summary = "专利阅读状态统计") public String getPatentReadTotal(PatentReadVO params) { return Response.success(projectPatentLinkService.getPatentReadTotal(params)); } @checkAuth(FunId = "/workspace/folder/isRead") @Permission(roles = {2}) @PostMapping("/read/update") @Operation(summary = "修改专利阅读状态") public String updatePatentReadStatus(@RequestBody PatentReadVO params) { return Response.success(projectPatentLinkService.updatePatentReadStatus(params)); } @PostMapping("list") @Operation(summary = "专利列表") public String getList(@RequestBody PatentVO params) { return Response.success(patentService.getPageList(params)); } @GetMapping("{id}") @Operation(summary = "根据ID获取专利") public String getPatentById(@PathVariable Integer id, Integer projectId) { return Response.success(patentService.getPatentDTOById(id, projectId)); } @GetMapping("patentNo") @Operation(summary = "根据专利号获取专利所有信息") public String getPatentIdByPatentNo(String patentNo, Integer projectId) { PatentDTO patentDTO = patentService.getPatentDTOById(patentNo, projectId); return Response.success(patentDTO); } @GetMapping("id") @Operation(summary = "根据专利号获取专利") public String getPatentByPatentNo(String patentNo) { Patent patent = patentService.getByPatentNo(patentNo); return Response.success(patent); } @PostMapping("ids") @Operation(summary = "根据范围获取专利ID") public String getPatentListIds(@RequestBody PatentVO params) { return Response.success(patentService.getPatentListIds(params)); } @checkAuth(FunId = "/workspace/folder/exportPatent") @PostMapping("export") @Operation(summary = "导出专利") public String export(@RequestBody PatentExportParams params) { String id = cacheUtils.getSelectPatentIds(params.getKey()); List ids; if (StringUtils.isEmpty(id) && params.getPatentId() == null) { return Response.error(ResponseEnum.QUERY_CACHE_ERROR); } if (StringUtils.isNotEmpty(params.getKey())) { ids = StringUtils.changeStringToInteger(id, ","); } else { ids = Collections.singletonList(params.getPatentId()); } Integer taskId = taskService.add2(params.getProjectId(), params.getSelected().stream().filter(PatentExportVO::getSelected).distinct().count(), ids.size()); TaskParams taskParams = new TaskParams(); taskParams.setTaskId(taskId); taskParams.setTaskType(2); taskParams.setIds(StringUtils.join(ids, ",")); taskParams.setProjectId(params.getProjectId()); taskParams.setSelected(JsonUtils.objectToJson(params.getSelected())); taskParams.setUserId(String.valueOf(loginUtils.getId())); patentService.exportPatent(taskParams); return Response.success(true); } @PostMapping("/query/source") @Operation(summary = "查看字段的统计数据") public String getPatentQuerySourcePageList(@RequestBody PatentQueryFieldSourceVO params) { return Response.success(patentService.getPatentQuerySourcePageList(params)); } @PostMapping("/save/select") @Operation(summary = "保存选择的专利") public String saveSelectPatentIds(@RequestBody PatentVO params) { List ids = patentService.getQueryPatentIds(params); return Response.success(cacheUtils.setSelectPatentIds(ids)); } @checkAuth(FunId = "/workspace/folder/batchOperation/batchIndexing") @Permission(roles = {1, 2}) @PostMapping("/batch/index") @Operation(summary = "批量批量专利标引") public String patentBatchIndex(@RequestBody PatentBatchIndexVO params) { projectFieldPatentLinkService.patentBatchIndex(params); return Response.success(true); } @GetMapping("/index/setting") @Operation(summary = "获取专利标引情况") public String getPatentIndexSetting(PatentIndexSettingVO params) { return Response.success(projectFieldPatentLinkService.getPatentIndexSetting(params)); } @GetMapping("/index/setting/all") @Operation(summary = "获取当前专利所有标引情况") public String getPatentIndexSetting2(Integer patentId, Integer projectId) { return Response.success(projectFieldPatentLinkService.getPatentIndexSetting2(patentId, projectId)); } @checkAuth(FunId = "/workspace/details/indexing") @Permission(roles = {1, 2}) @PostMapping("/index/setting") @Operation(summary = "修改专利标引") public String updatePatentIndexSetting(@RequestBody PatentIndexSettingVO params) { projectFieldPatentLinkService.updatePatentIndexSetting(params); return Response.success(true); } @PostMapping("between") @Operation(summary = "获取当前专利相邻的两篇专利和统计信息") public String getBetweenPatentList(@RequestBody PatentVO params) { return Response.success(patentService.getBetweenPatentList(params)); } @GetMapping("right") @Operation(summary = "根据专利号获得专利的权要") public String getRightList(String patentNo) { List patentRights = patentRightService.getPatentRightByPatentNo(patentNo); return Response.success(patentRights); } @GetMapping("getPatentNos") @Operation(summary = "根据专题库号获得专利号") public String getPatentNos(Integer projectId) { String res = patentService.getPatentNos(projectId); return res; } @PostMapping("getPagination") @Operation(summary = "分页获取专利") public String getPagination(@RequestBody PatentVO patentVO) { return patentService.getPagination(patentVO.getPatentNos(), patentVO.getStartNumber()); } @Operation(summary = "查询专利价值曲线") @PostMapping("/showTrend") public String showTrend(@RequestBody PatentMarketDataDTO dto) { List queryResult = patentMarketDataService.showTrend(dto); if (queryResult != null) { return Response.success(queryResult); } else { return Response.error("查询失败"); } } }