Files

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