无关风月
2026-02-28 c5279e7df935cd9fd94cc355729b3524b6a486ec
bug修改
3个文件已修改
57 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysLoginService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysLoginService.java
@@ -160,8 +160,6 @@
        if (!operationsUser.getStatus()){
            throw new ServiceException("账号已禁用!");
        }
        // todo 查询运维人员角色集合
        // todo 权限集合
        // 用户名或密码为空 错误
        if (StringUtils.isAnyBlank(phoneNumber, password)) {
            throw new ServiceException("用户/验证码必须填写");
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -7,8 +7,10 @@
import com.xiaopeng.api.model.maintenance.XpErrorType;
import com.xiaopeng.api.model.maintenance.XpTask;
import com.xiaopeng.api.model.maintenance.XpTaskHandleDetailRoutine;
import com.xiaopeng.api.model.order.XpCruiseOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.account.LoginOperationUser;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.security.service.TokenService;
@@ -24,6 +26,10 @@
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -45,6 +51,8 @@
public class XpTaskController {
    @Resource
    private XpTaskService xpTaskService;
    @Resource
    private MongoTemplate mongoTemplate;
    @Resource
    private TokenService tokenService;
    @Resource
@@ -74,21 +82,28 @@
    @ApiOperation(value = "查询车辆不分页列表", tags = "运维APP-任务中心")
    @PostMapping("/api/v1/task/listVehicle")
    public R<List<VehicleListVO>> listVehicle() {
        LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser();
        XpOperationsUser xpOperationsUser = loginOperationUser.getXpOperationsUser();
        // 查询当前人员所属车队 查询车队关联车辆
        R<List<Long>> vehicleByUserId = xpFleetOperationsClient.getVehicleByUserId(xpOperationsUser.getId());
        List<Long> vehicleIds = vehicleByUserId.getData();
        if (vehicleIds != null && !vehicleIds.isEmpty()){
            // todo 查询车辆列表 获取经纬度
            List<XpVehicle> data = xpVehicleClient.listByIds(vehicleIds).getData();
            if (data!=null){
                List<VehicleListVO> vehicleListVOS = new ArrayList<>();
                for (XpVehicle xpVehicle : data) {
                    VehicleListVO vehicleListVO = new VehicleListVO();
                    vehicleListVO.setId(xpVehicle.getId());
//                    vehicleListVO.setVehicleLon(xpVehicle.getVehicleLon());
//                    vehicleListVO.setVehicleLat(xpVehicle.getVehicleLat());
                    VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
                    if(vehiclePosition!=null){
                        double x = vehiclePosition.getPoint().getX();
                        double y = vehiclePosition.getPoint().getY();
                        vehicleListVO.setVehicleLon(x+"");
                        vehicleListVO.setVehicleLat(y+"");
                    }
                    vehicleListVO.setVehicleCode(xpVehicle.getVehicleCode());
                    vehicleListVO.setVehicleColor(xpVehicle.getVehicleColor());
                    vehicleListVO.setPlateNumber(xpVehicle.getPlateNumber());
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -18,6 +18,7 @@
import com.xiaopeng.api.model.account.XpOperationsUserNotification;
import com.xiaopeng.api.model.maintenance.*;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.common.core.constant.AliPushTypeConstant;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.enums.NotificationTypeEnum;
@@ -45,9 +46,13 @@
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.LocalTime;
@@ -95,6 +100,8 @@
    private XpVehicleClient xpVehicleClient;
    @Autowired
    private XpTaskRuleMapper xpTaskRuleMapper;
    @Autowired
    private MongoTemplate mongoTemplate;
    @Autowired
    private XpAliPushMessageClient xpAliPushMessageClient;
    @Autowired
@@ -165,11 +172,18 @@
        xpTask.setTaskTypeId(dto.getTaskTypeId());
        xpTask.setTaskUrgencyLevel(dto.getTaskUrgencyLevel());
        xpTask.setTaskDescription(dto.getTaskDescription());
        // todo 获取车辆当前位置
//        xpTask.setVehicleLocation();
       xpTask.setVehicleId(dto.getId());
//        xpTask.setVehicleLon();
//        xpTask.setVehicleLat();
        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(dto.getId());
        xpTask.setReportUserId(xpOperationsUser.getId());
        xpTask.setReportTime(LocalDateTime.now());
        xpTask.setStatus(0);
@@ -195,8 +209,7 @@
            R<List<XpOperationsUser>> xpOperationUserResult = xpOperationUserClient.listByIds(userIds);
            List<XpOperationsUser> data = xpOperationUserResult.getData();
            if (CollUtil.isNotEmpty(data)) {
                R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(dto.getId());
                XpVehicle vehicle = xpVehicleR.getData();
                String plateNumber = Objects.nonNull(vehicle) ? vehicle.getPlateNumber() : "";
                // 车辆${车牌号}在${车辆位置信息}发生了紧急事故,请在${到达现场限时}内到达现场!${APP链接}
                String content = String.format("车辆%s在%s发生了紧急事故,请在%d分钟内到达现场!", plateNumber, xpTask.getVehicleLocation(), taskRule.getProcessingTimeLimit());
@@ -221,6 +234,7 @@
    /**
     * 推送阿里云通知
     *
     * @param data
     * @param content
     * @param xpTask
@@ -877,7 +891,7 @@
                        taskManagementPageListVO.setTaskTypeName("");
                        break;
                }
            }else{
            } else {
                StringBuilder taskTypeName = new StringBuilder();
                String[] typeIds = taskManagementPageListVO.getTaskTypeId().split(",");
                List<XpErrorType> xpErrorTypes = errorTypeMapper.selectList(new LambdaQueryWrapper<XpErrorType>()
@@ -955,7 +969,7 @@
            task.setVehicleLat(dto.getVehicleLat());
            task.setReportUserId(reportUserId);
            task.setReportTime(LocalDateTime.now());
            saveTask.add( task);
            saveTask.add(task);
        }
        this.saveBatch(saveTask);
@@ -1265,7 +1279,7 @@
            }
            XpTaskHandleDetail xpTaskHandleDetail = xpTaskHandleDetailMapper.selectOne(new LambdaQueryWrapper<XpTaskHandleDetail>()
                    .eq(XpTaskHandleDetail::getTaskId, id));
            if (xpTaskHandleDetail != null){
            if (xpTaskHandleDetail != null) {
                res.setDeathCount(xpTaskHandleDetail.getDeathCount());
                res.setSevereCount(xpTaskHandleDetail.getSevereCount());
                res.setMinorCount(xpTaskHandleDetail.getMinorCount());