Parcourir la source

20240929 添加查新对比记录

lwhhszx il y a 1 an
Parent
commit
40574bff06

+ 1 - 2
src/main/java/cn/cslg/pas/common/dto/NoveltyProjectDTO/NoveltyReportReferenceDTO.java

@@ -9,6 +9,5 @@ public class NoveltyReportReferenceDTO {
     private Integer id;
     private String dataSource;
     private Integer templateId;
-
-
+    private Integer projectId;
 }

+ 9 - 2
src/main/java/cn/cslg/pas/controller/novelty/NoveltyReportReferenceController.java

@@ -39,9 +39,9 @@ public class NoveltyReportReferenceController {
         return Response.success(id);
     }
 
-    @Operation(summary = "查询查新报告文档")
+    @Operation(summary = "导出查新检索报告")
     @GetMapping("/export")
-    public Response remove(Integer id) throws Exception{
+    public Response export(Integer id) throws Exception{
     String guid =  noveltyExportReportService.exportReport(id);
       return Response.success(guid);
     }
@@ -52,4 +52,11 @@ public class NoveltyReportReferenceController {
        List<Integer> reIds= noveltyReportReferencesService.delete(ids);
         return Response.success(reIds);
     }
+
+    @Operation(summary = "查询查新检索报告")
+    @PostMapping("/query")
+    public Response query(@RequestBody NoveltyReportReferenceQueryDTO noveltyReportReferenceQueryDTO) throws Exception {
+        Records records= noveltyReportReferencesService.queryReference(noveltyReportReferenceQueryDTO);
+        return Response.success(records);
+    }
 }

+ 62 - 54
src/main/java/cn/cslg/pas/service/business/ReferencesService.java

@@ -61,15 +61,16 @@ public class ReferencesService extends ServiceImpl<ReferencesMapper, References>
 
     /**
      * 上传报告文档
+     *
      * @param referencesDTO
      * @return
      */
