“mitao”
2026-03-10 60f725780dea514dd1775b0bf2b143a6f5563ddd
bugfix
1个文件已添加
4个文件已修改
69 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/SysGroupMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysGroupServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/resources/mapper/account/SysGroupMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/task/VehicleDocumentExpiryTask.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/SysGroupMapper.java
@@ -1,6 +1,7 @@
package com.xiaopeng.account.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xiaopeng.account.model.query.GroupUserPageQuery;
import com.xiaopeng.account.model.vo.GroupUserVO;
import com.xiaopeng.api.model.account.SysGroup;
@@ -34,5 +35,5 @@
     * @param query    查询参数
     * @return 用户列表
     */
    PageInfo<GroupUserVO> queryUserPageList(PageInfo<GroupUserVO> pageInfo, @Param("query") GroupUserPageQuery query);
    Page<GroupUserVO> queryUserPageList(PageInfo<GroupUserVO> pageInfo, @Param("query") GroupUserPageQuery query);
}
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysGroupServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.account.constant.I18nKeyConstant;
import com.xiaopeng.account.mapper.SysGroupMapper;
@@ -203,8 +204,8 @@
        // 分页查询
        PageInfo<GroupUserVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        query.setGroupType(group.getGroupType());
        PageInfo<GroupUserVO> records = baseMapper.queryUserPageList(pageInfo, query);
        Page<GroupUserVO> records = baseMapper.queryUserPageList(pageInfo, query);
        pageInfo.setRecords(records.getRecords());
        // 手动设置分页信息(因为使用了自定义SQL)
        return pageInfo;
    }
xp-robotaxi-account-boot/src/main/resources/mapper/account/SysGroupMapper.xml
@@ -48,15 +48,15 @@
                    ou.id,
                    ou.nick_name AS nickName,
                    ou.unique_number AS uniqueNumber,
                    ou.user_account AS userAccount,
                    ou.phone_number AS userAccount,
                    ou.phone_number AS phoneNumber,
                    ou.status,
                    ou.remarks,
                    ou.create_time AS createTime,
                    GROUP_CONCAT(DISTINCT sr.role_name ORDER BY sr.role_name SEPARATOR ',') AS roleName
                    GROUP_CONCAT(DISTINCT sr.role_name SEPARATOR ',') AS roleName
                FROM xp_operations_user ou
                INNER JOIN xp_operations_role xor ON ou.id = xor.operations_user_id
                INNER JOIN sys_role sr ON xor.role_id = sr.id
                INNER JOIN xp_operations_role xop ON ou.id = xop.operations_user_id
                INNER JOIN sys_role sr ON xop.role_id = sr.id
                WHERE sr.group_id = #{query.groupId}
                  AND sr.is_deleted = 0
                  AND ou.is_deleted = 0
@@ -66,8 +66,7 @@
                <if test="query.phoneNumber != null and query.phoneNumber != ''">
                    AND ou.phone_number LIKE CONCAT('%', #{query.phoneNumber}, '%')
                </if>
                GROUP BY ou.id, ou.nick_name, ou.unique_number, ou.user_account,
                         ou.phone_number, ou.status, ou.remarks, ou.create_time
                GROUP BY ou.id, ou.nick_name, ou.unique_number, ou.phone_number, ou.status, ou.remarks, ou.create_time
                ORDER BY ou.create_time DESC
            </otherwise>
        </choose>
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -580,7 +580,6 @@
        orderCancel.setCancelSource(3); // 3=运营人员(后台管理接口固定为运营人员)
        orderCancel.setUserId(SecurityUtils.getUserId()); // 当前登录用户ID
        orderCancel.setCancelReason("运营人员取消订单");
        orderCancel.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
        xpOrderCancelService.save(orderCancel);
        //查询车辆信息
        R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getId());
@@ -590,7 +589,7 @@
                PushOrderDto pushOrderDto = new PushOrderDto();
                pushOrderDto.setOrderId(order.getId().toString());
                pushOrderDto.setVin(xpVehicleR.getData().getVehicleVin());
                // pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER);
                pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER);
                orderMissionClient.cancelOrder(pushOrderDto);
            }
        } else {
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/task/VehicleDocumentExpiryTask.java
New file
@@ -0,0 +1,47 @@
package com.xiaopeng.vehicleConvoy.task;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.vehicleConvoy.service.IXpVehicleService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
/**
 * 运营车辆年检/保险/运营资质过期检查定时任务
 * 每日凌晨1点执行一次:任意一项过期则转为在库,车辆状态置为3(保险/年检已过期)
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class VehicleDocumentExpiryTask {
    private static final ZoneId ZONE_GMT8 = ZoneId.of("GMT+8");
    private final IXpVehicleService xpVehicleService;
    @Scheduled(cron = "0 0 1 * * ?", zone = "GMT+8")
    @Transactional(rollbackFor = Exception.class)
    public void checkAndStockExpiredVehicles() {
        LocalDate today = LocalDate.now(ZONE_GMT8);
        LocalDateTime todayStart = today.atStartOfDay();
        LambdaUpdateWrapper<XpVehicle> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.eq(XpVehicle::getVehicleType, 2)
                .and(w -> w.lt(XpVehicle::getAnnualInspectionDate, todayStart)
                        .or().lt(XpVehicle::getInsuranceEndTime, todayStart)
                        .or().lt(XpVehicle::getQualificationExpireTime, todayStart))
                .set(XpVehicle::getVehicleType, 1)
                .set(XpVehicle::getStatus, 3);
        boolean updated = xpVehicleService.update(updateWrapper);
        log.info("运营车辆证件过期检查任务执行完成,todayStart={}, updated={}", todayStart, updated);
    }
}