当前位置:网站首页 > WMS仓储系统 正文 WMS仓储系统

java实现wms_WMS仓储系统对接奇门云网关Java接口实现

南京泽同信息 2025-11-18 18:27:02 WMS仓储系统 46 ℃ 0 评论

packageorg.tempuri;importjava.io.BufferedReader;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.StringReader;importjava.io.StringWriter;importjava.io.UnsupportedEncodingException;importjava.util.HashMap;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.dom4j.Document;importorg.dom4j.DocumentHelper;importorg.dom4j.Element;importorg.dom4j.io.OutputFormat;importorg.dom4j.io.SAXReader;importorg.dom4j.io.XMLWriter;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;importcom.mingsoft.util.StringUtil;importnet.sf.json.JSONObject;importnet.sf.json.xml.XMLSerializer;

@Controller

@RequestMapping("api/open/qiMenApi")public classQiMenTest {

@ResponseBody

@RequestMapping(value="/apiRealization",produces="text/xml;charset=UTF-8")public byte[] apiRealization(HttpServletRequest request, HttpServletResponse response) {//AppKey

String appKeyVal = request.getParameter("app_key");//API接口名称

String methodVal = request.getParameter("method");//时间戳,格式:yyyy-MM-dd HH:mm:ss

String timestampVal = request.getParameter("timestamp");//请求签名

String signVal = request.getParameter("sign");byte[] result = null;

Map resultMap = new HashMap<>();

InputStream inputStream;

StringBuffer sb= newStringBuffer();try{//解析xml参数

inputStream =request.getInputStream();

String s;

BufferedReader in= new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));while ((s = in.readLine()) != null) {

sb.append(s);

}

in.close();

inputStream.close();if(sb.length() > 0) {//json格式的报文参数

JSONObject xmlToJson =JSONObject.fromObject(xmlForJson(sb.toString()));if(!StringUtil.isBlank(methodVal)) {switch(methodVal) {case "deliveryorder.create"://发货单创建接口//resultMap = ;

break;case "entryorder.create"://入库单创建接口//resultMap = ;

break;case "stockout.create"://出库单创建接口//resultMap = ;

break;case "order.cancel"://单据取消接口//resultMap = ;

break;case "singleitem.synchronize"://商品同步接口//resultMap = ;

break;default:

resultMap.put("message", "接口名称method填写有误!");

resultMap.put("flag", "failure");

resultMap.put("code", "500");break;

}

}else{

resultMap.put("message", "接口名称method不能为空!");

resultMap.put("flag", "failure");

resultMap.put("code", "500");

}

result= multilayerMapToXml(resultMap, false).getBytes("UTF-8");

}else{

result= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>".getBytes("UTF-8");

}

}catch(Exception e) {

resultMap.put("flag", "failure");

resultMap.put("code", "500");

resultMap.put("message", "操作失败,参数有误!");try{

result= multilayerMapToXml(resultMap, false).getBytes("UTF-8");

}catch(UnsupportedEncodingException e1) {return null;

}

}returnresult;

}/*** xml字符串转json字符串

*@paramxml

*@return

*/

privateObject xmlForJson(String xml) {

XMLSerializer xmlSerializer= newXMLSerializer();

String resutStr=xmlSerializer.read(xml).toString();returnresutStr;

}/*** (多层)map转换为xml格式字符串

*

*@parammap 需要转换为xml的map

*@paramisCDATA 是否加入CDATA标识符 true:加入 false:不加入

*@returnxml字符串

*@throwsUnsupportedEncodingException*/

public static String multilayerMapToXml(Map map, boolean isCDATA) throwsUnsupportedEncodingException{

String parentName= "response";

Document doc=DocumentHelper.createDocument();

doc.addElement(parentName);

String xml=recursionMapToXml(doc.getRootElement(), parentName, map, isCDATA);returnformatXML(xml);

}/*** multilayerMapToXml核心方法,递归调用

*

*@paramelement 节点元素

*@paramparentName 根元素属性名

*@parammap 需要转换为xml的map

*@paramisCDATA 是否加入CDATA标识符 true:加入 false:不加入

*@returnxml字符串*/@SuppressWarnings("unchecked")private static String recursionMapToXml(Element element, String parentName, Map map, booleanisCDATA) {

Element xmlElement=element.addElement(parentName);

map.keySet().forEach(key->{

Object obj=map.get(key);if (obj instanceofMap) {

recursionMapToXml(xmlElement, key, (Map)obj, isCDATA);

}else{

String value= obj == null ? "": obj.toString();if(isCDATA) {

xmlElement.addElement(key).addCDATA(value);

}else{

xmlElement.addElement(key).addText(value);

}

}

});returnxmlElement.asXML();

}/*** 格式化xml,显示为容易看的XML格式

*

*@paramxml 需要格式化的xml字符串

*@return

*/

public staticString formatXML(String xml) {

String requestXML= null;try{//拿取解析器

SAXReader reader = newSAXReader();

Document document= reader.read(newStringReader(xml));if (null !=document) {

StringWriter stringWriter= newStringWriter();//格式化,每一级前的空格

OutputFormat format = new OutputFormat(" ", true);//xml声明与内容是否添加空行

format.setNewLineAfterDeclaration(false);//是否设置xml声明头部

format.setSuppressDeclaration(false);//是否分行

format.setNewlines(true);

XMLWriter writer= newXMLWriter(stringWriter, format);

writer.write(document);

writer.flush();

writer.close();

requestXML=stringWriter.getBuffer().toString();

}returnrequestXML;

}catch(Exception e) {

e.printStackTrace();return null;

}

}

}

你可能想看:

版权说明:如非注明,本站文章均为 ZBLOG 原创,转载请注明出处和附带本文链接

请在这里放置你的在线分享代码
Copyright Your WebSite.Some Rights Reserved.
微信咨询&联系客服
QQ:2586422870
在线时间
9:00 ~ 23:00