From dae9cfa94a169a22aadcbcaedda4e92ee3e93d44 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期日, 01 三月 2026 00:53:17 +0800
Subject: [PATCH] bug修改
---
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java | 139 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 139 insertions(+), 0 deletions(-)
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
index 0ffb655..6789a28 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -952,6 +952,73 @@
@Override
public List<TaskManagementPageListVO> exportList(TaskManagementPageListQuery query) {
List<TaskManagementPageListVO> list = this.baseMapper.exportList(query);
+ for (TaskManagementPageListVO taskManagementPageListVO : list) {
+ if (org.springframework.util.StringUtils.hasLength(taskManagementPageListVO.getHandleUserId())){
+ String[] split = taskManagementPageListVO.getHandleUserId().split(",");
+ List<XpOperationsUser> users = operationUserClient.listByIds(Arrays.stream(split).map(Long::parseLong).collect(Collectors.toList())).getData();
+ if (users!=null){
+ StringBuilder handleUserName = new StringBuilder();
+ for (XpOperationsUser user : users) {
+ handleUserName.append(user.getNickName()).append(";");
+ }
+ taskManagementPageListVO.setHandleUserName(handleUserName.toString());
+ }
+ }
+ if (taskManagementPageListVO.getTaskCategory() == 1) {
+ switch (taskManagementPageListVO.getTaskTypeId()) {
+ case "1":
+ taskManagementPageListVO.setTaskTypeName("车辆检查");
+ break;
+ case "2":
+ taskManagementPageListVO.setTaskTypeName("车辆充电");
+ break;
+ case "3":
+ taskManagementPageListVO.setTaskTypeName("车辆整备");
+ break;
+ case "4":
+ taskManagementPageListVO.setTaskTypeName("整备洗车");
+ break;
+ case "5":
+ taskManagementPageListVO.setTaskTypeName("车辆维修");
+ break;
+ case "6":
+ taskManagementPageListVO.setTaskTypeName("车辆保养");
+ break;
+ case "7":
+ taskManagementPageListVO.setTaskTypeName("车辆保险到期");
+ break;
+ case "8":
+ taskManagementPageListVO.setTaskTypeName("车辆年检到期");
+ break;
+ case "9":
+ taskManagementPageListVO.setTaskTypeName("车辆运营资质到期");
+ break;
+ default:
+ taskManagementPageListVO.setTaskTypeName("");
+ break;
+ }
+ } else {
+ StringBuilder taskTypeName = new StringBuilder();
+ String[] typeIds = taskManagementPageListVO.getTaskTypeId().split(",");
+ List<XpErrorType> xpErrorTypes = errorTypeMapper.selectList(new LambdaQueryWrapper<XpErrorType>()
+ .in(XpErrorType::getId, Arrays.asList(typeIds)).orderByAsc(XpErrorType::getParentId));
+ List<XpErrorType> parents = new ArrayList<>();
+ for (XpErrorType xpErrorType : xpErrorTypes) {
+ if (xpErrorType.getParentId() == 0) {
+ parents.add(xpErrorType);
+ }
+ }
+ for (XpErrorType parent : parents) {
+ List<XpErrorType> children = xpErrorTypes.stream().filter(e -> e.getParentId().equals(parent.getId())).collect(Collectors.toList());
+ taskTypeName.append(parent.getErrorName()).append(">");
+ for (XpErrorType child : children) {
+ taskTypeName.append(child.getErrorName()).append(";");
+ }
+ }
+
+ taskManagementPageListVO.setTaskTypeName(taskTypeName.substring(0, taskTypeName.length() - 1));
+ }
+ }
return list;
}
@@ -961,6 +1028,78 @@
}
@Override
+ public void saveVehicleAccidentError(Long vehicleId) {
+ XpTask xpTask = new XpTask();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
+ xpTask.setTaskCode(code);
+ xpTask.setTaskCategory(2);
+ // todo 事故类型待客户确定
+ xpTask.setTaskTypeId("1");
+ xpTask.setTaskUrgencyLevel(0);
+ xpTask.setTaskDescription("车辆发生异常");
+ XpVehicle vehicle = xpVehicleClient.queryById(xpTask.getVehicleId()).getData();
+ if (vehicle!=null){
+ VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vehicle.getVehicleVin())), VehiclePosition.class);
+ if (vehiclePosition != null) {
+ double x = vehiclePosition.getPoint().getX();
+ double y = vehiclePosition.getPoint().getY();
+ xpTask.setVehicleLon(new BigDecimal(x));
+ xpTask.setVehicleLat(new BigDecimal(y));
+ }
+ }
+
+ xpTask.setVehicleId(vehicleId);
+ // 系统上传异常任务标识
+ xpTask.setReportUserId(0L);
+ xpTask.setReportTime(LocalDateTime.now());
+ xpTask.setStatus(0);
+ xpTask.setCreateBy("admin");
+ XpTaskRule taskRule = xpTaskRuleService.lambdaQuery().last("limit 1").one();
+ XpTaskRuleRole taskRuleRole = xpTaskRuleRoleService.lambdaQuery().eq(XpTaskRuleRole::getRuleType, 9).last("limit 1").one();
+ if (Objects.isNull(taskRuleRole) || Objects.isNull(taskRule)) {
+ throw new ServiceException("未配置车辆事故任务分配规则");
+ }
+ R<List<XpOperationsRole>> xpOperationsRoleResult = xpOperationUserClient.getXpOperationsRoleByRoleId(taskRuleRole.getRoleId());
+ if (CollUtil.isNotEmpty(xpOperationsRoleResult.getData())) {
+ List<Long> userIds = xpOperationsRoleResult.getData().stream().map(XpOperationsRole::getOperationsUserId).collect(Collectors.toList());
+ xpTask.setHandleUserId(StringUtils.join(userIds, ","));
+ }
+ // 根据事故处理限时配置设置任务截止时间
+ LocalDateTime endTime = LocalDateTime.now().plusMinutes(taskRule.getProcessingTimeLimit());
+ xpTask.setEndTime(endTime);
+ this.save(xpTask);
+
+ // 发送消息通知
+ List<Long> userIds = Arrays.stream(xpTask.getHandleUserId().split(",")).map(Long::valueOf).collect(Collectors.toList());
+ if (CollUtil.isNotEmpty(userIds)) {
+ R<List<XpOperationsUser>> xpOperationUserResult = xpOperationUserClient.listByIds(userIds);
+ List<XpOperationsUser> data = xpOperationUserResult.getData();
+ if (CollUtil.isNotEmpty(data)) {
+
+ String plateNumber = Objects.nonNull(vehicle) ? vehicle.getPlateNumber() : "";
+ // 车辆${车牌号}在${车辆位置信息}发生了紧急事故,请在${到达现场限时}内到达现场!${APP链接}
+ String content = String.format("车辆%s在%s发生了紧急事故,请在%d分钟内到达现场!", plateNumber, xpTask.getVehicleLocation(), taskRule.getProcessingTimeLimit());
+ List<XpOperationsUserNotification> notifications = data.stream().map(item -> {
+ XpOperationsUserNotification notification = new XpOperationsUserNotification();
+ notification.setOperationsUserId(item.getId());
+ notification.setNotificationContent(content);
+ notification.setReadStatus(0);
+ notification.setCreateTime(LocalDateTime.now());
+ return notification;
+ }).collect(Collectors.toList());
+ xpOperationUserNotificationClient.addNotificationBatch(notifications);
+ // 发送阿里云推送
+ Map<Integer, List<XpOperationsUser>> operationUserMap = data.stream().collect(Collectors.groupingBy(XpOperationsUser::getDeviceType));
+ for (Map.Entry<Integer, List<XpOperationsUser>> integerListEntry : operationUserMap.entrySet()) {
+ List<XpOperationsUser> value = integerListEntry.getValue();
+ pushAliMessage(value, content, xpTask);
+ }
+ }
+ }
+ }
+
+ @Override
public R assigneeTask(Long id, Long handlerUserId, Long assigneeUserId) {
XpTask task = this.getById(id);
task.setAssigneeTime(LocalDateTime.now());
--
Gitblit v1.7.1