56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""预览参数解析(对标 JNPF parameterData 子集)"""
|
|
from __future__ import annotations
|
|
|
|
from datetime import date, datetime
|
|
from typing import Any, Dict, Optional
|
|
|
|
|
|
def _today_str() -> str:
|
|
return date.today().isoformat()
|
|
|
|
|
|
def _now_str() -> str:
|
|
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|
|
|
|
|
def build_system_params(
|
|
*,
|
|
user_id: Optional[str] = None,
|
|
user_name: Optional[str] = None,
|
|
dept_id: Optional[str] = None,
|
|
dept_name: Optional[str] = None,
|
|
tenant_id: Optional[str] = None,
|
|
) -> Dict[str, Any]:
|
|
"""系统变量,与 JNPF parameterData 常用键对齐。"""
|
|
params: Dict[str, Any] = {
|
|
"currentDate": _today_str(),
|
|
"currentTime": _now_str(),
|
|
"currentUserId": user_id or "",
|
|
"currentUserName": user_name or "",
|
|
"currentDeptId": dept_id or "",
|
|
"currentDeptName": dept_name or "",
|
|
"currentTenantId": tenant_id or "",
|
|
}
|
|
# 兼容 #{userName} / #{deptName} 简写
|
|
if user_name:
|
|
params.setdefault("userName", user_name)
|
|
if dept_name:
|
|
params.setdefault("deptName", dept_name)
|
|
return params
|
|
|
|
|
|
def merge_preview_params(
|
|
query_defaults: Optional[Dict[str, Any]] = None,
|
|
request_params: Optional[Dict[str, Any]] = None,
|
|
system_params: Optional[Dict[str, Any]] = None,
|
|
) -> Dict[str, Any]:
|
|
"""合并顺序:query 默认 → 系统变量 → 请求参数(请求优先)。"""
|
|
merged: Dict[str, Any] = {}
|
|
for src in (query_defaults or {}, system_params or {}, request_params or {}):
|
|
for k, v in src.items():
|
|
if v is not None and v != "":
|
|
merged[k] = v
|
|
return merged
|