xuhy
2026-05-08 3e1d23c69fd8fd76e6365cf796d315bf24f2aacc
新增工单自动派单
1个文件已修改
28 ■■■■■ 已修改文件
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -16,7 +16,6 @@
import com.xiaopeng.api.feignClient.account.SysUserClient;
import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
import com.xiaopeng.api.feignClient.account.XpOperationUserNotificationClient;
import com.xiaopeng.api.feignClient.map.XpMapClient;
import com.xiaopeng.api.feignClient.operation.SmsClient;
import com.xiaopeng.api.feignClient.pushMessage.WebSocketMessageClient;
import com.xiaopeng.api.feignClient.pushMessage.XpAliPushMessageClient;
@@ -68,6 +67,7 @@
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.redisson.api.RLock;
@@ -75,7 +75,6 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.geo.Point;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.data.mongodb.core.query.Criteria;
@@ -1476,8 +1475,13 @@
        }
        List<XpTask.Reject> rejects = Optional.ofNullable(task.getExcluded()).orElse(new ArrayList<>());
        XpTask.Reject reject = task.reject(msg);
        rejects.add(reject);
        if(msg != null && Strings.isNotBlank(task.getHandleUserId())) {
            XpTask.Reject reject = task.reject(msg);
            rejects.add(reject);
            List<Long> id = Collections.singletonList(Long.parseLong(task.getHandleUserId()));
            String roleName = xpOperationUserClient.listByIdsWithRole(id).getData().get(0).getRoleName();
            reject.setRejectUserRoleName(roleName);
        }
        task.setExcluded(rejects);
        task.setReassignmentStatus(1);
        task.setStatus(4);
@@ -1493,9 +1497,9 @@
                .map(String::valueOf).collect(Collectors.joining(","));
//        VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vehicle.getVehicleVin())), VehiclePosition.class);
        VehiclePosition vehiclePosition = new VehiclePosition();
        vehiclePosition.setPoint(new GeoJsonPoint(103.12615621, 30.264561));
        VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vehicle.getVehicleVin())), VehiclePosition.class);
//        VehiclePosition vehiclePosition = new VehiclePosition();
//        vehiclePosition.setPoint(new GeoJsonPoint(103.12615621, 30.264561));
        String handlerUser = chooseNearestAvailableOperationsUser(belongUserIds, vehiclePosition);
        task.setHandleUserId(handlerUser);
        if(handlerUser == null) {
@@ -1505,9 +1509,6 @@
        }
        updateById(task);
        if(StringUtils.isNotBlank(task.getHandleUserId())){
            List<Long> id = Collections.singletonList(Long.parseLong(task.getHandleUserId()));
            String roleName = xpOperationUserClient.listByIdsWithRole(id).getData().get(0).getRoleName();
            reject.setRejectUserRoleName(roleName);
            sendAccidentNotificationAsync(task, vehicle.getPlateNumber(), taskRule.getProcessingTimeLimit());
        }
    }
@@ -1563,7 +1564,7 @@
        task.setCreateTime(LocalDateTime.now());
        this.save(task);
        // 异步发送消息通知
        sendAccidentNotificationAsync(task, vehicle.getPlateNumber(), taskRule.getProcessingTimeLimit());
         sendAccidentNotificationAsync(task, vehicle.getPlateNumber(), taskRule.getProcessingTimeLimit());
    }
    @Override
@@ -1718,6 +1719,7 @@
    }
    @Override
    @Transactional
    public void saveTask(SaveErrorTaskDto dto, Long reportUserId) {
        List<XpTask> saveTask = new ArrayList<>();
@@ -1746,6 +1748,10 @@
            task.setTaskSource(2);
            saveTask.add(task);
        }
        for (XpTask task : saveTask) {
            reassign(task.getId(),null);
        }
        this.saveBatch(saveTask);
    }