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(); } }