OWbInveMngServiceImpl.java 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. package com.emato.biz.service.impl;
  2. import java.io.IOException;
  3. import java.util.*;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.JSONArray;
  6. import com.alibaba.fastjson.JSONObject;
  7. import com.emato.biz.config.OmsConfig;
  8. import com.emato.biz.mapper.warehouse.WbInveMngMapper;
  9. import com.emato.common.utils.DateUtils;
  10. import com.emato.common.utils.oms.OkHttpUtils;
  11. import com.emato.common.utils.oms.request.OmsSign;
  12. import okhttp3.Request;
  13. import org.apache.http.HttpStatus;
  14. import org.apache.http.client.methods.CloseableHttpResponse;
  15. import org.apache.http.client.methods.HttpPost;
  16. import org.apache.http.entity.StringEntity;
  17. import org.apache.http.impl.client.CloseableHttpClient;
  18. import org.apache.http.impl.client.HttpClients;
  19. import org.apache.http.util.EntityUtils;
  20. import org.slf4j.Logger;
  21. import org.slf4j.LoggerFactory;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import com.emato.biz.mapper.warehouse.OWbInveMngMapper;
  25. import com.emato.biz.domain.warehouse.OWbInveMng;
  26. import com.emato.biz.service.warehouse.IOWbInveMngService;
  27. import org.springframework.transaction.annotation.Transactional;
  28. import javax.annotation.Resource;
  29. /**
  30. * 库存管理,wms入库回传时,增加库存数Service业务层处理
  31. *
  32. * @author yangbo
  33. * @date 2021-02-01
  34. */
  35. @Service
  36. public class OWbInveMngServiceImpl implements IOWbInveMngService
  37. {
  38. @Resource
  39. private OWbInveMngMapper oWbInveMngMapper;
  40. @Resource
  41. private WbInveMngMapper wbInveMngMapper;
  42. private static final Logger LOGGER = LoggerFactory.getLogger(OWbInveMngServiceImpl.class);
  43. /**
  44. * 查询库存管理,wms入库回传时,增加库存数
  45. *
  46. * @param inveSn 库存管理,wms入库回传时,增加库存数ID
  47. * @return 库存管理,wms入库回传时,增加库存数
  48. */
  49. @Override
  50. public OWbInveMng selectOWbInveMngById(String inveSn)
  51. {
  52. return oWbInveMngMapper.selectOWbInveMngById(inveSn);
  53. }
  54. /**
  55. * 查询库存管理,wms入库回传时,增加库存数列表
  56. *
  57. * @param oWbInveMng 库存管理,wms入库回传时,增加库存数
  58. * @return 库存管理,wms入库回传时,增加库存数
  59. */
  60. @Override
  61. public List<OWbInveMng> selectOWbInveMngList(OWbInveMng oWbInveMng)
  62. {
  63. return wbInveMngMapper.selectWbInveMngList(oWbInveMng);
  64. }
  65. /**
  66. * 新增库存管理,wms入库回传时,增加库存数
  67. *
  68. * @param oWbInveMng 库存管理,wms入库回传时,增加库存数
  69. * @return 结果
  70. */
  71. @Override
  72. public int insertOWbInveMng(OWbInveMng oWbInveMng)
  73. {
  74. oWbInveMng.setCreateTime(DateUtils.getNowDate());
  75. return oWbInveMngMapper.insertOWbInveMng(oWbInveMng);
  76. }
  77. /**
  78. * 修改库存管理,wms入库回传时,增加库存数
  79. *
  80. * @param oWbInveMng 库存管理,wms入库回传时,增加库存数
  81. * @return 结果
  82. */
  83. @Override
  84. public int updateOWbInveMng(OWbInveMng oWbInveMng)
  85. {
  86. return oWbInveMngMapper.updateOWbInveMng(oWbInveMng);
  87. }
  88. /**
  89. * 批量删除库存管理,wms入库回传时,增加库存数
  90. *
  91. * @param inveSns 需要删除的库存管理,wms入库回传时,增加库存数ID
  92. * @return 结果
  93. */
  94. @Override
  95. public int deleteOWbInveMngByIds(String[] inveSns)
  96. {
  97. return oWbInveMngMapper.deleteOWbInveMngByIds(inveSns);
  98. }
  99. /**
  100. * 删除库存管理,wms入库回传时,增加库存数信息
  101. *
  102. * @param inveSn 库存管理,wms入库回传时,增加库存数ID
  103. * @return 结果
  104. */
  105. @Override
  106. public int deleteOWbInveMngById(String inveSn)
  107. {
  108. return oWbInveMngMapper.deleteOWbInveMngById(inveSn);
  109. }
  110. /**
  111. * 根据商户编号去拉取数据
  112. *
  113. * @param merchSn
  114. * @return
  115. */
  116. @Override
  117. @Transactional
  118. public int pullInveMng(String merchSn) {
  119. int page = 1;
  120. Integer querySize = OmsConfig.getQuerySize();
  121. int resultCode = pullInveMngFromOms(merchSn,page, querySize);
  122. while(resultCode != 1){
  123. page = page + 1;
  124. resultCode = pullInveMngFromOms(merchSn, page, querySize);
  125. }
  126. return resultCode==0?1:resultCode;
  127. }
  128. private int pullInveMngFromOms(String merchSn, int page, Integer querySize) {
  129. Map<String,String> data = new HashMap();
  130. data.put("merchId",merchSn);
  131. data.put("page",page+"");
  132. data.put("limit",querySize.toString());
  133. Map sParaTemp = new TreeMap();
  134. sParaTemp.put("data", JSON.toJSONString(data));
  135. sParaTemp.put("merchId",OmsConfig.getMerchSn());
  136. String timestamp = String.valueOf(System.currentTimeMillis()/1000);
  137. sParaTemp.put("timestamp", timestamp);
  138. //生成要请求给oms秘钥
  139. LOGGER.info("md5混淆码参数:" + OmsConfig.getMd5Salt());
  140. String sign = OmsSign.sign(sParaTemp,OmsConfig.getMd5Salt());
  141. sParaTemp.put("sign", sign);
  142. //构建Request
  143. String url = OmsConfig.getQueryMngInveUrl();
  144. String jsonParam = JSONObject.toJSONString(sParaTemp);
  145. LOGGER.info("Eccs 请求 OMS url => {}, 请求 OMS 报文 => {}", url, jsonParam);
  146. // 同步访问,返回结果字符串
  147. String responseString = null;
  148. try {
  149. JSONObject jsonObject = httpPost(url,JSONObject.parseObject(jsonParam));
  150. LOGGER.info("oms的响应报文"+jsonObject.toString());
  151. //解析响应数据
  152. JSONArray result = (JSONArray) jsonObject.get("data");
  153. Object msg = jsonObject.get("msg");
  154. Object code = jsonObject.get("code");
  155. if(result == null || result.size() == 0){
  156. return 1;
  157. }
  158. for(int i = 0 ; i < result.size(); i ++){
  159. JSONObject o = (JSONObject) result.get(i);
  160. OWbInveMng oWbInveMng = o.toJavaObject(OWbInveMng.class);
  161. //oWbInveMngMapper.saveOrUpdate(oWbInveMng);
  162. wbInveMngMapper.saveOrUpdate(oWbInveMng);
  163. }
  164. if("202".equals(code)){
  165. return 1;
  166. }
  167. } catch (Exception e) {
  168. LOGGER.error(e.getMessage());
  169. return 1;
  170. }
  171. return 0;
  172. }
  173. public static JSONObject httpPost(String url, JSONObject jsonParam)
  174. {
  175. // post请求返回结果
  176. CloseableHttpClient httpClient = HttpClients.createDefault();
  177. JSONObject jsonResult = null;
  178. HttpPost httpPost = new HttpPost(url);
  179. // 设置请求和传输超时时间
  180. // httpPost.setConfig(requestConfig);
  181. try
  182. {
  183. if (null != jsonParam)
  184. {
  185. // 解决中文乱码问题
  186. StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
  187. entity.setContentEncoding("UTF-8");
  188. entity.setContentType("application/json");
  189. httpPost.setEntity(entity);
  190. }
  191. CloseableHttpResponse result = httpClient.execute(httpPost);
  192. // 请求发送成功,并得到响应
  193. if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
  194. {
  195. String str = "";
  196. try
  197. {
  198. // 读取服务器返回过来的json字符串数据
  199. str = EntityUtils.toString(result.getEntity(), "utf-8");
  200. // 把json字符串转换成json对象
  201. jsonResult = JSONObject.parseObject(str);
  202. }
  203. catch (Exception e)
  204. {
  205. LOGGER.error("post请求提交失败:" + url, e);
  206. }
  207. }
  208. }
  209. catch (IOException e)
  210. {
  211. LOGGER.error("post请求提交失败:" + url, e);
  212. }
  213. finally
  214. {
  215. httpPost.releaseConnection();
  216. }
  217. return jsonResult;
  218. }
  219. }