feat(pl): add rechargeTypeNe filter for vehicle recharge lists

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
wuzilongandCursor committed 2026-11-12 18:50:41 +08:00
1 parent 9f65cd447f
commit 738f76c486
6 files changed
+52

No files matched your search

+10
View File
@@ -113,6 +113,7 @@ def _apply_list_kwargs(params: dict) -> dict:
license_plate=_param_get(params, "licensePlate", "license_plate"),
recharge_type=_param_get(params, "rechargeType", "recharge_type"),
recharge_type_in=_param_get(params, "rechargeTypeIn", "recharge_type_in"),
recharge_type_ne=_param_get(params, "rechargeTypeNe", "recharge_type_ne"),
status=_param_get(params, "status"),
status_in=_param_get(params, "statusIn", "status_in"),
apply_date_from=_param_get(params, "applyDateFrom", "apply_date_from"),
@@ -139,6 +140,7 @@ def _disburse_list_kwargs(params: dict) -> dict:
license_plate=_param_get(params, "licensePlate", "license_plate"),
recharge_type=_param_get(params, "rechargeType", "recharge_type"),
recharge_type_in=_param_get(params, "rechargeTypeIn", "recharge_type_in"),
recharge_type_ne=_param_get(params, "rechargeTypeNe", "recharge_type_ne"),
apply_status=_param_get(params, "applyStatus", "apply_status"),
apply_status_in=_param_get(params, "applyStatusIn", "apply_status_in"),
apply_date_from=_param_get(params, "applyDateFrom", "apply_date_from"),
@@ -170,6 +172,7 @@ def list_applies(
request: Request,
q: Optional[str] = Query(default=None),
recharge_type: Optional[str] = Query(default=None, alias="rechargeType"),
recharge_type_ne: Optional[str] = Query(default=None, alias="rechargeTypeNe"),
status: Optional[str] = Query(default=None),
apply_date_from: Optional[date] = Query(default=None, alias="applyDateFrom"),
apply_date_to: Optional[date] = Query(default=None, alias="applyDateTo"),
@@ -185,6 +188,7 @@ def list_applies(
request,
q=q,
rechargeType=recharge_type,
rechargeTypeNe=recharge_type_ne,
status=status,
applyDateFrom=apply_date_from,
applyDateTo=apply_date_to,
@@ -233,6 +237,7 @@ RECHARGE_APPLY_EXPORT_COLUMNS = [
class RechargeApplyExportBody(BaseModel):
q: Optional[str] = None
recharge_type: Optional[str] = Field(default=None, alias="rechargeType")
recharge_type_ne: Optional[str] = Field(default=None, alias="rechargeTypeNe")
status: Optional[str] = None
apply_date_from: Optional[date] = Field(default=None, alias="applyDateFrom")
apply_date_to: Optional[date] = Field(default=None, alias="applyDateTo")
@@ -422,6 +427,7 @@ def delete_applies(
def list_records(
q: Optional[str] = Query(default=None),
recharge_type: Optional[str] = Query(default=None, alias="rechargeType"),
recharge_type_ne: Optional[str] = Query(default=None, alias="rechargeTypeNe"),
recharge_date_from: Optional[date] = Query(default=None, alias="rechargeDateFrom"),
recharge_date_to: Optional[date] = Query(default=None, alias="rechargeDateTo"),
gas_station: Optional[str] = Query(default=None, alias="gasStation"),
@@ -438,6 +444,7 @@ def list_records(
user,
q=q,
recharge_type=recharge_type,
recharge_type_ne=recharge_type_ne,
recharge_date_from=recharge_date_from,
recharge_date_to=recharge_date_to,
gas_station=gas_station,
@@ -455,6 +462,7 @@ def list_disburse_board(
request: Request,
q: Optional[str] = Query(default=None),
recharge_type: Optional[str] = Query(default=None, alias="rechargeType"),
recharge_type_ne: Optional[str] = Query(default=None, alias="rechargeTypeNe"),
apply_status: Optional[str] = Query(default=None, alias="applyStatus"),
apply_date_from: Optional[date] = Query(default=None, alias="applyDateFrom"),
apply_date_to: Optional[date] = Query(default=None, alias="applyDateTo"),
@@ -470,6 +478,7 @@ def list_disburse_board(
request,
q=q,
rechargeType=recharge_type,
rechargeTypeNe=recharge_type_ne,
applyStatus=apply_status,
applyDateFrom=apply_date_from,
applyDateTo=apply_date_to,
@@ -513,6 +522,7 @@ RECHARGE_DISBURSE_EXPORT_COLUMNS = [
class RechargeDisburseExportBody(BaseModel):
q: Optional[str] = None
recharge_type: Optional[str] = Field(default=None, alias="rechargeType")
recharge_type_ne: Optional[str] = Field(default=None, alias="rechargeTypeNe")
apply_status: Optional[str] = Field(default=None, alias="applyStatus")
apply_date_from: Optional[date] = Field(default=None, alias="applyDateFrom")
apply_date_to: Optional[date] = Field(default=None, alias="applyDateTo")
@@ -42,6 +42,7 @@ def _approval_list_kwargs(params: dict) -> dict:
license_plate=_param_get(params, "licensePlate", "license_plate"),
recharge_type=_param_get(params, "rechargeType", "recharge_type"),
recharge_type_in=_param_get(params, "rechargeTypeIn", "recharge_type_in"),
recharge_type_ne=_param_get(params, "rechargeTypeNe", "recharge_type_ne"),
status=_param_get(params, "status"),
status_in=_param_get(params, "statusIn", "status_in"),
apply_date_from=_param_get(params, "applyDateFrom", "apply_date_from"),
@@ -61,6 +62,7 @@ def _approval_list_kwargs(params: dict) -> dict:
@approval_router.get("/pending", response_model=VehicleRechargeApplyListResponse)
def list_pending(
request: Request,
recharge_type_ne: Optional[str] = Query(default=None, alias="rechargeTypeNe"),
apply_date_from: Optional[date] = Query(default=None, alias="applyDateFrom"),
apply_date_to: Optional[date] = Query(default=None, alias="applyDateTo"),
page: int = Query(default=1, ge=1),
@@ -71,6 +73,7 @@ def list_pending(
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
params = _merge_query(
request,
rechargeTypeNe=recharge_type_ne,
applyDateFrom=apply_date_from,
applyDateTo=apply_date_to,
)
@@ -90,6 +93,7 @@ def list_pending(
@approval_router.get("/done", response_model=VehicleRechargeApplyListResponse)
def list_done(
request: Request,
recharge_type_ne: Optional[str] = Query(default=None, alias="rechargeTypeNe"),
apply_date_from: Optional[date] = Query(default=None, alias="applyDateFrom"),
apply_date_to: Optional[date] = Query(default=None, alias="applyDateTo"),
page: int = Query(default=1, ge=1),
@@ -100,6 +104,7 @@ def list_done(
tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
params = _merge_query(
request,
rechargeTypeNe=recharge_type_ne,
applyDateFrom=apply_date_from,
applyDateTo=apply_date_to,
)
@@ -25,6 +25,12 @@ def _split_csv(raw: Optional[str]) -> List[str]:
return [s.strip() for s in str(raw).split(",") if s.strip()]
def _append_ne_filter(filters: list, col, raw: Optional[str]) -> None:
value = (raw or "").strip()
if value:
filters.append(col != value)
def _append_enum_filter(
filters: list,
col,
@@ -148,6 +154,7 @@ def build_recharge_apply_column_filters(
license_plate: Optional[str] = None,
recharge_type: Optional[str] = None,
recharge_type_in: Optional[str] = None,
recharge_type_ne: Optional[str] = None,
status: Optional[str] = None,
status_in: Optional[str] = None,
apply_date_from: DateLike = None,
@@ -175,6 +182,7 @@ def build_recharge_apply_column_filters(
single=recharge_type,
multi=recharge_type_in,
)
_append_ne_filter(filters, PlVehicleRechargeApply.recharge_type, recharge_type_ne)
_append_enum_filter(
filters, PlVehicleRechargeApply.status, single=status, multi=status_in
)
@@ -223,6 +231,7 @@ def build_recharge_disburse_board_column_filters(
license_plate: Optional[str] = None,
recharge_type: Optional[str] = None,
recharge_type_in: Optional[str] = None,
recharge_type_ne: Optional[str] = None,
apply_status: Optional[str] = None,
apply_status_in: Optional[str] = None,
apply_date_from: DateLike = None,
@@ -256,6 +265,7 @@ def build_recharge_disburse_board_column_filters(
single=recharge_type,
multi=recharge_type_in,
)
_append_ne_filter(filters, PlVehicleRechargeApply.recharge_type, recharge_type_ne)
_append_enum_filter(
filters,
PlVehicleRechargeApply.status,
@@ -119,6 +119,7 @@ def list_pending(
license_plate: Optional[str] = None,
recharge_type: Optional[str] = None,
recharge_type_in: Optional[str] = None,
recharge_type_ne: Optional[str] = None,
status: Optional[str] = None,
status_in: Optional[str] = None,
apply_date_from=None,
@@ -155,6 +156,7 @@ def list_pending(
license_plate=license_plate,
recharge_type=recharge_type,
recharge_type_in=recharge_type_in,
recharge_type_ne=recharge_type_ne,
status=status,
status_in=status_in,
apply_date_from=apply_date_from,
@@ -192,6 +194,7 @@ def list_done(
license_plate: Optional[str] = None,
recharge_type: Optional[str] = None,
recharge_type_in: Optional[str] = None,
recharge_type_ne: Optional[str] = None,
status: Optional[str] = None,
status_in: Optional[str] = None,
apply_date_from=None,
@@ -233,6 +236,7 @@ def list_done(
license_plate=license_plate,
recharge_type=recharge_type,
recharge_type_in=recharge_type_in,
recharge_type_ne=recharge_type_ne,
status=status,
status_in=status_in,
apply_date_from=apply_date_from,
@@ -513,6 +513,7 @@ def list_applies(
license_plate: Optional[str] = None,
recharge_type: Optional[str] = None,
recharge_type_in: Optional[str] = None,
recharge_type_ne: Optional[str] = None,
status: Optional[str] = None,
status_in: Optional[str] = None,
apply_date_from: Optional[date] = None,
@@ -555,6 +556,7 @@ def list_applies(
license_plate=license_plate,
recharge_type=recharge_type,
recharge_type_in=recharge_type_in,
recharge_type_ne=recharge_type_ne,
status=status,
status_in=status_in,
apply_date_from=apply_date_from,
@@ -854,6 +856,7 @@ def list_records(
*,
q: Optional[str] = None,
recharge_type: Optional[str] = None,
recharge_type_ne: Optional[str] = None,
recharge_date_from: Optional[date] = None,
recharge_date_to: Optional[date] = None,
gas_station: Optional[str] = None,
@@ -875,6 +878,10 @@ def list_records(
)
if recharge_type:
query = query.filter(PlVehicleRechargeRecord.recharge_type == recharge_type)
if recharge_type_ne and str(recharge_type_ne).strip():
query = query.filter(
PlVehicleRechargeRecord.recharge_type != str(recharge_type_ne).strip()
)
if recharge_date_from:
query = query.filter(PlVehicleRechargeRecord.recharge_date >= recharge_date_from)
if recharge_date_to:
@@ -937,6 +944,7 @@ def list_disburse_board(
license_plate: Optional[str] = None,
recharge_type: Optional[str] = None,
recharge_type_in: Optional[str] = None,
recharge_type_ne: Optional[str] = None,
apply_status: Optional[str] = None,
apply_status_in: Optional[str] = None,
apply_date_from: Optional[date] = None,
@@ -997,6 +1005,7 @@ def list_disburse_board(
license_plate=license_plate,
recharge_type=recharge_type,
recharge_type_in=recharge_type_in,
recharge_type_ne=recharge_type_ne,
apply_status=apply_status,
apply_status_in=apply_status_in,
apply_date_from=apply_date_from,
@@ -119,6 +119,20 @@ def test_maintenance_process_board_filters():
assert "handler_id" in joined
def test_recharge_apply_type_ne_filter():
filters = build_recharge_apply_column_filters(recharge_type_ne="etc")
assert len(filters) == 1
sql = _compile(filters[0])
assert "recharge_type" in sql
assert "!=" in sql or "<>" in sql
assert "etc" in sql
def test_recharge_disburse_board_type_ne_filter():
filters = build_recharge_disburse_board_column_filters(recharge_type_ne="etc")
assert any("recharge_type" in _compile(f) for f in filters)
def test_empty():
assert build_recharge_apply_column_filters() == []
assert build_recharge_disburse_board_column_filters() == []