-    public Integer add(ReferencesDTO referencesDTO){
+    public Integer add(ReferencesDTO referencesDTO) {
         if (referencesDTO != null) {
             //获取登录人信息
             PersonnelVO personnelVO = new PersonnelVO();
 
-                personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
 
             References references = new References();
             if (StringUtils.isEmpty(referencesDTO.getFileGuid())) {
@@ -86,10 +87,11 @@ public class ReferencesService extends ServiceImpl<ReferencesMapper, References>
 
     /**
      * 更新
+     *
      * @param referencesUpdateDTO
      * @return
      */
-    public Integer update(ReferencesUpdateDTO referencesUpdateDTO){
+    public Integer update(ReferencesUpdateDTO referencesUpdateDTO) {
         if (referencesUpdateDTO != null) {
             Integer id = referencesUpdateDTO.getId();
             References references = this.getById(id);
@@ -103,9 +105,10 @@ public class ReferencesService extends ServiceImpl<ReferencesMapper, References>
 
     /**
      * 删除
+     *
      * @param ids
      */
-    public void delete(List<Integer> ids){
+    public void delete(List<Integer> ids) {
         if (!ids.isEmpty()) {
             this.removeBatchByIds(ids);
         }
@@ -113,6 +116,7 @@ public class ReferencesService extends ServiceImpl<ReferencesMapper, References>
 
     /**
      * 查询
+     *
      * @param getReferencesDTO
      * @return
      */
@@ -131,7 +135,7 @@ public class ReferencesService extends ServiceImpl<ReferencesMapper, References>
             queryWrapper.lambda().like(References::getReferencesName, fileName);
         }
         //添加排序逻辑
-        if (!orderDTOList.isEmpty() && orderDTOList.size() == 1) {
+        if (orderDTOList != null && !orderDTOList.isEmpty() && orderDTOList.size() == 1) {
             OrderDTO orderDTO = orderDTOList.get(0);
             String orderByField = orderDTO.getOrderBy();
             String column = this.getColumns(orderByField);
@@ -147,13 +151,13 @@ public class ReferencesService extends ServiceImpl<ReferencesMapper, References>
         List<ReferencesVO> referencesVOS = this.loadReferencesVO(references);
         Records records = new Records();
         records.setData(referencesVOS);
-        records.setCurrent((long)pageNum);
-        records.setSize((long)pageSize);
+        records.setCurrent((long) pageNum);
+        records.setSize((long) pageSize);
         records.setTotal(referencesPage.getTotal());
         return records;
     }
 
-    public List<ReferencesVO> loadReferencesVO(List<References> references){
+    public List<ReferencesVO> loadReferencesVO(List<References> references) {
         List<ReferencesVO> referencesVOS = new ArrayList<>();
         if (!references.isEmpty()) {
             List<String> fileGuids = new ArrayList<>();
@@ -170,10 +174,19 @@ public class ReferencesService extends ServiceImpl<ReferencesMapper, References>
                     createIds.add(item.getCreateId());
                 }
             });
+
+            List<SystemFile> systemFiles = new ArrayList<>();
             if (!fileGuids.isEmpty()) {
-                List<Personnel> personnels = new ArrayList<>();
-                List<SystemFile> systemFiles = new ArrayList<>();
-                List<Project> projects = new ArrayList<>();
+
+                try {
+                    String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                } catch (Exception e) {
+                    throw new XiaoShiException("查询文件信息错误");
+                }
+            }
+            List<Personnel> personnels = new ArrayList<>();
+            if (!createIds.isEmpty()) {
                 try {
                     //查询创建人名称
                     if (createIds.size() != 0) {
@@ -184,65 +197,60 @@ public class ReferencesService extends ServiceImpl<ReferencesMapper, References>
                 } catch (Exception e) {
                     throw new XiaoShiException("查询创建人信息错误");
                 }
-
-                try {
-                    String res = fileManagerService.getSystemFileFromFMS(fileGuids);
-                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
-                } catch (Exception e) {
-                    throw new XiaoShiException("查询文件信息错误");
-                }
-
+            }
+            List<Project> projects = new ArrayList<>();
+            if (!projectIds.isEmpty()) {
                 LambdaQueryWrapper<Project> queryWrapper1 = new LambdaQueryWrapper<>();
                 queryWrapper1.in(Project::getId, projectIds);
                 projects = projectService.list(queryWrapper1);
+            }
+            for (References item : references) {
+                ReferencesVO referencesVO = new ReferencesVO();
+                BeanUtils.copyProperties(item, referencesVO);
+                Project project = projects
+                        .stream()
+                        .filter(p -> p.getId() != null && p.getId().equals(item.getProjectId()))
+                        .findFirst()
+                        .orElse(null);
+                if (project != null) {
+                    referencesVO.setProjectName(project.getName());
+                }
 
-                for (References item : references) {
-                    ReferencesVO referencesVO = new ReferencesVO();
-                    BeanUtils.copyProperties(item, referencesVO);
-                    Project project = projects
-                            .stream()
-                            .filter(p -> p.getId() != null && p.getId().equals(item.getProjectId()))
-                            .findFirst()
-                            .orElse(null);
-                    if (project !=null) {
-                        referencesVO.setProjectName(project.getName());
-                    }
-
-                    if (!CollectionUtils.isEmpty(systemFiles)) {
-                        SystemFile systemFile = systemFiles
-                                .stream()
-                                .filter(file -> file.getGuid() != null && file.getGuid().equals(item.getFileGuid()))
-                                .findFirst()
-                                .orElse(null);
-                        if (systemFile != null) {
-                            referencesVO.setType(systemFile.getType());
-                        }
-                    }
-
-                    Personnel personnel = personnels
+                if (!CollectionUtils.isEmpty(systemFiles)) {
+                    SystemFile systemFile = systemFiles
                             .stream()
-                            .filter(person -> person.getId() != null && person.getId().equals(item.getCreateId()))
+                            .filter(file -> file.getGuid() != null && file.getGuid().equals(item.getFileGuid()))
                             .findFirst()
                             .orElse(null);
-                    if (personnel != null) {
-                        referencesVO.setCreateName(personnel.getPersonnelName());
+                    if (systemFile != null) {
+                        referencesVO.setType(systemFile.getType());
                     }
-                    referencesVOS.add(referencesVO);
                 }
 
+                Personnel personnel = personnels
+                        .stream()
+                        .filter(person -> person.getId() != null && person.getId().equals(item.getCreateId()))
+                        .findFirst()
+                        .orElse(null);
+                if (personnel != null) {
+                    referencesVO.setCreateName(personnel.getPersonnelName());
+                }
+                referencesVOS.add(referencesVO);
             }
+
+
         }
         return referencesVOS;
     }
 
-    public String getColumns(String column){
+    public String getColumns(String column) {
         Map<String, String> map = new HashMap<>();
-        map.put("remark","remark");
-        map.put("projectName","project_id");
-        map.put("fileGuid","file_guid");
-        map.put("referencesName","references_name");
-        map.put("createName","create_id");
-        map.put("createTime","create_time");
+        map.put("remark", "remark");
+        map.put("projectName", "project_id");
+        map.put("fileGuid", "file_guid");
+        map.put("referencesName", "references_name");
+        map.put("createName", "create_id");
+        map.put("createTime", "create_time");
         String reStr = map.get(column);
         return reStr;
     }

+ 28 - 10
src/main/java/cn/cslg/pas/service/novelty/NoveltyExportReportService.java

@@ -13,6 +13,7 @@ import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
 import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
 import cn.cslg.pas.common.vo.QueryCompareFileVO;
+import cn.cslg.pas.domain.business.References;
 import cn.cslg.pas.domain.business.ReportTemple;
 import cn.cslg.pas.domain.business.novelty.NoveltyReportReferences;
 import cn.cslg.pas.domain.business.novelty.NoveltyReportTemplate;
@@ -20,6 +21,7 @@ import cn.cslg.pas.domain.es.Marking;
 import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.business.CompareLiteratureService;
+import cn.cslg.pas.service.business.ReferencesService;
 import cn.cslg.pas.service.business.es.EsScratchWordsService;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.importPatent.ImportSinglePatentService;
@@ -45,13 +47,24 @@ public class NoveltyExportReportService {
     private final NoveltyReportTemplateService noveltyReportTemplateService;
     private final NoveltyReportReferencesService noveltyReportReferencesService;
     private final FileUtils fileUtils;
+    private final FileManagerService fileManagerService;
+    private final ReferencesService referencesService;
 
-    public String  exportReport(Integer id) throws  Exception{
+    public String exportReport(Integer id) throws Exception {
+        LambdaQueryWrapper<NoveltyReportReferences> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(NoveltyReportReferences::getReportReferenceId, id);
+        NoveltyReportReferences noveltyReportReferences = noveltyReportReferencesService.getOne(queryWrapper);
+        Boolean ifHaveFinalFile = noveltyReportReferences.getIfHaveFinalFile();
+        if (ifHaveFinalFile != null && ifHaveFinalFile) {
+            References references = referencesService.getById(id);
+            return references.getFileGuid();
+        } else {
+            return this.addReportReference(noveltyReportReferences);
+        }
 
+    }
 
-        LambdaQueryWrapper<NoveltyReportReferences> queryWrapper =new LambdaQueryWrapper<>();
-        queryWrapper.eq(NoveltyReportReferences::getReportReferenceId,id);
-        NoveltyReportReferences noveltyReportReferences = noveltyReportReferencesService.getOne(queryWrapper);
+    private String addReportReference(NoveltyReportReferences noveltyReportReferences) throws Exception {
 
         // 根据模板id 获取模板
         Integer tempalteId = noveltyReportReferences.getTemplateId();
@@ -62,15 +75,16 @@ public class NoveltyExportReportService {
         String configureSource = noveltyReportTemplate.getTempleMessage();
         Configure configure = this.loadConfigure(configureSource);
 
-String dataSource =noveltyReportReferences.getDataSource();
+        String dataSource = noveltyReportReferences.getDataSource();
 
         Map<String, Object> map = new HashMap<>();
 
-        JSONObject dataObject = JSONObject.parseObject(dataSource);
-        map.put("CM", dataObject);
+        Object dataObject = JSONObject.parse(dataSource);
+        map.put("cm", dataObject);
         // 获取模板路径
         String templateUrl = noveltyReportTemplate.getTemplatePath();
 
+        String templateFilePath = fileUtils.getPath(templateUrl);
 
         //读取模板后保存生成word的地址
         String fileName = IdUtil.simpleUUID() + ".docx";
@@ -78,16 +92,20 @@ String dataSource =noveltyReportReferences.getDataSource();
 
         String outPath = fileUtils.getSavePath(directoryName) + fileName;
 
-        XWPFTemplate template = XWPFTemplate.compile(templateUrl, configure).render(map);
+        XWPFTemplate template = XWPFTemplate.compile(templateFilePath, configure).render(map);
 
         File file = new File(outPath);
 //      生成word保存在指定目录
         template.writeToFile(outPath);
         template.close();
-        return "guid";
+        List<String> ids = fileManagerService.uploadFileGetGuid2(Arrays.asList(file));
+        if (ids == null || ids.size() == 0) {
+            throw new XiaoShiException("保存记录失败");
+        }
+        noveltyReportReferencesService.addFinalReference(noveltyReportReferences.getReportReferenceId(), ids.get(0));
+        return ids.get(0);
     }
 
-
     public Configure loadConfigure(String dateSource) {
         JSONObject configObject = JSONObject.parseObject(dateSource);
         LoopRowTableRenderPolicy tableRenderPolicy = new LoopRowTableRenderPolicy();

+ 3 - 1
src/main/java/cn/cslg/pas/service/novelty/NoveltyReportReferencesService.java

@@ -46,17 +46,20 @@ public class NoveltyReportReferencesService extends ServiceImpl<NoveltyReportRef
 
     private Integer addReference(NoveltyReportReferenceDTO noveltyReportReferenceDTO) {
         Integer templateId = noveltyReportReferenceDTO.getTemplateId();
+        Integer projectId =noveltyReportReferenceDTO.getProjectId();
         NoveltyReportTemplate noveltyReportTemplate = noveltyReportTemplateService.getById(templateId);
         String dataSource = noveltyReportReferenceDTO.getDataSource();
         //添加附件
         References references = new References();
         references.setReferencesName("");
+        references.setProjectId(projectId);
         references.insert();
         //添加查新报告附件
         NoveltyReportReferences noveltyReportReferences = new NoveltyReportReferences();
         noveltyReportReferences.setReportReferenceId(references.getId());
         noveltyReportReferences.setIfHaveFinalFile(false);
         noveltyReportReferences.setTemplateId(templateId);
+        noveltyReportReferences.setDataSource(dataSource);
         noveltyReportReferences.setConfigMessage(noveltyReportTemplate.getConfigMessage());
         noveltyReportReferences.insert();
         return references.getId();
@@ -70,7 +73,6 @@ public class NoveltyReportReferencesService extends ServiceImpl<NoveltyReportRef
         queryWrapper.eq(NoveltyReportReferences::getReportReferenceId, id);
         NoveltyReportReferences noveltyReportReferences = this.getOne(queryWrapper, false);
         noveltyReportReferences.setDataSource(dataSource);
-        noveltyReportReferences.setDataSource(dataSource);
         noveltyReportReferences.updateById();
         return id;
     }

+ 196 - 196
src/test/java/cn/cslg/pas/novelty/GetReportInfoFromWDTest.java

@@ -1,206 +1,206 @@
-package cn.cslg.pas.novelty;
-
-import org.openqa.selenium.By;
-import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.WebElement;
-import org.openqa.selenium.chrome.ChromeDriver;
-import org.openqa.selenium.chrome.ChromeOptions;
-import org.openqa.selenium.support.ui.ExpectedCondition;
-import org.openqa.selenium.support.ui.WebDriverWait;
-import org.springframework.boot.test.context.SpringBootTest;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.time.Duration;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-
-@SpringBootTest
-public class GetReportInfoFromWDTest {
-
-    public static Map<String, String> dynamicCaseInfo(String caseNo) {
-        Properties properties = new Properties();
-        try {
-            properties.load(new FileInputStream("path/to/your/config.properties"));
-        } catch (IOException e) {
-            e.printStackTrace();
-            throw new RuntimeException("Failed to load configuration properties");
-        }
-
-        String strFileSavePath = properties.getProperty("IPEasySetting.DownloadFileSavePath");
-        boolean isHeadless = Boolean.parseBoolean(properties.getProperty("IPEasySetting.isHeadless"));
-        String account = properties.getProperty("IPEasySetting.Account");
-        String password = properties.getProperty("IPEasySetting.Password");
-        String chromeDriverPath = properties.getProperty("IPEasySetting.ChromeDriverPath");
-        String iPEasyWeb = properties.getProperty("IPEasySetting.IPEasyWeb");
-
-        ChromeOptions options = new ChromeOptions();
-        options.addArguments("user-data-dir=" + strFileSavePath);
-        options.addArguments("--lang=nl");
-        options.addArguments("--disable-popup-blocking");
-        options.addArguments("--disable-images");
-
-        if (isHeadless) {
-            options.addArguments("headless");
-        }
-
-        WebDriver driver = null;
-        Map<String, String> retObject = new HashMap<>();
-
-        try {
-            System.setProperty("webdriver.chrome.driver", chromeDriverPath);
-            driver = new ChromeDriver(options);
-
-            driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
-            driver.manage().timeouts().pageLoadTimeout(100, TimeUnit.SECONDS);
-
-            driver.get(iPEasyWeb);
-
-            //进入登录界面
-            WebElement userField = driver.findElement(By.id("txtUser"));
-            WebElement pwdField = driver.findElement(By.id("txtPwd"));
-            WebElement loginButton = driver.findElement(By.id("btnLogin"));
-            //输入用户名和密码
-            userField.sendKeys(account);
-            pwdField.sendKeys(password);
-            //点击登录按钮
-            loginButton.click();
-
-            //关闭提示遮罩层
-            WebElement closeOverlay = driver.findElement(By.id("jpwClose"));
-            if (closeOverlay.isDisplayed()) {
-                closeOverlay.click();
-            }
-
-            //点击顶部菜单栏中的案件管理菜单
-            WebElement caseManagementMenu = driver.findElement(By.name("71A7CC35-F597-40E1-9FEF-BE622A3A3B63"));
-            caseManagementMenu.click();
-
-            //点击左侧 查询 菜单
-            WebElement searchMenu = driver.findElement(By.name("c3266ab3-521a-4815-8aaf-7dd0bc5a76af"));
-            searchMenu.click();
-
-            //切换到自定义报表Frame
-            driver.switchTo().frame(1);
-
-            WebElement inputSearch = driver.findElement(By.id("case_volume"));
-            inputSearch.sendKeys(caseNo.trim());
-
-            WebElement btnSearch = driver.findElement(By.id("btn_Search"));
-            btnSearch.click();
-
-            WebElement caseLink = driver.findElement(By.xpath("//a[contains(text()," + caseNo + ")]"));
-            caseLink.click();
-
-            driver.switchTo().parentFrame().switchTo().frame(2);
-
-            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
-            //等待页面上ID属性值为submitButton的元素加载完成
-            WebElement myElement = wait.until((ExpectedCondition<WebElement>) wd -> {
-                try {
-                    if (wd != null) {
-                        wd.switchTo().parentFrame().switchTo().frame(2);
-                        return wd.findElement(By.id("libase"));
-                    }
-                } catch (Exception e) {
-                    return null;
-                }
-                return null;
-            });
-
-            myElement.click();
-
-            // 案件号
-            retObject.put("CaseNo", caseNo.trim());
-            //案件名称
-            retObject.put("CaseName", driver.findElement(By.id("p_case_info__case_name")).getAttribute("value"));
-            //客户名称
-            retObject.put("CustomerName", driver.findElement(By.id("p_case_info__customer_id")).getAttribute("value"));
-            //业务类型
-            retObject.put("BusinessType", driver.findElement(By.id("p_case_info__business_type_id")).getAttribute("value"));
-            retObject.put("CaseState", getSelectText(driver.findElement(By.id("p_case_info__case_status_id"))));
-            retObject.put("ApplicationType", getSelectText(driver.findElement(By.id("p_case_info__apply_type_id"))));
-
-            //案件类型
-            retObject.put("CaseType", driver.findElement(By.id("p_case_info__case_type_id")).getAttribute("value"));
-            //委案日期
-            retObject.put("EntrustingDate", driver.findElement(By.id("p_case_info__charge_date")).getAttribute("value"));
-            //案件备注
-            retObject.put("CaseMemo", driver.findElement(By.id("p_case_info__remark")).getAttribute("value"));
-
-            WebElement expandInfoButton = driver.findElement(By.xpath("//span[contains(text(),'扩展信息')]"));
-            expandInfoButton.click();
-            retObject.put("CaseCoefficient", getSelectText(driver.findElement(By.id("p_case_info__case_coefficient_id"))));
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new RuntimeException("An error occurred while retrieving case info", e);
-        } finally {
-            if (driver != null) {
-                driver.quit();
-                // killChromProcess() equivalent in Java can be achieved by ensuring the driver process is killed
-                // This can be platform-specific and might not be necessary if driver.quit() is sufficient
-            }
-        }
-
-        return retObject;
-    }
-
-    public static String getSelectText(WebElement element) {
-        String strValue = element.getAttribute("value");
-
-        if (strValue == null || strValue.isEmpty()) {
-            return null;
-        }
-
-        List<WebElement> ops = element.findElements(By.tagName("option"));
-        for (WebElement op : ops) {
-            if (op.getAttribute("value").equals(strValue)) {
-                return op.getText();
-            }
-        }
-
-        return null;
-    }
-//
-//    public static void killChromeProcesses() {
+//package cn.cslg.pas.novelty;
+//
+//import org.openqa.selenium1x.By;
+//import org.openqa.selenium.WebDriver;
+//import org.openqa.selenium.WebElement;
+//import org.openqa.selenium.chrome.ChromeDriver;
+//import org.openqa.selenium.chrome.ChromeOptions;
+//import org.openqa.selenium.support.ui.ExpectedCondition;
+//import org.openqa.selenium.support.ui.WebDriverWait;
+//import org.springframework.boot.test.context.SpringBootTest;
+//
+//import java.io.FileInputStream;
+//import java.io.IOException;
+//import java.time.Duration;
+//import java.util.HashMap;
+//import java.util.List;
+//import java.util.Map;
+//import java.util.Properties;
+//import java.util.concurrent.TimeUnit;
+//
+//@SpringBootTest
+//public class GetReportInfoFromWDTest {
+//
+//    public static Map<String, String> dynamicCaseInfo(String caseNo) {
+//        Properties properties = new Properties();
 //        try {
-//            // 获取所有名为 "chrome" 的进程
-//            List<ProcessHandle> chromeProcesses = ProcessHandle.allProcesses()
-//                    .filter(ph -> ph.info().command().orElse("").toLowerCase().contains("chrome"))
-//                    .collect(Collectors.toList());
+//            properties.load(new FileInputStream("path/to/your/config.properties"));
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//            throw new RuntimeException("Failed to load configuration properties");
+//        }
 //
-//            for (ProcessHandle chromeProcess : chromeProcesses) {
-//                try {
-//                    chromeProcess.destroy(); // 尝试终止进程
-//                    chromeProcess.waitFor(10, TimeUnit.SECONDS); // 等待进程退出,超时为10秒
-//                } catch (InterruptedException | TimeoutException e) {
-//                    // 处理异常,例如进程没有在指定时间内退出
-//                    e.printStackTrace();
-//                }
+//        String strFileSavePath = properties.getProperty("IPEasySetting.DownloadFileSavePath");
+//        boolean isHeadless = Boolean.parseBoolean(properties.getProperty("IPEasySetting.isHeadless"));
+//        String account = properties.getProperty("IPEasySetting.Account");
+//        String password = properties.getProperty("IPEasySetting.Password");
+//        String chromeDriverPath = properties.getProperty("IPEasySetting.ChromeDriverPath");
+//        String iPEasyWeb = properties.getProperty("IPEasySetting.IPEasyWeb");
+//
+//        ChromeOptions options = new ChromeOptions();
+//        options.addArguments("user-data-dir=" + strFileSavePath);
+//        options.addArguments("--lang=nl");
+//        options.addArguments("--disable-popup-blocking");
+//        options.addArguments("--disable-images");
+//
+//        if (isHeadless) {
+//            options.addArguments("headless");
+//        }
+//
+//        WebDriver driver = null;
+//        Map<String, String> retObject = new HashMap<>();
+//
+//        try {
+//            System.setProperty("webdriver.chrome.driver", chromeDriverPath);
+//            driver = new ChromeDriver(options);
+//
+//            driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
+//            driver.manage().timeouts().pageLoadTimeout(100, TimeUnit.SECONDS);
+//
+//            driver.get(iPEasyWeb);
+//
+//            //进入登录界面
+//            WebElement userField = driver.findElement(By.id("txtUser"));
+//            WebElement pwdField = driver.findElement(By.id("txtPwd"));
+//            WebElement loginButton = driver.findElement(By.id("btnLogin"));
+//            //输入用户名和密码
+//            userField.sendKeys(account);
+//            pwdField.sendKeys(password);
+//            //点击登录按钮
+//            loginButton.click();
+//
+//            //关闭提示遮罩层
+//            WebElement closeOverlay = driver.findElement(By.id("jpwClose"));
+//            if (closeOverlay.isDisplayed()) {
+//                closeOverlay.click();
 //            }
 //
-//            // 获取所有名为 "chromedriver" 的进程
-//            List<ProcessHandle> chromedriverProcesses = ProcessHandle.allProcesses()
-//                    .filter(ph -> ph.info().command().orElse("").toLowerCase().contains("chromedriver"))
-//                    .collect(Collectors.toList());
+//            //点击顶部菜单栏中的案件管理菜单
+//            WebElement caseManagementMenu = driver.findElement(By.name("71A7CC35-F597-40E1-9FEF-BE622A3A3B63"));
+//            caseManagementMenu.click();
+//
+//            //点击左侧 查询 菜单
+//            WebElement searchMenu = driver.findElement(By.name("c3266ab3-521a-4815-8aaf-7dd0bc5a76af"));
+//            searchMenu.click();
+//
+//            //切换到自定义报表Frame
+//            driver.switchTo().frame(1);
+//
+//            WebElement inputSearch = driver.findElement(By.id("case_volume"));
+//            inputSearch.sendKeys(caseNo.trim());
 //
-//            for (ProcessHandle chromedriverProcess : chromedriverProcesses) {
+//            WebElement btnSearch = driver.findElement(By.id("btn_Search"));
+//            btnSearch.click();
+//
+//            WebElement caseLink = driver.findElement(By.xpath("//a[contains(text()," + caseNo + ")]"));
+//            caseLink.click();
+//
+//            driver.switchTo().parentFrame().switchTo().frame(2);
+//
+//            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
+//            //等待页面上ID属性值为submitButton的元素加载完成
+//            WebElement myElement = wait.until((ExpectedCondition<WebElement>) wd -> {
 //                try {
-//                    chromedriverProcess.destroy(); // 尝试终止进程
-//                    chromedriverProcess.waitFor(10, TimeUnit.SECONDS); // 等待进程退出,超时为10秒
-//                } catch (InterruptedException | TimeoutException e) {
-//                    // 处理异常,例如进程没有在指定时间内退出
-//                    e.printStackTrace();
+//                    if (wd != null) {
+//                        wd.switchTo().parentFrame().switchTo().frame(2);
+//                        return wd.findElement(By.id("libase"));
+//                    }
+//                } catch (Exception e) {
+//                    return null;
 //                }
-//            }
-//        } catch (IOException e) {
-//            // 处理获取进程列表时可能发生的异常
+//                return null;
+//            });
+//
+//            myElement.click();
+//
+//            // 案件号
+//            retObject.put("CaseNo", caseNo.trim());
+//            //案件名称
+//            retObject.put("CaseName", driver.findElement(By.id("p_case_info__case_name")).getAttribute("value"));
+//            //客户名称
+//            retObject.put("CustomerName", driver.findElement(By.id("p_case_info__customer_id")).getAttribute("value"));
+//            //业务类型
+//            retObject.put("BusinessType", driver.findElement(By.id("p_case_info__business_type_id")).getAttribute("value"));
+//            retObject.put("CaseState", getSelectText(driver.findElement(By.id("p_case_info__case_status_id"))));
+//            retObject.put("ApplicationType", getSelectText(driver.findElement(By.id("p_case_info__apply_type_id"))));
+//
+//            //案件类型
+//            retObject.put("CaseType", driver.findElement(By.id("p_case_info__case_type_id")).getAttribute("value"));
+//            //委案日期
+//            retObject.put("EntrustingDate", driver.findElement(By.id("p_case_info__charge_date")).getAttribute("value"));
+//            //案件备注
+//            retObject.put("CaseMemo", driver.findElement(By.id("p_case_info__remark")).getAttribute("value"));
+//
+//            WebElement expandInfoButton = driver.findElement(By.xpath("//span[contains(text(),'扩展信息')]"));
+//            expandInfoButton.click();
+//            retObject.put("CaseCoefficient", getSelectText(driver.findElement(By.id("p_case_info__case_coefficient_id"))));
+//
+//        } catch (Exception e) {
 //            e.printStackTrace();
+//            throw new RuntimeException("An error occurred while retrieving case info", e);
+//        } finally {
+//            if (driver != null) {
+//                driver.quit();
+//                // killChromProcess() equivalent in Java can be achieved by ensuring the driver process is killed
+//                // This can be platform-specific and might not be necessary if driver.quit() is sufficient
+//            }
 //        }
+//
+//        return retObject;
+//    }
+//
+//    public static String getSelectText(WebElement element) {
+//        String strValue = element.getAttribute("value");
+//
+//        if (strValue == null || strValue.isEmpty()) {
+//            return null;
+//        }
+//
+//        List<WebElement> ops = element.findElements(By.tagName("option"));
+//        for (WebElement op : ops) {
+//            if (op.getAttribute("value").equals(strValue)) {
+//                return op.getText();
+//            }
+//        }
+//
+//        return null;
 //    }
-
-}
+////
+////    public static void killChromeProcesses() {
+////        try {
+////            // 获取所有名为 "chrome" 的进程
+////            List<ProcessHandle> chromeProcesses = ProcessHandle.allProcesses()
+////                    .filter(ph -> ph.info().command().orElse("").toLowerCase().contains("chrome"))
+////                    .collect(Collectors.toList());
+////
+////            for (ProcessHandle chromeProcess : chromeProcesses) {
+////                try {
+////                    chromeProcess.destroy(); // 尝试终止进程
+////                    chromeProcess.waitFor(10, TimeUnit.SECONDS); // 等待进程退出,超时为10秒
+////                } catch (InterruptedException | TimeoutException e) {
+////                    // 处理异常,例如进程没有在指定时间内退出
+////                    e.printStackTrace();
+////                }
+////            }
+////
+////            // 获取所有名为 "chromedriver" 的进程
+////            List<ProcessHandle> chromedriverProcesses = ProcessHandle.allProcesses()
+////                    .filter(ph -> ph.info().command().orElse("").toLowerCase().contains("chromedriver"))
+////                    .collect(Collectors.toList());
+////
+////            for (ProcessHandle chromedriverProcess : chromedriverProcesses) {
+////                try {
+////                    chromedriverProcess.destroy(); // 尝试终止进程
+////                    chromedriverProcess.waitFor(10, TimeUnit.SECONDS); // 等待进程退出,超时为10秒
+////                } catch (InterruptedException | TimeoutException e) {
+////                    // 处理异常,例如进程没有在指定时间内退出
+////                    e.printStackTrace();
+////                }
+////            }
+////        } catch (IOException e) {
+////            // 处理获取进程列表时可能发生的异常
+////            e.printStackTrace();
+////        }
+////    }
+//
+//}

+ 7 - 0
src/test/java/cn/cslg/pas/novelty/NoveltyCompareRecordTests.java

@@ -12,6 +12,8 @@ import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.util.Arrays;
+
 
 /**
  * @Author xiexiang
@@ -96,5 +98,10 @@ public class NoveltyCompareRecordTests {
         System.out.println(response);
     }
 
+    @Test
+    public void remove() throws  Exception{
 
+        Response response =   noveltyCompareRecordController.remove(Arrays.asList("ToYIPpIBBmwxCVitKyiM"));
+        System.out.println(response);
+    }
 }

+ 61 - 0
src/test/java/cn/cslg/pas/novelty/NoveltyReportReferenceTests.java

@@ -0,0 +1,61 @@
+package cn.cslg.pas.novelty;
+
+
+import cn.cslg.pas.common.dto.NoveltyProjectDTO.*;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.controller.novelty.NoveltyCompareRecordController;
+import cn.cslg.pas.controller.novelty.NoveltyMarkController;
+import cn.cslg.pas.service.novelty.NoveltyExportReportService;
+import cn.cslg.pas.service.novelty.NoveltyReportReferencesService;
+import com.alibaba.fastjson2.JSONObject;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.Arrays;
+
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@SpringBootTest
+public class NoveltyReportReferenceTests {
+    @Autowired
+    private NoveltyReportReferencesService noveltyReportReferencesService;
+    @Autowired
+    private NoveltyExportReportService noveltyExportReportService;
+    @Test
+    public void addOrUpdate() throws Exception {
+        NoveltyReportReferenceDTO noveltyReportReferenceDTO = new NoveltyReportReferenceDTO();
+        Integer templeId = 1;
+        noveltyReportReferenceDTO.setTemplateId(templeId);
+        noveltyReportReferenceDTO.setDataSource("112");
+        noveltyReportReferenceDTO.setProjectId(1);
+        noveltyReportReferenceDTO.setId(71);
+        noveltyReportReferencesService.addOrUpdate(noveltyReportReferenceDTO);
+    }
+
+    @Test
+    public void export() throws Exception {
+        noveltyExportReportService.exportReport(1);
+    }
+
+    @Test
+    public void delete() throws Exception {
+
+        noveltyReportReferencesService.delete(Arrays.asList(72));
+    }
+
+    @Test
+    public void query() throws Exception {
+        NoveltyReportReferenceQueryDTO noveltyReportReferenceQueryDTO=new NoveltyReportReferenceQueryDTO();
+        noveltyReportReferenceQueryDTO.setProjectId(1);
+        noveltyReportReferenceQueryDTO.setCurrent(1);
+        noveltyReportReferenceQueryDTO.setSize(10);
+       Records records= noveltyReportReferencesService.queryReference(noveltyReportReferenceQueryDTO);
+       System.out.println(records);
+    }
+
+}