Ecology-Dev/数智制造/interface.suzhi/syndeliorg3.jsp

479 lines
21 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="weaver.general.MD5" %>
<%@ page import="org.apache.http.client.methods.HttpRequestBase" %>
<%@ page import="org.apache.commons.collections.MapUtils" %>
<%@ page import="java.io.IOException" %>
<%@ page import="org.apache.http.client.methods.HttpPost" %>
<%@ page import="org.apache.http.entity.StringEntity" %>
<%@ page import="org.apache.http.Consts" %>
<%@ page import="org.apache.http.impl.client.CloseableHttpClient" %>
<%@ page import="org.apache.http.client.methods.CloseableHttpResponse" %>
<%@ page import="org.apache.http.HttpEntity" %>
<%@ page import="org.apache.http.util.EntityUtils" %>
<%@ page import="org.apache.http.StatusLine" %>
<%@ page import="javax.net.ssl.SSLContext" %>
<%@ page import="org.apache.http.conn.socket.ConnectionSocketFactory" %>
<%@ page import="org.apache.http.config.Registry" %>
<%@ page import="org.apache.http.config.RegistryBuilder" %>
<%@ page import="org.apache.http.conn.socket.PlainConnectionSocketFactory" %>
<%@ page import="org.apache.http.conn.ssl.SSLConnectionSocketFactory" %>
<%@ page import="org.apache.http.conn.ssl.NoopHostnameVerifier" %>
<%@ page import="org.apache.http.impl.conn.PoolingHttpClientConnectionManager" %>
<%@ page import="org.apache.http.impl.client.HttpClients" %>
<%@ page import="java.security.NoSuchAlgorithmException" %>
<%@ page import="java.security.KeyManagementException" %>
<%@ page import="javax.net.ssl.X509TrustManager" %>
<%@ page import="java.security.cert.CertificateException" %>
<%@ page import="javax.net.ssl.TrustManager" %>
<%@ page import="org.apache.commons.lang3.StringUtils" %>
<%@ page import="java.util.*" %>
<%@ page import="com.alibaba.fastjson.JSON" %>
<%@ page contentType="text/html;charset=UTF-8" %>
<%
BaseBean bb = new BaseBean();
String id = request.getParameter("id");
String path = "/v2.0/department";
String url = "http://v2-api.delicloud.com"+path;
try {
String where = "";
if(StringUtils.isNotBlank(id)){
where = " and id in("+id+")" ;
}
String key = bb.getPropValue("deliCloud","key");
String secret = bb.getPropValue("deliCloud","secret");
out.print("key:"+key+"</br>");
out.print("secret:"+secret+"</br>");
if(StringUtils.isNotBlank(key) && StringUtils.isNotBlank(secret)){
String sjc = String.valueOf(Calendar.getInstance().getTimeInMillis());
String appSig = getAppSigData(path,key,secret,sjc);
out.print("sjc:"+sjc+"</br>");
out.print("appSig:"+appSig+"</br>");
Map<String, String> heads = new HashMap<String, String>();
heads.put("App-Key", key);
heads.put("App-Timestamp", sjc);
heads.put("App-Sig", appSig);
heads.put("Api-Module", "CHECKIN");
heads.put("Api-Cmd", "checkin_query");
List<Map<String,String>> topSubcompanyList = getTopSubcompanyList(where);
for(int i=0;i<topSubcompanyList.size();i++){
Map<String,String> topSubcompanyMap = topSubcompanyList.get(i);
String subcompanycode = topSubcompanyMap.get("subcompanycode");
String subcompanyname = topSubcompanyMap.get("subcompanyname");
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("department_ext_id", subcompanycode);
dataMap.put("name", subcompanyname);
dataMap.put("p_ext_id", "");
out.print("headers:"+JSONObject.toJSONString(heads)+"</br>");
out.print("top-subcompany-body:"+JSONObject.toJSONString(dataMap)+"</br>");
String back = doPostJsonRequest(url, heads, JSON.toJSONString(dataMap));
bb.writeLog("response:" + back);
out.print("response:"+back+"</br>");
JSONObject backObj = JSONObject.parseObject(back);
String code = backObj.getString("code");
String data = backObj.getString("data");
out.print("code:"+code+"</br>");
if ("0".equals(code)) {
bb.writeLog("新接口调用成功");
JSONObject dataObj = JSONObject.parseObject(data);
out.print("dataObj:"+dataObj.toJSONString()+"</br>");
} else {
bb.writeLog("接口调用失败");
out.print("接口调用失败");
}
}
for(int i=0;i<topSubcompanyList.size();i++) {
Map<String,String> topSubcompanyMap = topSubcompanyList.get(i);
String subcompanyid = topSubcompanyMap.get("subcompanyid");
List<Map<String,String>> childSubcompanyList = getSubcompanyListByParentid(subcompanyid);
for(int k=0;k<childSubcompanyList.size();k++){
Map<String,String> childSubcompanyMap = childSubcompanyList.get(k);
String subcompanycode = childSubcompanyMap.get("subcompanycode");
String subcompanyname = childSubcompanyMap.get("subcompanyname");
String supsubcompanycode = childSubcompanyMap.get("supsubcompanycode");
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("department_ext_id", subcompanycode);
dataMap.put("name", subcompanyname);
dataMap.put("p_ext_id", supsubcompanycode);
out.print("headers:"+JSONObject.toJSONString(heads)+"</br>");
out.print("Subcompany-body:"+JSONObject.toJSONString(dataMap)+"</br>");
String back = doPostJsonRequest(url, heads, JSON.toJSONString(dataMap));
bb.writeLog("response:" + back);
out.print("response:"+back+"</br>");
JSONObject backObj = JSONObject.parseObject(back);
String code = backObj.getString("code");
String data = backObj.getString("data");
out.print("code:"+code+"</br>");
if ("0".equals(code)) {
bb.writeLog("新接口调用成功");
JSONObject dataObj = JSONObject.parseObject(data);
out.print("dataObj:"+dataObj.toJSONString()+"</br>");
} else {
bb.writeLog("接口调用失败");
out.print("接口调用失败");
}
}
}
// List<Map<String,String>> topDepartmentList = getTopDeptList();
// for(int i=0;i<topDepartmentList.size();i++){
// Map<String,String> topDepartmentMap = topDepartmentList.get(i);
// String departmentcode = topDepartmentMap.get("departmentcode");
// String departmentname = topDepartmentMap.get("departmentname");
// String subcompanycode = topDepartmentMap.get("subcompanycode");
//
// Map<String, Object> dataMap = new HashMap<String, Object>();
// dataMap.put("department_ext_id", departmentcode);
// dataMap.put("name", departmentname);
// dataMap.put("p_ext_id", subcompanycode);
//
// out.print("headers:"+JSONObject.toJSONString(heads)+"</br>");
// out.print("top-dept-body:"+JSONObject.toJSONString(dataMap)+"</br>");
//
// String back = doPostJsonRequest(url, heads, JSON.toJSONString(dataMap));
// bb.writeLog("response:" + back);
// out.print("response:"+back+"</br>");
// JSONObject backObj = JSONObject.parseObject(back);
// String code = backObj.getString("code");
// String data = backObj.getString("data");
// out.print("code:"+code+"</br>");
// if ("0".equals(code)) {
// bb.writeLog("新接口调用成功");
// JSONObject dataObj = JSONObject.parseObject(data);
// out.print("dataObj:"+dataObj.toJSONString()+"</br>");
// } else {
// bb.writeLog("接口调用失败");
// out.print("接口调用失败");
// }
// }
//
// for(int i=0;i<topDepartmentList.size();i++) {
// Map<String,String> topDeptMap = topDepartmentList.get(i);
// String deptid = topDeptMap.get("deptid");
//
// List<Map<String,String>> childDepartmentList = getDeptListByParentid(deptid);
// for(int k=0;k<childDepartmentList.size();i++){
// Map<String,String> childDepartmentMap = childDepartmentList.get(i);
// String departmentcode = childDepartmentMap.get("departmentcode");
// String departmentname = childDepartmentMap.get("departmentname");
// String supdeptcode = childDepartmentMap.get("supdeptcode");
//
// Map<String, Object> dataMap = new HashMap<String, Object>();
// dataMap.put("department_ext_id", departmentcode);
// dataMap.put("name", departmentname);
// dataMap.put("p_ext_id", supdeptcode);
//
// out.print("headers:"+JSONObject.toJSONString(heads)+"</br>");
// out.print("dept-body:"+JSONObject.toJSONString(dataMap)+"</br>");
//
// String back = doPostJsonRequest(url, heads, JSON.toJSONString(dataMap));
// bb.writeLog("response:" + back);
// out.print("response:"+back+"</br>");
// JSONObject backObj = JSONObject.parseObject(back);
// String code = backObj.getString("code");
// String data = backObj.getString("data");
// out.print("code:"+code+"</br>");
// if ("0".equals(code)) {
// bb.writeLog("新接口调用成功");
// JSONObject dataObj = JSONObject.parseObject(data);
// out.print("dataObj:"+dataObj.toJSONString()+"</br>");
// } else {
// bb.writeLog("接口调用失败");
// out.print("接口调用失败");
// }
// }
// }
}
} catch (Exception e) {
bb.writeLog("数据异常!");
bb.writeLog(e.getMessage());
}
%>
<%!
/***
*
* @return
*/
public List<Map<String,String>> getTopSubcompanyList(String where){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
Map<String,String> map = null;
RecordSet rs = new RecordSet();
String sql =" select id,subcompanycode,subcompanyname,subcompanydesc \n" +
" from HrmSubCompany where supsubcomid = 0 \n" + where +
" and (canceled is null or canceled = 0)" ;
rs.executeQuery(sql);
while (rs.next()){
String subcompanycode = rs.getString("subcompanycode");
String subcompanyname = rs.getString("subcompanyname");
String subcompanyid = rs.getString("id");
map = new HashMap<String,String>();
map.put("subcompanyid",subcompanyid);
map.put("subcompanycode",subcompanycode);
map.put("subcompanyname",subcompanyname);
list.add(map);
}
return list;
}
public List<Map<String,String>> getSubcompanyListByParentid(String supsubcomid){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
Map<String,String> map = null;
RecordSet rs = new RecordSet();
String sql =" with tem_table(id,subcompanyname,supsubcomid,subcompanycode,curlevel) as (\n" +
" select id,subcompanyname,supsubcomid,1 as level \n" +
" from HrmSubCompany where id = " + supsubcomid +
" union all\n" +
" select a.id,a.subcompanyname,a.supsubcomid,subcompanycode,b.curlevel+1\n" +
" from HrmSubCompany a \n" +
" inner join tem_table b on (a.supsubcomid = b.id)\n" +
" )\n" +
" select l.*,k.subcompanycode as supsubcompanycode from tem_table l " +
" left join HrmSubCompany k on l.supsubcomid = k.id where id <> "+supsubcomid ;
rs.executeQuery(sql);
while (rs.next()){
String subcompanycode = rs.getString("subcompanycode");
String subcompanyname = rs.getString("subcompanyname");
String sup_subcomid = rs.getString("supsubcomid");
String supsubcompanycode = rs.getString("supsubcompanycode");
map = new HashMap<String,String>();
map.put("subcompanycode",subcompanycode);
map.put("subcompanyname",subcompanyname);
map.put("supsubcomid",sup_subcomid);
map.put("supsubcompanycode",supsubcompanycode);
list.add(map);
}
return list;
}
public List<Map<String,String>> getTopDeptList(){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
Map<String,String> map = null;
RecordSet rs = new RecordSet();
String sql =" select t.id,t.departmentcode,t.departmentname,t.subcompanyid1,h.subcompanycode\n" +
" from HrmDepartment t\n" +
" left join HrmSubCompany h on h.id = t.subcompanyid1\n" +
" where t.supdepid = 0" ;
rs.executeQuery(sql);
while (rs.next()){
String departmentcode = rs.getString("departmentcode");
String departmentname = rs.getString("departmentname");
String deptid = rs.getString("id");
String subcompanycode = rs.getString("subcompanycode");
map = new HashMap<String,String>();
map.put("departmentcode",departmentcode);
map.put("departmentname",departmentname);
map.put("deptid",deptid);
map.put("subcompanycode",subcompanycode);
list.add(map);
}
return list;
}
public List<Map<String,String>> getDeptListByParentid(String supsubcomid){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
Map<String,String> map = null;
RecordSet rs = new RecordSet();
String sql =" with tem_table(id,departmentname,supdepid,departmentcode,curlevel) as(\n" +
" select id,departmentname,supdepid,departmentcode,1 as level \n" +
" from HrmDepartment where id =" + supsubcomid +
" union all\n" +
" select a.id,a.departmentname,a.supdepid,a.departmentcode,b.curlevel+1 \n" +
" from HrmDepartment a \n" +
" inner join tem_table b on (a.supdepid = b.id) \n" +
" )\n" +
" select p.*,k.departmentcode as supdeptcode from tem_table p\n" +
" left join HrmDepartment k on p.supdepid = k.id where id <> "+supsubcomid ;
rs.executeQuery(sql);
while (rs.next()){
String departmentcode = rs.getString("departmentcode");
String departmentname = rs.getString("departmentname");
String sup_depid = rs.getString("supdepid");
String supdeptcode = rs.getString("supdeptcode");
map = new HashMap<String,String>();
map.put("departmentcode",departmentcode);
map.put("departmentname",departmentname);
map.put("supdepid",sup_depid);
map.put("supdeptcode",supdeptcode);
list.add(map);
}
return list;
}
/***
*
* @param path
* @param key
* @param sercet
* @param sjc
* @return
*/
public String getAppSigData(String path,String key,String sercet,String sjc){
String appSig = "";
BaseBean bb = new BaseBean();
try{
MD5 md5 = new MD5();
String all = path + sjc + key + sercet;
String sig = md5.getMD5ofStr(all);
bb.writeLog("sig:" + sig);
Scanner sc = new Scanner(md5.getMD5ofStr(all));
String str = sc.next();
char[] arrays = str.toCharArray();
for (int i = 0; i < arrays.length; i++) {
char c1 = arrays[i];
if (c1 >= 65 && c1 <= 90) {
char c2 = toLowerCase(c1);//如果输入是大写 ,则调用toLowerCase方法
appSig = appSig + c2;
} else {
appSig = appSig + c1;
}
}
bb.writeLog("appSig:" + appSig);
}catch (Exception e){
}
return appSig;
}
/***
*
* @param c1
* @return
*/
public static char toLowerCase(char c1){
int a = (int) c1;//将接收到的小写字符c1转换成int类型的数据给a
int b =a+32; //a+32得出大写写对应小写的ascll数值
char bb = (char)b;//最后将b转换成char类型字符给bb
return bb; //返回bb就是返回字母小写的字符
}
private static void prepareHeaders(HttpRequestBase httpRequest, Map<String, String> headers) {
if (!MapUtils.isEmpty(headers)) {
for (Map.Entry<String, String> entry : headers.entrySet()) {
httpRequest.addHeader(entry.getKey(), entry.getValue());
}
}
}
public static String doPostJsonRequest(String url, Map<String, String> headers, String jsonStr) throws IOException {
HttpPost httpost = new HttpPost(url);
prepareHeaders(httpost, headers);
StringEntity entity = new StringEntity(jsonStr, Consts.UTF_8);
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httpost.setEntity(entity);
return sendRequest(httpost);
}
private static String sendRequest(HttpRequestBase httpRequest) throws IOException {
String result = null;
CloseableHttpClient httpclient = creteClient();
try (CloseableHttpResponse resp = httpclient.execute(httpRequest)) {
HttpEntity entity = resp.getEntity();
result = (entity == null ? null : EntityUtils.toString(entity, Consts.UTF_8));
StatusLine statusLine = resp.getStatusLine();
if (statusLine.getStatusCode() >= 300) {
EntityUtils.consume(entity);
// String errorMsg = Strings.lenientFormat("Http status abnormal-status code is %s, response is %s", resp.getStatusLine().getStatusCode(), result);
}
}
return result;
}
public static CloseableHttpClient creteClient() {
//采用绕过验证的方式处理https请求
try {
SSLContext sslcontext = createIgnoreVerifySSL();
// 设置协议http和https对应的处理socket链接工厂的对象
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.INSTANCE)
.register("https", new SSLConnectionSocketFactory(sslcontext, NoopHostnameVerifier.INSTANCE))
.build();
PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
HttpClients.custom().setConnectionManager(connManager);
//创建自定义的httpclient对象
CloseableHttpClient client = HttpClients.custom().setConnectionManager(connManager).build();
return client;
} catch (Exception e) {
return null;
}
}
/**
* 绕过验证
*
* @return
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {
SSLContext sc = SSLContext.getInstance("SSLv3");
// 实现一个X509TrustManager接口用于绕过验证不用修改里面的方法
X509TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
String paramString) throws CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
String paramString) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
};
sc.init(null, new TrustManager[]{trustManager}, null);
return sc;
}
%>