package cn.cslg.wdc.service.common; import cn.cslg.wdc.common.exception.XiaoShiException; import cn.cslg.wdc.dto.common.GetBaseInfoByWDDTO; import cn.cslg.wdc.dto.common.GetCaseInfoByWDDTO; import cn.cslg.wdc.dto.common.GetPatentActionByWDDTO; import cn.cslg.wdc.dto.common.WDLoginDTO; import cn.cslg.wdc.vo.common.WDLoginVO; import com.alibaba.fastjson2.JSONObject; import com.google.gson.Gson; import okhttp3.*; 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("${WeiDeUrl}") private String WeiDeUrl; @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(); } /** * 导出案件列表信息 * @param cookie * @param uuid * @param number * @return * @throws IOException */ public byte[] exportFileFromWD(String cookie, String uuid, String number) throws IOException { OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(60, TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .build(); Request request = new Request.Builder() .url(WeiDeUrl + "/FileHandlerNew.ashx?guid=" + uuid + "&file_size=" + number) .addHeader("Cookie", cookie) .get() .build(); return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).bytes(); } /** * 获取下载页面 * @param vo * @return * @throws IOException */ public String getPatentActionByWD(GetPatentActionByWDDTO vo,String cookie) throws IOException { FormBody formBody = new FormBody.Builder() .add("Call", vo.getCall()) .add("id", vo.getId()) .add("pageSize", vo.getPageSize()) .add("pageIndex", vo.getPageIndex()) .add("_PK", vo.get_PK()) .add("searchKey", vo.getSearchKey()) .add("colsel", vo.getColsel()) .add("log_pagename", vo.getLog_pagename()) .build(); OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(60, TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .build(); Request request = new Request.Builder() .url(WeiDeUrl + "/PatentAction.ashx") .addHeader("Cookie", cookie) .post(formBody) .build(); return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string(); } /** * 获取下载页面 * @param vo * @return * @throws IOException */ public String getBaseInfoByWD(GetBaseInfoByWDDTO vo, String cookie) throws IOException { FormBody formBody = new FormBody.Builder() .add("Call", vo.getCall()) .add("file_no", vo.getFile_no()) .add("file_name", vo.getFile_name()) .add("model", vo.getModel()) .add("log_pagename", vo.getLog_pagename()) .build(); OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(60, TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .build(); Request request = new Request.Builder() .url(WeiDeUrl + "/BaseInfo.ashx") .addHeader("Cookie", cookie) .post(formBody) .build(); return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string(); } /** * 获取案件处理事项 * @param vo * @return * @throws IOException */ public String getCaseInfoByWD(GetCaseInfoByWDDTO vo, String cookie) throws IOException { FormBody formBody = new FormBody.Builder() .add("Call", vo.getCall()) .add("case_id", vo.getCase_id()) .add("Recent", vo.getRecent()) .add("tag", vo.getTag()) .add("nofinish", vo.getNofinish()) .add("proc_stage_pat", vo.getProc_stage_pat()) .add("ctrlproc_class", vo.getCtrlproc_class()) .add("pageSize", vo.getPageSize()) .add("pageIndex", vo.getPageIndex()) .add("_PK", vo.get_PK()) .add("searchKey", vo.getSearchKey()) .add("colsel", vo.getColsel()) .add("log_pagename", vo.getLog_pagename()) .build(); OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(60, TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .build(); Request request = new Request.Builder() .url(WeiDeUrl + "/CaseInfo.ashx") .addHeader("Cookie", cookie) .post(formBody) .build(); return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string(); } }