提交 84ffaf2b authored 作者: 艾庆国's avatar 艾庆国

运单预警

上级 ba9c6886
package com.clx.performance.param.mq.vehiclewarn;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 通知
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class VehicleWarnTruckWarnNoticeMqParam {
private Integer infoId; //id
}
...@@ -45,4 +45,10 @@ public class RabbitKeyVehicleWarnConstants { ...@@ -45,4 +45,10 @@ public class RabbitKeyVehicleWarnConstants {
public static final String TRUCK_WARN_QUEUE = PREFIX +"truck.warn"+QUEUE; public static final String TRUCK_WARN_QUEUE = PREFIX +"truck.warn"+QUEUE;
public static final String TRUCK_WARN_ROUTING_KEY = PREFIX +"truck.warn"+QUEUE_ROUTING_KEY; public static final String TRUCK_WARN_ROUTING_KEY = PREFIX +"truck.warn"+QUEUE_ROUTING_KEY;
/**
* 车辆预警通知
*/
public static final String TRUCK_WARN_NOTICE_QUEUE = PREFIX +"truckWarn.notice"+QUEUE;
public static final String TRUCK_WARN_NOTICE_ROUTING_KEY = PREFIX +"truckWarn.notice"+QUEUE_ROUTING_KEY;
} }
package com.clx.performance.listener.vehiclewarn;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyVehicleWarnConstants;
import com.clx.performance.param.mq.vehiclewarn.VehicleWarnChildAddMqParam;
import com.clx.performance.service.vehiclewarn.VehicleWarnMqHandlerService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 运单新增 mq
* @Date: 2023-10-20 16:34:40
* @Version: 1.0
*/
@Slf4j
@Component
public class VehicleWarnChildAddListener {
@Autowired
private VehicleWarnMqHandlerService vehicleWarnMqHandlerService;
@RabbitListener(queues = RabbitKeyVehicleWarnConstants.ORDER_CHILD_ADD_QUEUE)
public void process(Message message) {
try{
log.info("车辆预警-运单新增, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<VehicleWarnChildAddMqParam>>(){}).getData());
}catch (Exception e){
log.info("车辆预警-运单新增 失败",e);
}
}
private void process(VehicleWarnChildAddMqParam mq){
vehicleWarnMqHandlerService.orderChildAdd(mq);
}
}
package com.clx.performance.listener.vehiclewarn;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 车辆预警 mq
* @Date: 2023-10-20 16:14:30
* @Version: 1.0
*/
@Slf4j
@Component
public class VehicleWarnDelayListener {
@Autowired
private RabbitTemplate rabbitTemplate;
@RabbitListener(queues = RabbitKeySettlementConstants.DEFAULT_DEAD_QUEUE)
public void process(Message message) {
try{
log.info("车辆预警-延迟, message:{}", message);
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<MqDelay>>(){}).getData());
}catch (Exception e){
log.info("车辆预警-延迟 失败",e);
}
}
void process(MqDelay mq){
Message message = MessageBuilder.withBody(JSON.toJSONString(mq.getData()).getBytes()).build();
rabbitTemplate.send(mq.getExchange(), mq.getRouterKey(), message);
}
}
package com.clx.performance.listener.vehiclewarn;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyVehicleWarnConstants;
import com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnMqParam;
import com.clx.performance.service.vehiclewarn.VehicleWarnMqHandlerService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 运单新增 mq
* @Date: 2023-10-20 16:34:40
* @Version: 1.0
*/
@Slf4j
@Component
public class VehicleWarnTruckWarnListener {
@Autowired
private VehicleWarnMqHandlerService vehicleWarnMqHandlerService;
@RabbitListener(queues = RabbitKeyVehicleWarnConstants.TRUCK_WARN_QUEUE)
public void process(Message message) {
try{
log.info("车辆预警-运单预警, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<VehicleWarnTruckWarnMqParam>>(){}).getData());
}catch (Exception e){
log.info("车辆预警-运单预警 失败",e);
}
}
private void process(VehicleWarnTruckWarnMqParam mq){
vehicleWarnMqHandlerService.truckWarn(mq);
}
}
...@@ -35,9 +35,9 @@ public class VehicleWarnChild implements HasKey<Integer> { ...@@ -35,9 +35,9 @@ public class VehicleWarnChild implements HasKey<Integer> {
private BigDecimal sendLatitude; //发货地址纬度 private BigDecimal sendLatitude; //发货地址纬度
private BigDecimal receiveLongitude; //收货地址经度 private BigDecimal receiveLongitude; //收货地址经度
private BigDecimal receiveLatitude; //收货地址纬度 private BigDecimal receiveLatitude; //收货地址纬度
private LocalDateTime expectSendTime; //预计到达货源地时间 private Integer arriveSendExpectTime; //预计到达货源地时间 (min)
private LocalDateTime expectReceiveTime; //预计到达目的地时间 private Integer arriveReceiveExpectTime; //预计到达目的地时间 (min)
private LocalDateTime takeTime; //接单时间
private LocalDateTime traceTime; //轨迹更新时间 private LocalDateTime traceTime; //轨迹更新时间
private Integer traceStatus; //轨迹更新状态:0禁止 1启用 private Integer traceStatus; //轨迹更新状态:0禁止 1启用
private Integer wanStatus; //预警更新状态:0禁用 1启用 private Integer wanStatus; //预警更新状态:0禁用 1启用
......
package com.clx.performance.service.impl.trace; package com.clx.performance.service.impl.trace;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.vehiclewarn.VehicleWarnChildDao;
import com.clx.performance.dto.zjxl.TruckTraceDTO; import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.enums.ResultEnum;
import com.clx.performance.enums.vehiclewarn.VehicleWarnChildEnum;
import com.clx.performance.esplus.mapper.TruckTraceESPlusMapper; import com.clx.performance.esplus.mapper.TruckTraceESPlusMapper;
import com.clx.performance.esplus.model.TruckTraceESPlus; import com.clx.performance.esplus.model.TruckTraceESPlus;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.vehiclewarn.VehicleWarnChild;
import com.clx.performance.param.mq.trace.TruckTraceSyncMqParam; import com.clx.performance.param.mq.trace.TruckTraceSyncMqParam;
import com.clx.performance.param.temp.TruckTraceAddParam;
import com.clx.performance.service.trace.TruckTraceMqHandlerService; import com.clx.performance.service.trace.TruckTraceMqHandlerService;
import com.clx.performance.utils.LocalDateTimeUtils; import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.zjxl.ZjxlGpsService; import com.clx.performance.utils.zjxl.ZjxlGpsService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -22,12 +28,25 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic ...@@ -22,12 +28,25 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic
@Autowired @Autowired
private ZjxlGpsService zjxlGpsService; private ZjxlGpsService zjxlGpsService;
@Autowired
private VehicleWarnChildDao vehicleWarnChildDao;
@Autowired
private OrderChildDao orderChildDao;
@Autowired @Autowired
private TruckTraceESPlusMapper truckTraceESPlusMapper; private TruckTraceESPlusMapper truckTraceESPlusMapper;
@Transactional(rollbackFor = Exception.class)
@Override @Override
public void truckTracSync(TruckTraceSyncMqParam mq) { public void truckTracSync(TruckTraceSyncMqParam mq) {
VehicleWarnChild vehicleWarnChild = vehicleWarnChildDao.findByChildNo(mq.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
if (orderChild.getFinishTime() != null) {
vehicleWarnChild.setTraceStatus(VehicleWarnChildEnum.TraceStatus.DISABLE.getCode());
}
vehicleWarnChild.setTraceTime(LocalDateTimeUtils.parseTime(mq.getEndTime()));
List<TruckTraceDTO> list = zjxlGpsService.getTruckTrace(mq.getTruckNo(), mq.getBeginTime(), mq.getEndTime()); List<TruckTraceDTO> list = zjxlGpsService.getTruckTrace(mq.getTruckNo(), mq.getBeginTime(), mq.getEndTime());
if (list.isEmpty()) {return;} if (list.isEmpty()) {return;}
...@@ -49,6 +68,8 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic ...@@ -49,6 +68,8 @@ public class TruckTraceMqHandlerServiceImpl implements TruckTraceMqHandlerServic
// 保存 // 保存
truckTraceESPlusMapper.insertBatch(esList); truckTraceESPlusMapper.insertBatch(esList);
// 更新同步时间
vehicleWarnChildDao.updateTraceTime(vehicleWarnChild);
} }
} }
...@@ -17,6 +17,8 @@ import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper; ...@@ -17,6 +17,8 @@ import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -105,4 +107,34 @@ public class TruckTraceServiceImpl implements TruckTraceService { ...@@ -105,4 +107,34 @@ public class TruckTraceServiceImpl implements TruckTraceService {
driverTraceESPlusMapper.insertBatch(list); driverTraceESPlusMapper.insertBatch(list);
} }
@Override
public BigDecimal[] getLastPosition(String truckNo, Long userNo) {
String beginTime = LocalDateTimeUtils.formatTime(LocalDateTime.now().minusHours(1));
String endTime = LocalDateTimeUtils.formatTime();
List<TruckTraceESPlus> list = truckTraceESPlusMapper.selectList(new LambdaEsQueryWrapper<TruckTraceESPlus>()
.eq(TruckTraceESPlus::getTruckNo, truckNo)
.ge(TruckTraceESPlus::getGpsTime, beginTime)
.le(TruckTraceESPlus::getGpsTime, endTime)
.orderByDesc("gpsTime")
.limit(1)
);
if (!list.isEmpty()){
return list.get(0).getLocation();
}
List<DriverTraceESPlus> list1 = driverTraceESPlusMapper.selectList(new LambdaEsQueryWrapper<DriverTraceESPlus>()
.eq(DriverTraceESPlus::getUserNo, userNo)
.ge(DriverTraceESPlus::getPositionTime, beginTime)
.le(DriverTraceESPlus::getPositionTime, endTime)
.orderByDesc("positionTime")
.limit(1)
);
if (!list1.isEmpty()){
return list1.get(0).getLocation();
}
return null;
}
} }
...@@ -34,6 +34,7 @@ import java.util.List; ...@@ -34,6 +34,7 @@ import java.util.List;
@Slf4j @Slf4j
@Service @Service
public class VehicleWarnInfoServiceImpl implements VehicleWarnInfoService { public class VehicleWarnInfoServiceImpl implements VehicleWarnInfoService {
private final Integer TRUCK_TRACE_DAY_MAX = 3;
@Autowired @Autowired
private VehicleWarnInfoDao vehicleWarnInfoDao; private VehicleWarnInfoDao vehicleWarnInfoDao;
...@@ -96,7 +97,7 @@ public class VehicleWarnInfoServiceImpl implements VehicleWarnInfoService { ...@@ -96,7 +97,7 @@ public class VehicleWarnInfoServiceImpl implements VehicleWarnInfoService {
OrderChild orderChild = orderChildDao.getByChildNo(vehicleWarnInfo.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND); OrderChild orderChild = orderChildDao.getByChildNo(vehicleWarnInfo.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
LocalDateTime beginTime = vehicleWarnInfo.getTakeTime(); LocalDateTime beginTime = vehicleWarnInfo.getTakeTime();
LocalDateTime endTime = vehicleWarnInfo.getTakeTime(); LocalDateTime endTime = LocalDateTime.now();
if (orderChild.getArriveSendTime() != null) {endTime = orderChild.getArriveSendTime();} if (orderChild.getArriveSendTime() != null) {endTime = orderChild.getArriveSendTime();}
if (orderChild.getLoadTime() != null) {endTime = orderChild.getLoadTime();} if (orderChild.getLoadTime() != null) {endTime = orderChild.getLoadTime();}
if (orderChild.getArriveReceiveTime() != null) {endTime = orderChild.getArriveReceiveTime();} if (orderChild.getArriveReceiveTime() != null) {endTime = orderChild.getArriveReceiveTime();}
...@@ -104,7 +105,7 @@ public class VehicleWarnInfoServiceImpl implements VehicleWarnInfoService { ...@@ -104,7 +105,7 @@ public class VehicleWarnInfoServiceImpl implements VehicleWarnInfoService {
if (orderChild.getConfirmTime() != null) {endTime = orderChild.getConfirmTime();} if (orderChild.getConfirmTime() != null) {endTime = orderChild.getConfirmTime();}
if (orderChild.getSettleTime() != null) {endTime = orderChild.getSettleTime();} if (orderChild.getSettleTime() != null) {endTime = orderChild.getSettleTime();}
if (orderChild.getFinishTime() != null) {endTime = orderChild.getFinishTime();} if (orderChild.getFinishTime() != null) {endTime = orderChild.getFinishTime();}
if (endTime.isAfter(beginTime.plusDays(3))) {endTime = beginTime.plusDays(3);} //最多查询3天 if (endTime.isAfter(beginTime.plusDays(TRUCK_TRACE_DAY_MAX))) {endTime = beginTime.plusDays(TRUCK_TRACE_DAY_MAX);} //最多查询3天
List<DriverTruckTraceVO> truckTraceList = truckTraceService.listTruckTraceByTime(vehicleWarnInfo.getTruckNo(), LocalDateTimeUtils.formatTime(beginTime), LocalDateTimeUtils.formatTime(endTime)); List<DriverTruckTraceVO> truckTraceList = truckTraceService.listTruckTraceByTime(vehicleWarnInfo.getTruckNo(), LocalDateTimeUtils.formatTime(beginTime), LocalDateTimeUtils.formatTime(endTime));
List<DriverTraceVO> driverTraceList = truckTraceService.listDriverTraceByTime(vehicleWarnInfo.getDriverUserNo(), LocalDateTimeUtils.formatTime(beginTime), LocalDateTimeUtils.formatTime(endTime)); List<DriverTraceVO> driverTraceList = truckTraceService.listDriverTraceByTime(vehicleWarnInfo.getDriverUserNo(), LocalDateTimeUtils.formatTime(beginTime), LocalDateTimeUtils.formatTime(endTime));
......
package com.clx.performance.service.impl.vehiclewarn;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.vehiclewarn.VehicleWarnChildDao;
import com.clx.performance.dao.vehiclewarn.VehicleWarnInfoDao;
import com.clx.performance.dto.gd.GdRouteDTO;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.ResultEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.vehiclewarn.VehicleWarnChild;
import com.clx.performance.model.vehiclewarn.VehicleWarnInfo;
import com.clx.performance.param.mq.vehiclewarn.VehicleWarnChildAddMqParam;
import com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnMqParam;
import com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnNoticeMqParam;
import com.clx.performance.service.trace.TruckTraceService;
import com.clx.performance.service.vehiclewarn.VehicleWarnLoadAndUnloadWarnService;
import com.clx.performance.service.vehiclewarn.VehicleWarnMqHandlerService;
import com.clx.performance.service.vehiclewarn.VehicleWarnSendAddressWarnService;
import com.clx.performance.utils.gd.GdService;
import com.msl.common.exception.ServiceSystemException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
@Slf4j
@Service
public class VehicleWarnMqHandlerServiceImpl implements VehicleWarnMqHandlerService {
private static final Integer SEC_FER_MIN = 60;
@Autowired
private OrderChildDao orderChildDao;
@Autowired
private VehicleWarnChildDao vehicleWarnChildDao;
@Autowired
private VehicleWarnInfoDao vehicleWarnInfoDao;
@Autowired
private OrderGoodsDao orderGoodsDao;
@Autowired
private VehicleWarnSendAddressWarnService vehicleWarnSendAddressWarnService;
@Autowired
private VehicleWarnLoadAndUnloadWarnService vehicleWarnLoadAndUnloadWarnService;
@Autowired
private TruckTraceService truckTraceService;
@Autowired
private GdService gdService;
@Override
public void orderChildAdd(VehicleWarnChildAddMqParam mq) {
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
int arriveSendExpectTime = getNeedTime(orderChild.getTruckNo(), orderChild.getDriverUserNo(), orderGoods.getSendLongitude(), orderGoods.getSendLatitude());
int arriveReceiveExpectTime = getNeedTime(orderChild.getTruckNo(), orderChild.getDriverUserNo(), orderGoods.getReceiveLongitude(), orderGoods.getReceiveLatitude());
VehicleWarnChild vehicleWarnChild = new VehicleWarnChild();
vehicleWarnChild.setOrderNo(orderChild.getOrderNo());
vehicleWarnChild.setChildNo(orderChild.getChildNo());
vehicleWarnChild.setTruckNo(orderChild.getTruckNo());
vehicleWarnChild.setDriverUserNo(orderChild.getDriverUserNo());
vehicleWarnChild.setSendLongitude(orderGoods.getSendLongitude());
vehicleWarnChild.setSendLatitude(orderGoods.getSendLatitude());
vehicleWarnChild.setReceiveLongitude(orderGoods.getReceiveLongitude());
vehicleWarnChild.setReceiveLatitude(orderGoods.getReceiveLatitude());
vehicleWarnChild.setArriveSendExpectTime(arriveSendExpectTime==0? null : arriveSendExpectTime);
vehicleWarnChild.setArriveReceiveExpectTime(arriveReceiveExpectTime==0? null : arriveReceiveExpectTime);
vehicleWarnChild.setTraceTime(orderChild.getPayTime());
vehicleWarnChildDao.saveEntity(vehicleWarnChild);
}
@Override
public void truckWarn(VehicleWarnTruckWarnMqParam mq) {
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
VehicleWarnChild vehicleWarnChild = vehicleWarnChildDao.findByChildNo(mq.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
// 前往货源地超时
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.CREATED.getCode())
|| Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.PAY.getCode())
|| Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.GO_TO_SEND.getCode())
){
vehicleWarnSendAddressWarnService.gotoSendAddressTimeout(orderChild, vehicleWarnChild);
}
// 到达货源地超时
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.CREATED.getCode())
|| Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.PAY.getCode())
|| Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.GO_TO_SEND.getCode())
){
vehicleWarnSendAddressWarnService.arriveSendAddressTimeout(orderChild, vehicleWarnChild);
}
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())
){
vehicleWarnLoadAndUnloadWarnService.loadTimeout(orderChild, vehicleWarnChild);
}
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())
){
vehicleWarnLoadAndUnloadWarnService.unloadTimeout(orderChild, vehicleWarnChild);
}
}
@Override
public void truckWarnNotice(VehicleWarnTruckWarnNoticeMqParam mq) {
VehicleWarnInfo vehicleWarnInfo = vehicleWarnInfoDao.findById(mq.getInfoId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
// 发送短信
// 外呼
}
/**
* 获取需要时间(min)
*/
private int getNeedTime(String truckNo, Long userNo,
BigDecimal destinationLongitude, BigDecimal destinationLatitude){
int needTime = 0;
BigDecimal[] lastPosition = truckTraceService.getLastPosition(truckNo, userNo);
if (lastPosition != null) {
try {
List<GdRouteDTO> gdRouteDTOS = gdService.getRoute(lastPosition[0], lastPosition[1], destinationLongitude, destinationLatitude);
if (!gdRouteDTOS.isEmpty()){
needTime = gdRouteDTOS.get(0).getDuration() /SEC_FER_MIN;
}
} catch (ServiceSystemException e) {
log.info("获取高德线路失败, truckNo:{}, userNo:{}, msg:{}", truckNo, userNo, e.getMessage());
}
}
return needTime;
}
}
...@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper; ...@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyVehicleWarnConstants; import com.clx.performance.constant.RabbitKeyVehicleWarnConstants;
import com.clx.performance.param.mq.vehiclewarn.VehicleWarnChildAddMqParam; import com.clx.performance.param.mq.vehiclewarn.VehicleWarnChildAddMqParam;
import com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnMqParam; import com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnMqParam;
import com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnNoticeMqParam;
import com.clx.performance.service.vehiclewarn.VehicleWarnMqService; import com.clx.performance.service.vehiclewarn.VehicleWarnMqService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
...@@ -43,4 +44,15 @@ public class VehicleWarnMqServiceImpl implements VehicleWarnMqService { ...@@ -43,4 +44,15 @@ public class VehicleWarnMqServiceImpl implements VehicleWarnMqService {
rabbitTemplate.send(RabbitKeyVehicleWarnConstants.DEFAULT_EXCHANGE, RabbitKeyVehicleWarnConstants.DEFAULT_DELAY_ROUTING_KEY, message); rabbitTemplate.send(RabbitKeyVehicleWarnConstants.DEFAULT_EXCHANGE, RabbitKeyVehicleWarnConstants.DEFAULT_DELAY_ROUTING_KEY, message);
} }
@Override
public void truckWarnNotice(Integer infoId) {
VehicleWarnTruckWarnNoticeMqParam mq = new VehicleWarnTruckWarnNoticeMqParam();
mq.setInfoId(infoId);
MqDelay delay = new MqDelay<>(RabbitKeyVehicleWarnConstants.DEFAULT_EXCHANGE, RabbitKeyVehicleWarnConstants.TRUCK_WARN_NOTICE_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyVehicleWarnConstants.DEFAULT_EXCHANGE, RabbitKeyVehicleWarnConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
} }
...@@ -5,6 +5,7 @@ import com.clx.performance.param.temp.TruckTraceAddParam; ...@@ -5,6 +5,7 @@ import com.clx.performance.param.temp.TruckTraceAddParam;
import com.clx.performance.vo.pc.trace.DriverTraceVO; import com.clx.performance.vo.pc.trace.DriverTraceVO;
import com.clx.performance.vo.pc.trace.DriverTruckTraceVO; import com.clx.performance.vo.pc.trace.DriverTruckTraceVO;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
public interface TruckTraceService { public interface TruckTraceService {
...@@ -15,4 +16,6 @@ public interface TruckTraceService { ...@@ -15,4 +16,6 @@ public interface TruckTraceService {
void truckTraceSave(TruckTraceAddParam param); void truckTraceSave(TruckTraceAddParam param);
void driverTraceSave(DriverTraceAddParam param); void driverTraceSave(DriverTraceAddParam param);
BigDecimal[] getLastPosition(String truckNo, Long userNo);
} }
package com.clx.performance.service.vehiclewarn;
import com.clx.performance.param.mq.vehiclewarn.VehicleWarnChildAddMqParam;
import com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnMqParam;
import com.clx.performance.param.mq.vehiclewarn.VehicleWarnTruckWarnNoticeMqParam;
public interface VehicleWarnMqHandlerService {
void orderChildAdd(VehicleWarnChildAddMqParam mq);
void truckWarn(VehicleWarnTruckWarnMqParam mq);
void truckWarnNotice(VehicleWarnTruckWarnNoticeMqParam mq);
}
...@@ -5,4 +5,6 @@ public interface VehicleWarnMqService { ...@@ -5,4 +5,6 @@ public interface VehicleWarnMqService {
void orderChildAdd(String childNo); void orderChildAdd(String childNo);
void truckWarn(String childNo); void truckWarn(String childNo);
void truckWarnNotice(Integer infoId);
} }
package com.clx.performance.service.vehiclewarn;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.vehiclewarn.VehicleWarnChild;
public interface VehicleWarnSendAddressWarnService {
void gotoSendAddressTimeout(OrderChild orderChild, VehicleWarnChild vehicleWarnChild);
void arriveSendAddressTimeout(OrderChild orderChild, VehicleWarnChild vehicleWarnChild);
}
...@@ -33,24 +33,33 @@ public class GdService { ...@@ -33,24 +33,33 @@ public class GdService {
private static final String REGEO_API = "https://restapi.amap.com/v3/geocode/regeo";//逆地理编码 private static final String REGEO_API = "https://restapi.amap.com/v3/geocode/regeo";//逆地理编码
private static final Integer STRATEGY_DEFAULT = 32;
private static final Integer STRATEGY_33 = 10;
private String gaodeKey = "b2550e16bbc7bf9f6cd168e0f21709fc"; private String gaodeKey = "b2550e16bbc7bf9f6cd168e0f21709fc";
public List<GdRouteDTO> getRoute(BigDecimal originLongitude, BigDecimal originLatitude,
BigDecimal destinationLongitude, BigDecimal destinationLatitude, Integer strategy) {
return getRoute(gaodeKey, strategy, originLongitude, originLatitude, destinationLongitude, destinationLatitude);
}
public List<GdRouteDTO> getRoute(BigDecimal originLongitude, BigDecimal originLatitude, public List<GdRouteDTO> getRoute(BigDecimal originLongitude, BigDecimal originLatitude,
BigDecimal destinationLongitude, BigDecimal destinationLatitude) { BigDecimal destinationLongitude, BigDecimal destinationLatitude) {
return getRoute(gaodeKey, originLongitude, originLatitude, destinationLongitude, destinationLatitude); return getRoute(gaodeKey, STRATEGY_DEFAULT, originLongitude, originLatitude, destinationLongitude, destinationLatitude);
} }
public static List<GdRouteDTO> getRoute(String key, BigDecimal originLongitude, BigDecimal originLatitude, public static List<GdRouteDTO> getRoute(String key, Integer strategy, BigDecimal originLongitude, BigDecimal originLatitude,
BigDecimal destinationLongitude, BigDecimal destinationLatitude) { BigDecimal destinationLongitude, BigDecimal destinationLatitude) {
//log.info("高德线路规划开始"); //log.info("高德线路规划开始");
List<GdRouteDTO> routeList = new ArrayList<>(); List<GdRouteDTO> routeList = new ArrayList<>();
String url = DIRECTION_API+"?origin=" + originLongitude.doubleValue()+","+originLatitude.doubleValue() String url = DIRECTION_API+"?origin=" + originLongitude.doubleValue()+","+originLatitude.doubleValue()
+ "&destination=" + destinationLongitude.doubleValue()+","+ destinationLatitude.doubleValue() + "&destination=" + destinationLongitude.doubleValue()+","+ destinationLatitude.doubleValue()
+ "&strategy="+strategy
+ "&output=json&key="+key+"&extensions=base&show_fields=cost,tmcs"; + "&output=json&key="+key+"&extensions=base&show_fields=cost,tmcs";
//解析返回的结果 //解析返回的结果
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论