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)); 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); } 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); } 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); } } 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> 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()); } }; } } 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("发送失败"); } 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失败"); } }; } } 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); } 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); } 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); } 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; xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/account/OptionalUsersPageListQuery.java
New file @@ -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; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/XpTaskVO.java
File was renamed from xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/TaskVO.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; } 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; } 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 = {"定时任务"}) 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); } 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); } 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); } } 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); 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"> 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 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(); } 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列表