定时任务-回写bip合同销售订单字段-init
This commit is contained in:
		
							parent
							
								
									1e0eb5a2e8
								
							
						
					
					
						commit
						c2e9f7593c
					
				|  | @ -0,0 +1,592 @@ | ||||||
|  | package nc.bs.uapbd.bip.workplugin; | ||||||
|  | 
 | ||||||
|  | import com.alibaba.fastjson.JSON; | ||||||
|  | import com.alibaba.fastjson.JSONObject; | ||||||
|  | import com.google.gson.Gson; | ||||||
|  | import com.yonyou.cloud.utils.StringUtils; | ||||||
|  | import nc.bs.dao.BaseDAO; | ||||||
|  | import nc.bs.dao.DAOException; | ||||||
|  | import nc.bs.pub.pa.PreAlertObject; | ||||||
|  | import nc.bs.pub.taskcenter.BgWorkingContext; | ||||||
|  | import nc.bs.pub.taskcenter.IBackgroundWorkPlugin; | ||||||
|  | import nc.bs.trade.business.HYSuperDMO; | ||||||
|  | import nc.jdbc.framework.processor.MapListProcessor; | ||||||
|  | import nc.util.mmf.framework.base.MMValueCheck; | ||||||
|  | import nc.vo.bd.defdoc.DefdocVO; | ||||||
|  | import nc.vo.pub.BusinessException; | ||||||
|  | import org.apache.http.client.config.CookieSpecs; | ||||||
|  | import org.apache.http.client.config.RequestConfig; | ||||||
|  | import org.apache.http.client.methods.HttpPost; | ||||||
|  | import org.apache.http.entity.StringEntity; | ||||||
|  | import org.apache.http.impl.client.CloseableHttpClient; | ||||||
|  | import org.apache.http.impl.client.HttpClients; | ||||||
|  | import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; | ||||||
|  | import org.apache.http.util.EntityUtils; | ||||||
|  | 
 | ||||||
