/** * * 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()); } } } } } } }