package com.sipm.weihuzu.sap;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Vector;
import javax.xml.bind.DatatypeConverter;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSONObject;
import com.sipm.bcf.BCFObj;
import com.sipm.bcf.util.DBUtil;
public class ToSap {
public static String toSrm(BCFObj dsn) {
System.out.println("---------------进入扫描调用SRM接口---------");
try {
if(dsn==null){
return "未传入设计号对象";
}
String sqlcmd = "SELECT PVALUE FROM BCFSYSTEMPARAM WHERE PNAME = 'PLM_SRM'";
Vector vect = DBUtil.executeQuery(sqlcmd);
if (vect == null || vect.size() == 0) {
return "未查到SRM配置";
}
String url = String.valueOf(((HashMap) vect.get(0)).get("PVALUE")).replace("null", "");
String sql="SELECT NO FROM MPART WHERE NO IS NOT NULL AND DEL=0 AND WKAID<>'3' AND DESIGNNO='"+dsn.getID()+"'";
Vector v=DBUtil.executeQuery(sql);
if(v!=null&&v.size()>0){
for(int i=0;i<v.size();i++){
HashMap h=(HashMap) v.get(i);
String no=(String) h.get("NO");
String json=getJson(no);
String backstr=doPostSoap(url,json,null);
JSONObject jsonObject = JSONObject.parseObject(backstr);
JSONObject body=jsonObject.getJSONObject("body");
String bz=body.getString("status");
String msg=body.getString("message");
if(!"S".equals(bz)){
return msg;
}
}
}else{
return "未查到该设计号相关的零件";
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("---------------扫描调用SRM接口结束---------");
return "true";
}
public static String getJson(String no) {
String json="{"
+ " \"headers\": { \"Content-Type\": \"application/json\"},"
+ " \"body\": { \"plm_mat_code\": \""+no+"\" }"
+ " }";
return json;
}
public static String doPostSoap(String postUrl, String soapXml,String token) {
String retStr = "";
// 创建HttpClientBuilder
HttpPost httpPost = new HttpPost(postUrl);
HttpClient httpClient=new DefaultHttpClient();
// 设置请求和传输超时时间
try {
httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
if(token!=null){
httpPost.setHeader("x-token", token);
}
//----------用户名,密码
String encoding = DatatypeConverter.printBase64Binary("admin:admin".getBytes("UTF-8")); //username password 自行修改 中间":"不可少
httpPost.setHeader("Authorization", "Basic " + encoding);
//-----------
StringEntity data = new StringEntity(soapXml, Charset.forName("UTF-8"));
httpPost.setEntity(data);
HttpResponse response = httpClient.execute(httpPost);
HttpEntity httpEntity = response.getEntity();
if (httpEntity != null) {
// 打印响应内容
retStr = EntityUtils.toString(httpEntity, "UTF-8");
}
// 释放资源
httpClient.getConnectionManager().shutdown();
}catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
httpClient.getConnectionManager().shutdown();
}
return retStr;
}
}