1
0

KtoOmsController.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package com.kmall.admin.controller.kmall2oms;
  2. import com.alibaba.fastjson.JSON;
  3. import com.google.gson.Gson;
  4. import com.kmall.admin.dto.TransferGoodsDto;
  5. import com.kmall.admin.entity.StoreTransferInventoryOrderDetailEntity;
  6. import com.kmall.admin.entity.StoreTransferInventoryOrderEntity;
  7. import com.kmall.admin.service.StoreTransferInventoryOrderDetailService;
  8. import com.kmall.admin.service.StoreTransferInventoryOrderService;
  9. import com.kmall.admin.utils.data.response.ResponseMessage;
  10. import com.kmall.admin.utils.oms.OmsSign;
  11. import com.kmall.common.utils.R;
  12. import com.kmall.manager.manager.merch.OmsMerchProperties;
  13. import okhttp3.Request;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Controller;
  18. import org.springframework.web.bind.annotation.PathVariable;
  19. import org.springframework.web.bind.annotation.RequestMapping;
  20. import org.springframework.web.bind.annotation.RequestParam;
  21. import org.springframework.web.bind.annotation.ResponseBody;
  22. import java.util.*;
  23. /**
  24. * @author zhangchuangbiao
  25. * @version 1.0
  26. * 2021-03-08 10:15
  27. * 负责处理kmall与oms接口对象
  28. */
  29. @Controller
  30. @ResponseBody
  31. @RequestMapping("ktooms")
  32. public class KtoOmsController {
  33. private static Logger LOGGER = LoggerFactory.getLogger(KtoOmsController.class);
  34. @Autowired
  35. private OmsMerchProperties omsMerchProperties;
  36. @Autowired
  37. private StoreTransferInventoryOrderService storeTransferInventoryOrderService ;
  38. @Autowired
  39. private StoreTransferInventoryOrderDetailService storeTransferInventoryOrderDetailService;
  40. @RequestMapping("sendTransfer/{transferId}")
  41. public R sendToTransferOrder(@PathVariable("transferId") Integer transferId){
  42. // 查询转移单记录与明细
  43. // queryById(transferId)
  44. StoreTransferInventoryOrderEntity storeTransferInventoryOrderEntity = storeTransferInventoryOrderService.queryObject(transferId);
  45. if(storeTransferInventoryOrderEntity == null){
  46. return R.error("未找到该转移单");
  47. }
  48. Integer status = storeTransferInventoryOrderEntity.getStatus();
  49. if(status != 0 && status != 2 ){
  50. return R.error("该转移单不允许推送");
  51. }
  52. // queryDetailByTransferId(transferId)
  53. List<Map> transferGoodsDto = storeTransferInventoryOrderDetailService.queryDtoById(transferId);
  54. storeTransferInventoryOrderEntity.setStatus(3);
  55. Gson gson = new Gson();
  56. String timestamp = String.valueOf(System.currentTimeMillis()/1000);
  57. Map<String, String> sParaTemp = new TreeMap<>();
  58. // 构建request中的data数据
  59. Map<String,Object> dataParam = new HashMap<>();
  60. dataParam.put("merchId",storeTransferInventoryOrderEntity.getMerchSn());
  61. dataParam.put("merchName",storeTransferInventoryOrderEntity.getMerchName());
  62. // dataParam.put("thirdPartyMerchCode","");
  63. // dataParam.put("thirdPartyMerchName","");
  64. dataParam.put("merchTransDocSn",transferId+"");
  65. dataParam.put("rollOutShopId",storeTransferInventoryOrderEntity.getOutStoreSn());
  66. dataParam.put("rollInShopId",storeTransferInventoryOrderEntity.getInStoreSn());
  67. dataParam.put("billTime",timestamp);
  68. dataParam.put("item",transferGoodsDto);
  69. sParaTemp.put("data",gson.toJson(dataParam));
  70. sParaTemp.put("merchId",omsMerchProperties.getMerchSn());
  71. sParaTemp.put("timestamp", timestamp);
  72. // 组装oms请求报文
  73. Request request = buildRequest(sParaTemp);
  74. // 同步访问,返回结果字符串
  75. String responseString = null;
  76. try {
  77. LOGGER.info("oms的请求报文:" + request);
  78. responseString = com.kmall.admin.utils.oms.OkHttpUtils.post(request);
  79. storeTransferInventoryOrderService.update(storeTransferInventoryOrderEntity);
  80. return handleResult(responseString,gson);
  81. } catch (Exception e) {
  82. e.printStackTrace();
  83. storeTransferInventoryOrderEntity.setStatus(2);
  84. storeTransferInventoryOrderService.update(storeTransferInventoryOrderEntity);
  85. return R.error(e.getMessage());
  86. }
  87. }
  88. private R handleResult(String responseString, Gson gson) {
  89. LOGGER.info("oms的响应报文"+responseString);
  90. //解析响应数据
  91. ResponseMessage result = gson.fromJson(responseString, ResponseMessage.class);
  92. if(result == null){
  93. String info = "解析响应数据Result失败";
  94. LOGGER.error("--- {}", info);
  95. throw new RuntimeException(info);
  96. }else{
  97. return R.ok(result.getMsg());
  98. }
  99. }
  100. private Request buildRequest(Map<String, String> sParaTemp) {
  101. //生成要请求给oms秘钥
  102. LOGGER.info("md5混淆码参数:" + omsMerchProperties.getMd5Salt());
  103. String sign = OmsSign.sign(sParaTemp,omsMerchProperties.getMd5Salt());
  104. sParaTemp.put("sign", sign);
  105. //构建Request
  106. String url = omsMerchProperties.getSendTransferUrl();
  107. url = "http://183.3.221.143:8680/al/shop/bdd/cb/transgoods";
  108. return com.kmall.admin.utils.oms.OkHttpUtils.buildRequest(url, JSON.toJSONString(sParaTemp));
  109. }
  110. }