...
|
...
|
@@ -346,71 +346,30 @@ public class ExpressInfoServiceImpl implements IExpressInfoService { |
|
|
ExpressInfoRespBo expressInfoRespBo = new ExpressInfoRespBo();
|
|
|
|
|
|
|
|
|
Integer expressType = getExpressType(buyerOrder.getStatus(), actor);
|
|
|
LOGGER.info("getExpressType result = {}", expressType);
|
|
|
Integer expressType = getCurrentExpressType4ExpressRecord(buyerOrder.getStatus(), actor);
|
|
|
LOGGER.info("queryExpressDetailInfo getExpressType expressType result = {}, uid={}, orderCode = {},actor = {} ",expressType,uid, orderCode,actor);
|
|
|
//1.物流单号信息
|
|
|
constructWayBillInfo(orderCode,expressType,expressInfoRespBo);
|
|
|
|
|
|
//2.设定最近一个阶段的物流
|
|
|
expressInfoRespBo.setExpressInfoDetailList(Lists.newArrayList());
|
|
|
List<ExpressInfo> expressInfoList = getExpressInfoListByStage( orderCode, expressType);
|
|
|
processExpressInfo(expressInfoList, expressInfoRespBo);
|
|
|
|
|
|
//没有物流详情,但是有物流单号信息
|
|
|
if(CollectionUtils.isEmpty(expressInfoList)){
|
|
|
ExpressRecord expressRecord = expressRecordMapper.selectByOrderCodeAndExpressType(orderCode,expressType);
|
|
|
if(expressRecord!=null){
|
|
|
expressInfoRespBo.setExpressInfoDetailList(new ArrayList<>());
|
|
|
// 快递单号
|
|
|
expressInfoRespBo.setWayBillCode(expressRecord.getWaybillCode());
|
|
|
//物流类型
|
|
|
expressInfoRespBo.setExpressType(expressRecord.getExpressType());
|
|
|
//物流发货方
|
|
|
expressInfoRespBo.setExpressSender(getSenderName(expressInfoRespBo.getExpressType().intValue()));
|
|
|
// 快递公司名称
|
|
|
expressInfoRespBo.setExpressCompanyName(expressCompanyService.getExpressName(expressRecord.getLogisticsType()));
|
|
|
}
|
|
|
}
|
|
|
constructExpressInfo(expressInfoList, expressInfoRespBo.getExpressInfoDetailList());
|
|
|
|
|
|
//设定鉴定的物流调拨信息
|
|
|
//3.设定鉴定的物流调拨信息
|
|
|
expressInfoRespBo.setJudgeExpressInfoDetailList(Lists.newArrayList());
|
|
|
List<ExpressInfo> judgeExpressInfoList=getExpressInfoListByStage( orderCode, EnumExpressType.EXPRESS_TYPE_JUDGE_CENTER.getCode());
|
|
|
constructExpressInfo(judgeExpressInfoList, expressInfoRespBo.getJudgeExpressInfoDetailList());
|
|
|
|
|
|
//获取上一阶段的辅助物流信息
|
|
|
//4.获取上一阶段的辅助物流信息
|
|
|
List<ExpressInfoDetail> supplementExpressInfoDetailList = Lists.newArrayList();
|
|
|
expressInfoRespBo.setSupplementExpressInfoDetailList(supplementExpressInfoDetailList);
|
|
|
if(expressType.intValue()!=0&& EnumExpressType.EXPRESS_TYPE_1.getCode().intValue()!=expressType.intValue()){
|
|
|
if(EnumExpressType.EXPRESS_TYPE_2.getCode().intValue()==expressType.intValue()){
|
|
|
//买家这个时候需要看卖家的物流
|
|
|
//设置物流提示头信息
|
|
|
if(StringUtils.isBlank(expressInfoRespBo.getExpressSender())){
|
|
|
expressInfoRespBo.setExpressSender(getSenderName(EnumExpressType.EXPRESS_TYPE_1.getCode().intValue()));
|
|
|
}
|
|
|
//卖家物流详细
|
|
|
List<ExpressInfo> previousExpressInfoList = getExpressInfoListByStage( orderCode, EnumExpressType.EXPRESS_TYPE_1.getCode());
|
|
|
constructExpressInfo(previousExpressInfoList, supplementExpressInfoDetailList);
|
|
|
}else if(EnumExpressType.EXPRESS_TYPE_3.getCode().intValue()==expressType.intValue()
|
|
|
||EnumExpressType.EXPRESS_TYPE_REBACK.getCode().intValue()==expressType.intValue()){
|
|
|
//卖家这个时候看自己上一阶段的物流
|
|
|
//如果还没有新的物流信息,卖家显示上一个阶段的物流
|
|
|
if(StringUtils.isBlank(expressInfoRespBo.getExpressSender())){
|
|
|
ExpressRecord expressRecord = expressRecordMapper.selectByOrderCodeAndExpressType(orderCode,EnumExpressType.EXPRESS_TYPE_1.getCode());
|
|
|
if(expressRecord!=null){
|
|
|
// 快递单号
|
|
|
expressInfoRespBo.setWayBillCode(expressRecord.getWaybillCode());
|
|
|
//物流类型
|
|
|
expressInfoRespBo.setExpressType(expressRecord.getExpressType());
|
|
|
//物流发货方
|
|
|
expressInfoRespBo.setExpressSender(getSenderName(expressInfoRespBo.getExpressType().intValue()));
|
|
|
// 快递公司名称
|
|
|
expressInfoRespBo.setExpressCompanyName(expressCompanyService.getExpressName(expressRecord.getLogisticsType()));
|
|
|
expressInfoRespBo.setExpressInfoDetailList(new ArrayList<>());
|
|
|
}
|
|
|
}
|
|
|
List<ExpressInfo> previousExpressInfoList = getExpressInfoListByStage(orderCode, EnumExpressType.EXPRESS_TYPE_1.getCode());
|
|
|
constructExpressInfo(previousExpressInfoList, supplementExpressInfoDetailList);
|
|
|
}
|
|
|
}
|
|
|
constructSupplementExpress(orderCode,expressType,expressInfoRespBo);
|
|
|
|
|
|
//设定三个阶段的信息
|
|
|
//5.设定三个阶段的信息
|
|
|
|
|
|
|
|
|
//根据状态重设expressType
|
|
|
//6.根据状态重设expressType
|
|
|
if(Objects.equals(OrderStatus.PLATFORM_RECEIVE.getCode(),buyerOrder.getStatus())
|
|
|
||Objects.equals(OrderStatus.PLATFORM_CHECKING.getCode(),buyerOrder.getStatus())
|
|
|
||Objects.equals(OrderStatus.JUDGE_PASS.getCode(),buyerOrder.getStatus())
|
...
|
...
|
@@ -422,6 +381,93 @@ public class ExpressInfoServiceImpl implements IExpressInfoService { |
|
|
return expressInfoRespBo;
|
|
|
}
|
|
|
|
|
|
private void constructSupplementExpress(Long orderCode,Integer expressType,ExpressInfoRespBo expressInfoRespBo){
|
|
|
if(EnumExpressType.EXPRESS_TYPE_2.getCode().intValue()==expressType.intValue()){
|
|
|
//买家这个时候需要看卖家的物流
|
|
|
//设置物流提示头信息
|
|
|
if(StringUtils.isBlank(expressInfoRespBo.getExpressSender())){
|
|
|
expressInfoRespBo.setExpressSender(getSenderName(EnumExpressType.EXPRESS_TYPE_1.getCode().intValue()));
|
|
|
}
|
|
|
//卖家物流详细
|
|
|
List<ExpressInfo> previousExpressInfoList = getExpressInfoListByStage( orderCode, EnumExpressType.EXPRESS_TYPE_1.getCode());
|
|
|
constructExpressInfo(previousExpressInfoList, expressInfoRespBo.getSupplementExpressInfoDetailList());
|
|
|
}else if(EnumExpressType.EXPRESS_TYPE_3.getCode().intValue()==expressType.intValue()
|
|
|
||EnumExpressType.EXPRESS_TYPE_REBACK.getCode().intValue()==expressType.intValue()){
|
|
|
//卖家这个时候看自己上一阶段的物流
|
|
|
//如果还没有新的物流信息,卖家显示上一个阶段的物流
|
|
|
if(StringUtils.isBlank(expressInfoRespBo.getExpressSender())){
|
|
|
//物流单号信息
|
|
|
constructWayBillInfo(orderCode,EnumExpressType.EXPRESS_TYPE_1.getCode(),expressInfoRespBo);
|
|
|
}
|
|
|
List<ExpressInfo> previousExpressInfoList = getExpressInfoListByStage(orderCode, EnumExpressType.EXPRESS_TYPE_1.getCode());
|
|
|
constructExpressInfo(previousExpressInfoList, expressInfoRespBo.getSupplementExpressInfoDetailList());
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//物流单号信息
|
|
|
private void constructWayBillInfo(Long orderCode,Integer expressType,ExpressInfoRespBo expressInfoRespBo){
|
|
|
ExpressRecord expressRecord = expressRecordMapper.selectByOrderCodeAndExpressType(orderCode,expressType);
|
|
|
if(expressRecord!=null){
|
|
|
expressInfoRespBo.setExpressInfoDetailList(new ArrayList<>());
|
|
|
// 快递单号
|
|
|
expressInfoRespBo.setWayBillCode(expressRecord.getWaybillCode());
|
|
|
//物流类型
|
|
|
expressInfoRespBo.setExpressType(expressRecord.getExpressType());
|
|
|
//物流发货方
|
|
|
expressInfoRespBo.setExpressSender(getSenderName(expressInfoRespBo.getExpressType().intValue()));
|
|
|
// 快递公司名称
|
|
|
expressInfoRespBo.setExpressCompanyName(expressCompanyService.getExpressName(expressRecord.getLogisticsType()));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据状态和actor 获取最近的物流记录状态
|
|
|
* orderCode 一定是买家订单号
|
|
|
* @return
|
|
|
*/
|
|
|
private Integer getCurrentExpressType4ExpressRecord(Integer status, TabType actor) {
|
|
|
if(null==actor){
|
|
|
if(OrderStatus.SELLER_SEND_OUT.getCode()==status
|
|
|
||OrderStatus.PLATFORM_RECEIVE.getCode()==status
|
|
|
||OrderStatus.PLATFORM_CHECKING.getCode()==status
|
|
|
||OrderStatus.JUDGE_PASS.getCode()==status){
|
|
|
return EnumExpressType.EXPRESS_TYPE_1.getCode();
|
|
|
}else if(OrderStatus.WAITING_RECEIVE.getCode()==status||OrderStatus.DONE.getCode()==status){
|
|
|
//4 和 5 状态有问题 ,买家查看物流是没问题的,卖家查看物流有问题啊.
|
|
|
return EnumExpressType.EXPRESS_TYPE_2.getCode();
|
|
|
}else if(OrderStatus.CHECKING_FAKE.getCode()==status){
|
|
|
return EnumExpressType.EXPRESS_TYPE_3.getCode();
|
|
|
}else if(OrderStatus.BUYER_CANCEL_BEFORE_DEPOT_RECEIVE.getCode()==status){
|
|
|
return EnumExpressType.EXPRESS_TYPE_REBACK.getCode();
|
|
|
}
|
|
|
}else {
|
|
|
switch (actor){
|
|
|
case BUY:
|
|
|
return EnumExpressType.EXPRESS_TYPE_2.getCode();
|
|
|
case SELL:
|
|
|
return getCurrentExpressType4ExpressRecordAndSeller(status);
|
|
|
default:
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
private Integer getCurrentExpressType4ExpressRecordAndSeller(Integer status){
|
|
|
|
|
|
Integer type ;
|
|
|
if (Objects.equals(OrderStatus.CHECKING_FAKE.getCode(), status)){
|
|
|
type = EnumExpressType.EXPRESS_TYPE_3.getCode();
|
|
|
}else if(Objects.equals(OrderStatus.BUYER_CANCEL_BEFORE_DEPOT_RECEIVE.getCode(), status)){
|
|
|
type = EnumExpressType.EXPRESS_TYPE_REBACK.getCode();
|
|
|
}else{
|
|
|
type = EnumExpressType.EXPRESS_TYPE_1.getCode();
|
|
|
}
|
|
|
return type;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取物流详情
|
...
|
...
|
@@ -548,7 +594,7 @@ public class ExpressInfoServiceImpl implements IExpressInfoService { |
|
|
}
|
|
|
|
|
|
|
|
|
private void constructExpressInfo(List<ExpressInfo> expressInfoList, List<ExpressInfoDetail> supplementExpressInfoDetailList) {
|
|
|
private void constructExpressInfo(List<ExpressInfo> expressInfoList, List<ExpressInfoDetail> detailList) {
|
|
|
if (CollectionUtils.isNotEmpty(expressInfoList)) {
|
|
|
for (ExpressInfo expressInfo : expressInfoList) {
|
|
|
ExpressInfoDetail expressInfoDetail = new ExpressInfoDetail();
|
...
|
...
|
@@ -557,7 +603,7 @@ public class ExpressInfoServiceImpl implements IExpressInfoService { |
|
|
// 运单信息
|
|
|
expressInfoDetail.setAcceptRemark(expressInfo.getAcceptRemark());
|
|
|
expressInfoDetail.setCreateTimeStr(DateUtil.formatDate(expressInfo.getCreateTime(), DateUtil.yyyy_MM_dd_HH_mm_SS));
|
|
|
supplementExpressInfoDetailList.add(expressInfoDetail);
|
|
|
detailList.add(expressInfoDetail);
|
|
|
}
|
|
|
}
|
|
|
}
|
...
|
...
|
|