package com.kmall.admin.controller.kmall2oms; import com.alibaba.fastjson.JSON; import com.google.gson.Gson; import com.kmall.admin.dto.TransferGoodsDto; import com.kmall.admin.entity.StoreTransferInventoryOrderDetailEntity; import com.kmall.admin.entity.StoreTransferInventoryOrderEntity; import com.kmall.admin.service.StoreTransferInventoryOrderDetailService; import com.kmall.admin.service.StoreTransferInventoryOrderService; import com.kmall.admin.utils.data.response.ResponseMessage; import com.kmall.admin.utils.oms.OmsSign; import com.kmall.common.utils.R; import com.kmall.manager.manager.merch.OmsMerchProperties; import okhttp3.Request; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.*; /** * @author zhangchuangbiao * @version 1.0 * 2021-03-08 10:15 * 负责处理kmall与oms接口对象 */ @Controller @ResponseBody @RequestMapping("ktooms") public class KtoOmsController { private static Logger LOGGER = LoggerFactory.getLogger(KtoOmsController.class); @Autowired private OmsMerchProperties omsMerchProperties; @Autowired private StoreTransferInventoryOrderService storeTransferInventoryOrderService ; @Autowired private StoreTransferInventoryOrderDetailService storeTransferInventoryOrderDetailService; @RequestMapping("sendTransfer/{transferId}") public R sendToTransferOrder(@PathVariable("transferId") Integer transferId){ // 查询转移单记录与明细 // queryById(transferId) StoreTransferInventoryOrderEntity storeTransferInventoryOrderEntity = storeTransferInventoryOrderService.queryObject(transferId); if(storeTransferInventoryOrderEntity == null){ return R.error("未找到该转移单"); } Integer status = storeTransferInventoryOrderEntity.getStatus(); if(status != 0 && status != 2 ){ return R.error("该转移单不允许推送"); } // queryDetailByTransferId(transferId) List transferGoodsDto = storeTransferInventoryOrderDetailService.queryDtoById(transferId); storeTransferInventoryOrderEntity.setStatus(3); Gson gson = new Gson(); String timestamp = String.valueOf(System.currentTimeMillis()/1000); Map sParaTemp = new TreeMap<>(); // 构建request中的data数据 Map dataParam = new HashMap<>(); dataParam.put("merchId",storeTransferInventoryOrderEntity.getMerchSn()); dataParam.put("merchName",storeTransferInventoryOrderEntity.getMerchName()); // dataParam.put("thirdPartyMerchCode",""); // dataParam.put("thirdPartyMerchName",""); dataParam.put("merchTransDocSn",transferId+""); dataParam.put("rollOutShopId",storeTransferInventoryOrderEntity.getOutStoreSn()); dataParam.put("rollInShopId",storeTransferInventoryOrderEntity.getInStoreSn()); dataParam.put("billTime",timestamp); dataParam.put("item",transferGoodsDto); sParaTemp.put("data",gson.toJson(dataParam)); sParaTemp.put("merchId",omsMerchProperties.getMerchSn()); sParaTemp.put("timestamp", timestamp); // 组装oms请求报文 Request request = buildRequest(sParaTemp); // 同步访问,返回结果字符串 String responseString = null; try { LOGGER.info("oms的请求报文:" + request); responseString = com.kmall.admin.utils.oms.OkHttpUtils.post(request); storeTransferInventoryOrderService.update(storeTransferInventoryOrderEntity); return handleResult(responseString,gson); } catch (Exception e) { e.printStackTrace(); storeTransferInventoryOrderEntity.setStatus(2); storeTransferInventoryOrderService.update(storeTransferInventoryOrderEntity); return R.error(e.getMessage()); } } private R handleResult(String responseString, Gson gson) { LOGGER.info("oms的响应报文"+responseString); //解析响应数据 ResponseMessage result = gson.fromJson(responseString, ResponseMessage.class); if(result == null){ String info = "解析响应数据Result失败"; LOGGER.error("--- {}", info); throw new RuntimeException(info); }else{ return R.ok(result.getMsg()); } } private Request buildRequest(Map sParaTemp) { //生成要请求给oms秘钥 LOGGER.info("md5混淆码参数:" + omsMerchProperties.getMd5Salt()); String sign = OmsSign.sign(sParaTemp,omsMerchProperties.getMd5Salt()); sParaTemp.put("sign", sign); //构建Request String url = omsMerchProperties.getSendTransferUrl(); url = "http://183.3.221.143:8680/al/shop/bdd/cb/transgoods"; return com.kmall.admin.utils.oms.OkHttpUtils.buildRequest(url, JSON.toJSONString(sParaTemp)); } }