# -*- coding: utf-8 -*-
"""
数据查询示例
适用插件：Form/Operation/Report
依赖 API：BusinessDataServiceHelper, QueryServiceHelper, DBUtils, MetaDataServiceHelper
相关检查：推荐使用参数化查询，避免拼接用户输入
"""

def query_by_primary_key(this, formId, primaryKey):
    # 按主键查询单个实体
    return BusinessDataServiceHelper.LoadSingle(this.Context, primaryKey, formId)

def query_by_filter(this, formId, filterString):
    # 按条件查询
    from Kingdee.BOS.Core.CommonFilter import QFilter
    filter = QFilter("billno", "=", filterString)
    return BusinessDataServiceHelper.Load(this.Context, formId, List[QFilter]([filter]))

def query_by_sql(this, sql, parameters):
    # SQL 查询（带参数）
    from Kingdee.BOS.App.Data import DBUtils, SqlParam
    paramList = List[SqlParam]()
    for name, value in parameters.items():
        paramList.Add(SqlParam(name, KDDbType.AnsiString, value))
    return DBUtils.ExecuteDataSet(this.Context, sql, paramList)

def query_by_query_service(this, formId, fieldKeys, filterString):
    # QueryServiceHelper 查询
    return QueryServiceHelper.GetDynamicObjectCollection(
        this.Context, formId, fieldKeys, filterString, None
    )

def get_form_metadata(this, formId):
    # 获取表单元数据
    return MetaDataServiceHelper.Load(this.Context, formId)
