瀏覽代碼

Merge remote-tracking branch 'origin/master_novelty' into master_novelty

lwhhszx 11 月之前
父節點
當前提交
fd1cb9df7f

+ 11 - 0
src/main/java/cn/cslg/pas/common/dto/GetReportInfoFromWDDTO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+@Data
+public class GetReportInfoFromWDDTO {
+
+    private String token;
+
+    private String caseNo;
+}

+ 11 - 0
src/main/java/cn/cslg/pas/common/dto/WDLoginDTO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+@Data
+public class WDLoginDTO {
+
+    private String name;
+
+    private String password;
+}

+ 11 - 0
src/main/java/cn/cslg/pas/common/vo/GetCustomFromWD.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+
+@Data
+public class GetCustomFromWD {
+
+    private Integer id;
+    //客户名称
+    private String name;
+}

+ 29 - 0
src/main/java/cn/cslg/pas/common/vo/GetReportInfoFromWDVO.java

@@ -0,0 +1,29 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class GetReportInfoFromWDVO {
+
+    private Integer id;
+    //文号
+    private String caseNo;
+    //申请类型
+    private String applicationType;
+    //业务类型
+    private String businessType;
+    //案件类型
+    private String caseType;
+    //案件名称
+    private String caseName;
+
+    private String caseMemo;
+    //客户信息
+    private GetCustomFromWD customer;
+
+    private List<String> itemStaffs;
+
+    private Integer calMonthId;
+}

+ 19 - 0
src/main/java/cn/cslg/pas/common/vo/WDLoginVO.java

@@ -0,0 +1,19 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class WDLoginVO {
+
+    private Integer statusCode;
+
+    private Integer userId;
+
+    private String name;
+
+    private String token;
+
+    private Date expireTime;
+}

+ 19 - 1
src/main/java/cn/cslg/pas/controller/NoveltyProjectController.java

@@ -12,6 +12,7 @@ import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.NoveltyProjectVO.QueryTemplateVO;
 import cn.cslg.pas.common.vo.QueryCompareFileVO;
 import cn.cslg.pas.common.vo.QueryInventionPointVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
 import cn.cslg.pas.common.vo.TechnicalCaseVO;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.factorys.businessFactory.BusinessFactory;
