/**
*
* 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;
/**
*
*
* Title: 百弘电商物流标准版_[]_[模块名]
*
*
* Description: [描述该类概要功能介绍]
*
* @author jiangyonghua
* @version 1.0 2019-2-14
* @author (lastest modification by )
* @since 1.0
*/
public class BsCarriertrackingStatusFeedbackSubscriber extends AbstractDataSubscriber{
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 serializables = ((SerializableMessage) param).getFilteredObjects();
Date date = (Date) serializables.get(0);
logger.info("enter BsCarriertrackingStatusFeedbackSubscriber get date is:" + date);
List accountConfigList = accountConfigService.getValueByKey("BS_CUSTOMER_CODE");
if (CollectionUtils.isEmpty(accountConfigList)) {
logger.info("百胜快递状态反馈,账户配置表(sys_account_config)未配置:BS_CUSTOMER_CODE");
return;
}
//查询JSBS货主
List 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");
}
/**
*
*
* Description:[组装请求报文]
*
* @param sql 参数说明
* @param args 参数说明
* @return 返回值说明
*/
private void packingRequestData(CustomerVO customer, String url) {
Map params = new HashMap();
params.put("path", url);
//查询百胜货主符合条件的发运单
List deliverDocumentList = deliverDocumentService.findByCustomerId(customer.getCustomerId());
if (CollectionUtils.isNotEmpty(deliverDocumentList)) {
List documentIds = new ArrayList();
for (DeliverDocument deliverDocument : deliverDocumentList) {
documentIds.add(deliverDocument.getDocumentId());
}
//查询快递状态表
List carriertrackingStatusList = carriertrackingStatusService.findByOutboundOrderId(documentIds);
if (CollectionUtils.isNotEmpty(carriertrackingStatusList)) {
for (CarriertrackingStatus carriertrackingStatus : carriertrackingStatusList) {
params.put("carrierTrackingNumber", carriertrackingStatus.getCarrierTrackingNumber());
params.put("status", carriertrackingStatus.getEvent());
//发送请求,并获取响应
Map 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());
}
}
}
}
}
}
}