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

运单预警

上级 4d7ab888
......@@ -31,6 +31,14 @@ public class VehicleWarnChildDaoImpl extends BaseDaoImpl<VehicleWarnChildMapper,
);
}
@Override
public boolean updateEstimateLoadTime(VehicleWarnChild item) {
return update(lUdWrapper()
.eq(VehicleWarnChild::getId, item.getId())
.set(VehicleWarnChild::getEstimateLoadTime, item.getEstimateLoadTime())
);
}
@Override
public Optional<VehicleWarnChild> findByChildNo(String childNo) {
return Optional.of(childNo)
......
......@@ -11,6 +11,7 @@ public interface VehicleWarnChildDao extends BaseDao<VehicleWarnChildMapper, Veh
boolean updateTraceTime(VehicleWarnChild item);
boolean updateReceiveAddressDistance(VehicleWarnChild item);
boolean updateEstimateLoadTime(VehicleWarnChild item);
Optional<VehicleWarnChild> findByChildNo(String childNo);
List<VehicleWarnChild> ListTruckNoOfTrace();
......
......@@ -27,6 +27,8 @@ public class VehicleWarnCommonInfoDTO {
private LocalDateTime lastArriveSendTime; //最晚到达货源地时间
private LocalDateTime lastArriveReceiveTime; //最晚到达目的地时间
private boolean gotoReceive; //前往或目的地
private LocalDateTime gotoReceiveTime; //前往或目的地时间
LocalDateTime currentTime; //当前时间
......
......@@ -39,6 +39,7 @@ public class VehicleWarnChild implements HasKey<Integer> {
private Integer arriveReceiveExpectTime; //预计到达目的地时间 (min)
private LocalDateTime takeTime; //接单时间
private Integer receiveAddressDistance; //距离目的地距离(m)
private LocalDateTime estimateLoadTime; //轨迹更新时间
private LocalDateTime traceTime; //轨迹更新时间
private Integer traceStatus; //轨迹更新状态:0禁止 1启用
private Integer wanStatus; //预警更新状态:0禁用 1启用
......
......@@ -270,7 +270,12 @@ public class TruckTraceServiceImpl implements TruckTraceService {
@Override
public int getParkTime(String truckNo, Long userNo) {
String beginTime = LocalDateTimeUtils.formatTime(LocalDateTime.now().minusDays(1));
return getParkTime(truckNo, userNo, LocalDateTime.now().minusDays(1));
}
@Override
public int getParkTime(String truckNo, Long userNo, LocalDateTime beginDateTime) {
String beginTime = LocalDateTimeUtils.formatTime(beginDateTime);
String endTime = LocalDateTimeUtils.formatTime();
// 车辆
......@@ -324,6 +329,7 @@ public class TruckTraceServiceImpl implements TruckTraceService {
return 0;
}
@Override
public BigDecimal[] getCurrentTruckPosition(String truckNo) {
String beginTime = LocalDateTimeUtils.formatTime(LocalDateTime.now().minusMinutes(5));
......
......@@ -89,7 +89,7 @@ public class VehicleWarnConfigServiceImpl implements VehicleWarnConfigService {
vehicleWarnConfigDao.updateConfig(vehicleWarnConfig);
// 同步历史数据
VehicleWarnInfo vehicleWarnInfo = new VehicleWarnInfo();
vehicleWarnInfoDao.updateByConfig(vehicleWarnConfig.getId(), vehicleWarnInfo.getWarnName(), vehicleWarnInfo.getWarnLevel());
vehicleWarnInfoDao.updateByConfig(vehicleWarnConfig.getId(), vehicleWarnConfig.getWarnName(), vehicleWarnConfig.getWarnLevel());
}
@Transactional(rollbackFor = Exception.class)
......
......@@ -43,6 +43,7 @@ import java.util.Objects;
@Slf4j
@Service
public class VehicleWarnMqHandlerServiceImpl implements VehicleWarnMqHandlerService {
private static final Integer DISTANCE_DEFAULT = 2000;
@Autowired
private OrderChildDao orderChildDao;
......@@ -96,6 +97,9 @@ public class VehicleWarnMqHandlerServiceImpl implements VehicleWarnMqHandlerServ
int arriveReceiveExpectTime = vehicleWarnCommonService.getNeedTime(new BigDecimal[]{orderGoods.getSendLongitude(),
orderGoods.getSendLatitude()}, orderGoods.getReceiveLongitude(), orderGoods.getReceiveLatitude());
int needDistance = vehicleWarnCommonService.getNeedDistance(new BigDecimal[]{orderGoods.getSendLongitude(),
orderGoods.getSendLatitude()}, orderGoods.getReceiveLongitude(), orderGoods.getReceiveLatitude());
VehicleWarnChild vehicleWarnChild = new VehicleWarnChild();
vehicleWarnChild.setOrderGoodsNo(orderChild.getOrderGoodsNo());
vehicleWarnChild.setChildNo(orderChild.getChildNo());
......@@ -107,6 +111,7 @@ public class VehicleWarnMqHandlerServiceImpl implements VehicleWarnMqHandlerServ
vehicleWarnChild.setReceiveLatitude(orderGoods.getReceiveLatitude());
vehicleWarnChild.setArriveSendExpectTime(arriveSendExpectTime==0? null : arriveSendExpectTime);
vehicleWarnChild.setArriveReceiveExpectTime(arriveReceiveExpectTime==0? null : arriveReceiveExpectTime);
vehicleWarnChild.setReceiveAddressDistance(needDistance);
vehicleWarnChild.setTakeTime(orderChild.getPayTime());
vehicleWarnChild.setTraceTime(LocalDateTime.now());
......@@ -151,6 +156,35 @@ public class VehicleWarnMqHandlerServiceImpl implements VehicleWarnMqHandlerServ
commonInfo.setReceiveAddressDistance(vehicleWarnCommonService.getNeedDistance(commonInfo.getCurrentPosition(), vehicleWarnChild.getReceiveLongitude(), vehicleWarnChild.getReceiveLatitude()));
}
// 未装车前往目的地判断
commonInfo.setGotoReceive(false);
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())){
// 首次不处理预警
if (vehicleWarnChild.getEstimateLoadTime() != null){
commonInfo.setGotoReceive(true);
commonInfo.setGotoReceiveTime(vehicleWarnChild.getEstimateLoadTime());
}
else {
Integer needDistance = commonInfo.getReceiveAddressDistance();
if (vehicleWarnChild.getReceiveAddressDistance()-needDistance > DISTANCE_DEFAULT){
commonInfo.setGotoReceive(true);
commonInfo.setGotoReceiveTime(LocalDateTime.now());
vehicleWarnChild.setEstimateLoadTime(commonInfo.getGotoReceiveTime());
vehicleWarnChildDao.updateEstimateLoadTime(vehicleWarnChild);
}
}
}
else {
if (orderChild.getLoadTime() != null){
commonInfo.setGotoReceive(true);
commonInfo.setGotoReceiveTime(orderChild.getLoadTime());
}
}
log.info("commonInfo:{}", commonInfo);
// 前往货源地超时
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.CREATED.getCode())
......@@ -256,11 +290,6 @@ public class VehicleWarnMqHandlerServiceImpl implements VehicleWarnMqHandlerServ
}
}
// 更新目的地距离
if (commonInfo.getReceiveAddressDistance() != null) {
vehicleWarnChild.setReceiveAddressDistance(commonInfo.getReceiveAddressDistance());
vehicleWarnChildDao.updateReceiveAddressDistance(vehicleWarnChild);
}
}
@Override
......
......@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
......@@ -46,22 +47,11 @@ public class VehicleWarnParkWarnServiceImpl implements VehicleWarnParkWarnServic
public void packTimeout(OrderChild orderChild, VehicleWarnChild vehicleWarnChild, VehicleWarnCommonInfoDTO commonInfo){
// 未装车前往目的地判断
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())){
// 首次不处理预警
if (vehicleWarnChild.getReceiveAddressDistance() == null){
return;
}
else {
Integer needDistance = commonInfo.getReceiveAddressDistance();
// 未前往目的地不处理预警
if (vehicleWarnChild.getReceiveAddressDistance()-needDistance < DISTANCE_DEFAULT){return;}
}
}
if (!commonInfo.isGotoReceive()) {return;}
orderChild.setLoadTime(commonInfo.getGotoReceiveTime());
// 停留时间
int parkTime = truckTraceService.getParkTime(vehicleWarnChild.getTruckNo(), vehicleWarnChild.getDriverUserNo());
int parkTime = truckTraceService.getParkTime(vehicleWarnChild.getTruckNo(), vehicleWarnChild.getDriverUserNo(), orderChild.getLoadTime());
if (parkTime == 0) {return;}
List<VehicleWarnConfig> vehicleWarnConfigList = vehicleWarnConfigDao.listByWarnType(VehicleWarnConfigEnum.WarnType.PARK_TIMEOUT.getCode());
......@@ -97,20 +87,8 @@ public class VehicleWarnParkWarnServiceImpl implements VehicleWarnParkWarnServic
public void sensitiveAreaParkTimeout(OrderChild orderChild, VehicleWarnChild vehicleWarnChild, VehicleWarnCommonInfoDTO commonInfo) {
// 未装车前往目的地判断
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())){
// 首次不处理预警
if (vehicleWarnChild.getReceiveAddressDistance() == null){
return;
}
else {
Integer needDistance = commonInfo.getReceiveAddressDistance();
// 未前往目的地不处理预警
if (vehicleWarnChild.getReceiveAddressDistance()-needDistance < DISTANCE_DEFAULT){return;}
}
}
if (!commonInfo.isGotoReceive()) {return;}
orderChild.setLoadTime(commonInfo.getGotoReceiveTime());
// 停留时间
int parkTime = truckTraceService.getParkTime(vehicleWarnChild.getTruckNo(), vehicleWarnChild.getDriverUserNo());
......
......@@ -44,22 +44,9 @@ public class VehicleWarnReceiveAddressWarnServiceImpl implements VehicleWarnRece
if (vehicleWarnChild.getArriveReceiveExpectTime() == null) {return;}
// 未装车前往目的地判断
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())){
if (!commonInfo.isGotoReceive()) {return;}
// 首次不处理预警
if (vehicleWarnChild.getReceiveAddressDistance() == null){
return;
}
else {
Integer needDistance = commonInfo.getReceiveAddressDistance();
// 未前往目的地不处理预警
if (vehicleWarnChild.getReceiveAddressDistance()-needDistance < DISTANCE_DEFAULT){return;}
// 假定当前已装车
orderChild.setLoadTime(LocalDateTime.now());
}
}
orderChild.setLoadTime(commonInfo.getGotoReceiveTime());
// 理论时间
Integer expectTime = vehicleWarnChild.getArriveReceiveExpectTime();
......@@ -105,19 +92,8 @@ public class VehicleWarnReceiveAddressWarnServiceImpl implements VehicleWarnRece
if (vehicleWarnChild.getArriveReceiveExpectTime() == null) {return;}
// 未装车前往目的地判断
if (Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())){
// 首次不处理预警
if (vehicleWarnChild.getReceiveAddressDistance() == null){
return;
}
else {
Integer needDistance = commonInfo.getReceiveAddressDistance();
// 未前往目的地不处理预警
if (vehicleWarnChild.getReceiveAddressDistance()-needDistance < DISTANCE_DEFAULT){return;}
}
}
if (!commonInfo.isGotoReceive()) {return;}
// 计算需要的时间
int needTime = commonInfo.getReceiveAddressTime();
......
......@@ -6,6 +6,7 @@ import com.clx.performance.vo.pc.trace.DriverTraceVO;
import com.clx.performance.vo.pc.trace.DriverTruckTraceVO;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
public interface TruckTraceService {
......@@ -20,6 +21,7 @@ public interface TruckTraceService {
BigDecimal[] getCurrentPosition(String truckNo, Long userNo);
int getParkTime(String truckNo, Long userNo);
int getParkTime(String truckNo, Long userNo, LocalDateTime beginTime);
BigDecimal[] getCurrentTruckPosition(String truckNo);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论