...
|
...
|
@@ -229,6 +229,12 @@ public class ExpressInfoServiceImpl implements IExpressInfoService { |
|
|
expressRecordMapper.insert(record);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void triggerExpressMQ(Integer uid,Integer expressCompanyId,Long orderCode,String wayBillCode,String mobile ){
|
|
|
// 发送mq获取物流信息
|
|
|
sendExpressMQ(uid,expressCompanyId,orderCode,wayBillCode,mobile);
|
|
|
LOGGER.info("triggerExpressMQ end ! send express to erp ");
|
|
|
}
|
|
|
/**
|
|
|
* 发送mq消息,获取物流信息
|
|
|
*/
|
...
|
...
|
@@ -286,12 +292,12 @@ public class ExpressInfoServiceImpl implements IExpressInfoService { |
|
|
ExpressInfoRespBo expressInfoRespBo = new ExpressInfoRespBo();
|
|
|
Integer expressType = getExpressType(buyerOrder.getStatus(), actor);
|
|
|
LOGGER.info("getExpressType result = {}", expressType);
|
|
|
List<ExpressInfo> expressInfoList = expressInfoMapper.selectAllExpressInfo(uid, orderCode, expressType);
|
|
|
List<ExpressInfo> expressInfoList = getExpressInfoListByStage( orderCode, expressType);
|
|
|
processExpressInfo(expressInfoList, expressInfoRespBo);
|
|
|
|
|
|
//没有物流详情,但是有物流单号信息
|
|
|
if(CollectionUtils.isEmpty(expressInfoList)){
|
|
|
ExpressRecord expressRecord = expressRecordMapper.selectByUidAndOrderCodeAndExpressType(uid,orderCode,expressType);
|
|
|
ExpressRecord expressRecord = expressRecordMapper.selectByOrderCodeAndExpressType(orderCode,expressType);
|
|
|
if(expressRecord!=null){
|
|
|
expressInfoRespBo.setExpressInfoDetailList(new ArrayList<>());
|
|
|
// 快递单号
|
...
|
...
|
@@ -316,14 +322,14 @@ public class ExpressInfoServiceImpl implements IExpressInfoService { |
|
|
expressInfoRespBo.setExpressSender(EnumExpressSender.getSenderName(ExpressInfoConstant.EXPRESS_TYPE_1.intValue()));
|
|
|
}
|
|
|
//卖家物流详细
|
|
|
List<ExpressInfo> previousExpressInfoList = expressInfoMapper.selectAllExpressInfo(buyerOrder.getSellerUid(), orderCode, ExpressInfoConstant.EXPRESS_TYPE_1);
|
|
|
List<ExpressInfo> previousExpressInfoList = getExpressInfoListByStage( orderCode, ExpressInfoConstant.EXPRESS_TYPE_1);
|
|
|
constructExpressInfo(previousExpressInfoList, supplementExpressInfoDetailList);
|
|
|
}else if(ExpressInfoConstant.EXPRESS_TYPE_3.intValue()==expressType.intValue()
|
|
|
||ExpressInfoConstant.EXPRESS_TYPE_REBACK.intValue()==expressType.intValue()){
|
|
|
//卖家这个时候看自己上一阶段的物流
|
|
|
//如果还没有新的物流信息,卖家显示上一个阶段的物流
|
|
|
if(StringUtils.isBlank(expressInfoRespBo.getExpressSender())){
|
|
|
ExpressRecord expressRecord = expressRecordMapper.selectByUidAndOrderCodeAndExpressType(uid,orderCode,ExpressInfoConstant.EXPRESS_TYPE_1);
|
|
|
ExpressRecord expressRecord = expressRecordMapper.selectByOrderCodeAndExpressType(orderCode,ExpressInfoConstant.EXPRESS_TYPE_1);
|
|
|
if(expressRecord!=null){
|
|
|
// 快递单号
|
|
|
expressInfoRespBo.setWayBillCode(expressRecord.getWaybillCode());
|
...
|
...
|
@@ -336,7 +342,7 @@ public class ExpressInfoServiceImpl implements IExpressInfoService { |
|
|
expressInfoRespBo.setExpressInfoDetailList(new ArrayList<>());
|
|
|
}
|
|
|
}
|
|
|
List<ExpressInfo> previousExpressInfoList = expressInfoMapper.selectAllExpressInfo(uid, orderCode, ExpressInfoConstant.EXPRESS_TYPE_1);
|
|
|
List<ExpressInfo> previousExpressInfoList = getExpressInfoListByStage(orderCode, ExpressInfoConstant.EXPRESS_TYPE_1);
|
|
|
constructExpressInfo(previousExpressInfoList, supplementExpressInfoDetailList);
|
|
|
}
|
|
|
}
|
...
|
...
|
@@ -345,15 +351,49 @@ public class ExpressInfoServiceImpl implements IExpressInfoService { |
|
|
}
|
|
|
|
|
|
|
|
|
@Override
|
|
|
public ExpressInfoRespBo queryLastExpressDetailInfo(Long orderCode, int expressType) {
|
|
|
/**
|
|
|
* 获取物流详情
|
|
|
* 逻辑变更:以前是直接从express_info获取
|
|
|
* 变更为:先从express_record获取物流单号,再通过物流单号关联express_info ,从而解决多个订单一个物流号问题
|
|
|
* @return
|
|
|
*/
|
|
|
private List<ExpressInfo> getExpressInfoListByStage(Long orderCode, Integer expressType){
|
|
|
ExpressRecord expressRecord = expressRecordMapper.selectByOrderCodeAndExpressType(orderCode,expressType);
|
|
|
if(expressRecord==null){
|
|
|
LOGGER.info("getExpressInfoListByStage out because of empty record ,orderCode = {} ,expressType = {} ",orderCode,expressType);
|
|
|
return Lists.newArrayList();
|
|
|
}
|
|
|
String waybillCode = expressRecord.getWaybillCode();
|
|
|
Integer logisticsType = expressRecord.getLogisticsType();
|
|
|
|
|
|
List<ExpressInfo> list = expressInfoMapper.selectByOrderCodeAndExpressType(orderCode,expressType);
|
|
|
|
|
|
//有可能存在一个订单号,多个物流的情况,比如原来的物流填错了,修改了新的物流,只保留新的物流号的信息
|
|
|
if(CollectionUtils.isNotEmpty(list)){
|
|
|
list = list.stream().filter(info -> StringUtils.equals(waybillCode,info.getWaybillCode())).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
if(CollectionUtils.isNotEmpty(list)){
|
|
|
LOGGER.info("getExpressInfoListByStage success have data in express info ,orderCode = {} ,expressType = {} ",orderCode,expressType);
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
LOGGER.info("getExpressInfoListByStage begin , orderCode = {} ,expressType = {}, expressRecord = {} ",orderCode,expressType,expressRecord);
|
|
|
List<ExpressInfo> expressInfoList = expressInfoMapper.selectExpressInfoListByWaybillCodeAndLogisticsType(waybillCode,logisticsType);
|
|
|
return expressInfoList;
|
|
|
}
|
|
|
|
|
|
//@Override
|
|
|
private ExpressInfoRespBo queryLastExpressDetailInfo(Long orderCode, int expressType) {
|
|
|
LOGGER.info("queryLastExpressDetailInfo orderCode {}, expressType {}", orderCode, expressType);
|
|
|
ExpressInfoRespBo expressInfoRespBo = new ExpressInfoRespBo();
|
|
|
LOGGER.info("queryLastExpressDetailInfo, getExpressType result = {}", expressType);
|
|
|
ExpressInfo last = expressInfoMapper.selectLast(orderCode, expressType);
|
|
|
if (last == null){
|
|
|
List<ExpressInfo> expressInfoList_All = getExpressInfoListByStage(orderCode, expressType);
|
|
|
if (expressInfoList_All==null||expressInfoList_All.size()<=0){
|
|
|
return null;
|
|
|
}
|
|
|
//已经是按照时间倒叙排列了,直接取第一条就可以了
|
|
|
ExpressInfo last=expressInfoList_All.get(0);
|
|
|
List<ExpressInfo> expressInfoList = Arrays.asList(last);
|
|
|
processExpressInfo(expressInfoList, expressInfoRespBo);
|
|
|
LOGGER.info("queryLastExpressDetailInfo.queryExpressDetailInfo result = {}", JSON.toJSONString(expressInfoRespBo));
|
...
|
...
|
|