@@ -81,7 +82,12 @@ public class NoveltyProjectController {
     @PostMapping("/queryNoveltyProject")
     public Response queryNoveltyProject(@RequestBody StringRequest stringRequest) throws Exception {
         Business business = businessFactory.getClass("noveltyProjectService");
-        Records records = (Records) business.queryMessage(stringRequest);
+        Records records = null;
+        try {
+            records = (Records) business.queryMessage(stringRequest);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
         return Response.success(records);
     }
 
@@ -215,6 +221,18 @@ public class NoveltyProjectController {
         return Response.success("删除成功");
     }
 
+    @Operation(summary = "根据文案号从维德系统拉取基本信息")
+    @PostMapping("/getReportInfoFromWD")
+    public Response getReportInfoFromWD(@RequestBody String caseNo) throws Exception {
+        QueryNoveltyProjectVO reportInfoFromWD = null;
+        try {
+            reportInfoFromWD = noveltyCompareLiteratureService.getReportInfoFromWD(caseNo);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success(reportInfoFromWD);
+    }
+
     @Operation(summary = "查询查新检索报告模板")
     @PostMapping("/queryTemplate")
     public Response queryTemplate(@RequestBody QueryTemplateDTO queryTemplateDTO) throws IOException {

+ 66 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetEntrustNameSql.java

@@ -0,0 +1,66 @@
+package cn.cslg.pas.factorys.getSqlFactorys;
+
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.EntrustVO;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Slf4j
+@Component
+public class GetEntrustNameSql implements GetSqlObject {
+    private SqlObject sqlObject;
+    @Autowired
+    private PermissionService permissionService;
+
+    @Override
+    public String getSql(String value) {
+        if (value.equals("null")) {
+            return "isnull(p.entrust_id)";
+        }
+        List<String> entrustNames = new ArrayList<>();
+        Integer ifEqual = 0;
+        //根据名称查询人员id
+        List<EntrustVO> entrustVOS = null;
+        if (sqlObject.getField().equals("entrustNameTrue")) {
+            ifEqual = 0;
+
+        } else {
+            ifEqual = 1;
+        }
+        //根据名称查询
+        try {
+            String json = permissionService.getEntrustsByName(value, ifEqual);
+            entrustVOS = JSON.parseArray(json, EntrustVO.class);
+        } catch (Exception e) {
+        }
+        if (entrustVOS == null || entrustVOS.size() == 0) {
+            return " 1!=1 ";
+        }
+        entrustVOS.forEach(item -> {
+            String tmp = "(p.entrust_id=" + item.getEntrustId() + " and p.entrust_type=" + item.getEntrustType() + ")";
+            entrustNames.add(tmp);
+        });
+        String names = StringUtils.join(entrustNames, " or ");
+        String re = "(" + names + ")";
+        return re;
+    }
+
+    @Override
+    public void setSqlObject(SqlObject sqlObject) {
+        this.sqlObject = sqlObject;
+    }
+
+    ;
+
+    public SqlObject getSqlObject() {
+        return sqlObject;
+    }
+}

+ 1 - 1
src/main/java/cn/cslg/pas/service/business/ProjectService.java

@@ -157,7 +157,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
                     importTaskAMVO.setReportType(reportType);
                     importTaskAMVO.setProjectType(projectType);
                     importTaskAMVO.setProjectId(toProjectId);
-                    this.addAssoToCompareFile(patentWithIdVOS,importTaskAMVO);
+                    this.addAssoToCompareFile(patentNoWithIdVOS,importTaskAMVO);
                 }
                 else {
                     this.addAssoToEs(patentNoWithIdVOS, toProjectId);

+ 1 - 1
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -125,7 +125,7 @@ public class EsPatentService {
             }
         }
         dto.setPictureGuid(FormatUtil.getPictureFormat(dto.getAppNo()));
-        List<LegalEvent> legalEvents = this.getLegalEvents(dto.getPatentNo());
+        List<LegalEvent> legalEvents = this.getLegalEvents(vo.getPatentNo());
         dto.setLegalEvents(legalEvents);
         return dto;
     }

+ 42 - 0
src/main/java/cn/cslg/pas/service/novelty/NoveltyCompareLiteratureService.java

@@ -8,9 +8,11 @@ import cn.cslg.pas.common.dto.business.LiteratureQueryDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.GenerateObjectUtil;
 import cn.cslg.pas.common.vo.CompareLiteratureVO;
+import cn.cslg.pas.common.vo.GetReportInfoFromWDVO;
 import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareLiteratureVO;
 import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
 import cn.cslg.pas.common.vo.QueryCompareFileVO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
 import cn.cslg.pas.domain.business.CompareLiterature;
 import cn.cslg.pas.domain.es.Marking;
 import cn.cslg.pas.domain.es.Patent;
@@ -22,6 +24,8 @@ import cn.cslg.pas.service.business.CompareLiteratureService;
 import cn.cslg.pas.service.business.es.EsPatentService;
 import cn.cslg.pas.service.business.es.EsScratchWordsService;
 import cn.cslg.pas.service.importPatent.ImportSinglePatentService;
+import cn.cslg.pas.service.permissions.GetReportInfoFromWDService;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -31,12 +35,15 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -61,6 +68,9 @@ public class NoveltyCompareLiteratureService extends ServiceImpl<NoveltyCompareL
     private RetrieveRecordMapper retrieveRecordMapper;
 
     @Autowired
+    private GetReportInfoFromWDService getReportInfoFromWDService;
+
+    @Autowired
     private CompareLiteratureMapper compareLiteratureMapper;
     @Autowired
     private CompareLiteratureService compareLiteratureService;
@@ -70,6 +80,7 @@ public class NoveltyCompareLiteratureService extends ServiceImpl<NoveltyCompareL
     private EsPatentService esPatentService;
     @Autowired
     private ImportSinglePatentService importSinglePatentService;
+
     public Records queryNoveltyCompareLiterature(LiteratureQueryDTO vo) throws Exception {
         Integer projectId = vo.getProjectId();
         Records records = new Records();
@@ -231,6 +242,37 @@ public class NoveltyCompareLiteratureService extends ServiceImpl<NoveltyCompareL
         compareLiteratureMapper.deleteById(vo.getCompareLitertureId());
     }
 
+    public QueryNoveltyProjectVO getReportInfoFromWD(String caseNo) throws IOException {
+        String result = getReportInfoFromWDService.getReportInfoFromWD(caseNo);
+        QueryNoveltyProjectVO projectVO = new QueryNoveltyProjectVO();
+        if (StringUtils.isNotEmpty(result)) {
+            GetReportInfoFromWDVO wdvo = JSONObject.parseObject(result, GetReportInfoFromWDVO.class);
+            projectVO.setInnerCaseNumber(wdvo.getCaseNo());
+            projectVO.setCaseName(wdvo.getCaseName());
+            if (ObjectUtils.isNotEmpty(wdvo.getCustomer()) && StringUtils.isNotEmpty(wdvo.getCustomer().getName())) {
+                projectVO.setApplicants(wdvo.getCustomer().getName());
+            }
+        }
+        return projectVO;
+    }
+
+
+    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 List<Integer> copyCompareFile(List<Integer> ids, Integer toProjectId, Integer fromProjectId) throws Exception {
 
         if (ids == null || ids.size() == 0) {

+ 75 - 0
src/main/java/cn/cslg/pas/service/permissions/GetReportInfoFromWDService.java

@@ -0,0 +1,75 @@
+package cn.cslg.pas.service.permissions;
+
+import cn.cslg.pas.common.dto.WDLoginDTO;
+import cn.cslg.pas.common.vo.WDLoginVO;
+import cn.cslg.pas.exception.XiaoShiException;
+import com.alibaba.fastjson2.JSONObject;
+import com.google.gson.Gson;
+import okhttp3.MediaType;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class GetReportInfoFromWDService {
+    @Value("${WDUrl}")
+    private String WDUrl;
+    @Value("${WDSYS.account}")
+    private String account;
+    @Value("${WDSYS.password}")
+    private String password;
+    /**
+     * 从维德系统获取案件基本信息
+     * @param caseNo
+     * @return
+     * @throws IOException
+     */
+    public String getReportInfoFromWD(String caseNo) throws IOException {
+        String token = "";
+        String res = this.getTokenByWDLogin();
+        if (StringUtils.isNotEmpty(res)) {
+            WDLoginVO wdLoginVO = JSONObject.parseObject(res, WDLoginVO.class);
+            if (StringUtils.isEmpty(wdLoginVO.getToken())) {
+                throw new XiaoShiException("账号未登录");
+            }
+            token = wdLoginVO.getToken();
+        }
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(WDUrl + "/api/IPEasy/GetCaseInfo?CaseNo=" + caseNo)
+                .addHeader("Authorization", "Bearer " + token)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+    //登录维德系统
+    public String getTokenByWDLogin() throws IOException {
+        WDLoginDTO vo = new WDLoginDTO();
+        vo.setName(account);
+        vo.setPassword(password);
+        String param = new Gson().toJson(vo);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(WDUrl + "/api/account/Login")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+}

+ 2 - 2
src/main/resources/jsons/noveltyProject.json

@@ -343,7 +343,7 @@
     "value": "entrustName",
     "field": "entrustName",
     "sqlField": "p.entrust_id",
-    "sqlClass": "getEntrustTrueNameSql",
+    "sqlClass": "getEntrustNameSql",
     "orderClass": "getEntrustOrder",
     "groupClass": "getEntrustGroup",
     "ifSearch": "true",
@@ -358,7 +358,7 @@
     "value": "entrustNameTrue",
     "field": "entrustNameTrue",
     "sqlField": "p.entrust_id",
-    "sqlClass": "getEntrustTrueNameSql",
+    "sqlClass": "getEntrustNameSql",
     "orderClass": "getEntrustOrder",
     "groupClass": "getEntrustGroup",
     "ifSearch": "false",

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

@@ -1,5 +1,9 @@
 package cn.cslg.pas.novelty;
 
+import cn.cslg.pas.common.vo.GetReportInfoFromWDVO;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.service.permissions.GetReportInfoFromWDService;
+import com.alibaba.fastjson2.JSONObject;
 import org.junit.jupiter.api.Test;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebDriver;
@@ -8,16 +12,12 @@ 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.beans.factory.annotation.Value;
+import org.springframework.beans.factory.annotation.Autowired;
 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.*;
 import java.util.concurrent.TimeUnit;
 
 @SpringBootTest
@@ -29,28 +29,27 @@ public class GetReportInfoFromWDTest {
     private static String chromeDriverPath = "E:\\test\\chromedriver-win64\\chromedriver-win64\\chromedriver.exe";
     private static String iPEasyWeb = "http://47.106.94.35/index.aspx";
 
+    @Autowired
+    private GetReportInfoFromWDService getReportInfoFromWDService;
+
+    @Test
+    public void test11() throws IOException {
+        final String res = getReportInfoFromWDService.getReportInfoFromWD("PAUS2417955");
+        System.out.println(res);
+        final GetReportInfoFromWDVO wdvo = JSONObject.parseObject(res, GetReportInfoFromWDVO.class);
+        System.out.println(wdvo);
+//        String token = getReportInfoFromWDService.getTokenByWDLogin();
+//        System.out.println(token);
+    }
+
     @Test
     public void test() {
         Map<String, String> map = dynamicCaseInfo("5");
+//        Map<String, String> map = dynamicCaseInfo("P");
         System.out.println(map);
     }
 
     public 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");
@@ -113,11 +112,20 @@ public class GetReportInfoFromWDTest {
             WebElement btnSearch = driver.findElement(By.id("btn_Search"));
             btnSearch.click();
 
-            WebElement caseLink = driver.findElement(By.xpath("//a[contains(text()," + caseNo + ")]"));
+            WebElement caseLink = null;
+            try {
+                caseLink = driver.findElement(By.xpath("//a[contains(text()," + caseNo + ")]"));
+            } catch (Exception e) {
+                throw new XiaoShiException("未查询到案件基本信息");
+            }
             caseLink.click();
 
             driver.switchTo().parentFrame().switchTo().frame(2);
 
+//            IPCE8AE7FA-6F04-4860-B515-0F350F1A4CFB
+//            WebElement libase = driver.findElement(By.id("libase"));
+//            libase.click();
+
             WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
             //等待页面上ID属性值为submitButton的元素加载完成
             WebElement myElement = wait.until((ExpectedCondition<WebElement>) wd -> {
@@ -183,7 +191,6 @@ public class GetReportInfoFromWDTest {
                 return op.getText();
             }
         }
-
         return null;
     }
 //
@@ -224,4 +231,5 @@ public class GetReportInfoFromWDTest {
 //        }
 //    }
 
+
 }