|
|
@@ -42,6 +42,51 @@ public class KwtVehicleExceptionRepository extends ServiceImpl<KwtVehicleExcepti
|
|
|
.like(StringUtils.isNotBlank(truckNo), KwtVehicleException::getTruckNo, truckNo)
|
|
|
.orderByDesc(KwtVehicleException::getExceptionTime));
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页查询每个车牌号异常时间最新的一条记录
|
|
|
+ * 使用子查询确保每个车牌号只返回异常时间最新的一条记录
|
|
|
+ *
|
|
|
+ * @param entId 企业ID
|
|
|
+ * @param exceptionType 异常类型
|
|
|
+ * @param truckNo 车牌号
|
|
|
+ * @param pageNum 页码
|
|
|
+ * @param pageSize 每页数量
|
|
|
+ * @return 分页结果
|
|
|
+ */
|
|
|
+ public IPage<KwtVehicleException> queryExceptionImagePage1(Long entId, Integer exceptionType,
|
|
|
+ String truckNo, int pageNum, int pageSize) {
|
|
|
+ // 构建子查询条件:当前记录的异常时间等于该车牌号的最大异常时间
|
|
|
+ // 使用 (truck_no, exception_time) IN 子查询来确保只查询每个车牌号最新的一条
|
|
|
+ StringBuilder subQuery = new StringBuilder();
|
|
|
+ subQuery.append("(truck_no, exception_time) IN (");
|
|
|
+ subQuery.append("SELECT truck_no, MAX(exception_time) ");
|
|
|
+ subQuery.append("FROM kwt_vehicle_exception ");
|
|
|
+ subQuery.append("WHERE del_flag = 0");
|
|
|
+
|
|
|
+ if (Objects.nonNull(entId)) {
|
|
|
+ subQuery.append(" AND ent_id = ").append(entId);
|
|
|
+ }
|
|
|
+ if (Objects.nonNull(exceptionType)) {
|
|
|
+ subQuery.append(" AND exception_type = ").append(exceptionType);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(truckNo)) {
|
|
|
+ // 转义单引号防止 SQL 注入
|
|
|
+ String escapedTruckNo = truckNo.replace("'", "''");
|
|
|
+ subQuery.append(" AND truck_no LIKE '%").append(escapedTruckNo).append("%'");
|
|
|
+ }
|
|
|
+
|
|
|
+ subQuery.append(" GROUP BY truck_no)");
|
|
|
+
|
|
|
+ return page(new Page<>(pageNum, pageSize),
|
|
|
+ Wrappers.<KwtVehicleException>lambdaQuery()
|
|
|
+ .eq(KwtVehicleException::getDelFlag, 0)
|
|
|
+ .eq(Objects.nonNull(entId), KwtVehicleException::getEntId, entId)
|
|
|
+ .eq(Objects.nonNull(exceptionType), KwtVehicleException::getExceptionType, exceptionType)
|
|
|
+ .like(StringUtils.isNotBlank(truckNo), KwtVehicleException::getTruckNo, truckNo)
|
|
|
+ .apply(subQuery.toString())
|
|
|
+ .orderByDesc(KwtVehicleException::getExceptionTime));
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 批量查询运单的异常数量
|