HaiKongWarehouseTemplate.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package com.kmall.admin.haikong.client;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.kmall.admin.haikong.config.HaiKongProperties;
  4. import com.kmall.admin.haikong.constant.HaiKongWareSystemUrlEnum;
  5. import com.kmall.admin.haikong.dto.Criteria;
  6. import com.kmall.admin.haikong.dto.WareQueryStockParamDTO;
  7. import com.kmall.admin.haikong.utils.OkHttpUtils;
  8. import com.kmall.admin.haikong.utils.WareSysSignUtils;
  9. import com.kmall.admin.haikong.utils.XmlUtils;
  10. import okhttp3.MediaType;
  11. import okhttp3.Request;
  12. import okhttp3.RequestBody;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Component;
  17. import java.util.ArrayList;
  18. import java.util.Date;
  19. import java.util.List;
  20. /**
  21. * 对接海控的仓库系统
  22. * @author lhm
  23. * @createDate 2021-10-29
  24. */
  25. @Component
  26. public class HaiKongWarehouseTemplate {
  27. private static final Logger log = LoggerFactory.getLogger(HaiKongWarehouseTemplate.class);
  28. @Autowired
  29. private HaiKongProperties haiKongProperties;
  30. /**
  31. * 获取海控保税仓的仓库库存
  32. * @param wareQueryStockParamDTO 请求数据
  33. * @return 响应数据
  34. */
  35. public String queryWarehouseStock(WareQueryStockParamDTO wareQueryStockParamDTO) throws Exception {
  36. String xmlStr = null;
  37. try {
  38. xmlStr = XmlUtils.toXml(wareQueryStockParamDTO, false);
  39. } catch (Exception e) {
  40. log.error("请求一步达仓库系统格式化请求数据错误!", e);
  41. throw new Exception(e);
  42. }
  43. String url = haiKongProperties.getWareUrl() + "?method=" + HaiKongWareSystemUrlEnum.QUERY_INVENTORY.getDomain() +
  44. "&format=xml" + "&sign_method=md5" + "&customerId=" + haiKongProperties.getWareCustomerId() +
  45. "&timestamp=" + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss") +
  46. "&app_key=" + haiKongProperties.getWareAppId() + "&v=1.0";
  47. String signUrl = WareSysSignUtils.getSignRequest(url, xmlStr, "GREE1001");
  48. Request.Builder builder = new Request.Builder();
  49. RequestBody requestBody = RequestBody.create(MediaType.parse(org.springframework.http.MediaType.TEXT_XML_VALUE), xmlStr);
  50. String response = "";
  51. try {
  52. Request request = builder.post(requestBody)
  53. .url(signUrl)
  54. .build();
  55. response = OkHttpUtils.retry(request, 3);
  56. log.info("请求一步达仓库系统查询库存成功!响应:{}", response);
  57. } catch (Exception e) {
  58. log.error("请求一步达仓库系统出现错误!", e);
  59. throw new Exception(e);
  60. }
  61. return response;
  62. }
  63. public static void main(String[] args) throws Exception {
  64. // 公司编码 = '44048600Y8'
  65. // 仓库编码 = '20'
  66. // 店铺编码 = 'wxe186e23f5a8f0dbf'
  67. // appKey = 'GREE'
  68. // customerId = 'GREE1001'
  69. // secretKey = 'GREE1001'
  70. // 正式环境地址:http://yjapi.highstore.cn:8202/esbcenter/api/esb
  71. String url = "http://yjapi.highstore.cn:8202/esbcenter/api/esb";
  72. url += "?method=inventory.query";
  73. url += "&format=xml";
  74. url += "&sign_method=md5";
  75. url += "&customerId=GREE1001";
  76. url += "&timestamp=" + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
  77. url += "&app_key=GREE";
  78. url += "&v=1.0";
  79. WareQueryStockParamDTO wareQueryStockParamDTO = new WareQueryStockParamDTO();
  80. List<Criteria> criteriaList = new ArrayList<>();
  81. Criteria criteria = new Criteria();
  82. criteria.setImperfectGrade("a");
  83. criteria.setInventoryType("SY");
  84. criteria.setItemCode("708177112730");
  85. // criteria.setItemId("");
  86. criteria.setOwnerCode("44048600Y8");
  87. criteria.setWarehouseCode("20");
  88. Criteria criteria1 = new Criteria();
  89. criteria1.setImperfectGrade("a");
  90. criteria1.setInventoryType("SY");
  91. criteria1.setItemCode("test");
  92. // criteria1.setItemId("SSS");
  93. criteria1.setOwnerCode("44048600Y8");
  94. criteria1.setWarehouseCode("20");
  95. criteriaList.add(criteria);
  96. // criteriaList.add(criteria1);
  97. wareQueryStockParamDTO.setCriteriaList(criteriaList);
  98. String xmlStr = XmlUtils.toXml(wareQueryStockParamDTO, false);
  99. String signUrl = WareSysSignUtils.getSignRequest(url, xmlStr, "GREE1001");
  100. //xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><request><criteriaList><criteria><warehouseCode>20</warehouseCode><ownerCode>44048600Y8</ownerCode><itemCode>test</itemCode><itemId>SSS</itemId><inventoryType>SY</inventoryType><imperfectGrade>a</imperfectGrade></criteria><criteria><warehouseCode>20</warehouseCode><ownerCode>44048600Y8</ownerCode><itemCode>test</itemCode><itemId>SSS</itemId><inventoryType>SY</inventoryType><imperfectGrade>a</imperfectGrade></criteria></criteriaList></request>";
  101. Request.Builder builder = new Request.Builder();
  102. RequestBody requestBody = RequestBody.create(MediaType.parse(org.springframework.http.MediaType.TEXT_XML_VALUE), xmlStr);
  103. Request request = builder.post(requestBody)
  104. .url(signUrl)
  105. .build();
  106. String retry = OkHttpUtils.retry(request, 3);
  107. System.out.println(retry);
  108. }
  109. }