|
|
package com.api.ld.web;
|
|
|
|
|
|
import com.engine.ld.functions.sap.khzsj.ZSD_CUSTOMERDATA_MAINTAIN_PortType;
|
|
|
import com.engine.ld.functions.sap.khzsj.ZSD_CUSTOMERDATA_MAINTAIN_ServiceLocator;
|
|
|
import com.engine.ld.optimize.Khzsj;
|
|
|
import com.engine.ld.utils.DealXml;
|
|
|
import com.weaver.general.BaseBean;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import weaver.conn.RecordSet;
|
|
|
import weaver.general.Util;
|
|
|
import weaver.interfaces.workflow.action.Action;
|
|
|
import weaver.soa.workflow.request.RequestInfo;
|
|
|
|
|
|
import java.net.URL;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* @author ZhangLei
|
|
|
* @date 2021/6/30
|
|
|
* 客户主数据
|
|
|
* 将数据传给SAP接口并接收其返回的参数
|
|
|
*/
|
|
|
public class KhzsjAction implements Action {
|
|
|
|
|
|
private static final BaseBean bb = new BaseBean();
|
|
|
|
|
|
@Override
|
|
|
public String execute(RequestInfo requestInfo) {
|
|
|
bb.writeLog("Step0----------");
|
|
|
String requestid = requestInfo.getRequestid();
|
|
|
String billtable = requestInfo.getRequestManager().getBillTableName();
|
|
|
Khzsj khzsj = new Khzsj();
|
|
|
RecordSet rs = new RecordSet();
|
|
|
try {
|
|
|
bb.writeLog("KhzsjAction");
|
|
|
String saphost = bb.getPropValue("CGDD_WORKFLOW","SAPHOST");
|
|
|
bb.writeLog("ZMM_MATERIALDATA_MAINTAIN_Action-saphost:"+saphost);
|
|
|
String client = "" ;
|
|
|
String sql =" SELECT id,client FROM " + billtable + " WHERE REQUESTID=" + requestid;
|
|
|
rs.execute(sql);
|
|
|
if (rs.next()){
|
|
|
client = Util.null2String(rs.getString("client"));
|
|
|
}
|
|
|
bb.writeLog("ZMM_MATERIALDATA_MAINTAIN_Action-client:"+client);
|
|
|
if(StringUtils.isNotEmpty(client)){
|
|
|
|
|
|
// http://lemprd.lemtech.cn:8000/sap/bc/srt/rfc/sap/zsd_customerdata_maintain/300/zsd_customerdata_maintain/zsd_customerdata_maintain
|
|
|
|
|
|
String wsdl = saphost+"/sap/bc/srt/rfc/sap/zsd_customerdata_maintain/"+client+"/zsd_customerdata_maintain/zsd_customerdata_maintain" ;
|
|
|
bb.writeLog("ZMM_MATERIALDATA_MAINTAIN_Action-wsdl:"+wsdl);
|
|
|
URL wsdlUrl = new URL(wsdl);
|
|
|
bb.writeLog("START-SAP");
|
|
|
|
|
|
ZSD_CUSTOMERDATA_MAINTAIN_PortType ZSD_CUSTOMERDATA_MAINTAIN_PortType = new ZSD_CUSTOMERDATA_MAINTAIN_ServiceLocator().getZSD_CUSTOMERDATA_MAINTAIN(wsdlUrl);
|
|
|
String dataXml = khzsj.create(requestid,billtable) ;
|
|
|
|
|
|
String SAPBackXml = ZSD_CUSTOMERDATA_MAINTAIN_PortType.ZSD_CUSTOMERDATA_MAINTAIN(dataXml);
|
|
|
bb.writeLog("SAP的返回结果是:"+SAPBackXml);
|
|
|
Map<String, Object> sapBackMap = new DealXml().XmlResultMap(SAPBackXml);
|
|
|
bb.writeLog("sapBackMap解析xml的返回结果是"+sapBackMap);
|
|
|
|
|
|
String type = sapBackMap.get("TYPE").toString();
|
|
|
String message = sapBackMap.get("MESSAGE").toString();
|
|
|
message = message.contains("'")?message.replace("'","''"):message;
|
|
|
bb.writeLog("type:"+type+";message:"+message);
|
|
|
|
|
|
sql = "UPDATE "+billtable+" SET TYPE='"+type+"',MESSAGE='"+message+"' WHERE requestId="+requestid;
|
|
|
boolean isTrue = rs.executeUpdate(sql);
|
|
|
if(isTrue){
|
|
|
if (!"S".equals(type)){
|
|
|
requestInfo.getRequestManager().setMessageid("1000");
|
|
|
requestInfo.getRequestManager().setMessagecontent("SAP接口返回错误");
|
|
|
return Action.FAILURE_AND_CONTINUE;
|
|
|
}
|
|
|
}else{
|
|
|
requestInfo.getRequestManager().setMessageid("1000");
|
|
|
requestInfo.getRequestManager().setMessagecontent("更新SAP返回结果异常");
|
|
|
return Action.FAILURE_AND_CONTINUE;
|
|
|
}
|
|
|
}else{
|
|
|
requestInfo.getRequestManager().setMessageid("1000");
|
|
|
requestInfo.getRequestManager().setMessagecontent("client获取值为空");
|
|
|
return Action.FAILURE_AND_CONTINUE;
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
bb.writeLog("错误信息为:"+e);
|
|
|
|
|
|
requestInfo.getRequestManager().setMessageid("1000");
|
|
|
requestInfo.getRequestManager().setMessagecontent("接口执行异常");
|
|
|
return Action.FAILURE_AND_CONTINUE;
|
|
|
|
|
|
}
|
|
|
return Action.SUCCESS;
|
|
|
}
|
|
|
|
|
|
}
|