123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- /**
- *
- * Copyright (c) behosoft Co.,Ltd.
- * All Rights Reserved.
- *
- * This software is the confidential and proprietary information of behosoft.
- * (Social Security Department). You shall not disclose such
- * Confidential Information and shall use it only in accordance with
- * the terms of the license agreement you entered into with behosoft.
- *
- * Distributable under GNU LGPL license by gnu.org
- */
- package com.behosoft.lis.common.subscriber;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import net.sf.json.JSONObject;
- import org.apache.commons.collections.CollectionUtils;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import com.behosoft.lis.crm.customer.service.CustomerService;
- import com.behosoft.lis.model.bo.AccountConfig;
- import com.behosoft.lis.model.bo.CarriertrackingStatus;
- import com.behosoft.lis.model.bo.DeliverDocument;
- import com.behosoft.lis.model.vo.CustomerVO;
- import com.behosoft.lis.sys.accountconfig.service.AccountConfigService;
- import com.behosoft.lis.wms.carriertrackingStatus.service.CarriertrackingStatusService;
- import com.behosoft.lis.wms.deliverDocument.service.DeliverDocumentService;
- import com.behosoft.util.HttpUtils;
- import com.wondersgroup.saas.message.common.SerializableMessage;
- import com.wondersgroup.saas.message.common.WrappedMessage;
- import com.wondersgroup.saas.message.subscribe.AbstractDataSubscriber;
- import com.wondersgroup.saas.util.JSONUtil;
- /**
- *
- * <p>
- * Title: 百弘电商物流标准版_[]_[模块名]
- * </p>
- * <p>
- * Description: [描述该类概要功能介绍]
- * </p>
- * @author jiangyonghua
- * @version 1.0 2019-2-14
- * @author (lastest modification by )
- * @since 1.0
- */
- public class BsCarriertrackingStatusFeedbackSubscriber extends AbstractDataSubscriber<WrappedMessage>{
- private final Log logger = LogFactory.getLog(this.getClass());
- @Autowired
- private AccountConfigService accountConfigService;
-
- @Autowired
- private CustomerService customerService;
-
- @Autowired
- private CarriertrackingStatusService carriertrackingStatusService;
-
- @Autowired
- private DeliverDocumentService deliverDocumentService;
-
- @Override
- public void receive(WrappedMessage param) {
- List<Serializable> serializables = ((SerializableMessage) param).getFilteredObjects();
- Date date = (Date) serializables.get(0);
- logger.info("enter BsCarriertrackingStatusFeedbackSubscriber get date is:" + date);
-
- List<AccountConfig> accountConfigList = accountConfigService.getValueByKey("BS_CUSTOMER_CODE");
-
- if (CollectionUtils.isEmpty(accountConfigList)) {
- logger.info("百胜快递状态反馈,账户配置表(sys_account_config)未配置:BS_CUSTOMER_CODE");
- return;
- }
- //查询JSBS货主
- List<CustomerVO> customerList = customerService.findCustomerByCustomerCode(accountConfigList.get(0).getAttributeValue());
-
- if (CollectionUtils.isEmpty(customerList)) {
- logger.info("百胜快递状态反馈,未配置货主:江苏百胜");
- return;
- }
- CustomerVO customer = customerList.get(0);
-
- JSONObject jsonObject = accountConfigService.getMapByKey3("BS_CARRIERTRACKINGSTATUS_FEEDBACK");
-
- if(jsonObject != null){
- if(!jsonObject.containsKey("URL") || jsonObject.get("URL") == null){
- logger.info("百胜快递状态反馈,账户配置表(sys_account_config)未配置:URL");
- return;
- }
- //获取百胜ERP服务端信息
- String url = jsonObject.getString("URL");
- //组装请求报文,并发送请求
- packingRequestData(customer, url);
- }
- else{
- logger.info("百胜快递状态反馈,账户配置表(sys_account_config)未配置:BS_CARRIERTRACKINGSTATUS_FEEDBACK");
- return;
- }
- logger.info("exit BsCarriertrackingStatusFeedbackSubscriber");
- }
- /**
- *
- * <p>
- * Description:[组装请求报文]
- * </p>
- * @param sql 参数说明
- * @param args 参数说明
- * @return 返回值说明
- */
- private void packingRequestData(CustomerVO customer, String url) {
- Map<String, Object> params = new HashMap<String, Object>();
- params.put("path", url);
-
- //查询百胜货主符合条件的发运单
- List<DeliverDocument> deliverDocumentList = deliverDocumentService.findByCustomerId(customer.getCustomerId());
-
- if (CollectionUtils.isNotEmpty(deliverDocumentList)) {
- List<String> documentIds = new ArrayList<String>();
-
- for (DeliverDocument deliverDocument : deliverDocumentList) {
- documentIds.add(deliverDocument.getDocumentId());
- }
- //查询快递状态表
- List<CarriertrackingStatus> carriertrackingStatusList = carriertrackingStatusService.findByOutboundOrderId(documentIds);
-
- if (CollectionUtils.isNotEmpty(carriertrackingStatusList)) {
- for (CarriertrackingStatus carriertrackingStatus : carriertrackingStatusList) {
- params.put("carrierTrackingNumber", carriertrackingStatus.getCarrierTrackingNumber());
- params.put("status", carriertrackingStatus.getEvent());
-
- //发送请求,并获取响应
- Map<String, String> result = HttpUtils.httpGet(params);
-
- if (result.containsKey("response") && result.get("response") != null) {
- JSONObject json = JSONObject.fromObject(result.get("response"), JSONUtil.getJsonConfig());
-
- //如果响应成功,更新采购单是否反馈标识为是
- if (json.containsKey("resultCode") && json.get("resultCode") != null && "0".equals(json.get("resultCode").toString())) {
- carriertrackingStatus.setIsFeedback(1);
- carriertrackingStatusService.updateEntity(carriertrackingStatus);
- deliverDocumentService.updateIsFeedback(carriertrackingStatus.getDocumentId());
- }
- }
- }
- }
- }
- }
- }
|