diff --git a/adc-da-convert/src/main/java/com/adc/da/convert/mq/SendConvertMQService.java b/adc-da-convert/src/main/java/com/adc/da/convert/mq/SendConvertMQService.java index 6a576e23..e951244d 100644 --- a/adc-da-convert/src/main/java/com/adc/da/convert/mq/SendConvertMQService.java +++ b/adc-da-convert/src/main/java/com/adc/da/convert/mq/SendConvertMQService.java @@ -37,7 +37,7 @@ import java.util.Map; @Component public class SendConvertMQService { - // 文档转换远程服务IP地址 + // 文档转换远程服务IP地址s @Value("${convert.host}") private String convertHost; diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/controller/SarBussionessStandController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/controller/SarBussionessStandController.java index 450daee1..f370bec7 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/controller/SarBussionessStandController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/controller/SarBussionessStandController.java @@ -222,7 +222,7 @@ public class SarBussionessStandController extends BaseController> getSarBussionStandPage(SarBussionessStandEOPage page) throws Exception { if (StringUtils.isNotBlank(page.getAdvanceSearchVOStr())) { List searchList = JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); - String advanceStr = SarAdvanceSearchUtil.createSql(searchList); + String advanceStr = SarAdvanceSearchUtil.createSql(searchList,"SAR_BUSS_STAND_ATTR_INFO"); if (StringUtils.isNotBlank(advanceStr)) { page.setAdvanceSearchStr(advanceStr); } else { diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java index 097528d6..f872d44c 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussionessStand/service/impl/SarBussionessStandServiceImpl.java @@ -200,7 +200,7 @@ public class SarBussionessStandServiceImpl extends ServiceImpl searchList = com.alibaba.fastjson.JSONObject.parseArray(page.getAdvanceSearchVOStr(),SarAdvanceSearchVO.class); - String advanceStr = SarAdvanceSearchUtil.createSql(searchList); + String advanceStr = SarAdvanceSearchUtil.createSql(searchList,"SAR_BUSS_STAND_ATTR_INFO"); if (com.adc.da.util.utils.StringUtils.isNotBlank(advanceStr)) { page.setAdvanceSearchStr(advanceStr); } else { diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java index ac587322..421bf4f0 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java @@ -1389,7 +1389,7 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl searchList = com.alibaba.fastjson.JSONObject.parseArray(page.getAdvanceSearchVOStr(), SarAdvanceSearchVO.class); - String advanceStr = SarAdvanceSearchUtil.createSql(searchList); + String advanceStr = SarAdvanceSearchUtil.createSql(searchList,"SAR_STAND_ATTR_INFO"); if (StringUtils.isNotBlank(advanceStr)) { page.setAdvanceSearchStr(advanceStr); } else { @@ -1398,7 +1398,11 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl getList = dao.getSarStandardsExportInfo(page); attrInfoShow(getList); return getList; diff --git a/adc-da-slrs/src/main/java/com/adc/da/utils/util/SarAdvanceSearchUtil.java b/adc-da-slrs/src/main/java/com/adc/da/utils/util/SarAdvanceSearchUtil.java index bfc545b2..811274f5 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/utils/util/SarAdvanceSearchUtil.java +++ b/adc-da-slrs/src/main/java/com/adc/da/utils/util/SarAdvanceSearchUtil.java @@ -14,7 +14,7 @@ import java.util.List; public class SarAdvanceSearchUtil { // 拼接sql语句 - public static String createSql(List searchVOList) { + public static String createSql(List searchVOList,String tableName) { String sqlInfo = ""; StringBuilder sqlBuilder = new StringBuilder(); if (searchVOList != null && !searchVOList.isEmpty()) { @@ -26,14 +26,14 @@ public class SarAdvanceSearchUtil { List list = Arrays.asList(searchVO.getValue().split(",")); for (int i = 0; i < list.size(); i++) { if (i == list.size() - 1) { - sql += searchVO.getField() + " " + searchVO.getType() + " " + "concat(concat('%','" + list.get(i) + "'),'%') "; + sql += tableName+"."+searchVO.getField() + " " + searchVO.getType() + " " + "concat(concat('%','" + list.get(i) + "'),'%') "; } else { - sql += searchVO.getField() + " " + searchVO.getType() + " " + "concat(concat('%','" + list.get(i) + "'),'%') and "; + sql += tableName+"."+searchVO.getField() + " " + searchVO.getType() + " " + "concat(concat('%','" + list.get(i) + "'),'%') and "; } } sql += " )"; } else { - sql += searchVO.getConnect() + " " + searchVO.getField() + " "; + sql += searchVO.getConnect() + " " + tableName+"."+searchVO.getField() + " "; if (!"like".equals(searchVO.getType())) { sql += searchVO.getType() + "'" + searchVO.getValue() + "'"; } else { @@ -44,30 +44,30 @@ public class SarAdvanceSearchUtil { } else if (StringUtils.isNotBlank(searchVO.getTimeSt()) || StringUtils.isNotBlank(searchVO.getTimeEd())) { sql += searchVO.getConnect() + " "; if (StringUtils.isNotBlank(searchVO.getTimeSt()) && StringUtils.isBlank(searchVO.getTimeEd())) { - sql += "(" + searchVO.getField(); + sql += "(" + tableName+"."+searchVO.getField(); sql += (searchVO.getType().equals("!=") ? " not " : "") + " between " + "'" + searchVO.getTimeSt() + "' and '2099-12-31'"; - sql += " or " + searchVO.getField(); + sql += " or " + tableName+"."+searchVO.getField(); sql += (searchVO.getType().equals("!=") ? " not " : "") + " between " + "'" + searchVO.getTimeSt() + " 00:00:00" + "' and '2099-12-31 23:59:59'"; - sql += " or " + searchVO.getField(); + sql += " or " + tableName+"."+searchVO.getField(); sql += " = 'TBD'"; sql += ")"; } else if (StringUtils.isBlank(searchVO.getTimeSt()) && StringUtils.isNotBlank(searchVO.getTimeEd())) { - sql += "(" + searchVO.getField(); + sql += "(" + tableName+"."+searchVO.getField(); sql += (searchVO.getType().equals("!=") ? " not " : "") + " between '1970-01-01' and " + "'" + searchVO.getTimeEd() + "'"; - sql += " or " + searchVO.getField(); + sql += " or " + tableName+"."+searchVO.getField(); sql += (searchVO.getType().equals("!=") ? " not " : "") + " between '1970-01-01 00:00:00' and " + "'" + searchVO.getTimeEd() + " 23:59:59'"; - sql += " or " + searchVO.getField(); + sql += " or " + tableName+"."+searchVO.getField(); sql += " = 'TBD'"; sql += ")"; } else if (StringUtils.isNotBlank(searchVO.getTimeSt()) && StringUtils.isNotBlank(searchVO.getTimeEd())) { - sql += "(" + searchVO.getField(); + sql += "(" + tableName+"."+searchVO.getField(); sql += (searchVO.getType().equals("!=") ? " not " : "") + " between '" + searchVO.getTimeSt() + "' and '" + searchVO.getTimeEd() + "'"; - sql += " or " + searchVO.getField(); + sql += " or " + tableName+"."+searchVO.getField(); sql += (searchVO.getType().equals("!=") ? " not " : "") + " between '" + searchVO.getTimeSt() + " 00:00:00" + "' and '" + searchVO.getTimeEd() + " 23:59:59'"; - sql += " or " + searchVO.getField(); + sql += " or " + tableName+"."+searchVO.getField(); sql += " = 'TBD'"; sql += ")"; } diff --git a/adc-da-sys/pom.xml b/adc-da-sys/pom.xml index 94a80bcc..9c0f819c 100644 --- a/adc-da-sys/pom.xml +++ b/adc-da-sys/pom.xml @@ -99,6 +99,11 @@ itext-asian 5.2.0 + + com.squareup.okhttp3 + okhttp + 3.6.0 + diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/config/OkHttpConfig.java b/adc-da-sys/src/main/java/com/adc/da/ocr/config/OkHttpConfig.java new file mode 100644 index 00000000..734f3261 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/config/OkHttpConfig.java @@ -0,0 +1,69 @@ +package com.adc.da.ocr.config; + +import okhttp3.ConnectionPool; +import okhttp3.OkHttpClient; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.concurrent.TimeUnit; + +@Configuration +public class OkHttpConfig { + + @Bean + public X509TrustManager x509TrustManager() { + return new X509TrustManager() { + @Override + public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { + } + @Override + public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { + } + @Override + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[0]; + } + }; + } + @Bean + public SSLSocketFactory sslSocketFactory() { + try { + //信任任何链接 + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(null, new TrustManager[]{x509TrustManager()}, new SecureRandom()); + return sslContext.getSocketFactory(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (KeyManagementException e) { + e.printStackTrace(); + } + return null; + } + /** + * Create a new connection pool with tuning parameters appropriate for a single-user application. + * The tuning parameters in this pool are subject to change in future OkHttp releases. Currently + */ + @Bean + public ConnectionPool pool() { + return new ConnectionPool(200, 5, TimeUnit.MINUTES); + } + @Bean + public OkHttpClient okHttpClient() { + return new OkHttpClient.Builder() + .sslSocketFactory(sslSocketFactory(), x509TrustManager()) + .retryOnConnectionFailure(false)//是否开启缓存 + .connectionPool(pool())//连接池 + .connectTimeout(10L, TimeUnit.SECONDS) + .readTimeout(10L, TimeUnit.SECONDS) + .build(); + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/service/impl/OCRRestfulServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/ocr/service/impl/OCRRestfulServiceImpl.java index d2b57f55..eeff3433 100644 --- a/adc-da-sys/src/main/java/com/adc/da/ocr/service/impl/OCRRestfulServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/service/impl/OCRRestfulServiceImpl.java @@ -7,6 +7,7 @@ import com.adc.da.ocr.entity.OcrRecordEO; import com.adc.da.ocr.entity.OcrResultEo; import com.adc.da.ocr.service.OCRRestfulService; import com.adc.da.ocr.util.Base64Util; +import com.adc.da.ocr.util.OkHttpUtil; import com.adc.da.ocr.util.RsaUtil; import com.adc.da.ocr.util.UUIDUtils; import com.alibaba.fastjson.JSONObject; @@ -15,6 +16,7 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -32,6 +34,8 @@ import com.adc.da.sys.util.LoginUserUtil; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.HashMap; +import java.util.Map; @Service @Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) @@ -53,8 +57,11 @@ public class OCRRestfulServiceImpl implements OCRRestfulService { @Value("${OCR.convertType}") private String convertType; @Autowired + @Qualifier(value = "remoteRestTemplate") private RestTemplate restTemplate; @Autowired + private OkHttpUtil okHttpUtil; + @Autowired private OcrRecordEODao ocrRecordEODao; //ocr处理文件后存放url @Value("${OCR.ocrPath}") @@ -81,28 +88,27 @@ public class OCRRestfulServiceImpl implements OCRRestfulService { logger.error("PDF转Base64失败"); return Result.error("PDF转Base64失败"); } - MultiValueMap paramMap = new LinkedMultiValueMap(); - paramMap.add("userId",OcrUserId); - paramMap.add("authCode",authCode); - paramMap.add("convertType",convertType); - paramMap.add("fileName",fileName); - paramMap.add("fileContent",fileContent); - paramMap.add("taskId",taskId); - paramMap.add("callBackUrl",RestCallBackUrl); - paramMap.add("callBackMethod",""); - HttpHeaders headers = new HttpHeaders(); - HttpEntity> httpEntity = new HttpEntity>(paramMap,headers); SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); - logger.info("处理完文件数据,开始请求OCR接口数据:【"+sdf.format(new Date())+"】"); try{ - ResponseEntity responseEntity = restTemplate.postForEntity(RestHandleFileUrl, httpEntity, String.class); + //ResponseEntity responseEntity = restTemplate.postForEntity(RestHandleFileUrl, httpEntity, String.class); + Map map = new HashMap<>(); + map.put("userId",OcrUserId); + map.put("authCode",authCode); + map.put("convertType",convertType); + map.put("fileName",fileName); + map.put("fileContent",fileContent); + map.put("taskId",taskId); + map.put("callBackUrl",RestCallBackUrl); + map.put("callBackMethod",""); + logger.info("处理完文件数据,开始请求OCR接口数据:【"+sdf.format(new Date())+"】"); + String result = okHttpUtil.post(RestHandleFileUrl,map,new HashMap<>()); + logger.info("okHttp结果:"+result); logger.info("请求OCR接口完毕,返回响应状态:【"+sdf.format(new Date())+"】"); - HttpStatus statusCode = responseEntity.getStatusCode(); - if(statusCode != HttpStatus.OK){ - logger.error("请求出现异常:"+statusCode.value()); + if(!result.contains("请求成功")){ + logger.error("请求出现异常:"+result); return Result.error("请求出现异常"); }else{ - OcrResultEo ocrResultEo = JSONObject.parseObject(responseEntity.getBody(), OcrResultEo.class); + OcrResultEo ocrResultEo = JSONObject.parseObject(result, OcrResultEo.class); if(ocrResultEo.getResultCode().equals("0")){ if ("add".equals(type)) { OcrRecordEO ocrRecordEO = new OcrRecordEO(); diff --git a/adc-da-sys/src/main/java/com/adc/da/ocr/util/OkHttpUtil.java b/adc-da-sys/src/main/java/com/adc/da/ocr/util/OkHttpUtil.java new file mode 100644 index 00000000..f36aac62 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/ocr/util/OkHttpUtil.java @@ -0,0 +1,193 @@ +package com.adc.da.ocr.util; + +import okhttp3.*; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.util.Iterator; +import java.util.Map; + +/** + * + * @author David + */ +@Component +public class OkHttpUtil { + private static final Logger logger = LoggerFactory.getLogger(OkHttpUtil.class); + + @Autowired + private OkHttpClient okHttpClient; + /** + * get + * + * @param url 请求的url + * @param queries 请求的参数,在浏览器?后面的数据,没有可以传null + * @return + */ + public String get(String url, Map queries, Map headerParams) { + String responseBody = ""; + StringBuffer sb = new StringBuffer(url); + if (queries != null && queries.keySet().size() > 0) { + boolean firstFlag = true; + Iterator iterator = queries.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + if (firstFlag) { + sb.append("?" + entry.getKey() + "=" + entry.getValue()); + firstFlag = false; + } else { + sb.append("&" + entry.getKey() + "=" + entry.getValue()); + } + } + } + + Request.Builder requestBuilder = new Request.Builder().url(url); + + if(headerParams != null){ + for(Map.Entry entry : headerParams.entrySet()) { + requestBuilder.addHeader(entry.getKey(), entry.getValue()); + } + } + + + Request request = requestBuilder.url(sb.toString()) + .build(); + Response response = null; + try { + response = okHttpClient.newCall(request).execute(); + int status = response.code(); + if (status == 200) { + return response.body().string(); + } + } catch (Exception e) { + logger.error("okhttp put error >> ex = {}", ExceptionUtils.getStackTrace(e)); + } finally { + if (response != null) { + response.close(); + } + } + return responseBody; + } + /** + * post + * + * @param url 请求的url + * @param params post form 提交的参数 + * @return + */ + public String post(String url, Map params, Map headerParams) { + String responseBody = ""; + FormBody.Builder builder = new FormBody.Builder(); + //添加参数 + if (params != null && params.keySet().size() > 0) { + for (String key : params.keySet()) { + builder.add(key, params.get(key)); + } + } + + Request.Builder requestBuilder = new Request.Builder().url(url); + + for(Map.Entry entry : headerParams.entrySet()) { + requestBuilder.addHeader(entry.getKey(), entry.getValue()); + } + + Request request = requestBuilder.post(builder.build()).build(); + Response response = null; + try { + response = okHttpClient.newCall(request).execute(); + int status = response.code(); + if (status == 200) { + return response.body().string(); + } + } catch (Exception e) { + logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e)); + } finally { + if (response != null) { + response.close(); + } + } + return responseBody; + } + + /** + * post + * + * @param url 请求的url + * @param params post form 提交的参数 + * @return + */ + public String postForJson(String url, String json, Map headerParams) { + RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json); + String responseBody = ""; + Request.Builder requestBuilder = new Request.Builder().url(url); + for(Map.Entry entry : headerParams.entrySet()) { + requestBuilder.addHeader(entry.getKey(), entry.getValue()); + } + Request request = requestBuilder.post(requestBody).build(); + Response response = null; + try { + response = okHttpClient.newCall(request).execute(); + int status = response.code(); + if (status == 200) { + return response.body().string(); + } + } catch (Exception e) { + logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e)); + } finally { + if (response != null) { + response.close(); + } + } + return responseBody; + } + + /** + * post 上传文件 + * + * @param url + * @param params + * @param fileType + * @return + */ + public String postFile(String url, Map params, String fileType, Map headerParams) { + String responseBody = ""; + MultipartBody.Builder builder = new MultipartBody.Builder(); + //添加参数 + if (params != null && params.keySet().size() > 0) { + for (String key : params.keySet()) { + if (params.get(key) instanceof File) { + File file = (File) params.get(key); + builder.addFormDataPart(key, file.getName(), RequestBody.create(MediaType.parse(fileType), file)); + continue; + } + builder.addFormDataPart(key, params.get(key).toString()); + } + } + + Request.Builder requestBuilder = new Request.Builder(); + for(Map.Entry entry : headerParams.entrySet()) { + requestBuilder.addHeader(entry.getKey(), entry.getValue()); + } + + Request request = requestBuilder.url(url).post(builder.build()).build(); + Response response = null; + try { + response = okHttpClient.newCall(request).execute(); + int status = response.code(); + if (status == 200) { + return response.body().string(); + } + } catch (Exception e) { + logger.error("okhttp postFile error >> ex = {}", ExceptionUtils.getStackTrace(e)); + } finally { + if (response != null) { + response.close(); + } + } + return responseBody; + } +} \ No newline at end of file