You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
4.3 KiB
Java

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;
}
}