#!/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