AsInvalidReasonHistoryService.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. package cn.cslg.pas.service.business;
  2. import cn.cslg.pas.common.dto.business.AsInvalidReasonHistoryDTO;
  3. import cn.cslg.pas.common.model.cronModel.Personnel;
  4. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  5. import cn.cslg.pas.common.model.cronModel.Records;
  6. import cn.cslg.pas.common.model.cronModel.SystemFile;
  7. import cn.cslg.pas.common.utils.CacheUtils;
  8. import cn.cslg.pas.common.utils.LoginUtils;
  9. import cn.cslg.pas.common.utils.StringUtils;
  10. import cn.cslg.pas.common.vo.business.AsInvalidReasonHistoryVO;
  11. import cn.cslg.pas.domain.business.*;
  12. import cn.cslg.pas.exception.XiaoShiException;
  13. import cn.cslg.pas.mapper.AsInvalidReasonHistoryMapper;
  14. import cn.cslg.pas.service.business.invalidReport.AssoReasonLiteratureService;
  15. import cn.cslg.pas.service.common.FileManagerService;
  16. import cn.cslg.pas.service.permissions.PermissionService;
  17. import com.alibaba.fastjson.JSONObject;
  18. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  19. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  20. import lombok.extern.slf4j.Slf4j;
  21. import org.springframework.beans.BeanUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import java.io.IOException;
  25. import java.util.*;
  26. import java.util.stream.Collectors;
  27. /**
  28. * 作为无效证据使用历史
  29. * @Author xiexiang
  30. * @Date 2024/1/19
  31. */
  32. @Slf4j
  33. @Service
  34. public class AsInvalidReasonHistoryService extends ServiceImpl<AsInvalidReasonHistoryMapper, AsInvalidReasonHistory> {
  35. @Autowired
  36. private LoginUtils loginUtils;
  37. @Autowired
  38. private CacheUtils cacheUtils;
  39. @Autowired
  40. private PermissionService permissionService;
  41. @Autowired
  42. private AssoOtherPatentInfoFileService assoOtherPatentInfoFileService;
  43. @Autowired
  44. private OtherReferencesService otherReferencesService;
  45. @Autowired
  46. private FileManagerService fileManagerService;
  47. @Autowired
  48. private CompareLiteratureService compareLiteratureService;
  49. @Autowired
  50. private ReportProjectService reportProjectService;
  51. @Autowired
  52. private ProjectService projectService;
  53. @Autowired
  54. private InvalidRecordService invalidRecordService;
  55. @Autowired
  56. private AssoReasonLiteratureService assoReasonLiteratureService;
  57. /**
  58. * 新增or更新
  59. * @param asInvalidReasonHistoryDTO
  60. * @return
  61. */
  62. public Integer saveOrUpdate(AsInvalidReasonHistoryDTO asInvalidReasonHistoryDTO){
  63. if (asInvalidReasonHistoryDTO == null) {
  64. throw new XiaoShiException("入参为空");
  65. }
  66. Integer id = asInvalidReasonHistoryDTO.getId();
  67. List<String> fileGuids = asInvalidReasonHistoryDTO.getFileGuids();
  68. AsInvalidReasonHistory asInvalidReasonHistory = new AsInvalidReasonHistory();
  69. Integer type = 5;
  70. if (id != null) {
  71. //update
  72. asInvalidReasonHistory = this.getById(id);
  73. BeanUtils.copyProperties(asInvalidReasonHistoryDTO, asInvalidReasonHistory);
  74. asInvalidReasonHistory.updateById();
  75. //先删除 后添加
  76. LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
  77. queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, id)
  78. .eq(AssoOtherPatentInfoFile::getType, type);
  79. assoOtherPatentInfoFileService.remove(queryWrapper);
  80. if (fileGuids != null && !fileGuids.isEmpty()) {
  81. List<Integer> fileIds = otherReferencesService.addFile(asInvalidReasonHistory.getId(), fileGuids, type);
  82. }
  83. } else {
  84. BeanUtils.copyProperties(asInvalidReasonHistoryDTO, asInvalidReasonHistory);
  85. PersonnelVO personnelVO = new PersonnelVO();
  86. try {
  87. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  88. } catch (Exception e) {
  89. throw new XiaoShiException("未查询到当前登陆人");
  90. }
  91. asInvalidReasonHistory.setCreateId(personnelVO.getId());
  92. asInvalidReasonHistory.setTenantId(personnelVO.getTenantId());
  93. asInvalidReasonHistory.insert();
  94. if (fileGuids != null && !fileGuids.isEmpty()) {
  95. //先删除 后添加
  96. List<Integer> fileIds = otherReferencesService.addFile(asInvalidReasonHistory.getId(), fileGuids, type);
  97. }
  98. }
  99. return asInvalidReasonHistory.getId();
  100. }
  101. /**
  102. * 查询
  103. * @param patentNo
  104. * @return
  105. * @throws IOException
  106. */
  107. public Records getAsInvalidReasonHistory(String patentNo) throws IOException {
  108. List<AsInvalidReasonHistoryVO> asInvalidReasonHistoryVOS = new ArrayList<>();
  109. if (patentNo == null || StringUtils.isEmpty(patentNo)) {
  110. throw new XiaoShiException("入参为空");
  111. }
  112. PersonnelVO personnelVO = new PersonnelVO();
  113. try {
  114. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  115. } catch (Exception e) {
  116. throw new XiaoShiException("未查询到当前登陆人");
  117. }
  118. LambdaQueryWrapper<AsInvalidReasonHistory> queryWrapper = new LambdaQueryWrapper<>();
  119. queryWrapper.eq(AsInvalidReasonHistory::getPatentNo, patentNo)
  120. .eq(AsInvalidReasonHistory::getTenantId, personnelVO.getTenantId())
  121. .orderByDesc(AsInvalidReasonHistory::getInvalidTime);
  122. List<AsInvalidReasonHistory> asInvalidReasonHistories = this.list(queryWrapper);
  123. if (!asInvalidReasonHistories.isEmpty()) {
  124. asInvalidReasonHistories.forEach(item -> {
  125. AsInvalidReasonHistoryVO asInvalidReasonHistoryVO = new AsInvalidReasonHistoryVO();
  126. BeanUtils.copyProperties(item, asInvalidReasonHistoryVO);
  127. asInvalidReasonHistoryVO.setIfAdd(true);
  128. LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper1 = new LambdaQueryWrapper<>();
  129. queryWrapper1.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, asInvalidReasonHistoryVO.getId())
  130. .eq(AssoOtherPatentInfoFile::getType, 5);
  131. List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper1);
  132. if (!assoOtherPatentInfoFiles.isEmpty()) {
  133. List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
  134. asInvalidReasonHistoryVO.setFileGuids(fileGuids);
  135. }
  136. asInvalidReasonHistoryVOS.add(asInvalidReasonHistoryVO);
  137. });
  138. }
  139. List<AsInvalidReasonHistoryVO> finalVOS = this.findInInvalidReport(patentNo, asInvalidReasonHistoryVOS);
  140. this.loadAsInvalidReasonHistoryVOS(finalVOS);
  141. Records records = new Records();
  142. records.setData(finalVOS);
  143. return records;
  144. }
  145. /**
  146. * 装载
  147. * @param asInvalidReasonHistoryVOS
  148. * @throws IOException
  149. */
  150. public void loadAsInvalidReasonHistoryVOS(List<AsInvalidReasonHistoryVO> asInvalidReasonHistoryVOS) throws IOException {
  151. List<String> createIds = new ArrayList<>();
  152. asInvalidReasonHistoryVOS.forEach(item -> {
  153. if (item.getCreateId() != null) {
  154. createIds.add(item.getCreateId());
  155. }
  156. });
  157. List<Personnel> personnels = new ArrayList<>();
  158. //查询发起人名称
  159. if (createIds.size() != 0) {
  160. String res = permissionService.getPersonnelByIdsFromPCS(createIds);
  161. JSONObject jsonObject = JSONObject.parseObject(res);
  162. personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
  163. }
  164. //装载信息
  165. for (AsInvalidReasonHistoryVO asInvalidReasonHistoryVO : asInvalidReasonHistoryVOS) {
  166. //装载人员信息
  167. Personnel personnel = personnels.stream().filter(item -> item.getId().equals(asInvalidReasonHistoryVO.getCreateId())).findFirst().orElse(null);
  168. if (personnel != null) {
  169. asInvalidReasonHistoryVO.setCreateName(personnel.getPersonnelName());
  170. }
  171. LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
  172. queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, asInvalidReasonHistoryVO.getId())
  173. .eq(AssoOtherPatentInfoFile::getType, 5);
  174. List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper);
  175. if (!assoOtherPatentInfoFiles.isEmpty()) {
  176. List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
  177. asInvalidReasonHistoryVO.setFileGuids(fileGuids);
  178. List<SystemFile> systemFiles = new ArrayList<>();
  179. if (fileGuids.size() != 0) {
  180. String res = fileManagerService.getSystemFileFromFMS(fileGuids);
  181. systemFiles = JSONObject.parseArray(res, SystemFile.class);
  182. }
  183. if (!systemFiles.isEmpty()) {
  184. Map<String, SystemFile> fileGuidToSystemFileMap = systemFiles.stream()
  185. .collect(Collectors.toMap(SystemFile::getGuid, sf -> sf));
  186. List<SystemFile> sortedSystemFiles = fileGuids.stream()
  187. .map(fileGuid -> fileGuidToSystemFileMap.get(fileGuid))
  188. .filter(Objects::nonNull)
  189. .collect(Collectors.toList());
  190. systemFiles = sortedSystemFiles;
  191. asInvalidReasonHistoryVO.setSystemFileList(systemFiles);
  192. }
  193. }
  194. }
  195. }
  196. /**
  197. * 删除
  198. * @param ids
  199. * @return
  200. */
  201. public List<Integer> deleteAsInvalidReasonHistory(List<Integer> ids) {
  202. if (!ids.isEmpty()) {
  203. //先删除附件
  204. LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
  205. queryWrapper.in(AssoOtherPatentInfoFile::getOtherPatentInfoId, ids)
  206. .eq(AssoOtherPatentInfoFile::getType, 5);
  207. assoOtherPatentInfoFileService.remove(queryWrapper);
  208. this.removeBatchByIds(ids);
  209. }
  210. return ids;
  211. }
  212. /**
  213. * 查询全部的
  214. * @param patentNo
  215. * @param asInvalidReasonHistoryVOS
  216. * @return
  217. */
  218. public List<AsInvalidReasonHistoryVO> findInInvalidReport(String patentNo, List<AsInvalidReasonHistoryVO> asInvalidReasonHistoryVOS){
  219. List<AsInvalidReasonHistoryVO> finalVOS = new ArrayList<>();
  220. finalVOS.addAll(asInvalidReasonHistoryVOS);
  221. //查询出所有的projectId
  222. LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
  223. queryWrapper.eq(CompareLiterature::getLiteratureNo, patentNo);
  224. List<CompareLiterature> compareLiteratures = compareLiteratureService.list(queryWrapper);
  225. //对比文献号存在
  226. if (!compareLiteratures.isEmpty()) {
  227. //取出所有报告并留下是无效的
  228. List<Integer> projectIds = compareLiteratures
  229. .stream()
  230. .map(CompareLiterature::getProjectId)
  231. .collect(Collectors.toList());
  232. LambdaQueryWrapper<ReportProject> queryWrapper1 = new LambdaQueryWrapper<>();
  233. queryWrapper1.in(ReportProject::getProjectId, projectIds);
  234. List<ReportProject> results = reportProjectService.list(queryWrapper1);
  235. if (!results.isEmpty()) {
  236. results.forEach(
  237. item -> {
  238. Project project = projectService.getById(item.getProjectId());
  239. if (project.getType().equals(2)) {
  240. if (item.getReportType().equals(7)) {
  241. AsInvalidReasonHistoryVO asVO = new AsInvalidReasonHistoryVO();
  242. asVO.setPatentNo(patentNo);
  243. asVO.setInvalidedPatent(item.getSignPatentNo());
  244. asVO.setInvalidCaseNum(item.getCaseNumber());
  245. Integer affairType = 1;
  246. Date invalidTime = invalidRecordService.loadInvalidTime(affairType, item);
  247. asVO.setInvalidTime(invalidTime);
  248. asVO.setCreateId(project.getCreateId());
  249. asVO.setCreateTime(project.getCreateTime());
  250. List<String> fileGuids = invalidRecordService.loadFileGuids(item.getProjectId());
  251. asVO.setFileGuids(fileGuids);
  252. asVO.setIfAdd(false);
  253. finalVOS.add(asVO);
  254. } else if (item.getReportType().equals(1) || item.getReportType().equals(2)) {
  255. //判断是否有对比结果
  256. LambdaQueryWrapper<CompareLiterature> queryWrapper2 = new LambdaQueryWrapper<>();
  257. queryWrapper2.eq(CompareLiterature::getLiteratureNo, patentNo)
  258. .eq(CompareLiterature::getProjectId, item.getProjectId());
  259. CompareLiterature compareLiterature = compareLiteratureService.getOne(queryWrapper2, false);
  260. if (compareLiterature != null) {
  261. Integer compareLiteratureId = compareLiterature.getId();
  262. LambdaQueryWrapper<AssoReasonLiterature> queryWrapper3 = new LambdaQueryWrapper<>();
  263. queryWrapper3.eq(AssoReasonLiterature::getLiteratureId, compareLiteratureId);
  264. List<AssoReasonLiterature> assoReasonLiteratures = assoReasonLiteratureService.list(queryWrapper3);
  265. if (!assoReasonLiteratures.isEmpty()) {
  266. AsInvalidReasonHistoryVO asVO = new AsInvalidReasonHistoryVO();
  267. asVO.setPatentNo(patentNo);
  268. asVO.setInvalidedPatent(item.getSignPatentNo());
  269. asVO.setInvalidCaseNum(item.getCaseNumber());
  270. Integer affairType = 1;
  271. Date invalidTime = invalidRecordService.loadInvalidTime(affairType, item);
  272. asVO.setInvalidTime(invalidTime);
  273. asVO.setCreateId(project.getCreateId());
  274. asVO.setCreateTime(project.getCreateTime());
  275. List<String> fileGuids = invalidRecordService.loadFileGuids(item.getProjectId());
  276. asVO.setFileGuids(fileGuids);
  277. asVO.setIfAdd(false);
  278. finalVOS.add(asVO);
  279. }
  280. }
  281. }
  282. }
  283. }
  284. );
  285. }
  286. }
  287. return finalVOS;
  288. }
  289. }