FinalInvalidStatueService.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496
  1. package cn.cslg.pas.service;
  2. import cn.cslg.pas.common.dto.FinalProofGroupDTO;
  3. import cn.cslg.pas.common.dto.InvalidReasonDTO;
  4. import cn.cslg.pas.common.dto.GetInvalidReasonClaimsDTO;
  5. import cn.cslg.pas.common.dto.invalidDTO.PatentClaimDTO;
  6. import cn.cslg.pas.common.model.cronModel.PersonnelVO;
  7. import cn.cslg.pas.common.model.finalInvalid.FinalProfGroupEditDTO;
  8. import cn.cslg.pas.common.model.finalInvalid.FinalProfGroupQueryDTO;
  9. import cn.cslg.pas.common.model.finalInvalid.FinalProfGroupVO;
  10. import cn.cslg.pas.common.utils.CacheUtils;
  11. import cn.cslg.pas.common.utils.LoginUtils;
  12. import cn.cslg.pas.common.utils.RedisUtil;
  13. import cn.cslg.pas.common.vo.GetInvalidReasonClaimsVO;
  14. import cn.cslg.pas.common.vo.invalidVO.PatentClaimHistoryVO;
  15. import cn.cslg.pas.domain.BaseEntity;
  16. import cn.cslg.pas.domain.FinalInvalidStatue;
  17. import cn.cslg.pas.domain.FinalProofGroup;
  18. import cn.cslg.pas.domain.business.InvalidStatutes;
  19. import cn.cslg.pas.exception.XiaoShiException;
  20. import cn.cslg.pas.mapper.FinalInvalidStatueMapper;
  21. import cn.cslg.pas.mapper.FinalProofGroupMapper;
  22. import cn.cslg.pas.service.business.InvalidStatutesService;
  23. import cn.cslg.pas.service.business.ProofGroupService;
  24. import cn.cslg.pas.service.business.invalidReport.PatentClaimHistoryService;
  25. import com.alibaba.fastjson2.JSON;
  26. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  27. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  28. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  29. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  30. import lombok.RequiredArgsConstructor;
  31. import org.apache.commons.lang3.ObjectUtils;
  32. import org.apache.commons.lang3.StringUtils;
  33. import org.springframework.beans.BeanUtils;
  34. import org.springframework.beans.factory.annotation.Autowired;
  35. import org.springframework.stereotype.Service;
  36. import org.springframework.transaction.annotation.Isolation;
  37. import org.springframework.transaction.annotation.Propagation;
  38. import org.springframework.transaction.annotation.Transactional;
  39. import org.springframework.util.CollectionUtils;
  40. import java.util.*;
  41. import java.util.stream.Collectors;
  42. /**
  43. * @author admin
  44. * @description 针对表【final_invalid_statue(最终无效理由和证据)】的数据库操作Service实现
  45. * @createDate 2024-06-20 17:09:07
  46. */
  47. @Service
  48. @RequiredArgsConstructor
  49. public class FinalInvalidStatueService extends ServiceImpl<FinalInvalidStatueMapper, FinalInvalidStatue> {
  50. private final InvalidStatutesService invalidStatutesService;
  51. private final PatentClaimHistoryService patentClaimHistoryService;
  52. private static List<Integer> inStatueIds = Arrays.asList(2, 3, 4);
  53. private final ProofGroupService proofGroupService;
  54. private final FinalProofGroupService finalProofGroupService;
  55. private final FinalInvalidStatueMapper invalidStatueMapper;
  56. private final FinalProofGroupMapper proofGroupMapper;
  57. @Autowired
  58. private CacheUtils cacheUtils;
  59. @Autowired
  60. private LoginUtils loginUtils;
  61. @Autowired
  62. private RedisUtil redisUtil;
  63. public void ImportByProjectId(Integer projectId, Integer statueType) {
  64. }
  65. @Transactional(rollbackFor = Exception.class)
  66. public void importFinalInvalidStatutes(Integer projectId) {
  67. //删除原来保存数据
  68. this.removeFinalInvalidStatus(projectId);
  69. //根据projectId 查询无效理由和证据
  70. LambdaQueryWrapper<InvalidStatutes> queryWrapper = new LambdaQueryWrapper<>();
  71. queryWrapper.eq(InvalidStatutes::getProjectId, projectId);
  72. List<InvalidStatutes> invalidStatutes = invalidStatutesService.list(queryWrapper);
  73. for (InvalidStatutes invalidStatute : invalidStatutes) {
  74. FinalInvalidStatue finalInvalidStatue = new FinalInvalidStatue();
  75. Integer claimId = invalidStatute.getClaimId();
  76. finalInvalidStatue.setStatuteId(invalidStatute.getStatutesId());
  77. Map<String, String> claimMess = this.getClaimText(claimId);
  78. finalInvalidStatue.setClaimText(claimMess.get("claimText"));
  79. finalInvalidStatue.setCourtOpinions1(claimMess.get("court1"));
  80. finalInvalidStatue.setCourtOpinions2(claimMess.get("court2"));
  81. if (claimMess.get("index") != null) {
  82. Integer index = Integer.parseInt(claimMess.get("index").toString());
  83. finalInvalidStatue.setClaimOrder(index);
  84. }
  85. finalInvalidStatue.setProjectId(projectId);
  86. finalInvalidStatue.insert();
  87. finalProofGroupService.addFinalProofGroup(invalidStatute.getId(), finalInvalidStatue);
  88. }
  89. }
  90. public Map<String, String> getClaimText(Integer claimId) {
  91. String claimText = "";
  92. PatentClaimDTO patentClaimDTO = new PatentClaimDTO();
  93. patentClaimDTO.setClaimId(claimId);
  94. PatentClaimHistoryVO patentClaimHistoryVO = patentClaimHistoryService.queryPatentClaimHistory(patentClaimDTO);
  95. if (patentClaimHistoryVO.getSecondClaimVO() != null && patentClaimHistoryVO.getSecondClaimVO().getOperateType().equals(0)) {
  96. claimText = patentClaimHistoryVO.getSecondClaimVO().getContent();
  97. } else if (patentClaimHistoryVO.getFirstClaimVO() != null && patentClaimHistoryVO.getFirstClaimVO().getOperateType().equals(0)) {
  98. claimText = patentClaimHistoryVO.getFirstClaimVO().getContent();
  99. } else {
  100. claimText = patentClaimHistoryVO.getOriginalClaimVO().getContent();
  101. }
  102. Map<String, String> map = new HashMap<>();
  103. map.put("claimText", claimText);
  104. map.put("court1", patentClaimHistoryVO.getOriginalClaimVO().getCourtDecision1());
  105. map.put("court2", patentClaimHistoryVO.getOriginalClaimVO().getCourtDecision2());
  106. if (patentClaimHistoryVO.getOriginalClaimVO().getSysOrder() != null) {
  107. map.put("index", patentClaimHistoryVO.getOriginalClaimVO().getSysOrder().toString());
  108. }
  109. return map;
  110. }
  111. public List<FinalProfGroupVO> queryFinalProofGroup(FinalProfGroupQueryDTO finalProfGroupQueryDTO) {
  112. List<FinalProfGroupVO> finalProfGroupVOS = new ArrayList<>();
  113. Integer projectId = finalProfGroupQueryDTO.getId();
  114. Integer statusType = finalProfGroupQueryDTO.getStatueType();
  115. //根据projectId查询最终无效理由和证据
  116. LambdaQueryWrapper<FinalInvalidStatue> queryWrapper = new LambdaQueryWrapper<>();
  117. queryWrapper.eq(FinalInvalidStatue::getProjectId, projectId)
  118. .orderByAsc(FinalInvalidStatue::getStatuteId)
  119. .orderByAsc(FinalInvalidStatue::getClaimOrder);
  120. if (statusType != null) {
  121. if (statusType.equals(1)) {
  122. queryWrapper.in(FinalInvalidStatue::getStatuteId, inStatueIds);
  123. } else {
  124. queryWrapper.notIn(FinalInvalidStatue::getStatuteId, inStatueIds);
  125. }
  126. }
  127. List<FinalInvalidStatue> finalInvalidStatues = this.list(queryWrapper);
  128. if (finalInvalidStatues.size() == 0) {
  129. return finalProfGroupVOS;
  130. }
  131. List<Integer> ids = finalInvalidStatues.stream().map(FinalInvalidStatue::getId).collect(Collectors.toList());
  132. List<FinalProofGroup> finalProofGroups = new ArrayList<>();
  133. LambdaQueryWrapper<FinalProofGroup> queryWrapper1 = new LambdaQueryWrapper<>();
  134. queryWrapper1.in(FinalProofGroup::getFinalInvalidStatueId, ids);
  135. finalProofGroups = finalProofGroupService.list(queryWrapper1);
  136. for (FinalInvalidStatue finalInvalidStatue : finalInvalidStatues) {
  137. Integer id = finalInvalidStatue.getId();
  138. List<FinalProofGroup> statueGroups = finalProofGroups.stream().filter(item -> item.getFinalInvalidStatueId().equals(id)).collect(Collectors.toList());
  139. statueGroups.forEach(item -> {
  140. FinalProfGroupVO finalProfGroupVO = new FinalProfGroupVO();
  141. if (finalInvalidStatue != null) {
  142. finalProfGroupVO.setInvalidStatue(finalInvalidStatue);
  143. }
  144. finalProfGroupVO.setId(item.getId());
  145. finalProfGroupVO.setPresentOpinions(item.getPresentOpinions());
  146. finalProfGroupVO.setInvalidReason(item.getInvalidReason());
  147. finalProfGroupVO.setRbDecision(item.getRbDecision());
  148. finalProfGroupVOS.add(finalProfGroupVO);
  149. });
  150. }
  151. return finalProfGroupVOS;
  152. }
  153. public void editProofGroup(FinalProfGroupEditDTO finalProfGroupEditDTO) {
  154. Integer invalidStatueId = finalProfGroupEditDTO.getInvalidStatueId();
  155. Integer proofGroupId = finalProfGroupEditDTO.getProofGroupId();
  156. String editField = finalProfGroupEditDTO.getEditField();
  157. String fieldContent = finalProfGroupEditDTO.getFieldContent();
  158. switch (editField) {
  159. case "invalidReason":
  160. FinalProofGroup finalProofGroup1 = finalProofGroupService.getById(proofGroupId);
  161. finalProofGroup1.setInvalidReason(fieldContent);
  162. finalProofGroup1.updateById();
  163. break;
  164. case "presentOpinions":
  165. FinalProofGroup finalProofGroup2 = finalProofGroupService.getById(proofGroupId);
  166. finalProofGroup2.setPresentOpinions(fieldContent);
  167. finalProofGroup2.updateById();
  168. break;
  169. case "rbDecision":
  170. FinalProofGroup finalProofGroup3 = finalProofGroupService.getById(proofGroupId);
  171. finalProofGroup3.setRbDecision(fieldContent);
  172. finalProofGroup3.updateById();
  173. break;
  174. case "courtOpinions1":
  175. FinalInvalidStatue finalInvalidStatue1 = this.getById(invalidStatueId);
  176. Integer claimOrder = finalInvalidStatue1.getClaimOrder();
  177. UpdateWrapper<FinalInvalidStatue> updateWrapper = new UpdateWrapper<>();
  178. // Lambda表达式
  179. updateWrapper.lambda().set(FinalInvalidStatue::getCourtOpinions1, fieldContent)
  180. .eq(FinalInvalidStatue::getClaimOrder, claimOrder)
  181. .eq(FinalInvalidStatue::getProjectId, finalInvalidStatue1.getProjectId());
  182. this.update(updateWrapper);
  183. break;
  184. case "courtOpinions2":
  185. FinalInvalidStatue finalInvalidStatue2 = this.getById(invalidStatueId);
  186. Integer claimOrder2 = finalInvalidStatue2.getClaimOrder();
  187. UpdateWrapper<FinalInvalidStatue> updateWrapper2 = new UpdateWrapper<>();
  188. // Lambda表达式
  189. updateWrapper2.lambda().set(FinalInvalidStatue::getCourtOpinions2, fieldContent)
  190. .eq(FinalInvalidStatue::getClaimOrder, claimOrder2)
  191. .eq(FinalInvalidStatue::getProjectId, finalInvalidStatue2.getProjectId());
  192. this.update(updateWrapper2);
  193. break;
  194. case "claimText":
  195. FinalInvalidStatue finalInvalidStatue3 = this.getById(invalidStatueId);
  196. Integer claimOrder3 = finalInvalidStatue3.getClaimOrder();
  197. UpdateWrapper<FinalInvalidStatue> updateWrapper3 = new UpdateWrapper<>();
  198. // Lambda表达式
  199. updateWrapper3.lambda().set(FinalInvalidStatue::getClaimText, fieldContent)
  200. .eq(FinalInvalidStatue::getClaimOrder, claimOrder3)
  201. .eq(FinalInvalidStatue::getProjectId, finalInvalidStatue3.getProjectId());
  202. this.update(updateWrapper3);
  203. break;
  204. case "statuteId":
  205. FinalInvalidStatue finalInvalidStatue4 = this.getById(invalidStatueId);
  206. finalInvalidStatue4.setStatuteId(Integer.parseInt(fieldContent));
  207. finalInvalidStatue4.updateById();
  208. }
  209. }
  210. public void removeFinalInvalidStatus(Integer projectId) {
  211. LambdaQueryWrapper<FinalInvalidStatue> queryWrapper = new LambdaQueryWrapper<>();
  212. queryWrapper.eq(FinalInvalidStatue::getProjectId, projectId);
  213. LambdaQueryWrapper<FinalProofGroup> queryWrapper1 = new LambdaQueryWrapper<>();
  214. queryWrapper1.eq(FinalProofGroup::getProjectId, projectId);
  215. this.remove(queryWrapper);
  216. finalProofGroupService.remove(queryWrapper1);
  217. }
  218. /**
  219. * 添加无效理由
  220. *
  221. * @param vo
  222. * @return
  223. */
  224. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  225. public Integer addInvalidReason(InvalidReasonDTO vo) {
  226. final Integer claimSort = vo.getClaimSort();
  227. final Integer statuteId = vo.getStatuteId();
  228. final String claimText = vo.getClaimText();
  229. final Long count = invalidStatueMapper.selectCount(new LambdaQueryWrapper<FinalInvalidStatue>()
  230. .eq(FinalInvalidStatue::getStatuteId, statuteId)
  231. .eq(FinalInvalidStatue::getClaimOrder, claimSort)
  232. .eq(FinalInvalidStatue::getProjectId, vo.getProjectId()));
  233. if (count > 0) {
  234. throw new XiaoShiException("该法条下已存在相同权利要求");
  235. }
  236. FinalInvalidStatue statue = new FinalInvalidStatue();
  237. statue.setStatuteId(statuteId);
  238. statue.setClaimOrder(claimSort);
  239. statue.setClaimText(claimText);
  240. statue.setProjectId(vo.getProjectId());
  241. //获取登陆人信息 用于设置创建人
  242. PersonnelVO personnelVO = new PersonnelVO();
  243. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  244. if (ObjectUtils.isEmpty(personnelVO)) {
  245. throw new XiaoShiException("未获取到创建人");
  246. }
  247. statue.setCreateId(personnelVO.getId());
  248. statue.setCreateTime(new Date());
  249. statue.insert();
  250. FinalProofGroup proofGroup = new FinalProofGroup();
  251. proofGroup.setFinalInvalidStatueId(statue.getId());
  252. proofGroup.setProjectId(vo.getProjectId());
  253. proofGroup.setFeatureSort(1);
  254. proofGroup.setCreateId(personnelVO.getId());
  255. proofGroup.setCreateTime(new Date());
  256. proofGroup.insert();
  257. return statue.getId();
  258. }
  259. /**
  260. * 查询三性/非三性无效理由
  261. *
  262. * @param vo
  263. * @return
  264. */
  265. public List<GetInvalidReasonClaimsVO> getInvalidReasonClaims(GetInvalidReasonClaimsDTO vo) {
  266. List<GetInvalidReasonClaimsVO> claimsVOS = new ArrayList<>();
  267. Integer projectId = vo.getProjectId();
  268. Integer statusType = vo.getStatueType();
  269. //根据projectId查询最终无效理由和证据
  270. LambdaQueryWrapper<FinalInvalidStatue> queryWrapper = new LambdaQueryWrapper<>();
  271. queryWrapper.eq(FinalInvalidStatue::getProjectId, projectId)
  272. .orderByAsc(FinalInvalidStatue::getStatuteId)
  273. .orderByAsc(FinalInvalidStatue::getClaimOrder);
  274. if (statusType != null) {
  275. if (statusType == 1) {
  276. queryWrapper.in(FinalInvalidStatue::getStatuteId, inStatueIds);
  277. } else {
  278. queryWrapper.notIn(FinalInvalidStatue::getStatuteId, inStatueIds);
  279. }
  280. }
  281. List<FinalInvalidStatue> statueList = this.list(queryWrapper);
  282. if (CollectionUtils.isEmpty(statueList)) {
  283. return claimsVOS;
  284. }
  285. List<Integer> invalidStatueIds = statueList.stream().map(FinalInvalidStatue::getId).collect(Collectors.toList());
  286. // List<FinalProofGroup> proofGroups = proofGroupMapper.selectProofList(invalidStatueIds);
  287. List<FinalProofGroup> proofGroups = proofGroupMapper.selectList(new LambdaQueryWrapper<FinalProofGroup>()
  288. .in(FinalProofGroup::getFinalInvalidStatueId, invalidStatueIds)
  289. .orderByAsc(FinalProofGroup::getFeatureSort));
  290. for (FinalInvalidStatue statue : statueList) {
  291. Integer invalidStatueId = statue.getId();
  292. List<FinalProofGroup> statueGroups = proofGroups.stream().filter(item -> item.getFinalInvalidStatueId().equals(invalidStatueId)).collect(Collectors.toList());
  293. statueGroups.forEach(item -> {
  294. GetInvalidReasonClaimsVO claimsVO = new GetInvalidReasonClaimsVO();
  295. InvalidReasonDTO invalidReasonDTO = new InvalidReasonDTO();
  296. invalidReasonDTO.setInvalidStatueId(statue.getId());
  297. invalidReasonDTO.setStatuteId(statue.getStatuteId());
  298. invalidReasonDTO.setProjectId(statue.getProjectId());
  299. invalidReasonDTO.setClaimSort(statue.getClaimOrder());
  300. invalidReasonDTO.setClaimText(statue.getClaimText());
  301. claimsVO.setInvalidReasonDTO(invalidReasonDTO);
  302. claimsVO.setProofGroupId(item.getId());
  303. claimsVO.setInvalidStatueId(statue.getId());
  304. claimsVO.setProjectId(item.getProjectId());
  305. claimsVO.setInvalidReason(item.getInvalidReason());
  306. claimsVO.setPresentOpinions(item.getPresentOpinions());
  307. claimsVO.setRbDecision(item.getRbDecision());
  308. claimsVO.setFeatureSort(item.getFeatureSort());
  309. claimsVO.setFeatureContent(item.getFeatureContent());
  310. claimsVO.setCourtOpinions1(item.getCourtOpinions1());
  311. claimsVO.setCourtOpinions2(item.getCourtOpinions2());
  312. claimsVOS.add(claimsVO);
  313. });
  314. }
  315. return claimsVOS;
  316. }
  317. /**
  318. * 修改无效理由
  319. *
  320. * @param vo
  321. * @return
  322. */
  323. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  324. public Integer editInvalidReason(InvalidReasonDTO vo) {
  325. final Integer claimSort = vo.getClaimSort();
  326. final Integer statuteId = vo.getStatuteId();
  327. final String claimText = vo.getClaimText();
  328. final Long count = invalidStatueMapper.selectCount(new LambdaQueryWrapper<FinalInvalidStatue>()
  329. .eq(FinalInvalidStatue::getStatuteId, statuteId)
  330. .eq(FinalInvalidStatue::getClaimOrder, claimSort)
  331. .eq(FinalInvalidStatue::getProjectId, vo.getProjectId())
  332. .ne(FinalInvalidStatue::getId, vo.getInvalidStatueId()));
  333. if (count > 0) {
  334. throw new XiaoShiException("该法条下已存在相同权利要求");
  335. }
  336. FinalInvalidStatue statue = invalidStatueMapper.selectById(vo.getInvalidStatueId());
  337. statue.setStatuteId(statuteId);
  338. statue.setClaimOrder(claimSort);
  339. statue.setClaimText(claimText);
  340. statue.setProjectId(vo.getProjectId());
  341. statue.updateById();
  342. return statue.getId();
  343. }
  344. /**
  345. * 删除无效理由
  346. *
  347. * @param vo
  348. */
  349. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  350. public void delInvalidReason(InvalidReasonDTO vo) {
  351. Integer invalidStatueId = vo.getInvalidStatueId();
  352. List<FinalProofGroup> proofGroups = proofGroupMapper.selectList(new LambdaQueryWrapper<FinalProofGroup>()
  353. .eq(FinalProofGroup::getFinalInvalidStatueId, invalidStatueId));
  354. if (!CollectionUtils.isEmpty(proofGroups)) {
  355. List<Integer> list = proofGroups.stream().map(BaseEntity::getId).collect(Collectors.toList());
  356. proofGroupMapper.deleteBatchIds(list);
  357. }
  358. invalidStatueMapper.deleteById(invalidStatueId);
  359. }
  360. /**
  361. * 添加特征
  362. *
  363. * @param vo
  364. * @return
  365. */
  366. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  367. public Integer addFeature(FinalProofGroupDTO vo) {
  368. // proofGroupMapper.updateGroup(vo);
  369. editProofSort(vo.getInvalidStatueId(), vo.getFeatureSort(), 1);
  370. FinalProofGroup proofGroup = new FinalProofGroup();
  371. proofGroup.setFinalInvalidStatueId(vo.getInvalidStatueId());
  372. BeanUtils.copyProperties(vo, proofGroup);
  373. //获取登陆人信息 用于设置创建人
  374. PersonnelVO personnelVO = new PersonnelVO();
  375. personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  376. if (ObjectUtils.isEmpty(personnelVO)) {
  377. throw new XiaoShiException("未获取到创建人");
  378. }
  379. proofGroup.setCreateId(personnelVO.getId());
  380. proofGroup.setCreateTime(new Date());
  381. proofGroup.insert();
  382. return proofGroup.getId();
  383. }
  384. /**
  385. * 修改特征序号
  386. *
  387. * @param invalidStatueId
  388. * @param featureSort
  389. * @param type
  390. */
  391. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  392. public synchronized void editProofSort(Integer invalidStatueId, Integer featureSort, Integer type) {
  393. List<FinalProofGroup> proofGroups = proofGroupMapper.selectList(new LambdaQueryWrapper<FinalProofGroup>()
  394. .eq(FinalProofGroup::getFinalInvalidStatueId, invalidStatueId)
  395. .ge(FinalProofGroup::getFeatureSort, featureSort));
  396. if (!CollectionUtils.isEmpty(proofGroups)) {
  397. for (FinalProofGroup proofGroup : proofGroups) {
  398. proofGroup.setId(proofGroup.getId());
  399. if (type == 1) {
  400. proofGroup.setFeatureSort(proofGroup.getFeatureSort() + 1);
  401. } else {
  402. proofGroup.setFeatureSort(proofGroup.getFeatureSort() - 1);
  403. }
  404. proofGroup.updateById();
  405. }
  406. }
  407. }
  408. /**
  409. * 编辑特征
  410. *
  411. * @param vo
  412. * @return
  413. */
  414. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  415. public Integer editFeature(FinalProofGroupDTO vo) {
  416. FinalProofGroup proofGroup = proofGroupMapper.selectById(vo.getProofGroupId());
  417. proofGroup.setFinalInvalidStatueId(vo.getInvalidStatueId());
  418. BeanUtils.copyProperties(vo, proofGroup);
  419. proofGroup.updateById();
  420. return proofGroup.getId();
  421. }
  422. /**
  423. * 删除特征
  424. *
  425. * @param vo
  426. */
  427. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
  428. public void delFeature(FinalProofGroupDTO vo) {
  429. FinalProofGroup proofGroup = proofGroupMapper.selectById(vo.getProofGroupId());
  430. editProofSort(proofGroup.getFinalInvalidStatueId(), proofGroup.getFeatureSort(), 2);
  431. proofGroupMapper.deleteById(proofGroup.getId());
  432. }
  433. /**
  434. * 查询无效理由里的无效发条
  435. *
  436. * @param vo
  437. * @return
  438. */
  439. public List<Integer> queryStatuesVOS(GetInvalidReasonClaimsDTO vo) {
  440. List<FinalInvalidStatue> list = invalidStatueMapper.selectList(new LambdaQueryWrapper<FinalInvalidStatue>()
  441. .eq(FinalInvalidStatue::getProjectId, vo.getProjectId()));
  442. return list.stream().map(FinalInvalidStatue::getStatuteId).distinct().collect(Collectors.toList());
  443. }
  444. public List<FinalInvalidStatue> getFinalInvalidStatues(List<Integer> projectIds) {
  445. //根据projectId查询最终无效理由和证据
  446. LambdaQueryWrapper<FinalInvalidStatue> queryWrapper = new LambdaQueryWrapper<>();
  447. queryWrapper.in(FinalInvalidStatue::getProjectId, projectIds)
  448. .orderByAsc(FinalInvalidStatue::getStatuteId)
  449. .orderByAsc(FinalInvalidStatue::getClaimOrder);
  450. List<FinalInvalidStatue> statueList = this.list(queryWrapper);
  451. return statueList;
  452. }
  453. }