|  | import javax.crypto.Mac; | ||||||
|  | import javax.crypto.spec.SecretKeySpec; | ||||||
|  | import java.io.*; | ||||||
|  | import java.net.HttpURLConnection; | ||||||
|  | import java.net.MalformedURLException; | ||||||
|  | import java.net.URL; | ||||||
|  | import java.net.URLEncoder; | ||||||
|  | import java.nio.charset.Charset; | ||||||
|  | import java.nio.charset.StandardCharsets; | ||||||
|  | import java.security.InvalidKeyException; | ||||||
|  | import java.security.NoSuchAlgorithmException; | ||||||
|  | import java.sql.SQLException; | ||||||
|  | import java.text.SimpleDateFormat; | ||||||
|  | import java.util.*; | ||||||
|  | import java.util.zip.GZIPInputStream; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | public class ErpSaleOrderToBIPBackgroupWorkPlugin implements IBackgroundWorkPlugin { | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     private HYSuperDMO superDMO = null; | ||||||
|  |     private String baseUrl = "https://www.tkkfbip.com"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     public HYSuperDMO getSuperDMO() { | ||||||
|  | 
 | ||||||
|  |         if (superDMO == null) { | ||||||
|  |             superDMO = new HYSuperDMO(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return superDMO; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 检查bip参数是否完整 | ||||||
|  |      * | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     private Map<String, String> checkBipParam() { | ||||||
|  | 
 | ||||||
|  |         Map<String, String> map = new HashMap<String, String>(); | ||||||
|  | 
 | ||||||
|  |         String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='BIP-sq' and dr=0 )  and dr=0"; | ||||||
|  | 
 | ||||||
|  |         try { | ||||||
|  |             DefdocVO[] defdocVOs = (DefdocVO[]) getSuperDMO().queryByWhereClause(DefdocVO.class, strWhere); | ||||||
|  |             if (defdocVOs != null && defdocVOs.length > 0) { | ||||||
|  |                 for (DefdocVO defdocVO : defdocVOs) { | ||||||
|  | 
 | ||||||
|  |                     map.put(defdocVO.getCode().trim(), defdocVO.getName()); | ||||||
|  | 
 | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } catch (DAOException e) { | ||||||
|  |             // TODO Auto-generated catch block | ||||||
|  |             e.printStackTrace(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return map; | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public PreAlertObject executeTask(BgWorkingContext arg0) throws BusinessException { | ||||||
|  |         // TODO Auto-generated method stub | ||||||
|  | 
 | ||||||
|  |         Date date = new Date(); | ||||||
|  |         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | ||||||
|  |         String dateTime = dateFormat.format(date); | ||||||
|  | 
 | ||||||
|  |         Map<String, String> bipParamMap = checkBipParam(); | ||||||
|  |         if (bipParamMap.isEmpty()) { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         baseUrl = bipParamMap.get("baseUrl"); | ||||||
|  |         Map<String, Object> userMap = arg0.getKeyMap(); | ||||||
|  |         String usercustcode = ""; | ||||||
|  | 
 | ||||||
|  |         if (!userMap.isEmpty()) { | ||||||
|  |             if (userMap.get("code") != null) { | ||||||
|  |                 usercustcode = userMap.get("code").toString(); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         String invoiceReceiveUrl = bipParamMap.get("contractSaleOrder");// 开票申请单回传 | ||||||
|  |         if (StringUtils.isEmpty(invoiceReceiveUrl)) { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         Gson gson = new Gson(); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         // 获取未推送合同销售订单更新的销售发票信息; | ||||||
|  |         String sql = " select so_saleinvoice_b.cfirstbid,csaleinvoicebid from so_saleinvoice,so_saleinvoice_b where so_saleinvoice.csaleinvoiceid=so_saleinvoice_b.csaleinvoiceid and so_saleinvoice.fstatusflag=2 and nvl(so_saleinvoice_b.vbdef10,'N') in ('~','N') and  nvl(so_saleinvoice.vdef13,'~') not in ('~') "; | ||||||
|  | 
 | ||||||
|  |         List<Map<String, String>> l_pk = (List<Map<String, String>>) new BaseDAO().executeQuery(sql.toString(), new MapListProcessor()); | ||||||
|  |         if (l_pk.isEmpty()) { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         for (Map<String, String> map : l_pk) { | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |             StringBuffer sb = new StringBuffer(); | ||||||
|  |             sb.append(" select so_saleinvoice_b.csaleinvoicebid,so_saleorder.vdef9,so_saleorder_b.vbdef11,so_saleorder_exe.ntotalarmny as totalaccrued ,so_saleorder_exe.ntotalinvoicenum as billqty, NVL(so_saleorder_exe.ntotaloutnum, 0) as totaloutqty "); | ||||||
|  |             sb.append(" from so_saleorder_exe,so_saleinvoice_b,so_saleinvoice,so_saleorder_b,so_saleorder "); | ||||||
|  |             sb.append(" where so_saleorder_exe.csaleorderbid=so_saleinvoice_b.csrcbid "); | ||||||
|  |             sb.append(" and so_saleinvoice.csaleinvoiceid=so_saleinvoice_b.csaleinvoiceid and so_saleinvoice.fstatusflag=2 "); | ||||||
|  |             sb.append(" and so_saleorder_exe.csaleorderbid=so_saleorder_b.csaleorderbid "); | ||||||
|  |             sb.append(" and so_saleorder.csaleorderid=so_saleorder_b.csaleorderid "); | ||||||
|  |             sb.append(" and so_saleorder_exe.dr=0 and so_saleorder.dr=0 and so_saleorder_b.dr=0 "); | ||||||
|  |             sb.append(" and nvl(so_saleorder.vdef9,'~') not in ('~') "); | ||||||
|  |             sb.append(" and so_saleorder_exe.csaleorderbid='").append(map.get("cfirstbid")).append("'"); | ||||||
|  |             List<Map<String, String>> ll_saleorder = (List<Map<String, String>>) new BaseDAO().executeQuery(sb.toString(), new MapListProcessor()); | ||||||
|  | 
 | ||||||
|  |             if (ll_saleorder.isEmpty()) { | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |             try { | ||||||
|  |                 String accessToken = getAccessToken(baseUrl, bipParamMap); | ||||||
|  |                 Map<String, String> tokenParam = new HashMap<>(); | ||||||
|  |                 tokenParam.put("access_token", accessToken); | ||||||
|  |                 Map<String, String> headers = new HashMap<String, String>(); | ||||||
|  |                 headers.put("Content-Type", "application/json"); | ||||||
|  |                 String custUpdateUrl = baseUrl + invoiceReceiveUrl; | ||||||
|  |                 if (accessToken != "") { | ||||||
|  |                     JSONObject js_apct_detail = new JSONObject(); | ||||||
|  |                     JSONObject js_apct = new JSONObject(); | ||||||
|  |                     String hid = ll_saleorder.get(0).get("vdef9");// BIP合同销售订单更新 主表id | ||||||
|  |                     List<Map<String, Object>> l_map_f = new ArrayList<Map<String, Object>>(); | ||||||
|  |                     for (Map<String, String> custpkmap : ll_saleorder) { | ||||||
|  | 
 | ||||||
|  |                         Map<String, Object> b_map = new HashMap<String, Object>(); | ||||||
|  | 
 | ||||||
|  |                         b_map.put("id", custpkmap.get("vbdef11"));// BIP合同销售订单更新 子表id | ||||||
|  |                         b_map.put("billQty", custpkmap.get("billqty"));// 累计开票主数量 | ||||||
|  |                         b_map.put("totalAccrued", custpkmap.get("totalaccrued"));// 累计确认应收金额 | ||||||
|  |                         b_map.put("totalOutQty", custpkmap.get("totaloutqty"));// 累计出库主数量 | ||||||
|  | 
 | ||||||
|  |                         l_map_f.add(b_map); | ||||||
|  | 
 | ||||||
|  |                         js_apct.put("contractOrdersList", l_map_f); | ||||||
|  |                         js_apct.put("id", hid); | ||||||
|  | 
 | ||||||
|  |                         js_apct_detail.put("HTXSDD", js_apct); | ||||||
|  | 
 | ||||||
|  |                         String resultString = doSendHttp(custUpdateUrl, "POST", tokenParam, "", headers, js_apct_detail.toJSONString()); | ||||||
|  |                         Map updateMap = gson.fromJson(resultString, Map.class); | ||||||
|  |                         String updateSql = ""; | ||||||
|  |                         if (StringUtils.equals("200", updateMap.get("code").toString())) {// 保存更新成功后需要更新日志表 | ||||||
|  |                             updateSql = "update so_saleinvoice_b set vbdef10='Y' where csaleinvoiceid='" + map.get("csaleinvoicebid") + "'"; | ||||||
|  |                         } else { | ||||||
|  |                             updateSql = "update so_saleinvoice_b set vbdef10='N' where csaleinvoiceid='" + map.get("csaleinvoicebid") + "'"; | ||||||
|  |                         } | ||||||
|  |                         getSuperDMO().executeUpdateSQL(updateSql); | ||||||
|  | 
 | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |             } catch (InvalidKeyException e) { | ||||||
|  |                 // TODO Auto-generated catch block | ||||||
|  |                 e.printStackTrace(); | ||||||
|  |             } catch (NoSuchAlgorithmException e) { | ||||||
|  |                 // TODO Auto-generated catch block | ||||||
|  |                 e.printStackTrace(); | ||||||
|  |             } catch (IOException e) { | ||||||
|  |                 // TODO Auto-generated catch block | ||||||
|  |                 e.printStackTrace(); | ||||||
|  |             }// 获取BIP的token | ||||||
|  |             catch (SQLException e) { | ||||||
|  |                 // TODO Auto-generated catch block | ||||||
|  |                 e.printStackTrace(); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         return null; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 查询bip 中开户行及银行类型id | ||||||
|  |      * | ||||||
|  |      * @param map | ||||||
|  |      * @param bipUrl | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     private static Map<String, String> getBIPBankID(HashMap<String, String> map, String bipUrl, String accessToken, String bankdocname) { | ||||||
|  | 
 | ||||||
|  |         Gson gson = new Gson(); | ||||||
|  | 
 | ||||||
|  |         Map<String, String> tokenParam = new HashMap<>(); | ||||||
|  |         tokenParam.put("access_token", accessToken); | ||||||
|  |         String jsonData = JSON.toJSONString(map); | ||||||
|  |         String resultString = doSendHttp(bipUrl, "POST", tokenParam, "", new HashMap<>(), jsonData); | ||||||
|  | //			Map custDetailresult = gson.fromJson(resultString, Map.class); | ||||||
|  |         JSONObject custDetailresult = JSON.parseObject(resultString); | ||||||
|  |         if (StringUtils.equals("200", custDetailresult.get("code").toString())) {// 数据存在 | ||||||
|  |             Map<String, Object> dataInfo = (Map<String, Object>) custDetailresult.get("data"); | ||||||
|  |             if (!MMValueCheck.isEmpty(dataInfo.get("recordList"))) { | ||||||
|  |                 List<Map<String, String>> l_record = (List<Map<String, String>>) dataInfo.get("recordList"); | ||||||
|  |                 return l_record.get(0); | ||||||
|  |             } else { | ||||||
|  |                 map.remove("linenumber"); | ||||||
|  |                 map.put("name", bankdocname); | ||||||
|  |                 jsonData = JSON.toJSONString(map); | ||||||
|  |                 resultString = doSendHttp(bipUrl, "POST", tokenParam, "", new HashMap<>(), jsonData); | ||||||
|  | //					 custDetailresult = gson.fromJson(resultString, Map.class); | ||||||
|  |                 custDetailresult = JSON.parseObject(resultString); | ||||||
|  |                 if (StringUtils.equals("200", custDetailresult.get("code").toString())) {// 数据存在 | ||||||
|  |                     dataInfo = (Map<String, Object>) custDetailresult.get("data"); | ||||||
|  |                     if (!MMValueCheck.isEmpty(dataInfo.get("recordList"))) { | ||||||
|  |                         List<Map<String, String>> l_record = (List<Map<String, String>>) dataInfo.get("recordList"); | ||||||
|  |                         return l_record.get(0); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return null; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     public static String doSendHttp(String baseUrl, String method, Map<String, String> paramMap, String mediaType, Map<String, String> headers, String json) { | ||||||
|  |         HttpURLConnection urlConnection = null; | ||||||
|  |         InputStream in = null; | ||||||
|  |         OutputStream out = null; | ||||||
|  |         BufferedReader bufferedReader = null; | ||||||
|  |         String result = null; | ||||||
|  |         try { | ||||||
|  |             StringBuffer sb = new StringBuffer(); | ||||||
|  |             sb.append(baseUrl); | ||||||
|  |             if (paramMap != null) { | ||||||
|  |                 sb.append("?"); | ||||||
|  |                 for (Map.Entry<String, String> entry : paramMap.entrySet()) { | ||||||
|  |                     String key = entry.getKey(); | ||||||
|  |                     String value = entry.getValue(); | ||||||
|  |                     sb.append(key + "=" + value).append("&"); | ||||||
|  |                     baseUrl = sb.toString().substring(0, sb.toString().length() - 1); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | //            log.error("uRL:" + baseUrl); | ||||||
|  | //            // 打印请求URL和方法 | ||||||
|  | //            log.error("Request URL: " + baseUrl); | ||||||
|  | //            log.error("Request Method: " + method); | ||||||
|  |             URL urlobj = new URL(baseUrl); | ||||||
|  |             if ("https".equalsIgnoreCase(urlobj.getProtocol())) {// 判定网址是否信任,不信任则调用忽略信任工具类SslUtil | ||||||
|  |                 IgnoreSslUtil.ignoreSsl(); | ||||||
|  |             } | ||||||
|  |             urlConnection = (HttpURLConnection) urlobj.openConnection(); | ||||||
|  |             urlConnection.setConnectTimeout(50000); | ||||||
|  |             urlConnection.setRequestMethod(method); | ||||||
|  |             urlConnection.setDoInput(true); | ||||||
|  |             urlConnection.setUseCaches(false); | ||||||
|  |             // 如果设置了自定义头,则打印它们 | ||||||
|  |             if (headers != null && !headers.isEmpty()) { | ||||||
|  |                 for (Map.Entry<String, String> entry : headers.entrySet()) { | ||||||
|  |                     urlConnection.addRequestProperty(entry.getKey(), entry.getValue()); | ||||||
|  | //                    log.error("Request Header: " + entry.getKey() + ": " + entry.getValue()); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             if (json != null && json.length() > 0) { | ||||||
|  | //                log.error("Request Body: " + json); | ||||||
|  |                 urlConnection.setDoInput(true); | ||||||
|  |                 urlConnection.setDoOutput(true); | ||||||
|  |                 out = urlConnection.getOutputStream(); | ||||||
|  |                 out.write(json.getBytes("utf-8")); | ||||||
|  |                 out.flush(); | ||||||
|  |             } | ||||||
|  |             int resCode = urlConnection.getResponseCode(); | ||||||
|  |             String ecod = urlConnection.getContentEncoding(); | ||||||
|  |             if (resCode == HttpURLConnection.HTTP_OK || resCode == HttpURLConnection.HTTP_CREATED | ||||||
|  |                     || resCode == HttpURLConnection.HTTP_ACCEPTED) { | ||||||
|  |                 if (StringUtils.isNotEmpty(ecod) && ecod.equals("gzip")) { | ||||||
|  |                     in = new GZIPInputStream(urlConnection.getInputStream()); | ||||||
|  |                 } else { | ||||||
|  |                     in = urlConnection.getInputStream(); | ||||||
|  |                 } | ||||||
|  |             } else { | ||||||
|  |                 in = urlConnection.getErrorStream(); | ||||||
|  |             } | ||||||
|  |             bufferedReader = new BufferedReader(new InputStreamReader(in, "utf-8")); | ||||||
|  |             StringBuffer temp = new StringBuffer(); | ||||||
|  |             String line = bufferedReader.readLine(); | ||||||
|  |             while (line != null) { | ||||||
|  |                 temp.append(line).append("\r\n"); | ||||||
|  |                 line = bufferedReader.readLine(); | ||||||
|  |             } | ||||||
|  |             if (ecod == null || ecod.equals("gzip")) { | ||||||
|  |                 ecod = Charset.forName("utf-8").name(); | ||||||
|  |             } | ||||||
|  |             result = new String(temp.toString().getBytes("utf-8"), ecod); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             JSONObject js = new JSONObject(); | ||||||
|  |             js.put("", -1); | ||||||
|  |             js.put("message", "调用外系统接口失败:" + e.getMessage()); | ||||||
|  |             result = js.toString(); | ||||||
|  |             e.printStackTrace(); | ||||||
|  |         } finally { | ||||||
|  |             if (null != bufferedReader) { | ||||||
|  |                 try { | ||||||
|  |                     bufferedReader.close(); | ||||||
|  |                 } catch (IOException e) { | ||||||
|  |                     e.printStackTrace(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             if (null != out) { | ||||||
|  |                 try { | ||||||
|  |                     out.close(); | ||||||
|  |                 } catch (IOException e) { | ||||||
|  |                     e.printStackTrace(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             if (null != in) { | ||||||
|  |                 try { | ||||||
|  |                     in.close(); | ||||||
|  |                 } catch (IOException e) { | ||||||
|  |                     e.printStackTrace(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             urlConnection.disconnect(); | ||||||
|  |         } | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | //	private String createCustBankMap(Map<String,String> map,String access_token) { | ||||||
|  | //		Gson gson = new Gson(); | ||||||
|  | //		//获取BIP中的客户详情 | ||||||
|  | //		String custcode=map.get("custcode"); | ||||||
|  | //		String custurl=baseUrl+"/yonbip/digitalModel/merchant/detail?access_token="+access_token; | ||||||
|  | //		HashMap<String, String> custMap = new HashMap<String, String>(); | ||||||
|  | //		custMap.put("code", custcode); | ||||||
|  | //		try { | ||||||
|  | //			String custdetailString=doGet(custurl,custMap); | ||||||
|  | // | ||||||
|  | //			Map custDetailresult = gson.fromJson(custdetailString, Map.class); | ||||||
|  | //			if (StringUtils.equals("200", custDetailresult.get("code").toString())) {//客户存在 | ||||||
|  | // | ||||||
|  | //				Map<String, Object> dataInfo = (Map<String, Object>) custDetailresult.get("data"); | ||||||
|  | // | ||||||
|  | //				if (!MMValueCheck.isEmpty(dataInfo.get("merchantAgentFinancialInfos"))){//客户中已经存在银行账户 | ||||||
|  | // | ||||||
|  | //				}else { | ||||||
|  | // | ||||||
|  | //				} | ||||||
|  | // | ||||||
|  | //			} | ||||||
|  | // | ||||||
|  | // | ||||||
|  | //			//开户行 | ||||||
|  | //			String bankdoccode=map.get("bankdoccode"); | ||||||
|  | //			HashMap<String, Object> paramap  = new HashMap<String, Object>(); | ||||||
|  | //			paramap.put("pageIndex", 0); | ||||||
|  | //			paramap.put("pageSize", 10); | ||||||
|  | //			paramap.put("linenumber", bankdoccode); | ||||||
|  | //			String url=baseUrl+"/yonbip/digitalModel/bankdot/list?access_token="+access_token; | ||||||
|  | // | ||||||
|  | //			String responseString=doPost(url,paramap); | ||||||
|  | // | ||||||
|  | //			Map result = gson.fromJson(responseString, Map.class); | ||||||
|  | // | ||||||
|  | //		} catch (IOException e1) { | ||||||
|  | //			// TODO Auto-generated catch block | ||||||
|  | //			e1.printStackTrace(); | ||||||
|  | //		} | ||||||
|  | // | ||||||
|  | //	} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     private String getAccessToken(String baseUrl, Map<String, String> bipParamMap) throws NoSuchAlgorithmException, InvalidKeyException, IOException { | ||||||
|  |         String tokenUrl = baseUrl + "/iuap-api-auth/open-auth/selfAppAuth/getAccessToken"; | ||||||
|  | //		String appKey = "f10c4bf17b1d4e1fb08eb82bf8540eab"; | ||||||
|  |         String appKey = bipParamMap.get("appKey"); | ||||||
|  | 
 | ||||||
|  | //		String appSecret = "71dc2a58ca378c1a1143231a62e73e75a60e9236"; | ||||||
|  |         String appSecret = bipParamMap.get("appSecret"); | ||||||
|  |         String accessToken = ""; | ||||||
|  |         Map<String, String> params = new HashMap<>(); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         params.put("appKey", appKey); | ||||||
|  |         String timestamp = String.valueOf(System.currentTimeMillis()); | ||||||
|  |         params.put("timestamp", timestamp); | ||||||
|  |         // 计算签名 | ||||||
|  |         Map<String, String> treeMap; | ||||||
|  |         if (params instanceof TreeMap) { | ||||||
|  |             treeMap = params; | ||||||
|  |         } else { | ||||||
|  |             treeMap = new TreeMap<>(params); | ||||||
|  |         } | ||||||
|  |         StringBuilder stringBuilder = new StringBuilder(); | ||||||
|  |         for (Map.Entry<String, String> entry : treeMap.entrySet()) { | ||||||
|  |             stringBuilder.append(entry.getKey()).append(entry.getValue()); | ||||||
|  |         } | ||||||
|  |         Mac mac = Mac.getInstance("HmacSHA256"); | ||||||
|  | 
 | ||||||
|  |         mac.init(new SecretKeySpec(appSecret.getBytes(StandardCharsets.UTF_8), "HmacSHA256")); | ||||||
|  |         byte[] signData = mac.doFinal(stringBuilder.toString().getBytes(StandardCharsets.UTF_8)); | ||||||
|  |         String base64String = Base64.getEncoder().encodeToString(signData); | ||||||
|  |         String signature = URLEncoder.encode(base64String, "UTF-8"); | ||||||
|  |         params.put("signature", signature); | ||||||
|  | 
 | ||||||
|  |         String responseString = doGet(tokenUrl, params); | ||||||
|  | 
 | ||||||
|  |         Gson gson = new Gson(); | ||||||
|  |         Map result = gson.fromJson(responseString, Map.class); | ||||||
|  |         if (StringUtils.equals("00000", result.get("code").toString())) { | ||||||
|  |             Map<String, Object> tokenInfo = (Map<String, Object>) result.get("data"); | ||||||
|  |             accessToken = (String) tokenInfo.get("access_token"); | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         return accessToken; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     private String doPost(String requestUrl, JSONObject jsonObject) throws IOException { | ||||||
|  |         PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); | ||||||
|  |         cm.setMaxTotal(500); | ||||||
|  |         cm.setDefaultMaxPerRoute(50); | ||||||
|  | 
 | ||||||
|  |         RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(5000) // 连接池获取连接超时 | ||||||
|  |                 .setConnectTimeout(5000) // 连接建立超时 | ||||||
|  |                 .setSocketTimeout(20000) // 等待响应超时 | ||||||
|  |                 .setCookieSpec(CookieSpecs.IGNORE_COOKIES).build(); | ||||||
|  | 
 | ||||||
|  |         CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm) | ||||||
|  |                 .setDefaultRequestConfig(globalConfig).build(); | ||||||
|  |         HttpPost post = new HttpPost(requestUrl); | ||||||
|  |         post.setHeader("Content-Type", "application/json;charset=UTF-8"); | ||||||
|  |         post.setEntity(new StringEntity(JSONObject.toJSONString(jsonObject), "utf-8")); | ||||||
|  |         String responseString = httpClient.execute(post, response -> EntityUtils.toString(response.getEntity())); | ||||||
|  |         return responseString; | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     private String doPost(String requestUrl, Map<String, Object> param) throws IOException { | ||||||
|  |         PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); | ||||||
|  |         cm.setMaxTotal(500); | ||||||
|  |         cm.setDefaultMaxPerRoute(50); | ||||||
|  | 
 | ||||||
|  |         RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(5000) // 连接池获取连接超时 | ||||||
|  |                 .setConnectTimeout(5000) // 连接建立超时 | ||||||
|  |                 .setSocketTimeout(20000) // 等待响应超时 | ||||||
|  |                 .setCookieSpec(CookieSpecs.IGNORE_COOKIES).build(); | ||||||
|  | 
 | ||||||
|  |         CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm) | ||||||
|  |                 .setDefaultRequestConfig(globalConfig).build(); | ||||||
|  |         HttpPost post = new HttpPost(requestUrl); | ||||||
|  |         post.setHeader("Content-Type", "application/json;charset=UTF-8"); | ||||||
|  |         post.setEntity(new StringEntity(JSONObject.toJSONString(param), "utf-8")); | ||||||
|  |         String responseString = httpClient.execute(post, response -> EntityUtils.toString(response.getEntity())); | ||||||
|  |         return responseString; | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     private static String doGet(String path, Map<String, String> params) throws IOException { | ||||||
|  |         HttpURLConnection conn = null; | ||||||
|  |         InputStream is = null; | ||||||
|  |         BufferedReader br = null; | ||||||
|  |         StringBuilder result = new StringBuilder(); | ||||||
|  |         try { | ||||||
|  |             if (params != null) { | ||||||
|  |                 String paramStr = ""; | ||||||
|  |                 for (String key : params.keySet()) { | ||||||
|  |                     if (!paramStr.isEmpty()) { | ||||||
|  |                         paramStr += '&'; | ||||||
|  |                     } | ||||||
|  |                     paramStr += key + '=' + params.get(key); | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 if (path.indexOf('?') > 0) { | ||||||
|  |                     path += '&' + paramStr; | ||||||
|  |                 } else { | ||||||
|  |                     path += '?' + paramStr; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             // 创建远程url连接对象 | ||||||
|  |             URL url = new URL(path); | ||||||
|  |             if ("https".equalsIgnoreCase(url.getProtocol())) {// 判定网址是否信任,不信任则调用忽略信任工具类SslUtil | ||||||
|  |                 IgnoreSslUtil.ignoreSsl(); | ||||||
|  |             } | ||||||
|  |             // 通过远程url连接对象打开一个连接,强转成HTTPURLConnection类 | ||||||
|  |             conn = (HttpURLConnection) url.openConnection(); | ||||||
|  |             conn.setRequestMethod("GET"); | ||||||
|  |             // 设置连接超时时间和读取超时时间 | ||||||
|  |             conn.setConnectTimeout(120000); | ||||||
|  |             conn.setReadTimeout(120000); | ||||||
|  |             conn.setRequestProperty("Accept", "application/json"); | ||||||
|  |             // 发送请求 | ||||||
|  |             conn.connect(); | ||||||
|  |             // 通过conn取得输入流,并使用Reader读取 | ||||||
|  |             if (200 == conn.getResponseCode()) { | ||||||
|  |                 is = conn.getInputStream(); | ||||||
|  |                 br = new BufferedReader(new InputStreamReader(is, "UTF-8")); | ||||||
|  |                 String line; | ||||||
|  |                 while ((line = br.readLine()) != null) { | ||||||
|  |                     result.append(line); | ||||||
|  |                     System.out.println(line); | ||||||
|  |                 } | ||||||
|  |             } else { | ||||||
|  |                 System.out.println("ResponseCode is an error code:" + conn.getResponseCode()); | ||||||
|  |             } | ||||||
|  |         } catch (MalformedURLException e) { | ||||||
|  |             e.printStackTrace(); | ||||||
|  |         } catch (IOException e) { | ||||||
|  |             e.printStackTrace(); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             e.printStackTrace(); | ||||||
|  |         } | ||||||
|  | //        finally { | ||||||
|  | //            try { | ||||||
|  | //                if (br != null) { | ||||||
|  | //                    br.close(); | ||||||
|  | //                } | ||||||
|  | //                if (is != null) { | ||||||
|  | //                    is.close(); | ||||||
|  | //                } | ||||||
|  | //            } catch (IOException ioe) { | ||||||
|  | //                ioe.printStackTrace(); | ||||||
|  | //            } | ||||||
|  | //            conn.disconnect(); | ||||||
|  | //        } | ||||||
|  |         return result.toString(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | //    private String doGet(String requestUrl, Map<String, String> paramMap) throws IOException { | ||||||
|  | //		PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); | ||||||
|  | //		cm.setMaxTotal(500); | ||||||
|  | //		cm.setDefaultMaxPerRoute(50); | ||||||
|  | // | ||||||
|  | //		RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(5000) // 连接池获取连接超时 | ||||||
|  | //				.setConnectTimeout(5000) // 连接建立超时 | ||||||
|  | //				.setSocketTimeout(20000) // 等待响应超时 | ||||||
|  | //				.setCookieSpec(CookieSpecs.IGNORE_COOKIES).build(); | ||||||
|  | // | ||||||
|  | //		CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm) | ||||||
|  | //				.setDefaultRequestConfig(globalConfig).build(); | ||||||
|  | //		StringBuilder param = new StringBuilder("?"); | ||||||
|  | //		if (paramMap != null) { | ||||||
|  | //			for (Map.Entry<String, String> entry : paramMap.entrySet()) { | ||||||
|  | //				param.append(entry.getKey()); | ||||||
|  | //				param.append("="); | ||||||
|  | //				param.append(entry.getValue()); | ||||||
|  | //				param.append("&"); | ||||||
|  | //			} | ||||||
|  | //			param.deleteCharAt(param.length() - 1); | ||||||
|  | //		} | ||||||
|  | //		String url = requestUrl + param; | ||||||
|  | //		HttpGet get = new HttpGet(url); | ||||||
|  | //		String responseString = httpClient.execute(get, response -> EntityUtils.toString(response.getEntity())); | ||||||
|  | //		get.releaseConnection(); | ||||||
|  | //		return responseString; | ||||||
|  | //	} | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -0,0 +1,60 @@ | ||||||
|  | package nc.bs.uapbd.bip.workplugin; | ||||||
|  | import java.security.cert.CertificateException; | ||||||
|  | import java.security.cert.X509Certificate; | ||||||
|  |   | ||||||
|  | import javax.net.ssl.HostnameVerifier; | ||||||
|  | import javax.net.ssl.HttpsURLConnection; | ||||||
|  | import javax.net.ssl.SSLContext; | ||||||
|  | import javax.net.ssl.SSLSession; | ||||||
|  | import javax.net.ssl.TrustManager; | ||||||
|  | import javax.net.ssl.X509TrustManager; | ||||||
|  |   | ||||||
|  | public class IgnoreSslUtil { | ||||||
|  | 	private static void trustAllHttpsCertificates() throws Exception {   | ||||||
|  | 	    TrustManager[] trustAllCerts = new TrustManager[1];   | ||||||
|  | 	    TrustManager tm = new miTM();   | ||||||
|  | 	    trustAllCerts[0] = tm;   | ||||||
|  | 	    SSLContext sc = SSLContext.getInstance("SSL");   | ||||||
|  | 	    sc.init(null, trustAllCerts, null);   | ||||||
|  | 	    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());   | ||||||
|  | 	}   | ||||||
|  | 	   | ||||||
|  | 	static class miTM implements TrustManager,X509TrustManager {   | ||||||
|  | 	    public X509Certificate[] getAcceptedIssuers() {   | ||||||
|  | 	        return null;   | ||||||
|  | 	    }   | ||||||
|  | 	   | ||||||
|  | 	    public boolean isServerTrusted(X509Certificate[] certs) {   | ||||||
|  | 	        return true;   | ||||||
|  | 	    }   | ||||||
|  | 	   | ||||||
|  | 	    public boolean isClientTrusted(X509Certificate[] certs) {   | ||||||
|  | 	        return true;   | ||||||
|  | 	    }   | ||||||
|  | 	   | ||||||
|  | 	    public void checkServerTrusted(X509Certificate[] certs, String authType)   | ||||||
|  | 	            throws CertificateException {   | ||||||
|  | 	        return;   | ||||||
|  | 	    }   | ||||||
|  | 	   | ||||||
|  | 	    public void checkClientTrusted(X509Certificate[] certs, String authType)   | ||||||
|  | 	            throws CertificateException {   | ||||||
|  | 	        return;   | ||||||
|  | 	    }   | ||||||
|  | 	}   | ||||||
|  | 	    | ||||||
|  | 	/**  | ||||||
|  | 	 * 忽略HTTPS请求的SSL证书,必须在openConnection之前调用  | ||||||
|  | 	 * @throws Exception  | ||||||
|  | 	 */   | ||||||
|  | 	public static void ignoreSsl() throws Exception{   | ||||||
|  | 	    HostnameVerifier hv = new HostnameVerifier() {   | ||||||
|  | 	        public boolean verify(String urlHostName, SSLSession session) {   | ||||||
|  | 	            System.out.println("Warning: URL Host: " + urlHostName + " vs. " + session.getPeerHost());   | ||||||
|  | 	            return true;   | ||||||
|  | 	        }   | ||||||
|  | 	    };   | ||||||
|  | 	    trustAllHttpsCertificates();   | ||||||
|  | 	    HttpsURLConnection.setDefaultHostnameVerifier(hv);   | ||||||
|  | 	}   | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue