/**
*销售订单调用EBS接口
- time : 2020/11/12
- author : lyzhou
*/
public class OrderImportEbsAction extends BaseBean implements Action {
@Override
public String execute(RequestInfo requestInfo) {
BaseBean bb = new BaseBean();
String requestid = requestInfo.getRequestid();
this.writeLog("OrderImportEbsAction...START " + requestid);
String mianTable = requestInfo.getRequestManager().getBillTableName();
this.writeLog("mianTable " + mianTable);
RecordSet rs = new RecordSet();
RecordSet rs_l = new RecordSet();
String sqlstr = "select * from " + mianTable + " where requestid=" + requestid;//主表
this.writeLog("sqlstr " + sqlstr);
rs.execute(sqlstr);
rs.next();
String mainid = Util.null2String(rs.getString("id"));
String detailTable = mianTable + "_dt1";//明细表
String sqlzb = "select * from " + detailTable + " where mainid=" + mainid;//明细表
this.writeLog("sqlzb " + sqlzb);
rs_l.execute(sqlzb);
String P_SERVER_CODE = "ORDER_IMPORT";//服务编码(根据EBS提供的编码进行填充)
String VALUE1 = Util.null2String(rs.getString("xsdw"));//销售公司
String VALUE2 = Util.null2String(rs.getString("jxs"));//客户编号
String VALUE3 = Util.null2String(rs.getString("Name"));//OA的订单ID
String VALUE4 = Util.null2String(rs.getString("ebs_ddlx"));//订单类型
String VALUE5 = Util.null2String(rs.getString("xjqd"));//下级渠道
String VALUE6 = Util.null2String(rs.getString("zzkh"));//最终客户
String VALUE7 = Util.null2String(rs.getString("id"));//关联单据
String VALUE8 = Util.null2String(rs.getString("fhgs"));//仓库
String VALUE9 = "CNY";//币种
String VALUE10 = Util.null2String(rs.getString("id"));//发运单号
String VALUE11 = Util.null2String(rs.getString("jxs"));//经销商
String VALUE12 = "";//一级行业
String VALUE13 = "";//二级行业
String VALUE14 = Util.null2String(rs.getString("ddlx"));//CRM订单类型
String VALUE15 = "";;//CRM付款条件
String VALUE16 = Util.null2String(rs.getString("xsdw"));//销售单位
String VALUE17 = "OA";//来源系统
String VALUE18 = Util.null2String(rs.getString("xsdw"));//来源头ID
//拼接输入xml参数
String param = "\"InputParameters\": {";
param += "\"P_SERVER_CODE\":\""+P_SERVER_CODE+"\",";
param += "\"P_REQUEST_DATA\":{";
param += "\"P_REQUEST_DATA_ITEM\": [";
param += "{";
param += "\"VALUE1\":\""+VALUE1+"\",";
param += "\"VALUE2\":\""+VALUE2+"\",";
param += "\"VALUE3\":\""+VALUE3+"\",";
param += "\"VALUE4\":\""+VALUE4+"\",";
param += "\"VALUE5\":\""+VALUE5+"\",";
param += "\"VALUE6\":\""+VALUE6+"\",";
param += "\"VALUE7\":\""+VALUE7+"\",";
param += "\"VALUE8\":\""+VALUE8+"\",";
param += "\"VALUE9\":\""+VALUE9+"\",";
param += "\"VALUE10\":\""+VALUE10+"\",";
param += "\"VALUE11\":\""+VALUE11+"\",";
param += "\"VALUE12\":\""+VALUE12+"\",";
param += "\"VALUE13\":\""+VALUE13+"\",";
param += "\"VALUE14\":\""+VALUE14+"\",";
param += "\"VALUE15\":\""+VALUE15+"\",";
param += "\"VALUE16\":\""+VALUE16+"\",";
param += "\"VALUE17\":\""+VALUE17+"\",";
param += "\"VALUE18\":\""+VALUE18+"\",";
param += "\"LINE_DATA\": {";//明细行数据,用数组的形式存储
param += "\"LINE_DATA_ITEM\":[";
while(rs_l.next()) {
String LINE_VALUE1 = Util.null2String(rs_l.getString("posku"));//订购项目
String LINE_VALUE2 = Util.null2String(rs_l.getString("pn"));//标记
String LINE_VALUE3 = Util.null2String(rs_l.getString("sl"));//数量
String LINE_VALUE4 = Util.null2String(rs_l.getString("cjj"));//销售单价
String LINE_VALUE5 = Util.null2String(rs_l.getString("forc"));//SKU For C
String LINE_VALUE6 = Util.null2String(rs_l.getString("forc"));//年限
String LINE_VALUE7 = "OP-00278544";//CRM销售订单行号编码
String LINE_VALUE8 = "12";//摊销期
String LINE_VALUE9 = "0QL9D0000004Xu8";//行组
String LINE_VALUE10 = "";//bundle组
String LINE_VALUE11 = Util.null2String(rs_l.getString("forc"));//C SKU开票名称
String LINE_VALUE12 = Util.null2String(rs_l.getString("forpc"));//PO SKU开票名称
String LINE_VALUE13 = Util.null2String(rs.getString("pzrq"));//要求发货时间
String LINE_VALUE14 = "A类:公司成熟硬件产品线";//人力考核比例分类
String LINE_VALUE15 = "防火墙产品线";//产品线2017
String LINE_VALUE16 = "E系列";//子产品线
String LINE_VALUE17 = "1001";//来源行ID
String DETAIL_LINE_DATA = "";//明细记录
param += "{";
param += "\"LINE_VALUE1\":\""+LINE_VALUE1+"\",";
param += "\"LINE_VALUE2\":\""+LINE_VALUE2+"\",";
param += "\"LINE_VALUE3\":\""+LINE_VALUE3+"\",";
param += "\"LINE_VALUE4\":\""+LINE_VALUE4+"\",";
param += "\"LINE_VALUE5\":\""+LINE_VALUE5+"\",";
param += "\"LINE_VALUE6\":\""+LINE_VALUE6+"\",";
param += "\"LINE_VALUE7\":\""+LINE_VALUE7+"\",";
param += "\"LINE_VALUE8\":\""+LINE_VALUE8+"\",";
param += "\"LINE_VALUE9\":\""+LINE_VALUE9+"\",";
param += "\"LINE_VALUE10\":\""+LINE_VALUE10+"\",";
param += "\"LINE_VALUE11\":\""+LINE_VALUE11+"\",";
param += "\"LINE_VALUE12\":\""+LINE_VALUE12+"\",";
param += "\"LINE_VALUE13\":\""+LINE_VALUE13+"\",";
param += "\"LINE_VALUE14\":\""+LINE_VALUE14+"\",";
param += "\"LINE_VALUE15\":\""+LINE_VALUE15+"\",";
param += "\"LINE_VALUE16\":\""+LINE_VALUE16+"\",";
param += "\"LINE_VALUE17\":\""+LINE_VALUE17+"\",";
param += "\"DETAIL_LINE_DATA\":\""+DETAIL_LINE_DATA+"\"";
param += "},";
}
param=param.substring(0,param.length()-1);
param += "]";
param += "}";
param += "}";
param += "]";
param += "}";
param += "}";
this.writeLog("param " + param);
//
//weaver.interfaces.zp.util.ToEBSUtil
//这是封装的调用EBS接口的util类
//
String result = ToEBSUtil.toEBS(param);
JSONObject json = JSONObject.fromObject(result);//util类的返回结果
String PROCESS_STATUS = json.getString("PROCESS_STATUS");
String PROCESS_MESSAGE = json.getString("PROCESS_MESSAGE");
this.writeLog("PROCESS_STATUS " + PROCESS_STATUS);
this.writeLog("PROCESS_MESSAGE " + PROCESS_MESSAGE);
if (PROCESS_STATUS.equals("E")) {
requestInfo.getRequestManager().setMessagecontent("调用EBS接口失败: "+PROCESS_MESSAGE);
return Action.FAILURE_AND_CONTINUE;
}
this.writeLog("OrderImportEbsAction... END");
return Action.SUCCESS;
}
}
封装的调用EBS接口的类:
public class ToEBSUtil {
static BaseBean bs = new BaseBean();
static String userName;
static String passWord;
static String ebsUrl;
public ToEBSUtil() {
}
public static String toEBS(String var0) {
bs.writeLog("in_______toEBS___________");
bs.writeLog(userName);
bs.writeLog(passWord);
bs.writeLog(ebsUrl);
bs.writeLog("toEBS_______inputParam__" + var0);
Parameter var1 = new Parameter();
var1.setUserName(userName);
var1.setPassword(passWord);
String var2 = getDATA(var0);
bs.writeLog(var2);
bs.writeLog("---------------");
String var3 = doRequest(var1, ebsUrl, var2);
bs.writeLog(var3);
JSONObject var4 = JSONObject.fromObject(var3);
String var5 = var4.getString("OutputParameters");
JSONObject var6 = JSONObject.fromObject(var5);
String var7 = var6.getString("X_RESPONSE_DATA");
JSONObject var8 = JSONObject.fromObject(var7);
String var9 = var8.getString("X_RESPONSE_DATA_ITEM");
JSONArray var10 = JSONArray.fromObject(var9);
JSONObject var11 = new JSONObject();
if (var10.size() > 0 && var10 != null) {
JSONObject var12 = JSONObject.fromObject(var10.get(0));
String var13 = var12.getString("PROCESS_STATUS");
String var14 = var12.getString("PROCESS_MESSAGE");
bs.writeLog(var13);
bs.writeLog(var14);
var11.put("PROCESS_STATUS", var13);
var11.put("PROCESS_MESSAGE", var14);
} else {
var11.put("PROCESS_STATUS", "E");
var11.put("PROCESS_MESSAGE", "EBS返回数据错误!");
}
return var11.toString();
}
private static String doRequest(Parameter var0, String var1, String var2) {
String var3 = "";
URL var4 = null;
try {
var4 = new URL(var1);
} catch (MalformedURLException var15) {
}
try {
HttpURLConnection var5 = (HttpURLConnection)var4.openConnection();
var5.setReadTimeout(5000);
var5.setConnectTimeout(5000);
String var6 = var0.getUserName() + ":" + var0.getPassword();
String var7 = Base64.encodeToString(var6.getBytes(), 0).trim();
var5.setRequestProperty("Authorization", "Basic " + var7);
var5.setRequestProperty("Connection", "keep-alive");
var5.setRequestProperty("Content-Type", "application/json");
var5.setRequestProperty("Content-Length", String.valueOf(var2.getBytes().length));
var5.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0");
var5.setDoOutput(true);
var5.setDoInput(true);
var5.setRequestMethod("POST");
var5.setUseCaches(false);
OutputStream var8 = var5.getOutputStream();
var8.write(var2.getBytes());
var8.flush();
var8.close();
int var9 = var5.getResponseCode();
if (var9 != 200) {
var5.disconnect();
var3 = "无法连接:链接失败或者是帐号或密码输入错误!\n登录失败 !.........";
return var3;
} else {
InputStream var10 = var5.getInputStream();
ByteArrayOutputStream var11 = new ByteArrayOutputStream();
int var13 = 1;
int var12;
for(byte[] var14 = new byte[1024]; (var12 = var10.read(var14)) != -1; ++var13) {
var11.write(var14, 0, var12);
}
var10.close();
var11.close();
var3 = new String(var11.toByteArray(), "UTF-8");
--var13;
var0.setreocrds(var13);
return var3;
}
} catch (IOException var16) {
var3 = "无法连接";
return var3;
}
}
private static String getDATA(String var0) {
String var1 = "{";
var1 = var1 + "\"PARSE_Input\": {";
var1 = var1 + "\"@xmlns\": \"http://xmlns.oracle.com/apps/cux/soaprovider/plsql/rest/cux_oa_webservice_pkg/\",";
var1 = var1 + "\"RESTHeader\": {";
var1 = var1 + "\"@xmlns\": \"http://xmlns.oracle.com/apps/cux/soaprovider/plsql/rest/cux_oa_webservice_pkg/\",";
var1 = var1 + "\"Responsibility\": \"FND_REP_APP\",";
var1 = var1 + "\"RespApplication\": \"FND\",";
var1 = var1 + "\"SecurityGroup\": \"STANDARD\"";
var1 = var1 + "},";
var1 = var1 + var0;
var1 = var1 + "}";
var1 = var1 + "}";
return var1;
}
static {
userName = bs.getPropValue("toebsinfo", "username");
passWord = bs.getPropValue("toebsinfo", "password");
ebsUrl = bs.getPropValue("toebsinfo", "ebsurl");
}