BsCarriertrackingStatusFeedbackSubscriber.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. /**
  2. *
  3. * Copyright (c) behosoft Co.,Ltd.
  4. * All Rights Reserved.
  5. *
  6. * This software is the confidential and proprietary information of behosoft.
  7. * (Social Security Department). You shall not disclose such
  8. * Confidential Information and shall use it only in accordance with
  9. * the terms of the license agreement you entered into with behosoft.
  10. *
  11. * Distributable under GNU LGPL license by gnu.org
  12. */
  13. package com.behosoft.lis.common.subscriber;
  14. import java.io.Serializable;
  15. import java.util.ArrayList;
  16. import java.util.Date;
  17. import java.util.HashMap;
  18. import java.util.List;
  19. import java.util.Map;
  20. import net.sf.json.JSONObject;
  21. import org.apache.commons.collections.CollectionUtils;
  22. import org.apache.commons.logging.Log;
  23. import org.apache.commons.logging.LogFactory;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import com.behosoft.lis.crm.customer.service.CustomerService;
  26. import com.behosoft.lis.model.bo.AccountConfig;
  27. import com.behosoft.lis.model.bo.CarriertrackingStatus;
  28. import com.behosoft.lis.model.bo.DeliverDocument;
  29. import com.behosoft.lis.model.vo.CustomerVO;
  30. import com.behosoft.lis.sys.accountconfig.service.AccountConfigService;
  31. import com.behosoft.lis.wms.carriertrackingStatus.service.CarriertrackingStatusService;
  32. import com.behosoft.lis.wms.deliverDocument.service.DeliverDocumentService;
  33. import com.behosoft.util.HttpUtils;
  34. import com.wondersgroup.saas.message.common.SerializableMessage;
  35. import com.wondersgroup.saas.message.common.WrappedMessage;
  36. import com.wondersgroup.saas.message.subscribe.AbstractDataSubscriber;
  37. import com.wondersgroup.saas.util.JSONUtil;
  38. /**
  39. *
  40. * <p>
  41. * Title: 百弘电商物流标准版_[]_[模块名]
  42. * </p>
  43. * <p>
  44. * Description: [描述该类概要功能介绍]
  45. * </p>
  46. * @author jiangyonghua
  47. * @version 1.0 2019-2-14
  48. * @author (lastest modification by )
  49. * @since 1.0
  50. */
  51. public class BsCarriertrackingStatusFeedbackSubscriber extends AbstractDataSubscriber<WrappedMessage>{
  52. private final Log logger = LogFactory.getLog(this.getClass());
  53. @Autowired
  54. private AccountConfigService accountConfigService;
  55. @Autowired
  56. private CustomerService customerService;
  57. @Autowired
  58. private CarriertrackingStatusService carriertrackingStatusService;
  59. @Autowired
  60. private DeliverDocumentService deliverDocumentService;
  61. @Override
  62. public void receive(WrappedMessage param) {
  63. List<Serializable> serializables = ((SerializableMessage) param).getFilteredObjects();
  64. Date date = (Date) serializables.get(0);
  65. logger.info("enter BsCarriertrackingStatusFeedbackSubscriber get date is:" + date);
  66. List<AccountConfig> accountConfigList = accountConfigService.getValueByKey("BS_CUSTOMER_CODE");
  67. if (CollectionUtils.isEmpty(accountConfigList)) {
  68. logger.info("百胜快递状态反馈,账户配置表(sys_account_config)未配置:BS_CUSTOMER_CODE");
  69. return;
  70. }
  71. //查询JSBS货主
  72. List<CustomerVO> customerList = customerService.findCustomerByCustomerCode(accountConfigList.get(0).getAttributeValue());
  73. if (CollectionUtils.isEmpty(customerList)) {
  74. logger.info("百胜快递状态反馈,未配置货主:江苏百胜");
  75. return;
  76. }
  77. CustomerVO customer = customerList.get(0);
  78. JSONObject jsonObject = accountConfigService.getMapByKey3("BS_CARRIERTRACKINGSTATUS_FEEDBACK");
  79. if(jsonObject != null){
  80. if(!jsonObject.containsKey("URL") || jsonObject.get("URL") == null){
  81. logger.info("百胜快递状态反馈,账户配置表(sys_account_config)未配置:URL");
  82. return;
  83. }
  84. //获取百胜ERP服务端信息
  85. String url = jsonObject.getString("URL");
  86. //组装请求报文,并发送请求
  87. packingRequestData(customer, url);
  88. }
  89. else{
  90. logger.info("百胜快递状态反馈,账户配置表(sys_account_config)未配置:BS_CARRIERTRACKINGSTATUS_FEEDBACK");
  91. return;
  92. }
  93. logger.info("exit BsCarriertrackingStatusFeedbackSubscriber");
  94. }
  95. /**
  96. *
  97. * <p>
  98. * Description:[组装请求报文]
  99. * </p>
  100. * @param sql 参数说明
  101. * @param args 参数说明
  102. * @return 返回值说明
  103. */
  104. private void packingRequestData(CustomerVO customer, String url) {
  105. Map<String, Object> params = new HashMap<String, Object>();
  106. params.put("path", url);
  107. //查询百胜货主符合条件的发运单
  108. List<DeliverDocument> deliverDocumentList = deliverDocumentService.findByCustomerId(customer.getCustomerId());
  109. if (CollectionUtils.isNotEmpty(deliverDocumentList)) {
  110. List<String> documentIds = new ArrayList<String>();
  111. for (DeliverDocument deliverDocument : deliverDocumentList) {
  112. documentIds.add(deliverDocument.getDocumentId());
  113. }
  114. //查询快递状态表
  115. List<CarriertrackingStatus> carriertrackingStatusList = carriertrackingStatusService.findByOutboundOrderId(documentIds);
  116. if (CollectionUtils.isNotEmpty(carriertrackingStatusList)) {
  117. for (CarriertrackingStatus carriertrackingStatus : carriertrackingStatusList) {
  118. params.put("carrierTrackingNumber", carriertrackingStatus.getCarrierTrackingNumber());
  119. params.put("status", carriertrackingStatus.getEvent());
  120. //发送请求,并获取响应
  121. Map<String, String> result = HttpUtils.httpGet(params);
  122. if (result.containsKey("response") && result.get("response") != null) {
  123. JSONObject json = JSONObject.fromObject(result.get("response"), JSONUtil.getJsonConfig());
  124. //如果响应成功,更新采购单是否反馈标识为是
  125. if (json.containsKey("resultCode") && json.get("resultCode") != null && "0".equals(json.get("resultCode").toString())) {
  126. carriertrackingStatus.setIsFeedback(1);
  127. carriertrackingStatusService.updateEntity(carriertrackingStatus);
  128. deliverDocumentService.updateIsFeedback(carriertrackingStatus.getDocumentId());
  129. }
  130. }
  131. }
  132. }
  133. }
  134. }
  135. }