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) >= #{query.prohibitedAreaCountMin} </when> <when test="query.prohibitedAreaCountMax != null"> having sum(case when efa.area_type = 2 then 1 else 0 end) <= #{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; }