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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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