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

Merge branch 'refs/heads/v14.4_vehicle_warn_20240425' into test

# Conflicts: # performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnMqHandlerServiceImpl.java # performance-web/src/main/java/com/clx/performance/service/impl/vehiclewarn/VehicleWarnParkWarnServiceImpl.java
......@@ -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启用
......
......@@ -271,7 +271,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();
// 车辆
......@@ -325,6 +330,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,7 +156,34 @@ public class VehicleWarnMqHandlerServiceImpl implements VehicleWarnMqHandlerServ
commonInfo.setReceiveAddressDistance(vehicleWarnCommonService.getNeedDistance(commonInfo.getCurrentPosition(), vehicleWarnChild.getReceiveLongitude(), vehicleWarnChild.getReceiveLatitude()));
}
log.info("commonInfo:{}", commonInfo.toString());
// 未装车前往目的地判断
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);
// 前往货源地超时
......@@ -258,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());
log.info("停留超时,停留时间:{}", parkTime);
if (parkTime == 0) {return;}
......@@ -101,20 +91,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();
......@@ -107,19 +94,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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论