From f161eb229c5fb0f82c2dfd26c6440dbf84cba1ca Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 24 四月 2026 17:05:52 +0800
Subject: [PATCH] [feat] 杂项优化,可改派人员排序,车队信息模糊查询等,活动通知方式
---
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java | 5
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/XpTaskVO.java | 31 ++++++
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpOperationUserClientFallbackFactory.java | 9 +
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpFleetController.java | 13 ++
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRecordServiceImpl.java | 9 -
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpTask.java | 2
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpOperationsUserMapper.java | 2
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java | 6 +
xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpCruiseCheckInRecordMapper.xml | 2
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/pushMessage/WebSocketMessageClient.java | 4
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java | 45 ++++++--
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java | 6 +
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpTaskMapper.java | 4
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/controller/WebSocketController.java | 11 +
xp-robotaxi-account-boot/src/main/resources/mapper/account/XpOperationsUserMapper.xml | 28 +++++
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java | 5 +
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/pushMessage/WebSocketMessageFallbackFactory.java | 5
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/account/XpOperationsUserWithRoleVO.java | 3
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/vehicleConvoy/XpFleetClientFallbackFactory.java | 6 +
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpFleetClient.java | 7 +
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java | 52 ++++++++-
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpOperationsUserService.java | 3
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/account/OptionalUsersPageListQuery.java | 21 ++++
xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpTaskMapper.xml | 5
24 files changed, 238 insertions(+), 46 deletions(-)
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
index a53f60e..6866bdb 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
@@ -18,6 +18,7 @@
import com.xiaopeng.api.model.account.XpOperationsUser;
import com.xiaopeng.api.model.account.XpQualificationAudit;
import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
+import com.xiaopeng.api.query.account.OptionalUsersPageListQuery;
import com.xiaopeng.api.vo.account.XpOperationsUserProfileVO;
import com.xiaopeng.api.vo.account.XpOperationsUserVO;
import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
@@ -86,6 +87,11 @@
return R.ok(xpOperationsUserService.listByIds(ids));
}
+ @PostMapping("/logan/inner/xpOperationsUser/pageListByIds")
+ public R<List<XpOperationsUserWithRoleVO>> pageListByIds(@RequestBody OptionalUsersPageListQuery q) {
+ return R.ok(xpOperationsUserService.pageListByIds(q));
+ }
+
@PostMapping("/logan/inner/xpOperationsUser/findList")
public R<List<XpOperationsUserWithRoleVO>> findList(@RequestBody XpOperationsUserQueryDTO query) {
return R.ok(xpOperationsUserService.findList(query));
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpOperationsUserMapper.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpOperationsUserMapper.java
index d4853f6..cc5d945 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpOperationsUserMapper.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpOperationsUserMapper.java
@@ -6,6 +6,7 @@
import com.xiaopeng.account.model.query.XpOperationsUserQuery;
import com.xiaopeng.api.dto.account.XpOperationsUserQueryDTO;
import com.xiaopeng.api.model.account.XpOperationsUser;
+import com.xiaopeng.api.query.account.OptionalUsersPageListQuery;
import com.xiaopeng.api.vo.account.ExportOperationsUserVo;
import com.xiaopeng.api.vo.account.XpOperationsUserVO;
import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
@@ -50,4 +51,5 @@
*/
List<ExportOperationsUserVo> exportOperationsUser(@Param("query")XpOperationsUserQuery query);
+ List<XpOperationsUserWithRoleVO> pageListByIds(OptionalUsersPageListQuery q);
}
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpOperationsUserService.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpOperationsUserService.java
index 12ccc17..a62a5f0 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpOperationsUserService.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpOperationsUserService.java
@@ -9,6 +9,7 @@
import com.xiaopeng.account.model.query.XpOperationsUserQuery;
import com.xiaopeng.api.dto.account.XpOperationsUserQueryDTO;
import com.xiaopeng.api.model.account.XpOperationsUser;
+import com.xiaopeng.api.query.account.OptionalUsersPageListQuery;
import com.xiaopeng.api.vo.account.XpOperationsUserProfileVO;
import com.xiaopeng.api.vo.account.XpOperationsUserVO;
import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
@@ -135,4 +136,6 @@
* @return
*/
List<XpOperationsUser> getByPhoneNumber(String phoneNumber);
+
+ List<XpOperationsUserWithRoleVO> pageListByIds(OptionalUsersPageListQuery q);
}
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
index 6426f83..b1eaa53 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
@@ -29,6 +29,7 @@
import com.xiaopeng.api.model.account.XpOperationsUser;
import com.xiaopeng.api.model.account.XpQualificationAudit;
import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
+import com.xiaopeng.api.query.account.OptionalUsersPageListQuery;
import com.xiaopeng.api.vo.account.*;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
@@ -546,4 +547,9 @@
}
return lambdaQuery().like(XpOperationsUser::getPhoneNumber, phoneNumber).list();
}
+
+ @Override
+ public List<XpOperationsUserWithRoleVO> pageListByIds(OptionalUsersPageListQuery q) {
+ return baseMapper.pageListByIds(q);
+ }
}
diff --git a/xp-robotaxi-account-boot/src/main/resources/mapper/account/XpOperationsUserMapper.xml b/xp-robotaxi-account-boot/src/main/resources/mapper/account/XpOperationsUserMapper.xml
index 2cc0a22..c981954 100644
--- a/xp-robotaxi-account-boot/src/main/resources/mapper/account/XpOperationsUserMapper.xml
+++ b/xp-robotaxi-account-boot/src/main/resources/mapper/account/XpOperationsUserMapper.xml
@@ -110,4 +110,32 @@
<select id="findList" resultType="com.xiaopeng.api.vo.account.XpOperationsUserVO">
</select>
+ <select id="pageListByIds" resultType="com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO">
+ SELECT
+ u.*,
+ r.id AS roleId,
+ GROUP_CONCAT(r.role_name) AS roleName
+ FROM xp_operations_user u
+ LEFT JOIN xp_operations_role ur ON u.id = ur.operations_user_id
+ LEFT JOIN sys_role r ON ur.role_id = r.id AND r.is_deleted = 0
+ <where>
+ u.is_deleted = 0
+ <if test="query.nickName != null and query.nickName != ''">
+ AND u.nick_name LIKE CONCAT('%', #{query.nickName}, '%')
+ </if>
+ <if test="query.roleId != null">
+ AND r.role_name LIKE CONCAT('%', #{query.role}, '%')
+ </if>
+ <if test="query.ids != null and query.ids.size() > 0">
+ AND u.id IN
+ <foreach collection="query.ids" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+
+ </where>
+ GROUP BY u.id
+ ORDER BY u.create_time DESC
+ </select>
+
</mapper>
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpOperationUserClientFallbackFactory.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpOperationUserClientFallbackFactory.java
index 2844a6c..c4c1408 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpOperationUserClientFallbackFactory.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpOperationUserClientFallbackFactory.java
@@ -3,8 +3,10 @@
import com.xiaopeng.api.dto.account.XpOperationsUserQueryDTO;
import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
import com.xiaopeng.api.model.account.XpOperationsRole;import com.xiaopeng.api.model.account.XpOperationsUser;
+import com.xiaopeng.api.query.account.OptionalUsersPageListQuery;
import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.web.page.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
@@ -89,6 +91,13 @@
log.error("根据手机号精确查询运维用户失败,原因:{}", cause.getMessage());
return R.fail("根据手机号精确查询运维用户失败:" + cause.getMessage());
}
+
+ @Override
+ public R<PageInfo<XpOperationsUserWithRoleVO>> listByQueryIds(OptionalUsersPageListQuery query) {
+
+ log.error("根据id列表获取运维人员列表失败,原因:{}", cause.getMessage());
+ return R.fail("根据id列表获取运维人员列表失败)" + cause.getMessage());
+ }
};
}
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/pushMessage/WebSocketMessageFallbackFactory.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/pushMessage/WebSocketMessageFallbackFactory.java
index c97fce4..6cc0700 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/pushMessage/WebSocketMessageFallbackFactory.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/pushMessage/WebSocketMessageFallbackFactory.java
@@ -1,8 +1,7 @@
package com.xiaopeng.api.factory.pushMessage;
-import com.xiaopeng.api.dto.pushMessage.AliPushMessageDTO;
import com.xiaopeng.api.feignClient.pushMessage.WebSocketMessageClient;
-import com.xiaopeng.api.vo.TaskVO;
+import com.xiaopeng.api.vo.XpTaskVO;
import com.xiaopeng.common.core.domain.R;
import org.springframework.cloud.openfeign.FallbackFactory;
@@ -11,7 +10,7 @@
public WebSocketMessageClient create(Throwable cause) {
return new WebSocketMessageClient() {
@Override
- public R<String> pushTask(TaskVO dto) {
+ public R<String> pushTask(XpTaskVO dto) {
return R.fail("发送失败");
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/vehicleConvoy/XpFleetClientFallbackFactory.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/vehicleConvoy/XpFleetClientFallbackFactory.java
index e1be5ae..31a2a34 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/vehicleConvoy/XpFleetClientFallbackFactory.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/vehicleConvoy/XpFleetClientFallbackFactory.java
@@ -42,6 +42,12 @@
log.error("查询打卡地被使用次数失败,原因: {}", cause.getMessage());
return R.fail("查询打卡地被使用次数失败");
}
+
+ @Override
+ public R<List<Long>> idsByFleetName(String fleetName) {
+ log.error("根据车队名称查询ID失败,原因: {}", cause.getMessage());
+ return R.fail("根据车队名称查询ID失败");
+ }
};
}
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java
index 01bc2de..acf5871 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java
@@ -4,9 +4,11 @@
import com.xiaopeng.api.factory.account.XpOperationUserClientFallbackFactory;
import com.xiaopeng.api.model.account.XpOperationsRole;
import com.xiaopeng.api.model.account.XpOperationsUser;
+import com.xiaopeng.api.query.account.OptionalUsersPageListQuery;
import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum;
+import com.xiaopeng.common.core.web.page.PageInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -109,4 +111,7 @@
*/
@GetMapping("/logan/inner/xpOperationsUser/getByExactPhone")
R<XpOperationsUser> getByExactPhone(@RequestParam("phoneNumber") String phoneNumber);
+
+ @PostMapping("/logan/inner/xpOperationsUser/pageListByIds")
+ R<PageInfo<XpOperationsUserWithRoleVO>> listByQueryIds(OptionalUsersPageListQuery query);
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/pushMessage/WebSocketMessageClient.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/pushMessage/WebSocketMessageClient.java
index 898ab65..20461ac 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/pushMessage/WebSocketMessageClient.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/pushMessage/WebSocketMessageClient.java
@@ -1,7 +1,7 @@
package com.xiaopeng.api.feignClient.pushMessage;
import com.xiaopeng.api.factory.pushMessage.WebSocketMessageFallbackFactory;
-import com.xiaopeng.api.vo.TaskVO;
+import com.xiaopeng.api.vo.XpTaskVO;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum;
import org.springframework.cloud.openfeign.FeignClient;
@@ -22,6 +22,6 @@
* 工单推送
*/
@PostMapping("/inner/websocket/push/task")
- R<String> pushTask(@RequestBody TaskVO dto);
+ R<String> pushTask(@RequestBody XpTaskVO dto);
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpFleetClient.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpFleetClient.java
index 183cbf1..4377d55 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpFleetClient.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpFleetClient.java
@@ -47,4 +47,11 @@
@GetMapping("/logan/inner/fleet/getUseCountByLocationId")
R<Long> getUseCountByLocationId(@RequestParam Long locationId);
+ /**
+ * 根据车队名字模糊查询车队人员
+ *
+ */
+ @PostMapping("/logan/inner/fleet/idsByFleetName")
+ R<List<Long>> idsByFleetName(@RequestParam String fleetName);
+
}
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 902b7f0..6818a14 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
@@ -105,7 +105,7 @@
@ApiModelProperty(value = "任务来源 1-运维APP 2-管理后台")
private Integer taskSource;
- @ApiModelProperty(value = "申请改派的用户id")
+ @ApiModelProperty(value = "申请改派的用户")
@TableField(typeHandler = JacksonTypeHandler.class)
private List<Reject> excluded;
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/account/OptionalUsersPageListQuery.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/account/OptionalUsersPageListQuery.java
new file mode 100644
index 0000000..1c2e2b2
--- /dev/null
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/account/OptionalUsersPageListQuery.java
@@ -0,0 +1,21 @@
+package com.xiaopeng.api.query.account;
+
+import com.xiaopeng.common.core.web.page.BasePage;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class OptionalUsersPageListQuery extends BasePage {
+
+ Long taskId;
+
+ String nickName;
+
+ String role;
+
+ String fleet;
+
+ List<Long> ids;
+
+}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/TaskVO.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/XpTaskVO.java
similarity index 69%
rename from xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/TaskVO.java
rename to xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/XpTaskVO.java
index beeeff1..c19ac7c 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/TaskVO.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/XpTaskVO.java
@@ -1,6 +1,7 @@
package com.xiaopeng.api.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xiaopeng.api.model.maintenance.XpTask;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -8,6 +9,7 @@
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
+import java.util.List;
/**
* <p>
@@ -19,7 +21,7 @@
*/
@Data
@ApiModel(value = "任务中心分页列表VO")
-public class TaskVO implements Serializable {
+public class XpTaskVO implements Serializable {
@ApiModelProperty(value = "任务")
private Long id;
@@ -44,6 +46,20 @@
@ApiModelProperty(value = "车牌号")
private String plateNumber;
+ @ApiModelProperty(value = "剩余处理时间(秒)")
+ private Long timeRemain;
+
+ public Long getTimeRemain() {
+ if (endTime != null) return null;
+ return LocalDateTime.now().until(endTime, java.time.temporal.ChronoUnit.SECONDS);
+ }
+
+ @ApiModelProperty(value = "事故类型id")
+ private String errorTypeId;
+
+ @ApiModelProperty(value = "事故类型")
+ private String errorName;
+
@ApiModelProperty(value = "车辆id")
private Long vehicleId;
@@ -61,4 +77,17 @@
@ApiModelProperty(value = "处理人id")
private String handleUserId;
+
+ @ApiModelProperty(value = "任务描述")
+ private String taskDescription;
+
+ @ApiModelProperty(value = "任务描述图片")
+ private String taskImage;
+
+ @ApiModelProperty(value = "申请改派的用户")
+ private List<XpTask.Reject> excluded;
+
+ @ApiModelProperty(value = "状态 2=已处理 1=改派中")
+ private Integer reassignmentStatus;
+
}
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/account/XpOperationsUserWithRoleVO.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/account/XpOperationsUserWithRoleVO.java
index a48ec3d..179f279 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/account/XpOperationsUserWithRoleVO.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/account/XpOperationsUserWithRoleVO.java
@@ -24,4 +24,7 @@
@ApiModelProperty(value = "关联角色名称, 逗号拼接")
private String roleName;
+
+ @ApiModelProperty(value = "和事故地点距离")
+ private String dis;
}
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 fd6cd71..54ca44f 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
@@ -5,6 +5,7 @@
import com.alibaba.fastjson2.JSONObject;
import com.xiaopeng.api.dto.account.XpOperationsUserPositionDTO;
import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
+import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetOperationsClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.account.XpOperationsUser;
@@ -12,8 +13,10 @@
import com.xiaopeng.api.model.maintenance.XpTask;
import com.xiaopeng.api.model.maintenance.XpTaskRule;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
-import com.xiaopeng.api.vo.TaskVO;
+import com.xiaopeng.api.query.account.OptionalUsersPageListQuery;
+import com.xiaopeng.api.vo.XpTaskVO;
import com.xiaopeng.api.vo.account.LoginOperationUser;
+import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
@@ -305,35 +308,49 @@
@ApiOperation(value = "待改派的工单分页列表", tags = {"管理后台-运维执行-任务工单-待改派工单"})
@PostMapping("/api/v1/task/reassign/pageList")
- public R<PageInfo<TaskVO>> reassignTaskPageList(@RequestBody TaskPageListQuery query) {
+ public R<PageInfo<XpTaskVO>> reassignTaskPageList(@RequestBody TaskPageListQuery query) {
return R.ok(xpTaskService.reassignTaskPageList(query));
}
- @ApiOperation(value = "可改派的运维人员列表", tags = {"管理后台-运维执行-任务工单-待改派工单"})
- @GetMapping("/api/v1/task/reassign/availableUsers")
- public R<List<XpOperationsUser>> availableReassignUsers(@RequestParam Long taskId) {
+ @Resource
+ XpFleetClient xpFleetClient;
- XpTask task = xpTaskService.getById(taskId);
+ @ApiOperation(value = "可改派的运维人员列表", tags = {"管理后台-运维执行-任务工单-待改派工单"})
+ @PostMapping("/api/v1/task/reassign/availableUsers")
+ public R<PageInfo<XpOperationsUserWithRoleVO>> availableReassignUsers(@RequestBody OptionalUsersPageListQuery query) {
+
+ XpTask task = xpTaskService.getById(query.getTaskId());
GeoJsonPoint point =
new GeoJsonPoint(
task.getVehicleLon().doubleValue(),
task.getVehicleLat().doubleValue()
);
- Query query = new Query(Criteria.where("location").near(point)
+ Query q = new Query(Criteria.where("location").near(point)
.maxDistance(new Distance(10, Metrics.KILOMETERS).getNormalizedValue()));
- query.with(Sort.by(Sort.Direction.ASC, "dis"));
- List<Long> ids = mongoTemplate.find(query, XpOperationsUserPositionDTO.class)
- .stream().map(XpOperationsUserPositionDTO::getId).collect(Collectors.toList());
- return R.ok(operationUserClient.listByIds(ids).getData());
+ q.with(Sort.by(Sort.Direction.ASC, "dis"));
+
+ List<XpOperationsUserPositionDTO> up = mongoTemplate.find(q, XpOperationsUserPositionDTO.class);
+
+ // 查询车队下面面所有人员id和up求交集
+ List<Long> data = xpFleetClient.idsByFleetName(query.getFleet()).getData();
+
+ List<Long> ids = up.stream().map(XpOperationsUserPositionDTO::getId)
+ .filter(e -> data!=null && !data.isEmpty() &&!data.contains(e))
+ .collect(Collectors.toList());
+
+ query.setIds(ids);
+ PageInfo<XpOperationsUserWithRoleVO> ret = operationUserClient.listByQueryIds(query).getData();
+
+ return R.ok(ret);
}
@Resource
private XpOperationUserClient operationUserClient;
@ApiOperation(value = "改派详情", tags = {"管理后台-运维执行-任务工单-待改派工单"})
- @GetMapping("/api/v1/task/reassign/detail")
- public R<XpTask> reassignDetail(@RequestParam Long taskId) {
- return R.ok(xpTaskService.getById(taskId));
+ @GetMapping("/api/v1/task/detail")
+ public R<XpTaskVO> reassignDetail(@RequestParam Long taskId) {
+ return R.ok(xpTaskService.detail(taskId));
}
@ApiOperation(value = "执行保险年检检测定时任务", tags = {"定时任务"})
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpTaskMapper.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpTaskMapper.java
index 03543ac..790bb92 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpTaskMapper.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpTaskMapper.java
@@ -2,7 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xiaopeng.api.model.maintenance.XpTask;
-import com.xiaopeng.api.vo.TaskVO;
+import com.xiaopeng.api.vo.XpTaskVO;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.maintenance.model.query.TaskManagementPageListQuery;
import com.xiaopeng.maintenance.model.query.WorkBenchQuery;
@@ -39,5 +39,5 @@
*/
XpTask queryInfoByVehicleId(@Param("vehicleId")Long vehicleId);
- PageInfo<TaskVO> reassignTaskPageList(@Param("pageInfo")PageInfo<TaskPageListQuery> pageInfo, @Param("query")TaskPageListQuery query);
+ PageInfo<XpTaskVO> reassignTaskPageList(@Param("pageInfo")PageInfo<TaskPageListQuery> pageInfo, @Param("query")TaskPageListQuery query);
}
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 989ed0e..e74a6da 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
@@ -3,7 +3,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.model.account.XpOperationsUser;
import com.xiaopeng.api.model.maintenance.XpTask;
-import com.xiaopeng.api.vo.TaskVO;
+import com.xiaopeng.api.vo.XpTaskVO;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.maintenance.dto.HandleVehicleAccidentDto;
@@ -102,6 +102,7 @@
void accept(String taskId);
- PageInfo<TaskVO> reassignTaskPageList(TaskPageListQuery query);
+ PageInfo<XpTaskVO> reassignTaskPageList(TaskPageListQuery query);
+ XpTaskVO detail(Long taskId);
}
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRecordServiceImpl.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRecordServiceImpl.java
index 9858a8b..e973156 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRecordServiceImpl.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCruiseCheckInRecordServiceImpl.java
@@ -99,14 +99,13 @@
@Override
public List<XpCruiseCheckInStatisticsVO> statistics(XpCruiseCheckInStatisticsQuery query) {
List<XpCruiseCheckInStatisticsVO> vos = xpCruiseCheckInRecordMapper.selectCruiseCheckInStatistics(query);
- if (CollectionUtils.isEmpty(vos) || vos.size() < 7) {
- String date = vos.get(vos.size() - 1).getDate();
- LocalDate endDate = LocalDate.parse(date);
- LocalDate startDate = endDate.minusDays(vos.size() + 1);
+ if (!CollectionUtils.isEmpty(vos) && vos.size() < 7) {
+ String date = vos.get(0).getDate();
+ LocalDate startDate = LocalDate.parse(date);
for (int i = 7 - vos.size(); i > 0; i--) {
XpCruiseCheckInStatisticsVO v = new XpCruiseCheckInStatisticsVO();
- v.setDate(startDate.toString());
startDate = startDate.minusDays(1);
+ v.setDate(startDate.toString());
vos.add(0, v);
}
}
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 7053aa0..d4084d7 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,7 +13,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.account.XpOperationsRoleClient;
import com.xiaopeng.api.feignClient.operation.SmsClient;
import com.xiaopeng.api.feignClient.pushMessage.WebSocketMessageClient;
import com.xiaopeng.api.feignClient.pushMessage.XpAliPushMessageClient;
@@ -25,10 +24,8 @@
import com.xiaopeng.api.model.account.XpOperationsUser;
import com.xiaopeng.api.model.account.XpOperationsUserNotification;
import com.xiaopeng.api.model.maintenance.*;
-import com.xiaopeng.api.model.operation.XpPasswordFreePolicy;
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.XpTaskVO;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.api.vo.maintenance.TaskScheduleConstants;
import com.xiaopeng.api.vo.operation.SmsVo;
@@ -428,9 +425,9 @@
log.info("事故通知记录保存成功,共 {} 条", notifications.size());
}
- TaskVO taskVO = new TaskVO();
- BeanUtil.copyProperties(xpTask, taskVO);
- xpWebSocketMessageClient.pushTask(taskVO);
+ XpTaskVO xpTaskVO = new XpTaskVO();
+ BeanUtil.copyProperties(xpTask, xpTaskVO);
+ xpWebSocketMessageClient.pushTask(xpTaskVO);
Map<Integer, List<XpOperationsUser>> operationUserMap = data.stream()
.filter(u -> u.getDeviceType() != null && StringUtils.isNotBlank(u.getPhoneNumber()))
@@ -1407,6 +1404,7 @@
XpTask.Reject reject = task.reject(msg);
rejects.add(reject);
task.setExcluded(rejects);
+ task.setReassignmentStatus(2);
Set<String> excludedUserIds = rejects.stream().map(XpTask.Reject::getRejectUserId).collect(Collectors.toSet());
Long fleetId = xpFleetVehicleClient.getFleetIdByVehicleId(vehicle.getId()).getData();
@@ -1501,10 +1499,45 @@
}
@Override
- public PageInfo<TaskVO> reassignTaskPageList(TaskPageListQuery query) {
- // 创建分页对象
+ public PageInfo<XpTaskVO> reassignTaskPageList(TaskPageListQuery query) {
+
PageInfo<TaskPageListQuery> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+
return baseMapper.reassignTaskPageList(pageInfo,query);
+ }
+
+ @Override
+ public XpTaskVO detail(Long taskId) {
+ XpTask task = getById(taskId);
+ if (task == null) {
+ return null;
+ }
+ XpTaskVO xpTaskVO = new XpTaskVO();
+ BeanUtil.copyProperties(task, xpTaskVO);
+
+ String taskImage = xpTaskVO.getTaskImage();
+ if (StringUtils.isNotBlank(taskImage)) {
+ try {
+ xpTaskVO.setTaskImage(aliOssDownloadUtil.getPictureJsonArray(taskImage));
+ } catch (Exception e) {
+ log.error("获取任务图片下载地址失败,taskId={}", taskId, e);
+ }
+ }
+
+ // 2. 如果有车辆信息,可以补充车辆相关详情(如果需要)
+ if (task.getVehicleId() != null) {
+ R<XpVehicle> vehicleResult = xpVehicleClient.queryById(task.getVehicleId());
+ if (vehicleResult != null && vehicleResult.getData() != null) {
+ XpVehicle vehicle = vehicleResult.getData();
+ xpTaskVO.setPlateNumber(vehicle.getPlateNumber());
+// xpTaskVO.setVehicleColor(vehicle.getVehicleColor());
+// xpTaskVO.setVehicleCode(vehicle.getVehicleCode());
+// xpTaskVO.setVehicleVin(vehicle.getVehicleVin());
+
+ }
+ }
+
+ return xpTaskVO;
}
@Value("${robotaxi.sms.app-id:1476153389173952512}")
@@ -1582,6 +1615,7 @@
} else {
task.setEndTime(LocalDateTime.now().plusDays(3));
}
+ task.setReassignmentStatus(2);
task.setAssigneeTime(LocalDateTime.now());
task.setHandleUserId(handlerUserId.toString());
task.setVehicleId(null);
diff --git a/xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpCruiseCheckInRecordMapper.xml b/xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpCruiseCheckInRecordMapper.xml
index 892c3fb..ef5a29d 100644
--- a/xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpCruiseCheckInRecordMapper.xml
+++ b/xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpCruiseCheckInRecordMapper.xml
@@ -140,7 +140,7 @@
AND DATE(r.check_in_time) <= #{query.endDate}
</if>
GROUP BY DATE(r.check_in_time)
- ORDER BY `date` DESC
+ ORDER BY `date`
</select>
<select id="exportList" resultType="com.xiaopeng.maintenance.vo.XpCruiseCheckInRecordVO">
diff --git a/xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpTaskMapper.xml b/xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpTaskMapper.xml
index 0f54894..1bb3c81 100644
--- a/xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpTaskMapper.xml
+++ b/xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpTaskMapper.xml
@@ -183,7 +183,7 @@
ORDER BY handle_time DESC limit 1
</select>
- <select id="reassignTaskPageList" resultType="com.xiaopeng.api.vo.TaskVO">
+ <select id="reassignTaskPageList" resultType="com.xiaopeng.api.vo.XpTaskVO">
SELECT
t.id,
t.task_code AS taskCode,
@@ -196,10 +196,11 @@
t.handle_user_id AS handleUserId,
t.assignee_user_id AS assigneeUserId,
t.status,
+ t.excluded,
t.reassignment_status AS reassignmentStatus,
t.create_time AS createTime,
v.plate_number AS plateNumber,
- et.error_name AS accidentTypeName
+ et.error_name AS errorName
FROM xp_task t
LEFT JOIN xp_vehicle v ON t.vehicle_id = v.id AND v.is_deleted = 0
LEFT JOIN xp_error_type et ON t.error_type_id = et.id
diff --git a/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/controller/WebSocketController.java b/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/controller/WebSocketController.java
index 25f7e2b..873c7fe 100644
--- a/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/controller/WebSocketController.java
+++ b/xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/controller/WebSocketController.java
@@ -3,7 +3,7 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xiaopeng.api.dto.pushMessage.SendMessageDTO;
-import com.xiaopeng.api.vo.TaskVO;
+import com.xiaopeng.api.vo.XpTaskVO;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.controller.BaseController;
import com.xiaopeng.pushMessage.webSocket.service.WebSocketUserService;
@@ -13,6 +13,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -366,11 +367,13 @@
* 运维工单app推送
*/
@PostMapping("/inner/websocket/push/task")
- public R<?> pushTask(@RequestBody TaskVO vo) throws JsonProcessingException {
+ public R<?> pushTask(@RequestBody XpTaskVO vo) throws JsonProcessingException {
String handleUserId = vo.getHandleUserId();
- String msg = om.writeValueAsString(vo);
- webSocketUserService.sendMessageToUser(handleUserId, msg);
+ Map<String, Object> msg = new HashMap();
+ msg.put("type", "task");
+ msg.put("data", vo);
+ webSocketUserService.sendMessageToUser(handleUserId, om.writeValueAsString(msg));
return R.ok();
}
diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpFleetController.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpFleetController.java
index 2ebc55c..71ae40b 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpFleetController.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpFleetController.java
@@ -29,6 +29,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import java.util.stream.Collectors;
/**
* <p>
@@ -47,6 +48,18 @@
private final IXpFleetOperationsService xpFleetOperationsService;
/**
+ * 根据车队名字模糊查询车队人员
+ *
+ */
+ @ApiOperation(value = "批量查询车队信息", tags = {"内部接口"})
+ @PostMapping("/logan/inner/fleet/idsByFleetName")
+ public R<List<Long>> idsByFleetName(@RequestParam String fleetName) {
+ List<Long> ids = xpFleetService.lambdaQuery().like(XpFleet::getFleetName, fleetName).list().stream().map(XpFleet::getId).collect(Collectors.toList());
+ List<Long> ret = xpFleetOperationsService.lambdaQuery().eq(XpFleetOperations::getFleetId, ids).list().stream().map(XpFleetOperations::getFleetId).collect(Collectors.toList());
+ return R.ok(ret);
+ }
+
+ /**
* 根据ID列表批量查询车队信息(内部接口)
*
* @param ids 车队ID列表
--
Gitblit v1.7.1