“mitao”
2026-03-11 fd3599da1c63e7d305942fcbdb38a83a767b3fce
bugfix
4个文件已修改
110 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/ElectronicPageListQuery.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/resources/mapper/XpElectronicFenceMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/importExcel/XpVehicleImportExcel.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/ElectronicPageListQuery.java
@@ -12,8 +12,12 @@
public class ElectronicPageListQuery extends BasePage {
    @ApiModelProperty(value = "围栏id/名称")
    private String electronicNumberOrName;
    @ApiModelProperty(value = "围栏构成 区域id")
    @ApiModelProperty(value = "禁行区数量筛选:范围(如 0,5)或阈值(如 20 表示>20)")
    private String electronicAreaId;
    @ApiModelProperty(value = "禁行区数量范围-最小值(由后端从 electronicAreaId 解析或前端直传)")
    private Integer prohibitedAreaCountMin;
    @ApiModelProperty(value = "禁行区数量范围-最大值(由后端从 electronicAreaId 解析或前端直传)")
    private Integer prohibitedAreaCountMax;
    @ApiModelProperty(value = "围栏状态 0=草稿 1=待启用 2=启用中 3=已停用")
    private List<Integer> statusList;
    @ApiModelProperty(value = "创建人")
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java
@@ -78,6 +78,10 @@
    @Override
    public PageInfo<XpElectronicFence> pageList(ElectronicPageListQuery query) {
        if (query == null) {
            return new PageInfo<>();
        }
        normalizeProhibitedAreaCountFilter(query);
        PageInfo<XpElectronicFence> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        if (StringUtils.isEmpty(query.getCreateSort())&& StringUtils.isEmpty(query.getUpdateSort())){
            query.setCreateSort("2");
@@ -103,6 +107,81 @@
        pageInfo.setRecords(list);
        return pageInfo;
    }
    private void normalizeProhibitedAreaCountFilter(ElectronicPageListQuery query) {
        Integer prohibitedAreaCountMin = query.getProhibitedAreaCountMin();
        Integer prohibitedAreaCountMax = query.getProhibitedAreaCountMax();
        if (prohibitedAreaCountMin != null || prohibitedAreaCountMax != null) {
            if (prohibitedAreaCountMin != null && prohibitedAreaCountMax != null) {
                int min = Math.min(prohibitedAreaCountMin, prohibitedAreaCountMax);
                int max = Math.max(prohibitedAreaCountMin, prohibitedAreaCountMax);
                if (min < 0) {
                    clearAreaFilter(query);
                    return;
                }
                query.setProhibitedAreaCountMin(min);
                query.setProhibitedAreaCountMax(max);
                query.setElectronicAreaId(null);
                return;
            }
            if (prohibitedAreaCountMin != null) {
                if (prohibitedAreaCountMin < 0) {
                    clearAreaFilter(query);
                    return;
                }
                query.setElectronicAreaId(null);
                return;
            }
            if (prohibitedAreaCountMax < 0) {
                clearAreaFilter(query);
                return;
            }
            query.setElectronicAreaId(null);
            return;
        }
        String electronicAreaId = query.getElectronicAreaId();
        if (StringUtils.isEmpty(electronicAreaId)) {
            return;
        }
        try {
            if (electronicAreaId.contains(",")) {
                String[] parts = electronicAreaId.split(",");
                if (parts.length != 2) {
                    clearAreaFilter(query);
                    return;
                }
                int left = Integer.parseInt(parts[0].trim());
                int right = Integer.parseInt(parts[1].trim());
                int min = Math.min(left, right);
                int max = Math.max(left, right);
                if (min < 0) {
                    clearAreaFilter(query);
                    return;
                }
                query.setProhibitedAreaCountMin(min);
                query.setProhibitedAreaCountMax(max);
                query.setElectronicAreaId(null);
                return;
            }
            int threshold = Integer.parseInt(electronicAreaId.trim());
            if (threshold < 0 || threshold == Integer.MAX_VALUE) {
                clearAreaFilter(query);
                return;
            }
            query.setProhibitedAreaCountMin(threshold + 1);
            query.setProhibitedAreaCountMax(null);
            query.setElectronicAreaId(null);
        } catch (Exception e) {
            clearAreaFilter(query);
        }
    }
    private void clearAreaFilter(ElectronicPageListQuery query) {
        query.setElectronicAreaId(null);
        query.setProhibitedAreaCountMin(null);
        query.setProhibitedAreaCountMax(null);
    }
    public static String getPinyinInitials(String chinese) {
        StringBuilder pinyinInitials = new StringBuilder();
        for (char c : chinese.toCharArray()) {
xp-robotaxi-map-boot/src/main/resources/mapper/XpElectronicFenceMapper.xml
@@ -28,15 +28,12 @@
        select ef.id, ef.electronic_name as electronicName, ef.electronic_number as electronicNumber, ef.status, ef.effect_type as effectType, ef.effect_time as effectTime, ef.failure_type as failureType, ef.failure_time as failureTime, ef.operation_strategy as operationStrategy
        , ef.create_time as createTime, ef.update_time as updateTime, ef.create_by as createBy, ef.update_by as updateBy
        from xp_electronic_fence ef
        left join xp_electronic_fence_area efa on efa.electronic_id = ef.id
        left join xp_electronic_fence_area efa on efa.electronic_id = ef.id and efa.is_deleted = 0
        where ef.is_deleted = 0
        <if test="query.electronicNumberOrName != null">
            and( ef.electronic_name like concat('%',#{query.electronicNumberOrName},'%')
            or ef.electronic_number like concat('%',#{query.electronicNumberOrName},'%')
            )
        </if>
        <if test="query.electronicAreaId != null">
            and efa.id = #{query.electronicAreaId}
        </if>
        <if test="query.statusList != null">
            <foreach collection="query.statusList" item="status" open="and ef.status in (" separator="," close=")">
@@ -63,6 +60,17 @@
            and #{query.updateEndTime} >= ef.update_time
        </if>
        group by ef.id
        <choose>
            <when test="query.prohibitedAreaCountMin != null and query.prohibitedAreaCountMax != null">
                having sum(case when efa.area_type = 2 then 1 else 0 end) between #{query.prohibitedAreaCountMin} and #{query.prohibitedAreaCountMax}
            </when>
            <when test="query.prohibitedAreaCountMin != null">
                having sum(case when efa.area_type = 2 then 1 else 0 end) &gt;= #{query.prohibitedAreaCountMin}
            </when>
            <when test="query.prohibitedAreaCountMax != null">
                having sum(case when efa.area_type = 2 then 1 else 0 end) &lt;= #{query.prohibitedAreaCountMax}
            </when>
        </choose>
        <if test="query.createSort != null and query.updateSort != null">
            order by
            <if test="query.createSort == 1">
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/importExcel/XpVehicleImportExcel.java
@@ -1,10 +1,13 @@
package com.xiaopeng.vehicleConvoy.model.importExcel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * 在库车辆导入Excel
@@ -36,6 +39,12 @@
    @Excel(name = "采购来源", width = 15)
    private String procurementSource;
    @Excel(name = "年检到期时间 1970-01-01 00:00:00", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime annualInspectionDate;
    @Excel(name = "保险到期时间 1970-01-01 00:00:00", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime insuranceEndTime;
    @Excel(name = "备注", width = 25)
    private String remarks;
}