“mitao”
2026-03-01 7c57ab7a5efa3e8874bc6e18af685694dd8c307a
bugfix
5个文件已修改
105 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/GroupUserVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/resources/mapper/account/SysGroupMapper.xml 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/XpVehicleDetectionVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpVehicleDetectionServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/GroupUserVO.java
@@ -40,4 +40,7 @@
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "角色名称")
    private String roleName;
}
xp-robotaxi-account-boot/src/main/resources/mapper/account/SysGroupMapper.xml
@@ -15,32 +15,62 @@
    <!-- 查询权限组绑定用户列表 -->
    <select id="queryUserPageList" resultType="com.xiaopeng.account.model.vo.GroupUserVO">
        SELECT DISTINCT
            su.id,
            su.nick_name AS nickName,
            su.unique_number AS uniqueNumber,
            su.user_account AS userAccount,
            su.phone_number AS phoneNumber,
            su.status,
            su.remarks,
            su.create_time AS createTime
        FROM sys_user su
        INNER JOIN sys_user_role sur ON su.id = sur.user_id
        INNER JOIN sys_role sr ON sur.role_id = sr.id
        LEFT JOIN sys_group sg ON sr.group_id = sg.id
        WHERE sr.group_id = #{query.groupId}
          AND sr.is_deleted = 0
          AND su.is_deleted = 0
        <if test="query.groupType != null">
            AND sg.group_type = #{query.groupType}
        </if>
        <if test="query.nickName != null and query.nickName != ''">
            AND su.nick_name LIKE CONCAT('%', #{query.nickName}, '%')
        </if>
        <if test="query.phoneNumber != null and query.phoneNumber != ''">
            AND su.phone_number LIKE CONCAT('%', #{query.phoneNumber}, '%')
        </if>
        ORDER BY su.create_time DESC
        <choose>
            <!-- groupType=1: 管理端用户 -->
            <when test="query.groupType == 1">
                SELECT DISTINCT
                    su.id,
                    su.nick_name AS nickName,
                    su.unique_number AS uniqueNumber,
                    su.user_account AS userAccount,
                    su.phone_number AS phoneNumber,
                    su.status,
                    su.remarks,
                    su.create_time AS createTime,
                    sr.role_name AS roleName
                FROM sys_user su
                INNER JOIN sys_user_role sur ON su.id = sur.user_id
                INNER JOIN sys_role sr ON sur.role_id = sr.id
                WHERE sr.group_id = #{query.groupId}
                  AND sr.is_deleted = 0
                  AND su.is_deleted = 0
                <if test="query.nickName != null and query.nickName != ''">
                    AND su.nick_name LIKE CONCAT('%', #{query.nickName}, '%')
                </if>
                <if test="query.phoneNumber != null and query.phoneNumber != ''">
                    AND su.phone_number LIKE CONCAT('%', #{query.phoneNumber}, '%')
                </if>
                ORDER BY su.create_time DESC
            </when>
            <!-- groupType=2: 运维用户 -->
            <otherwise>
                SELECT
                    ou.id,
                    ou.nick_name AS nickName,
                    ou.unique_number AS uniqueNumber,
                    ou.user_account 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
                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
                WHERE sr.group_id = #{query.groupId}
                  AND sr.is_deleted = 0
                  AND ou.is_deleted = 0
                <if test="query.nickName != null and query.nickName != ''">
                    AND ou.nick_name LIKE CONCAT('%', #{query.nickName}, '%')
                </if>
                <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
                ORDER BY ou.create_time DESC
            </otherwise>
        </choose>
    </select>
</mapper>
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/vo/XpVehicleDetectionVO.java
@@ -27,6 +27,9 @@
    @ApiModelProperty(value = "开始操作人")
    private String operatorStartName;
    @ApiModelProperty(value = "联系电话")
    private String phoneNumber;
    @ApiModelProperty(value = "结束操作人")
    private String operatorEndName;
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpVehicleDetectionServiceImpl.java
@@ -21,6 +21,7 @@
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -117,13 +118,13 @@
                    .distinct()
                    .collect(Collectors.toList());
            // 批量查询操作人信息
            Map<Long, String> userNameMap = new HashMap<>();
            Map<Long, XpOperationsUser> operationUserMap = new HashMap<>();
            if (!CollectionUtils.isEmpty(allUserIds)) {
                R<List<XpOperationsUser>> userResult = xpOperationUserClient.listByIds(allUserIds);
                List<XpOperationsUser> users = userResult.getData();
                if (!CollectionUtils.isEmpty(users)) {
                    userNameMap = users.stream()
                            .collect(Collectors.toMap(XpOperationsUser::getId, XpOperationsUser::getNickName));
                    operationUserMap = users.stream()
                            .collect(Collectors.toMap(XpOperationsUser::getId, Function.identity()));
                }
            }
@@ -135,8 +136,11 @@
                // 填充操作人姓名
                if (xpVehicleDetection.getOperationsUserId() != null) {
                    String userName = userNameMap.get(xpVehicleDetection.getOperationsUserId());
                    vo.setOperatorStartName(userName);
                    XpOperationsUser xpOperationsUser = operationUserMap.get(xpVehicleDetection.getOperationsUserId());
                    if (Objects.nonNull(xpOperationsUser)) {
                        vo.setOperatorStartName(xpOperationsUser.getNickName());
                        vo.setPhoneNumber(xpOperationsUser.getPhoneNumber());
                    }
                }
                records.add(vo);
            }
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -394,7 +394,8 @@
        for (XpVehicleExportExcel xpVehicleExportExcel : exportList) {
            if (StringUtils.isNotBlank(xpVehicleExportExcel.getVehiclePictures())) {
                JSONObject jsonObject = JSONObject.parseObject(xpVehicleExportExcel.getVehiclePictures());
                xpVehicleExportExcel.setVehiclePictures(jsonObject.getString("url"));
                // xpVehicleExportExcel.setVehiclePictures(jsonObject.getString("url"));
                xpVehicleExportExcel.setVehiclePictures(null);
            }
        }
        // 3. 生成Excel