From 29cb451ff17a63edbe87abf93a51a2b0fa2f7e18 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 21 四月 2026 11:46:28 +0800
Subject: [PATCH] [fix] 改派详情
---
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java | 2
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java | 5
/dev/null | 97 ------------------------
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpTask.java | 33 +++++++
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java | 46 +++++------
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java | 2
6 files changed, 55 insertions(+), 130 deletions(-)
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpTask.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpTask.java
index ef3e2ec..17e2a13 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpTask.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpTask.java
@@ -44,7 +44,7 @@
@ApiModelProperty(value = "任务类型id 任务类别为2时对应数据字典,多个逗号分割,为1的时候 枚举1车辆检查 2车辆充电 3车辆整备 4整备洗车 5车辆维修 6车辆保养 7车辆保险到期 8车辆年检到期 9车辆运营资质到期")
private String taskTypeId;
- @ApiModelProperty(value = "任务类型id 任务类别为2时对应数据字典,多个逗号分割,为1的时候 枚举1车辆检查 2车辆充电 3车辆整备 4整备洗车 5车辆维修 6车辆保养 7车辆保险到期 8车辆年检到期 9车辆运营资质到期")
+ @ApiModelProperty(value = "事故类型id")
private String accidentTypeId;
@ApiModelProperty(value = "任务紧急程度 0=P0 1=P1 2=P2 3=P3")
@@ -107,5 +107,34 @@
@ApiModelProperty(value = "申请改派的用户id")
@TableField(typeHandler = JacksonTypeHandler.class)
- private List<Long> excluded;
+ private List<Reject> excluded;
+
+
+ public Reject reject(String msg) {
+ Reject reject = new Reject();
+ reject.setRejectTime(LocalDateTime.now());
+ reject.setRejectUserId(handleUserId);
+ reject.setRejectReason(msg);
+ return reject;
+ }
+ @Data
+ public static class Reject {
+
+ @ApiModelProperty(value = "拒绝原因")
+ private String rejectReason;
+
+ @ApiModelProperty(value = "拒绝时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private LocalDateTime rejectTime;
+
+ @ApiModelProperty(value = "拒绝人id")
+ private String rejectUserId;
+
+ @ApiModelProperty(value = "拒绝人姓名")
+ private String rejectUserName;
+
+
+ @ApiModelProperty(value = "拒绝人角色名称")
+ private String rejectUserRoleName;
+ }
}
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
index 93ff612..9c3ba56 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -54,7 +54,6 @@
import javax.validation.Valid;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -333,8 +332,8 @@
@ApiOperation(value = "改派详情", tags = {"管理后台-运维执行-任务工单-待改派工单"})
@GetMapping("/api/v1/task/reassign/detail")
- public R<TaskReassignDetailVO> reassignDetail(@RequestParam Long taskId) {
- return R.ok(xpTaskService.detail(taskId));
+ public R<XpTask> reassignDetail(@RequestParam Long taskId) {
+ return R.ok(xpTaskService.getById(taskId));
}
@ApiOperation(value = "执行保险年检检测定时任务", tags = {"定时任务"})
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java
index c971c38..989ed0e 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java
@@ -16,7 +16,6 @@
import com.xiaopeng.maintenance.model.vo.*;
import com.xiaopeng.maintenance.model.query.TaskPageListQuery;
import com.xiaopeng.maintenance.vo.TaskDetectionDetailVO;
-import com.xiaopeng.maintenance.vo.TaskReassignDetailVO;
import javax.validation.Valid;
import java.io.UnsupportedEncodingException;
@@ -105,5 +104,4 @@
PageInfo<TaskVO> reassignTaskPageList(TaskPageListQuery query);
- TaskReassignDetailVO detail(Long taskId);
}
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 c18da89..3252d3c 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
@@ -13,6 +13,7 @@
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.account.XpOperationsRoleClient;
import com.xiaopeng.api.feignClient.operation.SmsClient;
import com.xiaopeng.api.feignClient.pushMessage.WebSocketMessageClient;
import com.xiaopeng.api.feignClient.pushMessage.XpAliPushMessageClient;
@@ -26,6 +27,7 @@
import com.xiaopeng.api.model.maintenance.*;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.TaskVO;
+import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.api.vo.maintenance.TaskScheduleConstants;
import com.xiaopeng.api.vo.operation.SmsVo;
@@ -57,7 +59,6 @@
import com.xiaopeng.maintenance.utils.UUIDUtil;
import com.xiaopeng.maintenance.vo.TaskCleanDetailVO;
import com.xiaopeng.maintenance.vo.TaskDetectionDetailVO;
-import com.xiaopeng.maintenance.vo.TaskReassignDetailVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
@@ -121,22 +122,22 @@
@Autowired
private XpVehicleCleanMapper vehicleCleanMapper;
- @Autowired
+ @Resource
private XpOperationUserClient xpOperationUserClient;
- @Autowired
+ @Resource
private SysUserClient sysUserClient;
@Autowired
private XpTaskHandleDetailRoutineMapper xpTaskHandleDetailRoutineMapper;
- @Autowired
+ @Resource
private XpVehicleClient xpVehicleClient;
@Autowired
private XpTaskRuleMapper xpTaskRuleMapper;
@Autowired
private MongoTemplate mongoTemplate;
- @Autowired
+ @Resource
private XpAliPushMessageClient xpAliPushMessageClient;
- @Autowired
+ @Resource
private XpOperationUserNotificationClient xpOperationUserNotificationClient;
@Autowired
private IXpTaskRuleRoleService xpTaskRuleRoleService;
@@ -1389,21 +1390,28 @@
XpTask task = getById(taskId);
XpVehicle vehicle = xpVehicleClient.queryById(task.getVehicleId()).getData();
XpTaskRule taskRule = xpTaskRuleService.lambdaQuery().last("limit 1").one();
+
List<XpTaskRuleRole> taskRuleRole = xpTaskRuleRoleService.lambdaQuery().eq(XpTaskRuleRole::getRuleType, 9).list();
if (Objects.isNull(taskRuleRole) || Objects.isNull(taskRule)) {
throw new ServiceException("未配置车辆事故任务分配规则");
}
- List<Long> excludedUserIds = Optional.ofNullable(task.getExcluded()).orElse(new ArrayList<>());
- excludedUserIds.addAll(Arrays.asList(task.getHandleUserId().split(",")).stream().map(Long::parseLong).collect(Collectors.toList()));
- task.setExcluded(excludedUserIds);
+
+ List<XpTask.Reject> rejects = Optional.ofNullable(task.getExcluded()).orElse(new ArrayList<>());
+ XpTask.Reject reject = task.reject(msg);
+ rejects.add(reject);
+ task.setExcluded(rejects);
+ Set<String> excludedUserIds = rejects.stream().map(XpTask.Reject::getRejectUserId).collect(Collectors.toSet());
+
Long fleetId = xpFleetVehicleClient.getFleetIdByVehicleId(vehicle.getId()).getData();
List<Long> roleIds = taskRuleRole.stream().map(XpTaskRuleRole::getRoleId).collect(Collectors.toList());
List<Long> ids = xpFleetOperationsClient.getOperationsIdsByFleetId(fleetId).getData();
String belongUserIds = xpOperationUserClient.getXpOperationsRoleByRoleIds(roleIds).getData().stream()
.map(XpOperationsRole::getOperationsUserId)
.filter(ids::contains)
- .filter(id -> !excludedUserIds.contains(id))
+ .filter(id -> !excludedUserIds.contains(id.toString()))
.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));
@@ -1413,10 +1421,11 @@
task.setStatus(4);
noticeAdministrator(task);//TODO 需要通知管理员手动处理,考虑再AliPushUtil 中给管理员发送消息
}
-
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());
}
}
@@ -1487,19 +1496,6 @@
@Override
public PageInfo<TaskVO> reassignTaskPageList(TaskPageListQuery query) {
return baseMapper.reassignTaskPageList(query);
- }
-
- @Override
- public TaskReassignDetailVO detail(Long taskId) {
- XpTask task = getById(taskId);
-
- // 根据taskId去查询XpTaskHandleDetail,
-// XpTaskHandleDetail taskHandleDetail = xpTaskHandleDetailClient.queryByTaskId(taskId).getData();
-
-
-// return baseMapper.detail(taskId);
- // todo
- return null;
}
@Value("${robotaxi.sms.app-id:1476153389173952512}")
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/TaskReassignDetailVO.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/TaskReassignDetailVO.java
deleted file mode 100644
index a587bbf..0000000
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/TaskReassignDetailVO.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package com.xiaopeng.maintenance.vo;
-
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.xiaopeng.api.model.maintenance.XpTaskHandleDetail;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-
-public class TaskReassignDetailVO {
-
- @ApiModelProperty(value = "自增id")
- @TableId(value = "id", type = IdType.NONE)
- private Long id;
-
- @ApiModelProperty(value = "任务编号")
- private String taskCode;
-
- @ApiModelProperty(value = "任务类别1常规 2事故")
- private Integer taskCategory;
- //1:车辆检查,2:车辆充电,3:车辆整备,4:整备洗车,5:车辆维修,6:车辆保养,7:车辆保险到期,8:车辆年检到期9:车辆运营资质到期
- @ApiModelProperty(value = "任务类型id 任务类别为2时对应数据字典,多个逗号分割,为1的时候 枚举1车辆检查 2车辆充电 3车辆整备 4整备洗车 5车辆维修 6车辆保养 7车辆保险到期 8车辆年检到期 9车辆运营资质到期")
- private String taskTypeId;
-
- @ApiModelProperty(value = "任务类型id 任务类别为2时对应数据字典,多个逗号分割,为1的时候 枚举1车辆检查 2车辆充电 3车辆整备 4整备洗车 5车辆维修 6车辆保养 7车辆保险到期 8车辆年检到期 9车辆运营资质到期")
- private String accidentTypeId;
-
- @ApiModelProperty(value = "任务紧急程度 0=P0 1=P1 2=P2 3=P3")
- private Integer taskUrgencyLevel;
-
- @ApiModelProperty(value = "任务描述")
- private String taskDescription;
-
- @ApiModelProperty(value = "任务描述图片")
- private String taskImage;
-
- @ApiModelProperty(value = "车辆id")
- @TableField(updateStrategy = FieldStrategy.NEVER)
- private Long vehicleId;
- @ApiModelProperty(value = "车辆位置")
- private String vehicleLocation;
- @ApiModelProperty(value = "车辆经度")
- private BigDecimal vehicleLon;
- @ApiModelProperty(value = "车辆纬度")
- private BigDecimal vehicleLat;
-
- @ApiModelProperty(value = "处理人id")
- private String handleUserId;
-
- @ApiModelProperty(value = "处理时间")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
- private LocalDateTime handleTime;
-
- @ApiModelProperty(value = "分配人id")
- private Long assigneeUserId;
-
- @ApiModelProperty(value = "分配时间")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
- private LocalDateTime assigneeTime;
-
- @ApiModelProperty(value = "上报人id")
- private Long reportUserId;
-
- @ApiModelProperty(value = "上报时间")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
- private LocalDateTime reportTime;
- @ApiModelProperty(value = "任务时限结束时间")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
- private LocalDateTime endTime;
-
- @ApiModelProperty(value = "是否已发送过期通知 0=未发送 1=已发送")
- private Integer expiredNoticeSent;
-
- @ApiModelProperty(value = "事故即将超时通知是否已发送 0=未发送 1=已发送")
- private Integer willTimeoutNoticeSent;
-
- @ApiModelProperty(value = "状态 0=待到达 1=待处理 2=已完成 3=已取消 4=改派中")
- private Integer status;
-
- @ApiModelProperty(value = "状态 2=已处理 1=改派中")
- private Integer reassignmentStatus;
-
- @ApiModelProperty(value = "任务来源 1-运维APP 2-管理后台")
- private Integer taskSource;
-
- @ApiModelProperty(value = "申请改派的用户id")
- @TableField(typeHandler = JacksonTypeHandler.class)
- private List<Long> excluded;
-
- private List<XpTaskHandleDetail> logs;
-}
diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
index 3f3de89..3a0a198 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -1217,7 +1217,7 @@
List<XpVehicle> list = this.list(new QueryWrapper<XpVehicle>().eq("vehicle_type", 2)
.eq("status", 2).eq("operating_status", 1)
.eq("is_deleted", 0).like(StringUtils.isNotBlank(dto.getPlateNumber()), "plate_number", dto.getPlateNumber())
- .like(StringUtils.isNotBlank(dto.getVim()), "vehicle_vin", dto.getVim())
+ .like(StringUtils.isNotBlank(dto.getVin()), "vehicle_vin", dto.getVin())
.last(" order by create_time desc limit " + dto.getPageNo() + "," + dto.getPageSize())
);
--
Gitblit v1.7.1