From bbaaa45523898f20895387890f122aed1c32209c Mon Sep 17 00:00:00 2001 From: lzq Date: Thu, 16 Oct 2025 16:40:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=B6=85=E6=97=B6=E6=A3=80?= =?UTF-8?q?=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/sichen/support/TaskStore.java | 23 ++++++++--- .../order/mapper/OrderInfoMapper.java | 3 ++ .../order/service/OrderInfoService.java | 38 ++++++++++++++++++- .../order/service/OrderInfoServiceTask.java | 22 +++++++++++ .../mapper/order/OrderInfoMapper.xml | 7 ++++ 5 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoServiceTask.java diff --git a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/support/TaskStore.java b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/support/TaskStore.java index dda0f53..48245be 100644 --- a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/support/TaskStore.java +++ b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/support/TaskStore.java @@ -3,6 +3,7 @@ package com.njzscloud.common.sichen.support; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.njzscloud.common.core.tuple.Tuple2; import com.njzscloud.common.core.utils.GroupUtil; @@ -12,7 +13,9 @@ import com.njzscloud.common.sichen.contant.ScheduleType; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.ApplicationContext; +import org.springframework.context.event.EventListener; import java.lang.reflect.Method; import java.util.*; @@ -20,7 +23,7 @@ import java.util.stream.Collectors; @Slf4j @RequiredArgsConstructor -public class TaskStore implements BeanPostProcessor { +public class TaskStore { private final Map> fn = new HashMap<>(); private final List tasks = new LinkedList<>(); private final TaskService taskService; @@ -67,10 +70,19 @@ public class TaskStore implements BeanPostProcessor { taskService.updateBatchById(list); } - @Override - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { + @EventListener(ApplicationReadyEvent.class) + public void onApplicationReadyEvent() { + ApplicationContext applicationContext = SpringUtil.getApplicationContext(); + String[] beanNames = applicationContext.getBeanDefinitionNames(); + for (String beanName : beanNames) { + Object bean = applicationContext.getBean(beanName); + process(bean); + } + } + + public void process(Object bean) throws BeansException { Class clazz = bean.getClass(); - for (Method method : clazz.getDeclaredMethods()) { + for (Method method : clazz.getMethods()) { Task task = method.getAnnotation(Task.class); if (task != null) { String value = task.value(); @@ -102,6 +114,5 @@ public class TaskStore implements BeanPostProcessor { } } } - return bean; } } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/mapper/OrderInfoMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/mapper/OrderInfoMapper.java index 06e2e42..26c2b28 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/mapper/OrderInfoMapper.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/mapper/OrderInfoMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njzscloud.supervisory.biz.pojo.entity.BizCompanyEntity; import com.njzscloud.supervisory.biz.pojo.entity.BizTruckEntity; +import com.njzscloud.supervisory.device.pojo.entity.DeviceLocalizerEntity; import com.njzscloud.supervisory.order.pojo.entity.OrderInfoEntity; import com.njzscloud.supervisory.order.pojo.result.OrderExportResult; import com.njzscloud.supervisory.order.pojo.result.OrderPagingResult; @@ -41,4 +42,6 @@ public interface OrderInfoMapper extends BaseMapper { BizTruckEntity getTruckInfo(@Param("truckId") Long truckId); BizCompanyEntity getTransInfo(@Param("transCompanyId") Long transCompanyId); + + DeviceLocalizerEntity gpsLastOnlineTime(@Param("gpsId") String gpsId); } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java index 29d8634..38b5026 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java @@ -31,6 +31,7 @@ import com.njzscloud.supervisory.biz.service.BizWarnService; import com.njzscloud.supervisory.biz.service.TruckLocationTrackService; import com.njzscloud.supervisory.config.AppProperties; import com.njzscloud.supervisory.constant.Constant; +import com.njzscloud.supervisory.device.pojo.entity.DeviceLocalizerEntity; import com.njzscloud.supervisory.expense.contant.ExpenseItemCategory; import com.njzscloud.supervisory.expense.contant.Scope; import com.njzscloud.supervisory.expense.pojo.entity.ExpenseItemsConfigEntity; @@ -711,7 +712,6 @@ public class OrderInfoService extends ServiceImpl Exceptions.clierr("订单未分配车辆")); BizTruckEntity truckInfo = baseMapper.getTruckInfo(truckId); @@ -732,9 +732,44 @@ public class OrderInfoService extends ServiceImpl timeOutOrderList = this.list(Wrappers.lambdaQuery() + .isNotNull(OrderInfoEntity::getAuditTime) + .le(OrderInfoEntity::getAuditTime, LocalDateTime.now().minusHours(12)) + .notIn(OrderInfoEntity::getOrderStatus, OrderStatus.YiJinChang, OrderStatus.YiChuChang, OrderStatus.YiWanCheng) + ); + if (CollUtil.isEmpty(timeOutOrderList)) return; + log.info("有超时订单:{} 个", timeOutOrderList.size()); + for (OrderInfoEntity orderInfoEntity : timeOutOrderList) { + Long id = orderInfoEntity.getId(); + String sn = orderInfoEntity.getSn(); + boolean exists = bizWarnService.exists(Wrappers.lambdaQuery().eq(BizWarnEntity::getOrderId, id).eq(BizWarnEntity::getWarnCategory, WarnCategory.SAFETY.getVal())); + if (exists) continue; + bizWarnService.save(new BizWarnEntity() + .setWarnCategory(WarnCategory.SAFETY.getVal()) + .setWarnContent(StrUtil.format("订单:{},已超时", sn)) + .setOrderId(id) + ); + } + } + private void startTuqiangTrack(String gpsId, String licensePlate, Long orderInfoId, Long truckId) { CompletableFuture.runAsync(() -> { Assert.notEmpty(gpsId, () -> Exceptions.clierr("车辆未绑定GPS")); + DeviceLocalizerEntity deviceLocalizerEntity = baseMapper.gpsLastOnlineTime(gpsId); + LocalDateTime lastTime = deviceLocalizerEntity.getLastTime(); + boolean after = lastTime.isBefore(LocalDateTime.now().minusMinutes(5)); + if (after) { + bizWarnService.save(new BizWarnEntity() + .setWarnCategory(WarnCategory.EQUIPMENT.getVal()) + .setWarnContent(StrUtil.format("{} 绑定的 GPS 设备已离线,设备号:{}", licensePlate, gpsId)) + .setOrderId(orderInfoId) + ); + return; + } + Mqtt.subscribe(gpsId + "/track_location", (msg) -> { RealtimeLocationResult realtimeLocationResult = msg.getMsg(RealtimeLocationResult.class); if (realtimeLocationResult == null) { @@ -769,7 +804,6 @@ public class OrderInfoService extends ServiceImpl +