|
@@ -0,0 +1,309 @@
|
|
|
+package cn.cslg.pas.service.business;
|
|
|
+
|
|
|
+import cn.cslg.pas.common.dto.business.InvalidRecordDTO;
|
|
|
+import cn.cslg.pas.common.model.cronModel.Personnel;
|
|
|
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
|
|
|
+import cn.cslg.pas.common.model.cronModel.Records;
|
|
|
+import cn.cslg.pas.common.model.cronModel.SystemFile;
|
|
|
+import cn.cslg.pas.common.utils.CacheUtils;
|
|
|
+import cn.cslg.pas.common.utils.LoginUtils;
|
|
|
+import cn.cslg.pas.common.utils.StringUtils;
|
|
|
+import cn.cslg.pas.common.vo.business.InvalidRecordVO;
|
|
|
+import cn.cslg.pas.domain.business.*;
|
|
|
+import cn.cslg.pas.exception.XiaoShiException;
|
|
|
+import cn.cslg.pas.mapper.InvalidRecordMapper;
|
|
|
+import cn.cslg.pas.service.common.FileManagerService;
|
|
|
+import cn.cslg.pas.service.permissions.PermissionService;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 被无效历史
|
|
|
+ * @Author xiexiang
|
|
|
+ * @Date 2024/1/19
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class InvalidRecordService extends ServiceImpl<InvalidRecordMapper, InvalidRecord> {
|
|
|
+ @Autowired
|
|
|
+ private LoginUtils loginUtils;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CacheUtils cacheUtils;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PermissionService permissionService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AssoOtherPatentInfoFileService assoOtherPatentInfoFileService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OtherReferencesService otherReferencesService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private FileManagerService fileManagerService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CompareLiteratureService compareLiteratureService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ReportProjectService reportProjectService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ProjectService projectService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ReportAffairService reportAffairService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AssoProjectFileService assoProjectFileService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增or更新
|
|
|
+ * @param invalidRecordDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Integer saveOrUpdate(InvalidRecordDTO invalidRecordDTO){
|
|
|
+ if (invalidRecordDTO == null) {
|
|
|
+ throw new XiaoShiException("入参为空");
|
|
|
+ }
|
|
|
+ Integer id = invalidRecordDTO.getId();
|
|
|
+ List<String> fileGuids = invalidRecordDTO.getFileGuids();
|
|
|
+ InvalidRecord invalidRecord = new InvalidRecord();
|
|
|
+ Integer type = 6;
|
|
|
+ if (id != null) {
|
|
|
+ //update
|
|
|
+ invalidRecord = this.getById(id);
|
|
|
+ BeanUtils.copyProperties(invalidRecordDTO, invalidRecord);
|
|
|
+ invalidRecord.updateById();
|
|
|
+ //先删除 后添加
|
|
|
+ LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, id)
|
|
|
+ .eq(AssoOtherPatentInfoFile::getType, type);
|
|
|
+ assoOtherPatentInfoFileService.remove(queryWrapper);
|
|
|
+ if (fileGuids != null && !fileGuids.isEmpty()) {
|
|
|
+ List<Integer> fileIds = otherReferencesService.addFile(invalidRecord.getId(), fileGuids, type);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ BeanUtils.copyProperties(invalidRecordDTO, invalidRecord);
|
|
|
+ PersonnelVO personnelVO = new PersonnelVO();
|
|
|
+ try {
|
|
|
+ personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new XiaoShiException("未查询到当前登陆人");
|
|
|
+ }
|
|
|
+ invalidRecord.setCreateId(personnelVO.getId());
|
|
|
+ invalidRecord.insert();
|
|
|
+ if (fileGuids != null && !fileGuids.isEmpty()) {
|
|
|
+ //先删除 后添加
|
|
|
+ List<Integer> fileIds = otherReferencesService.addFile(invalidRecord.getId(), fileGuids, type);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return invalidRecord.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询
|
|
|
+ * @param patentNo
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ public Records getInvalidRecord(String patentNo) throws IOException {
|
|
|
+ List<InvalidRecordVO> invalidRecordVOS = new ArrayList<>();
|
|
|
+ if (patentNo == null || StringUtils.isEmpty(patentNo)) {
|
|
|
+ throw new XiaoShiException("入参为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaQueryWrapper<InvalidRecord> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(InvalidRecord::getPatentNo, patentNo);
|
|
|
+ List<InvalidRecord> invalidRecords = this.list(queryWrapper);
|
|
|
+
|
|
|
+ if (!invalidRecords.isEmpty()) {
|
|
|
+ invalidRecords.forEach(item -> {
|
|
|
+ InvalidRecordVO invalidRecordVO = new InvalidRecordVO();
|
|
|
+ BeanUtils.copyProperties(item, invalidRecordVO);
|
|
|
+ invalidRecordVO.setIfAdd(true);
|
|
|
+ invalidRecordVOS.add(invalidRecordVO);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ List<InvalidRecordVO> finalVOS = this.findInvalidRecord(patentNo, invalidRecordVOS);
|
|
|
+ this.loadInvalidRecordVOS(finalVOS);
|
|
|
+ Records records = new Records();
|
|
|
+ records.setData(finalVOS);
|
|
|
+ return records;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 装载
|
|
|
+ * @param invalidRecordVOS
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ public void loadInvalidRecordVOS(List<InvalidRecordVO> invalidRecordVOS) throws IOException {
|
|
|
+ List<String> createIds = new ArrayList<>();
|
|
|
+ invalidRecordVOS.forEach(item -> {
|
|
|
+ if (item.getCreateId() != null) {
|
|
|
+ createIds.add(item.getCreateId());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ List<Personnel> personnels = new ArrayList<>();
|
|
|
+ //查询发起人名称
|
|
|
+ if (createIds.size() != 0) {
|
|
|
+ String res = permissionService.getPersonnelByIdsFromPCS(createIds);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(res);
|
|
|
+ personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
|
|
|
+ }
|
|
|
+ //装载信息
|
|
|
+ for (InvalidRecordVO invalidRecordVO : invalidRecordVOS) {
|
|
|
+ //装载人员信息
|
|
|
+ Personnel personnel = personnels.stream().filter(item -> item.getId().equals(invalidRecordVO.getCreateId())).findFirst().orElse(null);
|
|
|
+ if (personnel != null) {
|
|
|
+ invalidRecordVO.setCreateName(personnel.getPersonnelName());
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, invalidRecordVO.getId())
|
|
|
+ .eq(AssoOtherPatentInfoFile::getType, 6);
|
|
|
+ List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper);
|
|
|
+ if (!assoOtherPatentInfoFiles.isEmpty()) {
|
|
|
+ List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
|
|
|
+ invalidRecordVO.setFileGuids(fileGuids);
|
|
|
+ List<SystemFile> systemFiles = new ArrayList<>();
|
|
|
+ if (fileGuids.size() != 0) {
|
|
|
+ String res = fileManagerService.getSystemFileFromFMS(fileGuids);
|
|
|
+ systemFiles = JSONObject.parseArray(res, SystemFile.class);
|
|
|
+ }
|
|
|
+ if (!systemFiles.isEmpty()) {
|
|
|
+ invalidRecordVO.setSystemFileList(systemFiles);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除
|
|
|
+ * @param ids
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<Integer> deleteInvalidRecord(List<Integer> ids) {
|
|
|
+ if (!ids.isEmpty()) {
|
|
|
+ //先删除附件
|
|
|
+ LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.in(AssoOtherPatentInfoFile::getOtherPatentInfoId, ids)
|
|
|
+ .eq(AssoOtherPatentInfoFile::getType, 5);
|
|
|
+ assoOtherPatentInfoFileService.remove(queryWrapper);
|
|
|
+ this.removeBatchByIds(ids);
|
|
|
+ }
|
|
|
+ return ids;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<InvalidRecordVO> findInvalidRecord(String patentNo, List<InvalidRecordVO> invalidRecordVOS){
|
|
|
+ List<InvalidRecordVO> finalVOS = new ArrayList<>();
|
|
|
+ finalVOS.addAll(invalidRecordVOS);
|
|
|
+ LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(ReportProject::getSignPatentNo, patentNo);
|
|
|
+ List<ReportProject> reportProjects = reportProjectService.list(queryWrapper);
|
|
|
+ if (!reportProjects.isEmpty()) {
|
|
|
+ reportProjects.forEach(item -> {
|
|
|
+ Project project = projectService.getById(item.getProjectId());
|
|
|
+ Integer type = item.getReportType();
|
|
|
+ //报告类型为稳定性分析和第三方意见 查询无效请求书
|
|
|
+ if (type.equals(1) || type.equals(2)) {
|
|
|
+ InvalidRecordVO invalidRecordVO = new InvalidRecordVO();
|
|
|
+ invalidRecordVO.setInvalidCaseNum(item.getCaseNumber());
|
|
|
+ invalidRecordVO.setPatentNo(patentNo);
|
|
|
+ Integer affairType = 1;
|
|
|
+ Date time = this.loadInvalidTime(affairType, item);
|
|
|
+ invalidRecordVO.setInvalidTime(time);
|
|
|
+ invalidRecordVO.setCreateId(project.getCreateId());
|
|
|
+ invalidRecordVO.setCreateTime(project.getCreateTime());
|
|
|
+ List<String> fileGuids = this.loadFileGuids(item.getProjectId());
|
|
|
+ invalidRecordVO.setFileGuids(fileGuids);
|
|
|
+ invalidRecordVO.setIfAdd(false);
|
|
|
+ finalVOS.add(invalidRecordVO);
|
|
|
+ } else if (type.equals(7)) {
|
|
|
+ //报告类型为官方无效 查询行政判决诉讼书
|
|
|
+ InvalidRecordVO invalidRecordVO = new InvalidRecordVO();
|
|
|
+ invalidRecordVO.setInvalidCaseNum(item.getCaseNumber());
|
|
|
+ invalidRecordVO.setPatentNo(patentNo);
|
|
|
+ Integer affairType = 1;
|
|
|
+ Date invalidTime = this.loadInvalidTime(affairType, item);
|
|
|
+ invalidRecordVO.setInvalidTime(invalidTime);
|
|
|
+ Integer judgeType = 5;
|
|
|
+ Date judgeTime = this.loadInvalidTime(judgeType, item);
|
|
|
+ invalidRecordVO.setJudgementTime(judgeTime);
|
|
|
+ invalidRecordVO.setCreateId(project.getCreateId());
|
|
|
+ invalidRecordVO.setCreateTime(project.getCreateTime());
|
|
|
+ List<String> fileGuids = this.loadFileGuids(item.getProjectId());
|
|
|
+ invalidRecordVO.setFileGuids(fileGuids);
|
|
|
+ invalidRecordVO.setIfAdd(false);
|
|
|
+ finalVOS.add(invalidRecordVO);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return finalVOS;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Date loadInvalidTime(Integer type, ReportProject reportProject){
|
|
|
+ LambdaQueryWrapper<ReportAffair> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(ReportAffair::getAffairType, type)
|
|
|
+ .eq(ReportAffair::getProjectId, reportProject.getProjectId())
|
|
|
+ .orderByDesc(ReportAffair::getCreateTime)
|
|
|
+ .last("LIMIT 1");
|
|
|
+ ReportAffair reportAffair = reportAffairService.getOne(queryWrapper, false);
|
|
|
+ if (reportAffair != null) {
|
|
|
+ return reportAffair.getOccurredTime();
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<String> loadFileGuids(Integer projectId){
|
|
|
+ List<String> fileGuids = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<AssoProjectFile> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(AssoProjectFile::getProjectId, projectId);
|
|
|
+ List<AssoProjectFile> assoProjectFiles = assoProjectFileService.list(queryWrapper);
|
|
|
+ if (!assoProjectFiles.isEmpty()) {
|
|
|
+ fileGuids = assoProjectFiles.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ return fileGuids;
|
|
|
+ }
|
|
|
+
|
|
|
+// /**
|
|
|
+// * 先查判决书 后查决定书
|
|
|
+// * @param reportProject
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public String getResult(ReportProject reportProject){
|
|
|
+// LambdaQueryWrapper<ReportAffair> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+// queryWrapper.eq(ReportAffair::getAffairType, 5)
|
|
|
+// .eq(ReportAffair::getProjectId, reportProject.getProjectId())
|
|
|
+// .orderByDesc(ReportAffair::getCreateTime)
|
|
|
+// .last("LIMIT 1");
|
|
|
+// ReportAffair reportAffair = reportAffairService.getOne(queryWrapper, false);
|
|
|
+// if (reportAffair != null) {
|
|
|
+// return reportAffair.getDescription();
|
|
|
+// } else {
|
|
|
+// LambdaQueryWrapper<ReportAffair> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
+// queryWrapper1.eq(ReportAffair::getAffairType, 3)
|
|
|
+// .eq(ReportAffair::getProjectId, reportProject.getProjectId())
|
|
|
+// .orderByDesc(ReportAffair::getCreateTime)
|
|
|
+// .last("LIMIT 1");
|
|
|
+// ReportAffair reportAffair1 = reportAffairService.getOne(queryWrapper1, false);
|
|
|
+// if (reportAffair1 != null) {
|
|
|
+// LambdaQueryWrapper<InvalidDecisionFile> queryWrapper2 = new LambdaQueryWrapper<>();
|
|
|
+// queryWrapper2.eq(InvalidDecisionFile::)
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+}
|