123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- package com.kmall.admin.haikong.client;
- import cn.hutool.core.date.DateUtil;
- import com.kmall.admin.haikong.config.HaiKongProperties;
- import com.kmall.admin.haikong.constant.HaiKongWareSystemUrlEnum;
- import com.kmall.admin.haikong.dto.Criteria;
- import com.kmall.admin.haikong.dto.WareQueryStockParamDTO;
- import com.kmall.admin.haikong.utils.OkHttpUtils;
- import com.kmall.admin.haikong.utils.WareSysSignUtils;
- import com.kmall.admin.haikong.utils.XmlUtils;
- import okhttp3.MediaType;
- import okhttp3.Request;
- import okhttp3.RequestBody;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- /**
- * 对接海控的仓库系统
- * @author lhm
- * @createDate 2021-10-29
- */
- @Component
- public class HaiKongWarehouseTemplate {
- private static final Logger log = LoggerFactory.getLogger(HaiKongWarehouseTemplate.class);
- @Autowired
- private HaiKongProperties haiKongProperties;
- /**
- * 获取海控保税仓的仓库库存
- * @param wareQueryStockParamDTO 请求数据
- * @return 响应数据
- */
- public String queryWarehouseStock(WareQueryStockParamDTO wareQueryStockParamDTO) throws Exception {
- String xmlStr = null;
- try {
- xmlStr = XmlUtils.toXml(wareQueryStockParamDTO, false);
- } catch (Exception e) {
- log.error("请求一步达仓库系统格式化请求数据错误!", e);
- throw new Exception(e);
- }
- String url = haiKongProperties.getWareUrl() + "?method=" + HaiKongWareSystemUrlEnum.QUERY_INVENTORY.getDomain() +
- "&format=xml" + "&sign_method=md5" + "&customerId=" + haiKongProperties.getWareCustomerId() +
- "×tamp=" + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss") +
- "&app_key=" + haiKongProperties.getWareAppId() + "&v=1.0";
- String signUrl = WareSysSignUtils.getSignRequest(url, xmlStr, "GREE1001");
- Request.Builder builder = new Request.Builder();
- RequestBody requestBody = RequestBody.create(MediaType.parse(org.springframework.http.MediaType.TEXT_XML_VALUE), xmlStr);
- String response = "";
- try {
- Request request = builder.post(requestBody)
- .url(signUrl)
- .build();
- response = OkHttpUtils.retry(request, 3);
- log.info("请求一步达仓库系统查询库存成功!响应:{}", response);
- } catch (Exception e) {
- log.error("请求一步达仓库系统出现错误!", e);
- throw new Exception(e);
- }
- return response;
- }
- public static void main(String[] args) throws Exception {
- // 公司编码 = '44048600Y8'
- // 仓库编码 = '20'
- // 店铺编码 = 'wxe186e23f5a8f0dbf'
- // appKey = 'GREE'
- // customerId = 'GREE1001'
- // secretKey = 'GREE1001'
- // 正式环境地址:http://yjapi.highstore.cn:8202/esbcenter/api/esb
- String url = "http://yjapi.highstore.cn:8202/esbcenter/api/esb";
- url += "?method=inventory.query";
- url += "&format=xml";
- url += "&sign_method=md5";
- url += "&customerId=GREE1001";
- url += "×tamp=" + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
- url += "&app_key=GREE";
- url += "&v=1.0";
- WareQueryStockParamDTO wareQueryStockParamDTO = new WareQueryStockParamDTO();
- List<Criteria> criteriaList = new ArrayList<>();
- Criteria criteria = new Criteria();
- criteria.setImperfectGrade("a");
- criteria.setInventoryType("SY");
- criteria.setItemCode("708177112730");
- // criteria.setItemId("");
- criteria.setOwnerCode("44048600Y8");
- criteria.setWarehouseCode("20");
- Criteria criteria1 = new Criteria();
- criteria1.setImperfectGrade("a");
- criteria1.setInventoryType("SY");
- criteria1.setItemCode("test");
- // criteria1.setItemId("SSS");
- criteria1.setOwnerCode("44048600Y8");
- criteria1.setWarehouseCode("20");
- criteriaList.add(criteria);
- // criteriaList.add(criteria1);
- wareQueryStockParamDTO.setCriteriaList(criteriaList);
- String xmlStr = XmlUtils.toXml(wareQueryStockParamDTO, false);
- String signUrl = WareSysSignUtils.getSignRequest(url, xmlStr, "GREE1001");
- //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>";
- Request.Builder builder = new Request.Builder();
- RequestBody requestBody = RequestBody.create(MediaType.parse(org.springframework.http.MediaType.TEXT_XML_VALUE), xmlStr);
- Request request = builder.post(requestBody)
- .url(signUrl)
- .build();
- String retry = OkHttpUtils.retry(request, 3);
- System.out.println(retry);
- }
- }
|