提交 f8bef67e authored 作者: 刘海泉's avatar 刘海泉

新增同步数媒宝运单相关接口信息

上级 f911d407
...@@ -198,4 +198,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -198,4 +198,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
void updateBatchOwnerCancel(List<String> childNos); void updateBatchOwnerCancel(List<String> childNos);
List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(List<String> childNos); List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(List<String> childNos);
List<OrderChild> listBeforeUnloadOrderChild();
} }
...@@ -655,4 +655,11 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -655,4 +655,11 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
public List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(List<String> childNos) { public List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(List<String> childNos) {
return baseMapper.statisticsCancelOrderGoodsWeight(childNos); return baseMapper.statisticsCancelOrderGoodsWeight(childNos);
} }
@Override
public List<OrderChild> listBeforeUnloadOrderChild() {
return list(lQrWrapper()
.lt(OrderChild :: getStatus, OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())
);
}
} }
...@@ -25,6 +25,7 @@ public class OrderChildExpectDTO implements Serializable { ...@@ -25,6 +25,7 @@ public class OrderChildExpectDTO implements Serializable {
private String truckLatitudeY; //车辆位置维度 private String truckLatitudeY; //车辆位置维度
private Integer expectTransportTimeSecond;//预计运输时间 private Integer expectTransportTimeSecond;//预计运输时间
private String expectTransportTime;//预计运输时间(转化秒 为几小时几分钟) private String expectTransportTime;//预计运输时间(转化秒 为几小时几分钟)
private String createTime; //插入缓存的时间
} }
package com.clx.performance.job;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.OrderChildExpectTimeMessage;
import com.clx.order.enums.SyncPlatformEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dto.OrderChildExpectDTO;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.listener.OrderChildDtsListener;
import com.clx.performance.model.OrderChild;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.struct.OrderChildStruct;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.msl.common.job.JobLog;
import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@Slf4j
@Component
@AllArgsConstructor
public class PushOrderChildExpectTimeJob {
private final OrderChildDao orderChildDao;
private final OrderFeign orderFeign;
private final OrderChildService orderChildService;
private final OrderChildStruct orderChildStruct;
private final DriverService driverService;
private final ThirdAppConfig thirdAppConfig;
private final OrderChildDtsListener orderChildDtsListener;
/**
* 推送运单预计时间到对应的平台
*/
@XxlJob("pushOrderChildExpectTimeJob")
public void pushOrderChildExpectTimeJob() {
try {
pushOrderChildExpectTime2ThirdPlatform();
} catch (Exception e) {
log.warn("定时任务推送运单预计时间到对应的平台失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
JobLog.error("定时任务获取平台车辆定位信息失败,异常原因=====================", e);
}
}
//数媒宝对应的运单进行实时预计时间推送
public void pushOrderChildExpectTime2ThirdPlatform(){
log.info("开始查询承运系统未到达目的地前的运单开始===================");
List<OrderChild> list = orderChildDao.listBeforeUnloadOrderChild();
log.info("查询到承运系统未到达目的地前的运单条数:{} 条",list.size());
if(CollectionUtils.isNotEmpty(list)){
List<String> orderNoList = list.stream().map(OrderChild::getOrderNo).collect(Collectors.toList());
Result<Map<String, Integer>> mapResult = orderFeign.queryListOrderSource(orderNoList);
if(!mapResult.succeed()){
log.warn("通过订单编号查询订单来源信息失败,响应结果:{}",mapResult);
return;
}
Map<String, Integer> orderSourceMap = mapResult.getData();
list.forEach(item->{
//交易平台数媒宝同步运单同步实时预计时间
if(Objects.equals(orderSourceMap.get(item.getOrderNo()),SyncPlatformEnum.Source.TRADE_PLATFORM.getCode())){
List<OrderChildExpectDTO> expectList = orderChildService.getOrderChildExpect(
item.getChildNo());
if(CollectionUtils.isNotEmpty(expectList) || StringUtils.isNotBlank(expectList.get(0).getCreateTime())){
log.info("运单号:{} 未从缓存中查询到对应的预计时间信息",item.getChildNo());
return;
}
OrderChildExpectDTO orderChildExpect = expectList.get(0);
LocalDateTime calcExpectTime = DateUtils.parseDateTime(orderChildExpect.getCreateTime()).get();
//如果缓存预计时间 插入的不是10分钟之内的,则不进行使用
if(LocalDateTimeUtils.betweenMin(calcExpectTime,LocalDateTime.now()) > 10){
log.info("运单号:{} 从缓存中查询到对应的预计时间信息超过10分钟,不进行使用",item.getChildNo());
return;
}
OrderChildExpectTimeMessage message = new OrderChildExpectTimeMessage();
message.setChildNo(item.getChildNo());
message.setStatus(item.getStatus());
if(item.getStatus() < OrderChildEnum.Status.ARRIVE_SEND.getCode()){ //到达货源地之前
message.setExpectArriveTime(orderChildExpect.getExpectArriveTime());
}else{ //到达货源地之后 && 到达目的地之前
message.setExpectArriveTime(orderChildExpect.getExpectReceiveTime());
}
String data = JSON.toJSONString(message);
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(
SyncPlatformEnum.Source.TRADE_PLATFORM.getCode().toString());
log.info("运单预计时间信息同步开始,请求参数:{}",data);
Result<?> result = openCallBackClient.encryptPost(data,message.topic());
log.info("运单预计时间信息同步,响应结果:{}",JSON.toJSONString(result));
}
});
}
}
}
package com.clx.performance.service; package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dto.OrderChildExpectDTO;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.*; import com.clx.performance.param.app.*;
...@@ -99,4 +100,6 @@ public interface OrderChildService { ...@@ -99,4 +100,6 @@ public interface OrderChildService {
Integer getOrderChildCheck(OrderChildCheckParam param); Integer getOrderChildCheck(OrderChildCheckParam param);
void cancelOrderChilds(CancelOrderGoodsParam param); void cancelOrderChilds(CancelOrderGoodsParam param);
List<OrderChildExpectDTO> getOrderChildExpect(String orderChildNo);
} }
...@@ -58,7 +58,6 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService; ...@@ -58,7 +58,6 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService;
import com.clx.performance.vo.app.*; import com.clx.performance.vo.app.*;
import com.clx.performance.vo.app.owner.OwnerOrderChildVO; import com.clx.performance.vo.app.owner.OwnerOrderChildVO;
import com.clx.performance.vo.pc.*; import com.clx.performance.vo.pc.*;
import com.clx.performance.vo.pc.carrier.settle.CarrierPagePlatformServiceFeeConfigVO;
import com.clx.user.enums.driver.DriverInfoEnum; import com.clx.user.enums.driver.DriverInfoEnum;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo; import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.clx.user.vo.feign.OwnerInfoFeignVO; import com.clx.user.vo.feign.OwnerInfoFeignVO;
...@@ -2432,12 +2431,10 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2432,12 +2431,10 @@ public class OrderChildServiceImpl implements OrderChildService {
RedisConstants.ZJXL_TRUCK_TRACE_LIST); RedisConstants.ZJXL_TRUCK_TRACE_LIST);
//查询平台未完结的运单 //查询平台未完结的运单
List<Integer> list = Arrays.asList( List<Integer> list = Arrays.asList(OrderChildEnum.Status.CREATED.getCode(), OrderChildEnum.Status.PAY.getCode(),
new Integer[]{OrderChildEnum.Status.CREATED.getCode(), OrderChildEnum.Status.PAY.getCode(), OrderChildEnum.Status.GO_TO_SEND.getCode(), OrderChildEnum.Status.ARRIVE_SEND.getCode(), OrderChildEnum.Status.LOAD.getCode(),
OrderChildEnum.Status.GO_TO_SEND.getCode(), OrderChildEnum.Status.ARRIVE_SEND.getCode(), OrderChildEnum.Status.GO_TO_RECEIVE.getCode(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode(),
OrderChildEnum.Status.LOAD.getCode(), OrderChildEnum.Status.GO_TO_RECEIVE.getCode(), OrderChildEnum.Status.UNLOAD.getCode(), OrderChildEnum.Status.UNSETTLE.getCode());
OrderChildEnum.Status.ARRIVE_RECEIVE.getCode(), OrderChildEnum.Status.UNLOAD.getCode(),
OrderChildEnum.Status.UNSETTLE.getCode()});
List<OrderChild> orderChildList = orderChildDao.listOrderChild(list); List<OrderChild> orderChildList = orderChildDao.listOrderChild(list);
for (OrderChild child : orderChildList) { for (OrderChild child : orderChildList) {
...@@ -2500,6 +2497,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2500,6 +2497,7 @@ public class OrderChildServiceImpl implements OrderChildService {
expect.setExpectReceiveTime(DateUtils.formatDateTime(expectTime).get()); expect.setExpectReceiveTime(DateUtils.formatDateTime(expectTime).get());
expect.setExpectReceiveTimeSecond(plusTime); expect.setExpectReceiveTimeSecond(plusTime);
} }
expect.setCreateTime(DateUtils.formatDateTime(LocalDateTime.now()).get());
cacheOrderChildExpectData(childNo,expect); cacheOrderChildExpectData(childNo,expect);
} }
} }
...@@ -2551,6 +2549,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2551,6 +2549,7 @@ public class OrderChildServiceImpl implements OrderChildService {
* @Param [orderChildNo] * @Param [orderChildNo]
* @return * @return
**/ **/
@Override
public List<OrderChildExpectDTO> getOrderChildExpect(String orderChildNo){ public List<OrderChildExpectDTO> getOrderChildExpect(String orderChildNo){
List<String> keyList = (List<String>) redisTemplate.opsForHash().get( List<String> keyList = (List<String>) redisTemplate.opsForHash().get(
RedisConstants.ORDER_CHILD_EXPECT_TIME_DATA_KEY_MAP, orderChildNo); RedisConstants.ORDER_CHILD_EXPECT_TIME_DATA_KEY_MAP, orderChildNo);
......
...@@ -38,4 +38,5 @@ public interface OrderChildStruct { ...@@ -38,4 +38,5 @@ public interface OrderChildStruct {
List<LineWarnTruckTraceInfoVO> convertLineWarnTruckTraceInfoVO(List<OrderChild> list); List<LineWarnTruckTraceInfoVO> convertLineWarnTruckTraceInfoVO(List<OrderChild> list);
OrderChildMessage convert2Message(OrderChild item);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论