ProjectFieldService.java 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616
  1. package cn.cslg.pas.service;
  2. import cn.cslg.pas.common.model.dto.PatentDTO;
  3. import cn.cslg.pas.common.model.vo.ProjectFieldVO;
  4. import cn.cslg.pas.common.model.vo.UploadSettingVO;
  5. import cn.cslg.pas.common.utils.*;
  6. import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
  7. import cn.cslg.pas.domain.*;
  8. import cn.cslg.pas.mapper.ProjectFieldMapper;
  9. import cn.dev33.satoken.stp.StpUtil;
  10. import cn.hutool.core.lang.tree.Tree;
  11. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  12. import com.baomidou.mybatisplus.core.metadata.IPage;
  13. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  14. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  15. import lombok.RequiredArgsConstructor;
  16. import org.springframework.context.annotation.Lazy;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import java.util.*;
  20. import java.util.stream.Collectors;
  21. /**
  22. * <p>
  23. * 专利信息自定义字段表 服务类
  24. * </p>
  25. *
  26. * @author 王岩
  27. * @since 2021-12-16
  28. */
  29. @Service
  30. @RequiredArgsConstructor(onConstructor_ = {@Lazy})
  31. public class ProjectFieldService extends ServiceImpl<ProjectFieldMapper, ProjectField> {
  32. private final ProjectFieldOptionService projectFieldOptionService;
  33. private final ProjectFieldTreeService projectFieldTreeService;
  34. private final ProjectFolderService projectFolderService;
  35. private final ProjectFieldTextService projectFieldTextService;
  36. private final ProjectFieldPatentLinkService projectFieldPatentLinkService;
  37. private final PatentService patentService;
  38. private final FileUtils fileUtils;
  39. private final LoginUtils loginUtils;
  40. public List<PatentDTO.Field> getPatentFieldByPatentIdAndProjectId(Integer projectId, Integer patentId) {
  41. List<PatentDTO.Field> dataList = new ArrayList<>();
  42. List<ProjectFieldPatentLink> linkList = projectFieldPatentLinkService.getProjectPatentLinkByPatentAndProId(patentId, projectId);
  43. List<Integer> fieldIds = linkList.stream().map(ProjectFieldPatentLink::getFieldId).distinct().collect(Collectors.toList());
  44. List<Integer> optionIds = linkList.stream().map(ProjectFieldPatentLink::getOptionId).distinct().collect(Collectors.toList());
  45. List<ProjectField> fieldList = this.getFieldListByIds(fieldIds);
  46. List<ProjectFieldText> textList = projectFieldTextService.getProjectFieldTextByFieldIds(fieldIds);
  47. List<ProjectFieldOption> optionList = projectFieldOptionService.getFieldOptionList(fieldIds);
  48. List<ProjectFieldTree> treeList = projectFieldTreeService.getProjectFieldTreeOptionByFieldIds(fieldIds);
  49. fieldList.forEach(field -> {
  50. PatentDTO.Field data = new PatentDTO.Field();
  51. data.setId(field.getId());
  52. data.setName(field.getName());
  53. data.setType(field.getType());
  54. switch (field.getType()) {
  55. case 0:
  56. case 1:
  57. case 2:
  58. data.setSelected(textList.stream().filter(item -> item.getFieldId().equals(field.getId()) && optionIds.contains(item.getId())).map(ProjectFieldText::getText).distinct().collect(Collectors.toList()));
  59. break;
  60. case 3:
  61. case 4:
  62. case 5:
  63. data.setSelected(optionList.stream().filter(item -> item.getFieldId().equals(field.getId()) && optionIds.contains(item.getId())).map(ProjectFieldOption::getName).distinct().collect(Collectors.toList()));
  64. break;
  65. case 6:
  66. List<ProjectFieldTree> trees = treeList.stream().filter(item -> item.getFieldId().equals(field.getId())).collect(Collectors.toList());
  67. List<ProjectFieldTree> optionTree = trees.stream().filter(item -> optionIds.contains(item.getId())).collect(Collectors.toList());
  68. List<String> selected = new ArrayList<>();
  69. optionTree.forEach(item -> selected.add(PatentUtils.getTreeNodeFullName(trees, item.getPath())));
  70. data.setSelected(selected);
  71. break;
  72. }
  73. dataList.add(data);
  74. });
  75. return dataList;
  76. }
  77. public List<ProjectField> getProjectFieldByProjectId(Integer projectId) {
  78. LambdaQueryWrapper<ProjectField> queryWrapper = new LambdaQueryWrapper<>();
  79. queryWrapper.eq(ProjectField::getProjectId, projectId);
  80. return this.list(queryWrapper);
  81. }
  82. public List<ProjectField> getSystemField(Integer projectId) {
  83. List<ProjectField> fieldList = new ArrayList<>();
  84. List<ProjectField> systemField = this.getProjectSystemField();
  85. List<ProjectField> customField = this.getProjectCustomField(projectId);
  86. List<ProjectFieldExpand> expandList = this.getProjectFieldExpand();
  87. List<ProjectFieldSystemExpand> systemExpands = this.getProjectFieldSystemExpand();
  88. for (ProjectField item : systemField) {
  89. if (!item.getType().equals(96)) {
  90. List<Integer> eid = systemExpands.stream().filter(e -> e.getFieldId().equals(item.getId())).map(ProjectFieldSystemExpand::getExpandId).collect(Collectors.toList());
  91. if (eid.size() != 0) {
  92. item.setExpand(expandList.stream().filter(expand -> eid.contains(expand.getId())).collect(Collectors.toList()));
  93. }
  94. fieldList.add(item);
  95. } else {
  96. customField.add(item);
  97. }
  98. }
  99. for (ProjectField item : customField) {
  100. ProjectField field = new ProjectField();
  101. field.setName(item.getName());
  102. field.setId(item.getId());
  103. field.setType(item.getType());
  104. field.setPtype(this.getCustomFieldPtype(item, field, expandList));
  105. fieldList.add(field);
  106. }
  107. return fieldList;
  108. }
  109. public Integer getCustomFieldPtype(ProjectField item, ProjectField field, List<ProjectFieldExpand> expandList) {
  110. switch (item.getType()) {
  111. case 0:
  112. return 3;
  113. case 1:
  114. field.setExpand(expandList.stream().filter(e -> e.getPtype().equals(2) || e.getPtype().equals(4)).collect(Collectors.toList()));
  115. return 0;
  116. case 2:
  117. case 3:
  118. case 4:
  119. case 5:
  120. case 6:
  121. return 1;
  122. }
  123. return item.getPtype();
  124. }
  125. public List<ProjectField> getFieldListByIds(List<Integer> ids) {
  126. if (ids == null || ids.size() == 0) {
  127. return new ArrayList<>();
  128. }
  129. LambdaQueryWrapper<ProjectField> queryWrapper = new LambdaQueryWrapper<>();
  130. queryWrapper.in(ProjectField::getId, ids);
  131. return this.list(queryWrapper);
  132. }
  133. public List<ProjectField> getTreeOptionList(Integer projectId) {
  134. LambdaQueryWrapper<ProjectField> queryWrapper = new LambdaQueryWrapper<>();
  135. queryWrapper.eq(ProjectField::getProjectId, projectId);
  136. queryWrapper.eq(ProjectField::getType, 6);
  137. List<ProjectField> fieldList = this.list(queryWrapper);
  138. for (ProjectField field : fieldList) {
  139. List<Tree<Integer>> treeList = projectFieldTreeService.getProjectFieldTreeNodeByFieldId(field.getId());
  140. field.setOption(JsonUtils.jsonToList(JsonUtils.objectToJson(treeList), ProjectFieldOption.class));
  141. }
  142. return fieldList;
  143. }
  144. public List<ProjectField> getProjectCustomField(Integer projectId) {
  145. List<ProjectField> fieldList = this.getProjectFieldByProjectId(projectId);
  146. List<ProjectFieldOption> optionList = projectFieldOptionService.getFieldOptionList(fieldList.stream().map(ProjectField::getId).collect(Collectors.toList()));
  147. for (ProjectField item : fieldList) {
  148. if (item.getType() != 6) {
  149. item.setOption(optionList.stream().filter(option -> option.getFieldId().equals(item.getId())).collect(Collectors.toList()));
  150. } else {
  151. item.setOption(JsonUtils.jsonToList(JsonUtils.objectToJson(projectFieldTreeService.getProjectFieldTreeNodeByFieldId(item.getId())), ProjectFieldOption.class));
  152. }
  153. }
  154. return fieldList;
  155. }
  156. public Map<String, Object> getCustomField(Integer projectId) {
  157. Map<String, Object> result = new HashMap<>();
  158. List<ProjectField> indexs = new ArrayList<>();
  159. List<Object> classifys = new ArrayList<>();
  160. List<ProjectField> fieldList = this.getProjectFieldByProjectId(projectId);
  161. List<ProjectFieldOption> optionList = projectFieldOptionService.getFieldOptionList(fieldList.stream().map(ProjectField::getId).collect(Collectors.toList()));
  162. fieldList.forEach(item -> {
  163. if (item.getType() != 6) {
  164. item.setOption(optionList.stream().filter(option -> option.getFieldId().equals(item.getId())).collect(Collectors.toList()));
  165. indexs.add(item);
  166. } else {
  167. item.setOption(JsonUtils.jsonToList(JsonUtils.objectToJson(projectFieldTreeService.getProjectFieldTreeNodeByFieldId(item.getId())), ProjectFieldOption.class));
  168. classifys.add(item);
  169. }
  170. });
  171. List<ProjectFolder> folderList = projectFolderService.getProjectFolderOptionByProjectId(projectId);
  172. result.put("index", indexs);
  173. result.put("classify", classifys);
  174. result.put("folder", projectFolderService.getProjectFolderTreeNode(projectId, folderList));
  175. //数据源名称
  176. String getSettingJson = fileUtils.analysisJsonFile();
  177. List<UploadSettingVO> settingJsonList = JsonUtils.jsonToList(getSettingJson, UploadSettingVO.class);
  178. List<ProjectField.dataType> dataTypesLst = new ArrayList<>();
  179. Objects.requireNonNull(settingJsonList).forEach(item -> {
  180. ProjectField.dataType dataType = new ProjectField.dataType();
  181. dataType.setId(item.getSourceId());
  182. dataType.setName(item.getName());
  183. dataTypesLst.add(dataType);
  184. });
  185. result.put("dataType", dataTypesLst);
  186. return result;
  187. }
  188. public ProjectField getProjectFieldById(Integer id) {
  189. ProjectField projectField = this.getById(id);
  190. switch (projectField.getType()) {
  191. case 0:
  192. case 1:
  193. case 2:
  194. break;
  195. case 3:
  196. case 4:
  197. case 5:
  198. projectField.setOption(projectFieldOptionService.getListByFieldId(projectField.getId()));
  199. break;
  200. case 6:
  201. projectField.setOption(JsonUtils.jsonToList(JsonUtils.objectToJson(projectFieldTreeService.getProjectFieldTreeNodeByFieldId(projectField.getId())), ProjectFieldOption.class));
  202. break;
  203. }
  204. return projectField;
  205. }
  206. public ProjectField getProjectFieldByNameAndType(String name, Integer type, Integer projectId, Integer userId) {
  207. ProjectField projectField = this.getByProjectIdAndNameAndType(name, type, projectId);
  208. if (projectField == null) {
  209. projectField = new ProjectField();
  210. projectField.setType(type);
  211. projectField.setName(name);
  212. projectField.setCreateBy(userId);
  213. projectField.setCreateTime(DateUtils.getDateTime());
  214. projectField.setPtype(projectField.getType() == 6 ? 2 : 1);
  215. projectField.setStatus(1);
  216. projectField.setProjectId(projectId);
  217. projectField.insert();
  218. }
  219. switch (projectField.getType()) {
  220. case 0:
  221. case 1:
  222. case 2:
  223. projectField.setOption(projectFieldTextService.getProjectFieldTextByFieldId(projectField.getId()).stream().map(item -> {
  224. ProjectFieldOption projectFieldOption = new ProjectFieldOption();
  225. projectFieldOption.setId(item.getId());
  226. projectFieldOption.setName(item.getText());
  227. projectFieldOption.setFieldId(item.getFieldId());
  228. return projectFieldOption;
  229. }).collect(Collectors.toList()));
  230. break;
  231. case 3:
  232. case 4:
  233. case 5:
  234. projectField.setOption(projectFieldOptionService.getListByFieldId(projectField.getId()));
  235. break;
  236. case 6:
  237. projectField.setOption(JsonUtils.jsonToList(JsonUtils.objectToJson(projectFieldTreeService.getProjectFieldTreeNodeByFieldId(projectField.getId())), ProjectFieldOption.class));
  238. break;
  239. }
  240. return projectField;
  241. }
  242. public IPage<ProjectField> getPageList(ProjectFieldVO params) {
  243. IPage<ProjectField> pageList = baseMapper.getPageList(new Page<>(params.getCurrent(), params.getSize()), params);
  244. return pageList;
  245. }
  246. public ProjectField getByProjectIdAndNameAndType(String name, Integer type, Integer projectId) {
  247. LambdaQueryWrapper<ProjectField> queryWrapper = new LambdaQueryWrapper<>();
  248. queryWrapper.eq(ProjectField::getName, name);
  249. queryWrapper.eq(ProjectField::getType, type);
  250. queryWrapper.eq(ProjectField::getProjectId, projectId);
  251. return this.getOne(queryWrapper);
  252. }
  253. public ProjectField getProjectFieldByName(String name, Integer projectId) {
  254. LambdaQueryWrapper<ProjectField> queryWrapper = new LambdaQueryWrapper<>();
  255. queryWrapper.eq(ProjectField::getName, name);
  256. queryWrapper.eq(ProjectField::getProjectId, projectId);
  257. return this.getOne(queryWrapper);
  258. }
  259. public String add(ProjectField projectField) {
  260. ProjectField temp = this.getProjectFieldByName(projectField.getName(), projectField.getProjectId());
  261. if (temp != null) {
  262. return Response.error("字段名称已存在");
  263. }
  264. projectField.setPtype(projectField.getType() == 6 ? 2 : 1);
  265. projectField.setCreateBy(loginUtils.getId());
  266. projectField.setCreateTime(DateUtils.getDateTime());
  267. projectField.setProjectId(projectField.getProjectId());
  268. projectField.insert();
  269. return Response.success(projectField.getId());
  270. }
  271. public String edit(ProjectField projectField) {
  272. ProjectField temp = this.getProjectFieldByName(projectField.getName(), projectField.getProjectId());
  273. if (temp != null && !temp.getId().equals(projectField.getId())) {
  274. return Response.error("字段名称已存在");
  275. }
  276. projectField.setPtype(projectField.getType() == 6 ? 2 : 1);
  277. projectField.updateById();
  278. return Response.success(true);
  279. }
  280. @Transactional
  281. public String delete(Integer id) {
  282. this.removeById(id);
  283. projectFieldTextService.deleteByFieldId(id);
  284. projectFieldOptionService.deleteByFieldId(id);
  285. projectFieldTreeService.deleteByFieldId(id);
  286. projectFieldPatentLinkService.deleteByFieldId(id);
  287. return Response.success(true);
  288. }
  289. @Transactional
  290. public void deleteByProjectId(Integer projectId) {
  291. List<Integer> ids = this.getProjectFieldByProjectId(projectId).stream().map(ProjectField::getId).collect(Collectors.toList());
  292. for (Integer id : ids) {
  293. this.delete(id);
  294. }
  295. }
  296. public void importProjectField(Integer projectId, Integer userId, String patentIdPatentNoJson, String projectFieldJson, String projectFieldTextJson, String projectFieldOptionJson, String projectFieldTreeJson, String projectFieldPatentLink) {
  297. List<Patent> importPatentList = JsonUtils.jsonToList(patentIdPatentNoJson, Patent.class);
  298. List<Patent> localPatentList = patentService.getPatentListByPatentNo(importPatentList.stream().map(Patent::getPatentNo).collect(Collectors.toList()));
  299. List<Integer> localPatentIds = localPatentList.stream().map(Patent::getId).collect(Collectors.toList());
  300. List<ProjectField> importProjectFieldList = JsonUtils.jsonToList(projectFieldJson, ProjectField.class);
  301. List<ProjectField> localProjectFieldList = this.getProjectFieldByProjectId(projectId);
  302. List<ProjectFieldText> projectFieldTextList = JsonUtils.jsonToList(projectFieldTextJson, ProjectFieldText.class);
  303. List<ProjectFieldOption> projectFieldOptionList = JsonUtils.jsonToList(projectFieldOptionJson, ProjectFieldOption.class);
  304. List<ProjectFieldTree> projectFieldTreeList = JsonUtils.jsonToList(projectFieldTreeJson, ProjectFieldTree.class);
  305. List<ProjectFieldPatentLink> projectFieldPatentLinkList = JsonUtils.jsonToList(projectFieldPatentLink, ProjectFieldPatentLink.class);
  306. for (ProjectField projectField : importProjectFieldList) {
  307. ProjectField localProjectField = localProjectFieldList.stream().filter(item -> item.getName().equals(projectField.getName())).findFirst().orElse(null);
  308. if (localProjectField != null && !localProjectField.getType().equals(projectField.getType())) {
  309. continue;
  310. }
  311. if (localProjectField == null) {
  312. localProjectField = new ProjectField();
  313. localProjectField.setCreateBy(userId);
  314. localProjectField.setCreateTime(DateUtils.getDateTime());
  315. localProjectField.setProjectId(projectId);
  316. localProjectField.setName(projectField.getName());
  317. localProjectField.setType(projectField.getType());
  318. localProjectField.setPtype(projectField.getPtype());
  319. localProjectField.insert();
  320. }
  321. projectFieldPatentLinkService.deleteByPatentIdsAndProjectIdAndFieldId(localPatentIds, projectId, localProjectField.getId());
  322. List<ProjectFieldPatentLink> importProjectPatentLinkList = projectFieldPatentLinkList.stream().filter(item -> item.getFieldId().equals(projectField.getId())).collect(Collectors.toList());
  323. switch (projectField.getType()) {
  324. case 0:
  325. case 1:
  326. case 2:
  327. List<ProjectFieldText> importProjectFieldTextList = projectFieldTextList.stream().filter(item -> item.getFieldId().equals(projectField.getId())).collect(Collectors.toList());
  328. List<ProjectFieldText> localProjectFieldTextList = projectFieldTextService.getProjectFieldTextByFieldId(localProjectField.getId());
  329. for (ProjectFieldText projectFieldText : importProjectFieldTextList) {
  330. ProjectFieldText localProjectFieldText = localProjectFieldTextList.stream().filter(item -> item.getText().equals(projectFieldText.getText())).findFirst().orElse(null);
  331. if (localProjectFieldText == null) {
  332. localProjectFieldText = new ProjectFieldText();
  333. localProjectFieldText.setText(projectFieldText.getText());
  334. localProjectFieldText.setFieldId(localProjectField.getId());
  335. localProjectFieldText.insert();
  336. }
  337. projectFieldPatentLinkService.importProjectFieldPatentLink(importPatentList, localPatentList, importProjectPatentLinkList, projectId, userId, projectFieldText.getFieldId(), projectFieldText.getId(), localProjectFieldText.getFieldId(), localProjectFieldText.getId());
  338. }
  339. break;
  340. case 3:
  341. case 4:
  342. case 5:
  343. List<ProjectFieldOption> importProjectFieldOptionList = projectFieldOptionList.stream().filter(item -> item.getFieldId().equals(projectField.getId())).collect(Collectors.toList());
  344. List<ProjectFieldOption> localProjectFieldOptionList = projectFieldOptionService.getListByFieldId(localProjectField.getId());
  345. for (ProjectFieldOption projectFieldOption : importProjectFieldOptionList) {
  346. ProjectFieldOption localProjectFieldOption = localProjectFieldOptionList.stream().filter(item -> item.getName().equals(projectFieldOption.getName())).findFirst().orElse(null);
  347. if (localProjectFieldOption == null) {
  348. localProjectFieldOption = new ProjectFieldOption();
  349. localProjectFieldOption.setName(projectFieldOption.getName());
  350. localProjectFieldOption.setFieldId(localProjectField.getId());
  351. localProjectFieldOption.insert();
  352. }
  353. projectFieldPatentLinkService.importProjectFieldPatentLink(importPatentList, localPatentList, importProjectPatentLinkList, projectId, userId, projectFieldOption.getFieldId(), projectFieldOption.getId(), localProjectFieldOption.getFieldId(), localProjectFieldOption.getId());
  354. }
  355. break;
  356. case 6:
  357. List<ProjectFieldTree> importProjectFieldTreeList = projectFieldTreeList.stream().filter(item -> item.getFieldId().equals(projectField.getId())).sorted(Comparator.comparing(ProjectFieldTree::getLevel)).collect(Collectors.toList());
  358. for (ProjectFieldTree projectFieldTree : importProjectFieldTreeList) {
  359. ProjectFieldTree localProjectFieldTree = projectFieldTreeService.getProjectFieldTreeOptionByFieldIdAndNameAndLevel(localProjectField.getId(), projectFieldTree.getName(), projectFieldTree.getLevel());
  360. if (localProjectFieldTree == null) {
  361. localProjectFieldTree = new ProjectFieldTree();
  362. localProjectFieldTree.setFieldId(localProjectField.getId());
  363. if (projectFieldTree.getLevel().equals(1)) {
  364. localProjectFieldTree.setParentId(0);
  365. } else {
  366. ProjectFieldTree importProjectFieldTreeParent = importProjectFieldTreeList.stream().filter(item -> item.getId().equals(projectFieldTree.getParentId())).findFirst().orElse(new ProjectFieldTree());
  367. ProjectFieldTree localProjectFieldTreeParent = projectFieldTreeService.getProjectFieldTreeOptionByFieldIdAndNameAndLevel(localProjectField.getId(), importProjectFieldTreeParent.getName(), importProjectFieldTreeParent.getLevel());
  368. localProjectFieldTree.setParentId(localProjectFieldTreeParent.getId());
  369. }
  370. localProjectFieldTree.setOrder(-1);
  371. localProjectFieldTree.setName(projectFieldTree.getName());
  372. localProjectFieldTree.insert();
  373. projectFieldTreeService.edit(localProjectFieldTree);
  374. }
  375. projectFieldPatentLinkService.importProjectFieldPatentLink(importPatentList, localPatentList, importProjectPatentLinkList, projectId, userId, projectFieldTree.getFieldId(), projectFieldTree.getId(), localProjectFieldTree.getFieldId(), localProjectFieldTree.getId());
  376. }
  377. break;
  378. }
  379. }
  380. }
  381. @Transactional
  382. public void importProjectField(List<Integer> ids, Integer projectId) {
  383. for (Integer id : ids) {
  384. ProjectField temp = this.getProjectFieldById(id);
  385. temp.setProjectId(projectId);
  386. temp.setId(null);
  387. switch (temp.getType()) {
  388. case 0:
  389. case 1:
  390. case 2:
  391. break;
  392. case 3:
  393. case 4:
  394. case 5:
  395. temp.getOption().forEach(item -> item.setId(null));
  396. break;
  397. case 6:
  398. this.setImportTreeNodeIdToNull(temp.getOption());
  399. break;
  400. }
  401. this.add(temp);
  402. }
  403. }
  404. @Transactional
  405. public void copyProjectField(Integer id, List<Integer> projectIds) {
  406. ProjectField temp = this.getProjectFieldById(id);
  407. for (Integer projectId : projectIds) {
  408. temp.setProjectId(projectId);
  409. temp.setId(null);
  410. switch (temp.getType()) {
  411. case 0:
  412. case 1:
  413. case 2:
  414. break;
  415. case 3:
  416. case 4:
  417. case 5:
  418. temp.getOption().forEach(item -> item.setId(null));
  419. break;
  420. case 6:
  421. this.setImportTreeNodeIdToNull(temp.getOption());
  422. break;
  423. }
  424. this.add(temp);
  425. }
  426. }
  427. private void setImportTreeNodeIdToNull(List<ProjectFieldOption> treeList) {
  428. treeList.forEach(tree -> {
  429. tree.setId(null);
  430. tree.setPath(null);
  431. tree.setParentId(null);
  432. tree.setLevel(null);
  433. tree.setOrder(null);
  434. if (tree.getChildren() != null && tree.getChildren().size() != 0) {
  435. this.setImportTreeNodeIdToNull(tree.getChildren());
  436. }
  437. });
  438. }
  439. public List<ProjectField> getProjectSystemField() {
  440. List<ProjectField> projectFieldList = new ArrayList<>();
  441. projectFieldList.add(this.buildProjectFieldEntity(13, "IPC分类号", 90, 0));
  442. projectFieldList.add(this.buildProjectFieldEntity(14, "IPC主分类号", 90, 0));
  443. projectFieldList.add(this.buildProjectFieldEntity(15, "CPC分类号", 90, 0));
  444. projectFieldList.add(this.buildProjectFieldEntity(16, "LOC分类号", 90, 0));
  445. projectFieldList.add(this.buildProjectFieldEntity(17, "UPC分类号", 90, 0));
  446. projectFieldList.add(this.buildProjectFieldEntity(18, "申请人", 91, 0));
  447. projectFieldList.add(this.buildProjectFieldEntity(19, "权利人", 91, 0));
  448. projectFieldList.add(this.buildProjectFieldEntity(20, "发明人", 91, 1));
  449. projectFieldList.add(this.buildProjectFieldEntity(21, "代理机构", 91, 1));
  450. projectFieldList.add(this.buildProjectFieldEntity(22, "代理人", 91, 1));
  451. projectFieldList.add(this.buildProjectFieldEntity(23, "第一申请人", 91, 0));
  452. projectFieldList.add(this.buildProjectFieldEntity(24, "第一权利人", 91, 0));
  453. projectFieldList.add(this.buildProjectFieldEntity(25, "申请日", 92, 0));
  454. projectFieldList.add(this.buildProjectFieldEntity(26, "公开日", 92, 0));
  455. projectFieldList.add(this.buildProjectFieldEntity(27, "授权日", 92, 0));
  456. projectFieldList.add(this.buildProjectFieldEntity(28, "受理局", 93, 1));
  457. projectFieldList.add(this.buildProjectFieldEntity(29, "申请人", 93, 0));
  458. projectFieldList.add(this.buildProjectFieldEntity(30, "权利人", 93, 0));
  459. projectFieldList.add(this.buildProjectFieldEntity(31, "优先权国家", 93, 1));
  460. projectFieldList.add(this.buildProjectFieldEntity(32, "引用专利数量", 94, 3));
  461. projectFieldList.add(this.buildProjectFieldEntity(33, "被引用专利数量", 94, 3));
  462. projectFieldList.add(this.buildProjectFieldEntity(34, "inpadoc同族数量", 94, 3));
  463. projectFieldList.add(this.buildProjectFieldEntity(35, "简单同族数量", 94, 3));
  464. projectFieldList.add(this.buildProjectFieldEntity(55, "扩展同族数量", 94, 3));
  465. projectFieldList.add(this.buildProjectFieldEntity(36, "法律状态", 95, 1));
  466. projectFieldList.add(this.buildProjectFieldEntity(37, "专利类型", 95, 1));
  467. projectFieldList.add(this.buildProjectFieldEntity(38, "权利要求数量", 95, 3));
  468. projectFieldList.add(this.buildProjectFieldEntity(39, "独立权利要求数量", 95, 3));
  469. projectFieldList.add(this.buildProjectFieldEntity(54, "标签", 96, 1));
  470. return projectFieldList;
  471. }
  472. public List<ProjectFieldExpand> getProjectFieldExpand() {
  473. List<ProjectFieldExpand> projectFieldExpandList = new ArrayList<>();
  474. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(1, "部", 1));
  475. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(2, "大类", 1));
  476. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(3, "小类", 1));
  477. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(4, "大组", 1));
  478. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(5, "小组", 1));
  479. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(6, "当前", 1));
  480. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(7, "标准", 1));
  481. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(8, "合并后", 1));
  482. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(9, "月", 2));
  483. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(10, "季", 2));
  484. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(11, "半年", 2));
  485. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(12, "年", 2));
  486. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(13, "2年", 2));
  487. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(14, "3年", 2));
  488. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(15, "5年", 2));
  489. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(16, "自定义", 4));
  490. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(17, "国家", 1));
  491. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(18, "省", 1));
  492. projectFieldExpandList.add(this.buildProjectFieldExpandEntity(19, "市", 1));
  493. return projectFieldExpandList;
  494. }
  495. public List<ProjectFieldSystemExpand> getProjectFieldSystemExpand() {
  496. List<ProjectFieldSystemExpand> projectFieldSystemExpandList = new ArrayList<>();
  497. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(13, 1));
  498. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(13, 2));
  499. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(13, 3));
  500. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(13, 4));
  501. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(13, 5));
  502. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(14, 1));
  503. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(14, 2));
  504. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(14, 3));
  505. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(14, 4));
  506. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(14, 5));
  507. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(15, 1));
  508. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(15, 2));
  509. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(15, 3));
  510. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(15, 4));
  511. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(15, 5));
  512. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(16, 2));
  513. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(16, 3));
  514. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(17, 2));
  515. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(17, 3));
  516. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(18, 6));
  517. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(18, 7));
  518. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(18, 8));
  519. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(19, 6));
  520. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(19, 7));
  521. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(19, 8));
  522. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(23, 6));
  523. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(23, 7));
  524. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(23, 8));
  525. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(24, 6));
  526. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(24, 7));
  527. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(24, 8));
  528. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(25, 9));
  529. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(25, 10));
  530. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(25, 11));
  531. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(25, 12));
  532. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(25, 13));
  533. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(25, 14));
  534. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(25, 15));
  535. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(25, 16));
  536. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(26, 9));
  537. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(26, 10));
  538. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(26, 11));
  539. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(26, 12));
  540. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(26, 13));
  541. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(26, 14));
  542. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(26, 15));
  543. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(26, 16));
  544. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(27, 9));
  545. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(27, 10));
  546. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(27, 11));
  547. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(27, 12));
  548. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(27, 13));
  549. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(27, 14));
  550. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(27, 15));
  551. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(27, 16));
  552. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(29, 17));
  553. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(29, 18));
  554. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(29, 19));
  555. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(30, 17));
  556. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(30, 18));
  557. projectFieldSystemExpandList.add(this.buildProjectFieldSystemExpandEntity(30, 19));
  558. return projectFieldSystemExpandList;
  559. }
  560. public ProjectField buildProjectFieldEntity(Integer id, String name, Integer type, Integer ptype) {
  561. ProjectField projectField = new ProjectField();
  562. projectField.setId(id);
  563. projectField.setName(name);
  564. projectField.setType(type);
  565. projectField.setPtype(ptype);
  566. return projectField;
  567. }
  568. public ProjectFieldExpand buildProjectFieldExpandEntity(Integer id, String name, Integer ptype) {
  569. ProjectFieldExpand projectFieldExpand = new ProjectFieldExpand();
  570. projectFieldExpand.setId(id);
  571. projectFieldExpand.setName(name);
  572. projectFieldExpand.setPtype(ptype);
  573. return projectFieldExpand;
  574. }
  575. public ProjectFieldSystemExpand buildProjectFieldSystemExpandEntity(Integer fieldId, Integer expandId) {
  576. ProjectFieldSystemExpand projectFieldSystemExpand = new ProjectFieldSystemExpand();
  577. projectFieldSystemExpand.setFieldId(fieldId);
  578. projectFieldSystemExpand.setExpandId(expandId);
  579. return projectFieldSystemExpand;
  580. }
  581. }