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