OmsDataUtil.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.emato.biz.util;
  2. import cn.hutool.http.HttpRequest;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.emato.biz.config.OmsConfig;
  5. import com.emato.biz.domain.warehouse.Page;
  6. import com.emato.biz.domain.warehouse.PullInveQueryVO;
  7. import com.emato.biz.service.impl.OWbInveMngServiceImpl;
  8. import com.emato.common.exception.ServiceException;
  9. import com.emato.common.utils.oms.JacksonUtils;
  10. import com.emato.common.utils.oms.request.OmsSign;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import java.util.Map;
  14. import java.util.Optional;
  15. import java.util.TreeMap;
  16. /**
  17. * OMS 数据工具类
  18. *
  19. * @author frankeleyn
  20. * @email lvjian@qhdswl.com
  21. * @date 2023/4/19 14:25
  22. */
  23. public class OmsDataUtil {
  24. private static final Logger log = LoggerFactory.getLogger(OWbInveMngServiceImpl.class);
  25. /**
  26. * 拉取 OMS 库存数据
  27. *
  28. * @param queryVO 请求 OMS 数据
  29. * @param url 请求 OMS 地址
  30. * @param clazz 返回的分页数据类
  31. *
  32. * @return
  33. */
  34. public static <T> Optional<Page<T>> fetchOmsPageData(PullInveQueryVO queryVO,
  35. String url,
  36. Class<T> clazz) {
  37. // 构建请求报文
  38. // 初始化请求 oms 参数 Map
  39. Map<String, String> reqOmsPram = new TreeMap<>();
  40. // 请求 oms 数据
  41. reqOmsPram.put("data", JacksonUtils.toJsonStr(queryVO));
  42. // 请求 oms 商户号
  43. reqOmsPram.put("merchId", OmsConfig.getMerchSn());
  44. log.debug("===== 请求 oms 商户号 ====> {}", OmsConfig.getMerchSn());
  45. // 请求 oms 时间戳
  46. String timestamp = System.currentTimeMillis() / 1000 + "";
  47. reqOmsPram.put("timestamp", timestamp);
  48. log.debug("===== 请求 oms 时间戳 ====> {}", timestamp);
  49. // 请求 oms 签名
  50. String sign = OmsSign.sign(reqOmsPram, OmsConfig.getMd5Salt());
  51. reqOmsPram.put("sign", sign);
  52. // oms 请求地址
  53. log.debug("===== 请求 oms 地址 ====> {}", url);
  54. // 请求 oms 报文
  55. String reqBody = JacksonUtils.toJsonStr(reqOmsPram);
  56. log.debug("===== 请求 oms 报文 ====> {}", reqBody);
  57. // oms 返回数据
  58. String body = null;
  59. try {
  60. body = HttpRequest.post(url)
  61. .body(JacksonUtils.toJsonStr(reqOmsPram))
  62. .execute()
  63. .body();
  64. } catch (Exception e) {
  65. log.error("请求 OMS 异常 => ", e);
  66. throw new ServiceException("请求 OMS 异常!");
  67. }
  68. log.debug("OMS 响应信息 => {}", body);
  69. // 解析返回的数据
  70. JSONObject jsonObject = JSONObject.parseObject(body);
  71. String code = jsonObject.getString("code");
  72. if ("200".equals(code)){
  73. Page<T> page = JsonUtil.parsePage(jsonObject, clazz);
  74. if (!page.getList().isEmpty())
  75. // 如果 page 有值就返回
  76. return Optional.of(page);
  77. }else {
  78. log.error("OMS 返回异常信息 => {}", jsonObject);
  79. throw new ServiceException("请求 OMS 异常!");
  80. }
  81. return Optional.empty();
  82. }
  83. }