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

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;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现WMS系统需要考虑以下几个方面: 1. 数据库设计:需要设计数据库表结构,并创建相应的表,如仓库表、库存表、订单表、采购表等。 2. 业务逻辑开发:需要编写Java代码实现各个模块的业务逻辑,如仓库管理模块、订单管理模块、采购管理模块等。可以使用Spring、Hibernate、MyBatis等框架来加快开发效率。 3. 用户界面开发:需要编写用户界面,让用户能够方便地使用系统。可以使用Struts、Spring MVC等框架来实现用户界面。 4. 安全性考虑:需要考虑用户登录和权限管理等安全性问题,确保只有授权用户才能访问系统。 以下是一个简单的WMS系统Java代码示例: ```java // 仓库管理模块 public class WarehouseManager { // 添加新仓库 public void addWarehouse(Warehouse warehouse) { // 将仓库信息插入数据库 } // 删除仓库 public void deleteWarehouse(int warehouseId) { // 从数据库删除仓库信息 } // 更新仓库信息 public void updateWarehouse(Warehouse warehouse) { // 更新数据库中仓库信息 } // 查询仓库信息 public Warehouse getWarehouse(int warehouseId) { // 从数据库查询仓库信息 return warehouse; } } // 订单管理模块 public class OrderManager { // 添加新订单 public void addOrder(Order order) { // 将订单信息插入数据库 } // 删除订单 public void deleteOrder(int orderId) { // 从数据库删除订单信息 } // 更新订单信息 public void updateOrder(Order order) { // 更新数据库中订单信息 } // 查询订单信息 public Order getOrder(int orderId) { // 从数据库查询订单信息 return order; } } // 采购管理模块 public class PurchaseManager { // 添加新采购订单 public void addPurchase(Purchase purchase) { // 将采购订单信息插入数据库 } // 删除采购订单 public void deletePurchase(int purchaseId) { // 从数据库删除采购订单信息 } // 更新采购订单信息 public void updatePurchase(Purchase purchase) { // 更新数据库中采购订单信息 } // 查询采购订单信息 public Purchase getPurchase(int purchaseId) { // 从数据库查询采购订单信息 return purchase; } } // 库存管理模块 public class InventoryManager { // 添加新货物 public void addInventory(Inventory inventory) { // 将货物信息插入数据库 } // 删除货物 public void deleteInventory(int inventoryId) { // 从数据库删除货物信息 } // 更新货物信息 public void updateInventory(Inventory inventory) { // 更新数据库中货物信息 } // 查询货物信息 public Inventory getInventory(int inventoryId) { // 从数据库查询货物信息 return inventory; } } ``` 以上是一个简单的WMS系统Java代码示例,其中包括了仓库管理模块、订单管理模块、采购管理模块和库存管理模块。实际的WMS系统可能涉及到更多的模块和功能,需要根据具体需求进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值