# doc_method

class_name: kd.bos.entity.botp.WriteBackRuleElement
method_name: setExcessCheckType
param_types_key: ExcessCheckType
signature_text: public void setExcessCheckType(ExcessCheckType excessCheckType)
comment:
超额检查模式：StrictControl(0),CanExcessOneTime(1),CanExcellAlways(2),SelectByFormula(3)
@param `excessCheckType`


class_name: kd.bos.entity.cache.IAppCache
method_name: put
param_types_key: String,Object
signature_text: void put(String key, Object value)
comment:
存入
@param `key` 缓存标识
@param `value` 缓存数据，不限类型，平台自动序列化为字符串后存入缓存；推荐传入String类型，自行序列化，避免平台自动序列化、反序列化时丢失信息


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: <init>
param_types_key: String,String,Map
comment: 构造函数 @param `entityName` 实体对象编码 @param `pageId` 页面pageId @param `services` 服务字典
signature_text:
public AbstractFormDataModel(String entityName, String pageId, java.util.Map<Class<?>, Object> services)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: <init>
param_types_key: String,String,Map,String,String
signature_text:
public AbstractFormDataModel(String entityName, String pageId, java.util.Map<Class<?>, Object> services, String appId, String permissionItem)

comment:
构造函数
@param `entityName` 实体对象编码
@param `pageId` 页面pageId
@param `services` 服务字典
@param `appId` 应用标识
@param `permissionItem` 权限项


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: batchFillEntry
param_types_key: String,int,List,Object[],boolean
signature_text:
public int batchFillEntry(String entryKey, int currentRow, java.util.List<IDataEntityProperty> selProps, Object[] values, boolean batchFillNull)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: copyEntityData
param_types_key: EntityType,DynamicObject,DynamicObject,int,boolean
signature_text:
protected void copyEntityData(EntityType entity, DynamicObject srcObj, DynamicObject currObj, int rowIndex, boolean isCopyLinkEntry)

comment:
复制实体数据包, 仅关注数据,不关注事件
@param `entity` 当前实体
@param `srcObj` 源数据包
@param `currObj` 本单数据包
@param `rowIndex` 当前实体行
@param `isCopyLinkEntry` 是否复制关联子实体


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: copyEntityData
param_types_key: EntityType,DynamicObject,DynamicObject,int,boolean,boolean
signature_text:
protected boolean copyEntityData(EntityType entity, DynamicObject srcObj, DynamicObject currObj, int rowIndex, boolean isCopyLinkEntry, boolean isCopyEmptyRow)

comment:
复制实体数据包, 仅关注数据,不关注事件
@param `entity` 当前实体
@param `srcObj` 源数据包
@param `currObj` 本单数据包
@param `rowIndex` 当前实体行
@param `isCopyLinkEntry` 是否复制关联子实体
@param `isCopyEmptyRow` 是否复制空白行
@return 当前行、其子单据体行数据是否可以复制和系统设置的是否复制空白行，true：三者有一个ture则可以复制，false：三者都为false则不可以复制


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: createNewData
param_types_key: Object,Supplier
signature_text:
public Object createNewData(Object newObject, java.util.function.Supplier<OperationResult> initializer)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: dragRowGridToGrid
param_types_key: FromDragRowInfo,ToDragRowInfo,String
signature_text:
public void dragRowGridToGrid(DragRowGridToGridEventArgs.FromDragRowInfo fromInfo, DragRowGridToGridEventArgs.ToDragRowInfo toInfo, String direct)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: filterSortByRowKeys
param_types_key: String,List
comment: 对真实索引值按过滤后的序号顺序排序 @param `entryKey` 单据体标识 @param `rowkeyList` 真实rk值，从0开始 @return 按过滤后的序号顺序排序
signature_text:
public java.util.List<Integer> filterSortByRowKeys(String entryKey, java.util.List<Integer> rowkeyList)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: getCallManager
signature_text:
public kd.bos.entity.datamodel.SetValueCallManager<kd.bos.entity.datamodel.SetValueCallInfo> getCallManager()


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: getFilterEntryRowKeys
param_types_key: String,int,int
signature_text:
public java.util.List<Integer> getFilterEntryRowKeys(String entryKey, int startRowIndex, int endRowIndex)

comment:
过滤后，按过滤后的行序号取rk值，取含(startRowIndex)至不含(endRowIndex)中间的数据
@param `entryKey` 单据体
@param `startRowIndex` 过滤后的开始位置
@param `endRowIndex` 过滤后的结束位置


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: getFilterEntryRows
param_types_key: String,int,int
signature_text: public DynamicObject[] getFilterEntryRows(String entryKey, int startRowIndex, int endRowIndex)
comment:
获取过滤排序模式下获取单据体分页数据
@param `entryKey` 单据体标识
@param `startRowIndex` 开始行
@param `endRowIndex` 结束行
@return 数据


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: getFilterIndexByRowKeys
param_types_key: String,List
comment: 根据真实索引值获取过滤后的索引位置 @param `entryKey` 单据体标识 @param `rowkeyList` 真实rk值，从0开始 @return 过滤后所在的位置，从0开始
signature_text:
public java.util.List<Integer> getFilterIndexByRowKeys(String entryKey, java.util.List<Integer> rowkeyList)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: loadReferenceDataBatch
param_types_key: DynamicObjectType,Object[]
signature_text:
public java.util.Map<Object, DynamicObject> loadReferenceDataBatch(DynamicObjectType dt, Object[] pkValues)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: loadReferenceDataBatch
param_types_key: DynamicObjectType,List
signature_text:
public java.util.Map<Object, DynamicObject> loadReferenceDataBatch(DynamicObjectType dt, java.util.List<QFilter> qFilters)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: searchEntryFieldData
param_types_key: String,EntryQueryParam,int,int
signature_text:
public java.util.List<Object> searchEntryFieldData(String entryKey, EntryQueryParam queryParam, int startRowIndex, int endRowIndex)

comment:
查询单据体某字段的去重列表数据
@param `entryKey` 分录标识
@param `queryParam` 过滤条件
@param `startRowIndex` 起始序号
@param `endRowIndex` 结束序号


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: setFieldValueForWebApi
param_types_key: IDataEntityProperty,DynamicObject,Object,boolean
signature_text:
public void setFieldValueForWebApi(IDataEntityProperty prop, DynamicObject dataEntity, Object value, boolean checkImportable)

comment:
设置字段值：供Web Api导入数据场景调用，支持触发值更新事件（可能会针对webapi导入特征对传入的值进行检查、格式化等处理，其他场景勿调用）
@param `prop` 属性
@param `dataEntity` 需改动字段值的数据包
@param `value` 字段值
@param `checkImportable` 是否检查字段"功能控制 -是否允许导入"选项


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: setItemValueByID
param_types_key: String,Object,int,int,List
signature_text:
public void setItemValueByID(String key, Object id, int row, int parentRowIndex, java.util.List<QFilter> qFilters)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: setItemValueByID
param_types_key: IDataEntityProperty,DynamicObject,Object,boolean
signature_text:
public void setItemValueByID(IDataEntityProperty property, DynamicObject dataEntity, Object id, boolean isShowApproved)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: setItemValueByID
param_types_key: IDataEntityProperty,DynamicObject,Object,List
signature_text:
public void setItemValueByID(IDataEntityProperty property, DynamicObject dataEntity, Object id, java.util.List<QFilter> qFilters)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: setItemValueByNumber
param_types_key: String,String,int,List
signature_text:
public void setItemValueByNumber(String key, String number, int row, java.util.List<QFilter> qFilters)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: setItemValueByNumber
param_types_key: String,String,int,int,boolean
comment: 基础资料和多选基础资料赋值需要特殊处理
signature_text:
public void setItemValueByNumber(String key, String number, int row, int parentRowIndex, boolean isShowApproved)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: setItemValueByNumber
param_types_key: String,String,int,int,List
signature_text:
public void setItemValueByNumber(String key, String number, int row, int parentRowIndex, java.util.List<QFilter> qFilters)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: setItemValueByNumber
param_types_key: IDataEntityProperty,DynamicObject,String
signature_text:
public void setItemValueByNumber(IDataEntityProperty property, DynamicObject dataEntity, String number)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: setItemValueByNumber
param_types_key: IDataEntityProperty,DynamicObject,String,boolean
signature_text:
public void setItemValueByNumber(IDataEntityProperty property, DynamicObject dataEntity, String number, boolean isShowApproved)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: setItemValueByNumber
param_types_key: IDataEntityProperty,DynamicObject,String,List
signature_text:
public void setItemValueByNumber(IDataEntityProperty property, DynamicObject dataEntity, String number, java.util.List<QFilter> qFilters)


class_name: kd.bos.entity.datamodel.AbstractFormDataModel
method_name: sortBaseDataBySelectionOrder
param_types_key: Map,BasedataEntityType,String
comment: 根据多选基础资料选择的顺序返回对应对象
signature_text:
sortBaseDataBySelectionOrder(java.util.Map<Object, DynamicObject> baseData, BasedataEntityType baseDataEntityType, String number)


class_name: kd.bos.entity.datamodel.BasedataItem
method_name: <init>
param_types_key: String,String,BasedataEntityType,String
signature_text:
public BasedataItem(String fieldKey, String entityNumber, BasedataEntityType refBDType, String searchKey)

comment:
构造方法
@param `fieldKey` 字段标识
@param `entityNumber` 实体编码
@param `refBDType` 基础资料实体类型
@param `searchKey` 搜索字段标识


class_name: kd.bos.entity.datamodel.BasedataItem
method_name: <init>
param_types_key: String,String,BasedataEntityType,Long,String,String
signature_text:
public BasedataItem(String fieldKey, String entityNumber, BasedataEntityType refBDType, Long orgId, String searchKey, String searchValue)

comment:
构造方法
@param `fieldKey` 字段标识
@param `entityNumber` 实体编码
@param `refBDType` 基础资料实体类型
@param `orgId` 组织id
@param `searchKey` 搜索字段标识
@param `searchValue` 搜索字段值


class_name: kd.bos.entity.datamodel.BasedataItem
method_name: <init>
param_types_key: String,String,BasedataEntityType,Long,String,String,String
signature_text:
public BasedataItem(String fieldKey, String entityNumber, BasedataEntityType refBDType, Long orgId, String searchKey, String searchValue, String bizTag)

comment:
构造方法
@param `fieldKey` 字段标识
@param `entityNumber` 实体编码
@param `refBDType` 基础资料实体类型
@param `orgId` 组织id
@param `searchKey` 搜索字段标识
@param `searchValue` 搜索字段值
@param `bizTag` 业务标签


class_name: kd.bos.entity.datamodel.BasedataItem
method_name: <init>
param_types_key: String,String,BasedataEntityType,Long,String,String,String,String
signature_text:
public BasedataItem(String fieldKey, String entityNumber, BasedataEntityType refBDType, Long orgId, String searchKey, String searchValue, String bizTag, String versionControl)

comment:
构造方法
@param `fieldKey` 字段标识
@param `entityNumber` 实体编码
@param `refBDType` 基础资料实体类型
@param `orgId` 组织id
@param `searchKey` 搜索字段标识
@param `searchValue` 搜索字段值
@param `bizTag` 业务标签
@param `versionControl` 版本控制字段


class_name: kd.bos.entity.datamodel.DynamicTextListField
method_name: <init>
param_types_key: String,List,String
comment: 构造函数 @param `key` 列标识 @param `listFields` 子列集合 @param `formatExpression` 字段格式化表达式
signature_text:
public DynamicTextListField(String key, java.util.List<ListField> listFields, String formatExpression)


class_name: kd.bos.entity.datamodel.events.AfterAddRowEventArgs
method_name: <init>
param_types_key: EntryProp,RowDataEntity[]
comment: 构造函数 @param `entryProp` 分录属性对象 @param `rowDataEntities` 分录行数据集合
signature_text:
public AfterAddRowEventArgs(kd.bos.entity.property.EntryProp entryProp, RowDataEntity[] rowDataEntities)


class_name: kd.bos.entity.datamodel.events.AfterAddRowEventArgs
method_name: <init>
param_types_key: EntryProp,RowDataEntity[],int
comment: 构造函数 @param `entryProp` 分录属性对象 @param `rowDataEntities` 分录行数据集合 @param `insertRow` 插入行索引
signature_text:
public AfterAddRowEventArgs(kd.bos.entity.property.EntryProp entryProp, RowDataEntity[] rowDataEntities, int insertRow)


class_name: kd.bos.entity.datamodel.events.AfterAddRowEventArgs
method_name: <init>
param_types_key: EntryProp,RowDataEntity[],int,boolean
comment: 构造函数 @param `entryProp` 分录属性对象 @param `rowDataEntities` 分录行数据集合 @param `insertRow` 插入行索引
signature_text:
public AfterAddRowEventArgs(kd.bos.entity.property.EntryProp entryProp, RowDataEntity[] rowDataEntities, int insertRow, boolean insertBehind)


class_name: kd.bos.entity.datamodel.events.AfterDeleteRowEventArgs
method_name: <init>
param_types_key: EntryProp,int[],int
comment: 构造函数 @param `property` 分录属性对象 @param `rowIndexs` 删除的分录行索引集合 @param `previousRowKey` 删除分录最前面的上一行
signature_text:
public AfterDeleteRowEventArgs(kd.bos.entity.property.EntryProp property, int[] rowIndexs, int previousRowKey)


class_name: kd.bos.entity.datamodel.events.AfterMoveEntryEventArgs
method_name: <init>
param_types_key: EntryProp,int[],int
comment: 构造函数 @param `property` 分录属性对象 @param `rowIndexs` 上移前，原始的行索引集合 @param `rowCount` 分录总行数
signature_text:
public AfterMoveEntryEventArgs(kd.bos.entity.property.EntryProp property, int[] rowIndexs, int rowCount)


class_name: kd.bos.entity.datamodel.events.AfterTogetherMoveEntryRowEventArgs
method_name: <init>
param_types_key: EntryProp,int[],int,int[],int
signature_text:
public AfterTogetherMoveEntryRowEventArgs(kd.bos.entity.property.EntryProp property, int[] formIndexs, int toIndex, int[] allFormIndexs, int rowCount)

comment:
构造函数
@param `property` 分录属性对象
@param `formIndexs` 聚合分录行数组(序号从零开始起算)
@param `toIndex` 移动到目标行下面(序号从零开始起算)
@param `allFormIndexs` 树形单据体：获取树形单据体指定行的所有子行(包含自己)，普通单据体：等于formIndexs
@param `rowCount` 分录总行数


class_name: kd.bos.entity.datamodel.events.AfterTogetherMoveEntryRowEventArgs
method_name: <init>
param_types_key: EntryProp,int[],int,int[],int,String
signature_text:
public AfterTogetherMoveEntryRowEventArgs(kd.bos.entity.property.EntryProp property, int[] formIndexs, int toIndex, int[] allFormIndexs, int rowCount, String direct)

comment:
构造函数
@param `property` 分录属性对象
@param `formIndexs` 聚合分录行数组(序号从零开始起算)
@param `toIndex` 移动到目标行下面(序号从零开始起算)
@param `allFormIndexs` 树形单据体：获取树形单据体指定行的所有子行(包含自己)，普通单据体：等于formIndexs
@param `rowCount` 分录总行数
@param `direct` 拖拽方向，拖拽到行下面(bottom)|上面(top)|里面(子级)(into)


class_name: kd.bos.entity.datamodel.events.BeforeImportDataEventArgs
method_name: <init>
param_types_key: Object,Map,Map
comment: 构造函数 @param `source` 事件源 @param `sourceData` 源数据 @param `basedataPks` 基础资料数据
signature_text:
public BeforeImportDataEventArgs(Object source, java.util.Map<String, Object> sourceData, java.util.Map<BasedataItem, Object> basedataPks)


class_name: kd.bos.entity.datamodel.events.BeforeImportDataEventArgs
method_name: <init>
param_types_key: Object,Map,Map,Map
comment: 构造函数 @param `source` 事件源 @param `sourceData` 元数据 @param `basedataPks` 基础资料数据 @param `option` 可选参数
signature_text:
public BeforeImportDataEventArgs(Object source, java.util.Map<String, Object> sourceData, java.util.Map<BasedataItem, Object> basedataPks, java.util.Map<String, Object> option)


class_name: kd.bos.entity.datamodel.events.BeforeImportDataEventArgs
method_name: setFireAfterImportData
param_types_key: boolean
signature_text: public void setFireAfterImportData(boolean fireAfterImportData)
comment:
指定是否触发afterImportData事件、执行实体服务规则 默认是触发的，可以指定不触发，提升性能
@param `fireAfterImportData` 设置false不触发afterImportData事件


class_name: kd.bos.entity.datamodel.events.BeforeImportEntryEventArgs
method_name: <init>
param_types_key: Object,Map
comment: 构造方法 @param `source` 事件源 @param `entryDataMap` 分录数据字典
signature_text:
public BeforeImportEntryEventArgs(Object source, java.util.Map<String, java.util.List<Object>> entryDataMap)


class_name: kd.bos.entity.datamodel.events.BeforeSetItemValueEventArgs
method_name: <init>
param_types_key: IDataEntityProperty,DynamicObject,Object
comment: 构造函数 @param `property` 字段 @param `dataEntity` 数据包 @param `value` 字段值
signature_text:
public BeforeSetItemValueEventArgs(IDataEntityProperty property, DynamicObject dataEntity, Object value)


class_name: kd.bos.entity.datamodel.events.BeforeSetItemValueEventArgs
method_name: getSearchKey
signature_text: public String getSearchKey()
comment:
返回插件设置的基础资料额外检索字段 和检索参数 #getSearchArgs()配合使用，事件执行完毕后，系统会动态拼接成 "searchKey in (searchArgs)" 的取数条件对基础资料进行过滤
@return 检索字段


class_name: kd.bos.entity.datamodel.events.BeforeTogetherMoveEntryRowEventArgs
method_name: <init>
param_types_key: EntryProp,int[],int
signature_text:
public BeforeTogetherMoveEntryRowEventArgs(kd.bos.entity.property.EntryProp entryProp, int[] formIndexs, int toIndex)

comment:
构造函数
@param `entryProp` 分录属性对象
@param `formIndexs` 聚合分录行数组(序号从零开始起算)
@param `toIndex` 移动到目标行下面(序号从零开始起算)


class_name: kd.bos.entity.datamodel.events.BeforeTogetherMoveEntryRowEventArgs
method_name: <init>
param_types_key: EntryProp,int[],int,String
signature_text:
public BeforeTogetherMoveEntryRowEventArgs(kd.bos.entity.property.EntryProp entryProp, int[] formIndexs, int toIndex, String direct)

comment:
构造函数
@param `entryProp` 分录属性对象
@param `formIndexs` 聚合分录行数组(序号从零开始起算)
@param `toIndex` 移动到目标行下面(序号从零开始起算)
@param `direct` 拖拽方向，拖拽到行下面(bottom)|上面(top)|里面(子级)(into)


class_name: kd.bos.entity.datamodel.events.BizDataEventArgs
method_name: isFireAfterCreateNewData
signature_text: public boolean isFireAfterCreateNewData()
comment:
返回插件是否取消了afterCreateNewData事件的触发 插件传入整理好的数据之后，通常不需要再触发afterCreateNewData事件，以免在此事件中改动已经整理好的数据包 取消了afterCreateNewData事件，同时也不会执行实体服务规则
@return 默认返回true，触发事件


class_name: kd.bos.entity.datamodel.events.BizDataEventArgs
method_name: setIsExecuteRule
param_types_key: boolean
signature_text: public final void setIsExecuteRule(boolean value)
comment:
插件取消实体服务规则的执行 此选项实际未被使用，插件要取消实体服务规则执行，需调用 #setFireAfterCreateNewData(boolean)}
@param `value` 设置为false取消实体规则执行


class_name: kd.bos.entity.datamodel.events.IDataModelChangeListener
method_name: isSupportBatchPropChanged
signature_text: default boolean isSupportBatchPropChanged()
comment:
本插件是否支持批量触发值更新事件 历史版本propertyChanged事件是单行触发的，插件通常只需要处理单行字段值，很多插件也只处理了第一个字段值 但实际上，该事件是支持批量触发的（批量选择基础资料数据返回），事件参数会包含批量修改的多行字段值 插件支持批量处理后，需重写本方法，返回true 补充说明：默认返回false，认为本插件没有准备好批量处理，会迫使平台只能逐个单元格修改字段值，从而降低性能。这可能会导致用户大批量选择基础资料字段值返回时处理相当慢


class_name: kd.bos.entity.datamodel.events.IDataModelChangeListener
method_name: propertyChanged
param_types_key: PropertyChangedArgs
signature_text: default void propertyChanged(PropertyChangedArgs e)
comment:
字段值改变后事件 插件可同步更新其他字段值 不建议在此事件回滚字段值，可能会导致数据不一致：如果业务规则或其他插件已经基于本字段值进行了计算，无法一并回滚 特别提醒：本事件支持批量触发，需和 #isSupportBatchPropChanged() 配合
@param `e` 事件参数，含字段值改变前后的值


class_name: kd.bos.entity.datamodel.events.IDataModelListener
method_name: afterCreateNewData
param_types_key: EventObject
signature_text: default void afterCreateNewData(java.util.EventObject e)
comment:
数据包创建之后的事件 插件在此，对已创建好的模型数据包进一步加工，比如调整字段默认值，增加单据体默认行等 示例：
publicclassDemoFormPluginextendsAbstractFormPlugin {
@OverridepublicvoidafterCreateNewData(EventObject e) {
}
}
@param `e` 事件参数，未含特别参数


class_name: kd.bos.entity.datamodel.events.IDataModelListener
method_name: createNewData
param_types_key: BizDataEventArgs
signature_text: default void createNewData(BizDataEventArgs e)
comment:
创建数据包事件，一般在页面初始化时调用 插件可在此事件，自行构建模型数据包，后续平台将把插件构建的数据包显示在界面上 如果插件不处理此事件，平台会自行构建空白的模型数据包，并给每个字段填好默认值 示例：
publicclassDemoFormPluginextendsAbstractFormPlugin {</code>
`
`
`
@param `e` 事件参数，插件可通过此参数传入自行创建的表单界面数据包


class_name: kd.bos.entity.datamodel.events.IDataModelListener
method_name: getEntityType
param_types_key: GetEntityTypeEventArgs
signature_text: default void getEntityType(GetEntityTypeEventArgs e)
comment:
获取主实体对象时触发此事件 插件可在此事件，向主实体动态注册新属性，以实现给表单动态添加字段的效果 特别注意：主实体对象是共享的，不允许直接修改主实体对象本身。必须先复制，然后在拷贝的主实体对象上动态注册新属性
@param `e` 事件参数，含默认的主实体对象


class_name: kd.bos.entity.datamodel.events.IDataModelListener
method_name: queryImportBasedata
param_types_key: QueryImportBasedataEventArgs
signature_text: default void queryImportBasedata(QueryImportBasedataEventArgs e)
comment:
单据引入，批量匹配依赖的基础数据事件 引入源数据包中，基础资料字段通常填写数据编码，引入过程需要先把编码转为内码后再填写到字段上 默认情况，平台会自动根据组织和编码搜索基础数据的内码，不需要插件干预 某些特殊基础数据，编码不唯一，此时需要插件来完成数据编码到内码的转换，否则会引入失败
`
@param `e` 事件参数，含需由插件完成转换的基础数据


class_name: kd.bos.entity.datamodel.events.ImportDataEventArgs
method_name: <init>
param_types_key: Object,Map,Map
comment: 构造函数 @param `source` 事件源 @param `sourceData` 源数据 @param `basedataPks` 基础资料数据
signature_text:
public ImportDataEventArgs(Object source, java.util.Map<String, Object> sourceData, java.util.Map<BasedataItem, Object> basedataPks)


class_name: kd.bos.entity.datamodel.events.ImportDataEventArgs
method_name: <init>
param_types_key: Object,Map,Map,Map
comment: 构造函数 @param `source` 事件源 @param `sourceData` 源数据 @param `basedataPks` 基础资料数据 @param `option` 可选项
signature_text:
public ImportDataEventArgs(Object source, java.util.Map<String, Object> sourceData, java.util.Map<BasedataItem, Object> basedataPks, java.util.Map<String, Object> option)


class_name: kd.bos.entity.datamodel.events.ImportDataEventArgs
method_name: setCancelMessages
param_types_key: Integer,Integer,List
comment: 设置取消引入原因 @param `entryRowIndex` 分录行 @param `subEntryRowIndex` 子分录行 @param `msgs` 取消原因
signature_text:
public void setCancelMessages(Integer entryRowIndex, Integer subEntryRowIndex, java.util.List<String> msgs)


class_name: kd.bos.entity.datamodel.events.InitImportDataEventArgs
method_name: <init>
param_types_key: Object,List,Map,List
signature_text:
public InitImportDataEventArgs(Object source, java.util.List<java.util.Map<String, Object>> sourceDataList, java.util.Map<String, Object> customOption, java.util.List<String> fieldImportOrder)

comment:
构造函数
@param `source` 事件源
@param `sourceDataList` 源数据
@param `customOption` 构造函数
@param `fieldImportOrder` 字段引入顺序


class_name: kd.bos.entity.datamodel.events.InitImportDataEventArgs
method_name: addCancelMessage
param_types_key: Integer,Integer,Integer,String
signature_text:
public void addCancelMessage(Integer sourceDataIndex, Integer entryRowIndex, Integer subEntryRowIndex, String errorMsg)

comment:
追加整单的所有错误提示信息
@param `sourceDataIndex` 单头数据索引
@param `entryRowIndex` 分录数据索引
@param `subEntryRowIndex` 子分录数据索引
@param `errorMsg` 追加错误信息


class_name: kd.bos.entity.datamodel.events.InitImportDataEventArgs
method_name: getCancelMessageWithHeadRow
comment: 获取全量错误提示
signature_text:
public java.util.Map<Integer, java.util.Map<Integer, java.util.List<String>>> getCancelMessageWithHeadRow()


class_name: kd.bos.entity.datamodel.events.InitImportDataEventArgs
method_name: getExcelRowIndex
param_types_key: Integer,Integer,Integer
signature_text:
public int getExcelRowIndex(Integer sourceDataIndex, Integer entryRowIndex, Integer subEntryRowIndex)

comment:
获取Excel文件中的行号
@param `sourceDataIndex` 单头数据索引
@param `entryRowIndex` 分录数据索引
@param `subEntryRowIndex` 父分录数据索引
@return Excel文件中的行号


class_name: kd.bos.entity.datamodel.events.InitImportDataEventArgs
method_name: setCancelMessages
param_types_key: Integer,Integer,Integer,List
signature_text:
public void setCancelMessages(Integer sourceDataIndex, Integer entryRowIndex, Integer subEntryRowIndex, java.util.List<String> errorMsgs)

comment:
替换整单的所有错误提示信息
@param `sourceDataIndex` 单头数据索引
@param `entryRowIndex` 分录数据索引
@param `subEntryRowIndex` 子分录数据索引
@param `errorMsgs` 所有错误提示


class_name: kd.bos.entity.datamodel.events.QueryImportBasedataEventArgs
method_name: <init>
param_types_key: Object,Map
comment: 构造函数 @param `rowMapper` 源数据和单据映射对象 @param `searchResult` 依赖的基础数据
signature_text:
public QueryImportBasedataEventArgs(Object rowMapper, java.util.Map<BasedataItem, java.util.List<Object>> searchResult)


class_name: kd.bos.entity.datamodel.FmtInfoUtils
method_name: getMultiUnitPrecisionMapping
param_types_key: List
comment: 内部使用 获取物料多计量单位 精度映射关系 结构： 物料pkid：{"计量单位2 pkid":精度1，"计量单位2 pkid":精度2} @param `materielObjs`
signature_text:
public static java.util.Map<String, java.util.Map<String, Object>> getMultiUnitPrecisionMapping(java.util.List<DynamicObject> materielObjs)


class_name: kd.bos.entity.datamodel.FmtInfoUtils
method_name: getUnitFmt
param_types_key: UnitProp,DynamicObject,DynamicObject
comment: 根据物料获取对应多计量单位精度关系 @param `prop` @param `unitObj` @param `materielObj`
signature_text:
public static java.util.Map<String, Object> getUnitFmt(kd.bos.entity.property.UnitProp prop, DynamicObject unitObj, DynamicObject materielObj)


class_name: kd.bos.entity.datamodel.FmtInfoUtils
method_name: getUnitFmt
param_types_key: UnitProp,DynamicObject,DynamicObject,Map
signature_text:
public static java.util.Map<String, Object> getUnitFmt(kd.bos.entity.property.UnitProp prop, DynamicObject unitObj, DynamicObject materielObj, java.util.Map<String, java.util.Map<String, Integer>> mapping)

comment:
批量获取时 请先使用getMultiUnitPrecisionMapping获取映射关系作为mapping参数
@param `prop`
@param `unitObj`
@param `materielObj`
@param `mapping`


class_name: kd.bos.entity.datamodel.IDataModel
method_name: getValue
param_types_key: String,int,int
signature_text: default Object getValue(String propName, int rowIndex, int parentRowIndex)
comment:
获取子单据体实体字段对应值
@param `propName` 字段属性名
@param `rowIndex` 子单据体行索引，从0开始
@param `parentRowIndex` 父单据体行索引，从0开始
@return 子单据体实体字段对应值


class_name: kd.bos.entity.datamodel.IDataModel
method_name: setCurrUserSetting
param_types_key: long,String,String
signature_text: boolean setCurrUserSetting(long userID, String key, String setting)
comment:
设置用户配置信息，自动保存到用户配置表
@param `userID` 用户
@param `key` 配置项的标识
@param `setting` 配置项的内容
@return 设置成功返回true


class_name: kd.bos.entity.datamodel.IDataModel
method_name: setFieldValueForWebApi
param_types_key: IDataEntityProperty,DynamicObject,Object,boolean
signature_text:
default void setFieldValueForWebApi(IDataEntityProperty prop, DynamicObject dataEntity, Object value, boolean checkImportable)

comment:
设置字段值：供Web Api导入数据场景调用（可能会针对webapi导入特征对传入的值进行检查、格式化等处理，其他场景勿调用）
@param `prop` 字段属性对象
@param `dataEntity` 需改动字段值的数据包
@param `value` 字段值
@param `checkImportable` 是否检查字段"功能控制 -是否允许导入"选项


class_name: kd.bos.entity.datamodel.IDataModel
method_name: setItemValueByID
param_types_key: String,Object,int,int,List
signature_text:
void setItemValueByID(String key, Object id, int row, int parentRowIndex, java.util.List<QFilter> qFilters)

comment:
给子分录基础资料字段按内码赋值
@param `key` 基础资料字段
@param `id` 内码
@param `row` 分录行索引
@param `parentRowIndex` 父分录行索引
@param `qFilters` 基础资料数据筛选条件


class_name: kd.bos.entity.datamodel.IDataModel
method_name: setValue
param_types_key: String,Object,int,int
signature_text: void setValue(String propName, Object value, int rowIndex, int parentRowIndex)
comment:
设置子分录字段值
@param `propName` 字段属性名
@param `value` 字段值
@param `rowIndex` 子分录行索引，从0开始
@param `parentRowIndex` 父分录行索引，从0开始


class_name: kd.bos.entity.datamodel.IEntryFilter
method_name: filterEntry
param_types_key: String,EntryQueryParam
comment: 前端更改过滤条件，开始重新过滤数据 @param `queryParam`
signature_text:
default void filterEntry(String entryKey, kd.bos.entity.property.entryfilter.EntryQueryParam queryParam)


class_name: kd.bos.entity.datamodel.IEntryFilter
method_name: filterSortByRowKeys
param_types_key: String,List
comment: 对真实索引值按过滤后的序号顺序排序 @param `entryKey` @param `rowkeyList` 真实rk值，从0开始 @return 按过滤后的序号顺序排序
signature_text:
default java.util.List<Integer> filterSortByRowKeys(String entryKey, java.util.List<Integer> rowkeyList)


class_name: kd.bos.entity.datamodel.IEntryFilter
method_name: getFilterEntryRowKeys
param_types_key: String,int,int
signature_text:
default java.util.List<Integer> getFilterEntryRowKeys(String entryKey, int startRowIndex, int endRowIndex)

comment:
过滤后，按过滤后的行序号取rk值，取含(startRowIndex)至不含(endRowIndex)中间的数据
@param `entryKey` 单据体
@param `startRowIndex` 过滤后的开始位置
@param `endRowIndex` 过滤后的结束位置


class_name: kd.bos.entity.datamodel.IEntryFilter
method_name: getFilterIndexByRowKeys
param_types_key: String,List
comment: 根据真实索引值获取过滤后的索引位置 @param `entryKey` @param `rowkeyList` 真实rk值，从0开始 @return 过滤后所在的位置，从0开始
signature_text:
default java.util.List<Integer> getFilterIndexByRowKeys(String entryKey, java.util.List<Integer> rowkeyList)


class_name: kd.bos.entity.datamodel.IEntryFilter
method_name: searchEntryFieldData
param_types_key: String,EntryQueryParam,int,int
signature_text:
default java.util.List<Object> searchEntryFieldData(String entryKey, kd.bos.entity.property.entryfilter.EntryQueryParam queryParam, int startRowIndex, int endRowIndex)

comment:
查询单据体某字段的去重列表数据
@param `entryKey` 分录标识
@param `queryParam` 过滤条件
@param `startRowIndex` 起始序号
@param `endRowIndex` 结束序号


class_name: kd.bos.entity.datamodel.IEntryOperate
method_name: appendEntryRow
param_types_key: String,int,int
signature_text: int[] appendEntryRow(String entryKey, int row, int count)
comment:
在指定位置，批量追加单据体分录行
树形单据体，基础资料字段F7返回数据时，需要在分录中间追加同级行。而树形单据体的插入行是插入下级行，所以单独抽出了
@param `entryKey` 单据体标识
@param `row` 新行插入位置，从0开始
@param `count` 批量插入总行数


class_name: kd.bos.entity.datamodel.IEntryOperate
method_name: batchCreateNewEntryRow
param_types_key: String,DynamicObject,int
signature_text: int[] batchCreateNewEntryRow(String entityKey, DynamicObject dataentity_template, int rowCount)
comment:
以指定的行模板，批量新建单据体分录行
@param `entityKey` 单据体标识
@param `dataentity_template` 行数据模板
@param `rowCount` 新建行数


class_name: kd.bos.entity.datamodel.IEntryOperate
method_name: batchFillEntry
param_types_key: String,int,List,Object[],boolean
signature_text:
default int batchFillEntry(String entryKey, int currentRow, java.util.List<IDataEntityProperty> selProps, Object[] values, boolean batchFillNull)

comment:
单据体批量填充
@param `entryKey` 单据体标识
@param `currentRow` 当前起始行
@param `selProps` 填充字段
@param `values` 填充值
@param `batchFillNull` 是否批量填充空白行
@return 实际填充成功的行数


class_name: kd.bos.entity.datamodel.IEntryOperate
method_name: copyEntryRow
param_types_key: String,int[],boolean,boolean
signature_text: default void copyEntryRow(String entryKey, int[] row, boolean isCopyLinkEntry, boolean nextPos)
comment:
复制单据体
@param `entryKey` 单据体标识
@param `row` 选择的分录行号
@param `isCopyLinkEntry` 是否复制关联单据体
@param `nextPos` 是否复制到下一行


class_name: kd.bos.entity.datamodel.IEntryOperate
method_name: createNewEntryRow
param_types_key: String,int,DynamicObject
signature_text: int createNewEntryRow(String entityKey, int row, DynamicObject obj)
comment:
新建单据体分录行
@param `entityKey` 单据体标识
@param `row` 新行行号，从0开始。可以是-1，表示加入到末尾。
@param `obj` 可选，传入外部准备好的新分录行数据包


class_name: kd.bos.entity.datamodel.IEntryOperate
method_name: dragRowGridToGrid
param_types_key: FromDragRowInfo,ToDragRowInfo,String
signature_text:
default void dragRowGridToGrid(kd.bos.entity.datamodel.events.DragRowGridToGridEventArgs.FromDragRowInfo fromInfo, kd.bos.entity.datamodel.events.DragRowGridToGridEventArgs.ToDragRowInfo toInfo, String direct)

comment:
表格之间行拖拽，与前端交互接口。(平台提供事件方法，具体业务逻辑由二开实现）
@param `fromInfo` 起始拖拽表的信息
@param `toInfo` 结束拖拽表的信息
@param `direct` 拖拽方向，拖拽到行下面(bottom)|上面(top)|里面(子级)(into)


class_name: kd.bos.entity.datamodel.IEntryOperate
method_name: getEntryNextRowCount
param_types_key: String,int
signature_text: int getEntryNextRowCount(String entryKey, int row)
comment:
获取树形单据体，从指定行开始，同层级的后续行数
树形单据体，基础资料字段F7返回数据后，需要判断后面有没有足够同级行 不够就appendEntryRow（不能insert，因为insert是插入下级行）
@param `entryKey` 单据体标识
@param `row` 行号，从0开始
@return 行数


class_name: kd.bos.entity.datamodel.IEntryOperate
method_name: getEntryNextRows
param_types_key: String,int,boolean
signature_text: int[] getEntryNextRows(String entryKey, int row, boolean includeSelf)
comment:
获取当前节点后面的同级节点
专用于树形单据体
@param `entryKey` 单据体标识
@param `row` 行号
@param `includeSelf` 是否包含指定行
@return 行数


class_name: kd.bos.entity.datamodel.IEntryOperate
method_name: getEntryRowEntity
param_types_key: String,int,int
signature_text: default DynamicObject getEntryRowEntity(String entryKey, int rowIndex, int parentRowIndex)
comment:
获取子单据体分录行数据包
@param `entryKey` 子单据体标识
@param `rowIndex` 分录行号
@param `parentRowIndex` 父行行号
@return 分录行数据包


class_name: kd.bos.entity.datamodel.IEntryOperate
method_name: togetherMoveEntryRow
param_types_key: String,int[],int
signature_text: default boolean togetherMoveEntryRow(String entryKey, int[] formIndexs, int toIndex)
comment:
聚合分录行移动到某行下
@param `entryKey` 单据体标识
@param `formIndexs` 聚合分录行数组(序号从零开始起算)
@param `toIndex` 移动到目标行下面(序号从零开始起算)
@return 是否成功移动


class_name: kd.bos.entity.datamodel.IEntryOperate
method_name: togetherMoveEntryRow
param_types_key: String,int[],int,String
signature_text: default boolean togetherMoveEntryRow(String entryKey, int[] formIndexs, int toIndex, String direct)
comment:
聚合分录行移动到某行下
@param `entryKey` 单据体标识
@param `formIndexs` 聚合分录行数组(序号从零开始起算)
@param `toIndex` 移动到目标行下面(序号从零开始起算)
@param `direct` 拖拽方向，拖拽到行下面(bottom)|上面(top)|里面(子级)(into)
@return 是否成功移动


class_name: kd.bos.entity.datamodel.IFilterModel
method_name: deleteShareUser
param_types_key: String,StringBuilder
signature_text: boolean deleteShareUser(String schemeid, StringBuilder errorMessage)
comment:
删除共享方案用户数据，如果某个共享方案的用户数据为空，删除共享方案数据
@param `schemeid` 过滤方案id
@param `errorMessage` 错误信息
@return 是否删除成功


class_name: kd.bos.entity.datamodel.IFilterModel
method_name: getCommonFilterParameter
param_types_key: List
comment: @return 常用过滤数据解析生成的过滤参数
signature_text:
FilterParameter getCommonFilterParameter(java.util.List<java.util.Map<String, java.util.List<Object>>> fastFilterList)


class_name: kd.bos.entity.datamodel.IFilterModel
method_name: getFastFilterParameter
param_types_key: List
comment: @return 快速过滤数据解析生成的过滤参数
signature_text:
FilterParameter getFastFilterParameter(java.util.List<java.util.Map<String, java.util.List<Object>>> fastFilterList)


class_name: kd.bos.entity.datamodel.IFilterModel
method_name: getOrderByFilterParameter
param_types_key: List
comment: 获取字段排序参数 @param `orderByFilterList` 排序过滤参数 @return 字段排序参数
signature_text:
kd.bos.entity.filter.OrderByParameter getOrderByFilterParameter(java.util.List<java.util.Map<String, java.util.List<Object>>> orderByFilterList)


class_name: kd.bos.entity.datamodel.IFilterModel
method_name: getSchemeFilterParameter
param_types_key: List
comment: @return 方案过滤数据解析生成的过滤参数
signature_text:
FilterParameter getSchemeFilterParameter(java.util.List<java.util.Map<String, java.util.List<Object>>> schemeFilterList)


class_name: kd.bos.entity.datamodel.IFilterModel
method_name: getSchemeFilterParameter
param_types_key: List,List
comment: 将方案过滤条件解析成qfilter @param `schemeFilterList` 方案过滤条件 @param `andFilter` 二次过滤条件
signature_text:
default FilterParameter getSchemeFilterParameter(java.util.List<java.util.Map<String, java.util.List<Object>>> schemeFilterList, java.util.List<java.util.Map<String, java.util.List<Object>>> andFilter)


class_name: kd.bos.entity.datamodel.IFilterModel
method_name: getShareSchemeByIdList
param_types_key: List,Long
comment: 获取共享方案字典 @param `schemeIdList` 方案id集合 @param `userId` 用户id @return 共享方案字典
signature_text:
java.util.Map<String, String> getShareSchemeByIdList(java.util.List<String> schemeIdList, Long userId)


class_name: kd.bos.entity.datamodel.IFilterModel
method_name: updateF7Scheme
param_types_key: String,boolean,StringBuilder
signature_text: default boolean updateF7Scheme(String SchemeId, boolean isDefault, StringBuilder errorMessage)
comment:
修改F7方案
@param `SchemeId` 方案标识
@param `isDefault` 是否默认方案
@param `errorMessage` 保存时的错误信息
@return 是否保存成功


class_name: kd.bos.entity.datamodel.IListModelListener
method_name: addOperationColumnListeners
param_types_key: Consumer
comment: 添加操作列事件监听器 @param `listener` 注册的操作列事件监听器
signature_text:
void addOperationColumnListeners(java.util.function.Consumer<CreateListOperationColumnEvent> listener)


class_name: kd.bos.entity.datamodel.IListModelListener
method_name: addTemplateTextColumnListeners
param_types_key: Consumer
comment: 添加模式列表文本监听器 @param `listener` 注册的模式列表文本监听器
signature_text:
void addTemplateTextColumnListeners(java.util.function.Consumer<CreateListTemplateTextColumnEvent> listener)


class_name: kd.bos.entity.datamodel.ITreeModel
method_name: setTextFormat
param_types_key: String
signature_text: void setTextFormat(String textFormat)
comment:
设置节点显示格式，{name}表示名称，{code}表示编码。 格式样式如："{name}-{code}", 或者"{name}"，"{code}"
@param `textFormat` 格式："{name}"或"{code}"


class_name: kd.bos.entity.datamodel.ListSelectedRow
method_name: setEntryEntityKey
param_types_key: String
signature_text: public void setEntryEntityKey(String entryEntityKey)
comment:
设置单据体标识 和#setEntryPrimaryKeyValue(Object)组合使用，指定哪个单据体的那条数据 如果设置了单据体分录数据内码，必须同步设置本属性值
@param `entryEntityKey` 单据体标识


class_name: kd.bos.entity.datamodel.NumberPrecision
method_name: <init>
param_types_key: int,String,boolean,BigDecimal,FormatObject
signature_text:
public NumberPrecision(int precision, String sign, boolean isShowSign, java.math.BigDecimal result, kd.bos.entity.format.FormatObject formatObject)

comment:
构造方法
@param `precision` 精度
@param `sign` 货币符号
@param `isShowSign` 是否显示货币符号
@param `result` 汇总结果
@param `formatObject` 格式化参数对象


class_name: kd.bos.entity.datamodel.ORMUtil
method_name: getAdminDivisionInfo
param_types_key: String
signature_text: public static java.util.Map<String, Object> getAdminDivisionInfo(String adminId)
comment:
通过行政区划id查询行政区划全称
@param `adminId` ·
@return {countryId: 10001, countryName: 'China', adminvisionStr:'广东省/深圳市/南山区'}


class_name: kd.bos.entity.datamodel.ORMUtil
method_name: getAdminDivisionInfoById
param_types_key: String
signature_text: public static DynamicObject getAdminDivisionInfoById(String adminId)
comment:
description 〈根据行政区划id获取行政区划信息〉
@param `adminId` 行政区划id
@return kd.bos.dataentity.entity.DynamicObject 行政区划信息


class_name: kd.bos.entity.datamodel.ORMUtil
method_name: getAdminDivisionsByParentId
param_types_key: String
comment: 通过上级行政区划id查询行政区划 @param `parentId`
signature_text:
public static java.util.List<java.util.Map<String, String>> getAdminDivisionsByParentId(String parentId)


class_name: kd.bos.entity.datamodel.ORMUtil
method_name: getAdmindivisionLevelsByCountryId
param_types_key: String
comment: 获得国家对应的行政级次 @param `countryId` 国家id
signature_text:
public static java.util.List<java.util.Map<String, String>> getAdmindivisionLevelsByCountryId(String countryId)


class_name: kd.bos.entity.datamodel.ORMUtil
method_name: getProvincesByCountryId
param_types_key: String
comment: 通过国家id获得省级行政区划 @param `countryId` 国家id
signature_text:
public static java.util.List<java.util.Map<String, Object>> getProvincesByCountryId(String countryId)


class_name: kd.bos.entity.datamodel.ORMUtil
method_name: getProvincesByCountryIdForMobile
param_types_key: String
comment: 根据国家地区ID获取省级行政区划（用于移动端） @param `countryId`
signature_text:
public static java.util.List<java.util.Map<String, String>> getProvincesByCountryIdForMobile(String countryId)


class_name: kd.bos.entity.datamodel.ORMUtil
method_name: load
param_types_key: Object[],DynamicObjectType,Boolean
signature_text:
public static DynamicObject[] load(Object[] pkArray, DynamicObjectType type, Boolean loadReferenceData)

comment:
读取数据库数据
@param `pkArray` 主键数组
@param `type` 动态对象实体类型
@param `loadReferenceData` 是否加载引用
@return 动态对象数组


class_name: kd.bos.entity.datamodel.ORMUtil
method_name: loadFromCache
param_types_key: Object[],DynamicObjectType,boolean
comment: 读取数据，并允许使用缓存。 @param `pkArray` 主键数组 @param `dt` 动态实体类型 @return 一批实体对象。不保证给定的主键都能够找到对应的实体。
signature_text:
public static java.util.Map<Object, DynamicObject> loadFromCache(Object[] pkArray, DynamicObjectType dt, boolean loadReferenceData)


class_name: kd.bos.entity.earlywarn.warn.plugin.IEarlyWarnMessageHandler
method_name: getYZJMessagePublicNumber
param_types_key: List
comment: 获取云之家消息渠道发送消息的公众号 @param `publicNumberInfos` 云之家消息渠道所有公众号信息 @return 云之家消息渠道发送消息的公众号信息
signature_text:
default kd.bos.entity.earlywarn.warn.YzjPublicNumberInfo getYZJMessagePublicNumber(java.util.List<kd.bos.entity.earlywarn.warn.YzjPublicNumberInfo> publicNumberInfos)


class_name: kd.bos.entity.earlywarn.warn.plugin.IEarlyWarnMessageHandler
method_name: mergeMessageBuilder
param_types_key: EarlyWarnContext
comment: 构建单个消息移动端处理链接 @param `context` 预警引擎执行上下文 @return 转换后的消息
signature_text:
kd.bos.entity.earlywarn.warn.EarlyWarnMessageInfo mergeMessageBuilder(kd.bos.entity.earlywarn.EarlyWarnContext context)


class_name: kd.bos.entity.earlywarn.warn.plugin.IEarlyWarnMessageHandler
method_name: singleMessageBuilder
param_types_key: DynamicObject,EarlyWarnContext
comment: 构建单条消息PC端处理链接 @param `data` 数据 @param `context` 预警引擎执行上下文 @return 转换后的消息
signature_text:
kd.bos.entity.earlywarn.warn.EarlyWarnMessageInfo singleMessageBuilder(DynamicObject data, kd.bos.entity.earlywarn.EarlyWarnContext context)


class_name: kd.bos.entity.earlywarn.warnschedule.messageconfig.WarnMessageReceiver
method_name: getReceiverTypeObj
signature_text:
public kd.bos.entity.earlywarn.warnschedule.messageconfig.WarnMessageReceiverTypeEnum getReceiverTypeObj()

comment:
接收人类型对象
**WarnMessageReceiverTypeEnum 参数详细信息kd.bos.entity.earlywarn.warnschedule.messageconfig.WarnMessageReceiverTypeEnum**


class_name: kd.bos.entity.earlywarn.warnschedule.WarnSchedule
method_name: setMessageConfig
param_types_key: WarnMessageConfig
signature_text: public void setMessageConfig(kd.bos.entity.earlywarn.warnschedule.WarnMessageConfig messageConfig)
comment:
设置监控消息配置
**WarnMessageConfig 参数详细信息kd.bos.entity.earlywarn.warnschedule.WarnMessageConfig**
@param `messageConfig` `


class_name: kd.bos.entity.earlywarn.warnschedule.WarnSchedule
method_name: setWarnCondition
param_types_key: WarnCondition
signature_text: public void setWarnCondition(kd.bos.entity.earlywarn.warnschedule.WarnCondition warnCondition)
comment:
设置监控条件
**WarnCondition 参数详细信息kd.bos.entity.earlywarn.warnschedule.WarnCondition**
@param `warnCondition` `


class_name: kd.bos.entity.EntityMetadataCache
method_name: getDataEntityNetCtrlOperate
param_types_key: String
comment: 网络控制元数据 @param `entityNumber` 实体编码 @return 网络控制元数据
signature_text:
public static java.util.Map<String, java.util.List<java.util.Map<String, Object>>> getDataEntityNetCtrlOperate(String entityNumber)


class_name: kd.bos.entity.EntityMetadataCache
method_name: getDataEntityOperate
param_types_key: String,String
comment: 获取操作元数据 @param `entityNumber` 实体标识 @param `operKey` 操作标识 @return 操作元数据
signature_text:
public static java.util.Map<String, Object> getDataEntityOperate(String entityNumber, String operKey)


class_name: kd.bos.entity.EntityMetadataCache
method_name: getDataEntityOperate
param_types_key: String
comment: 返回实体操作元数据 @param `entityNumber` 实体标识 @return 实体操作元数据
signature_text:
public static java.util.List<java.util.Map<String, Object>> getDataEntityOperate(String entityNumber)


class_name: kd.bos.entity.EntityMetadataCache
method_name: getDataEntityOperations
param_types_key: Collection
comment: 获取指定实体的所有操作信息 @param `entityNumbers` 实体编码
signature_text:
public static java.util.Map<String, java.util.List<java.util.Map<String, Object>>> getDataEntityOperations(java.util.Collection<String> entityNumbers)


class_name: kd.bos.entity.EntityMetadataCache
method_name: getSubDataEntityType
param_types_key: String,Collection
comment: 根据属性列表构造实体 @param `entityNumber` 实体标识 @param `properties` 实体属性列表 @return 构造好的实体
signature_text:
public static DynamicObjectType getSubDataEntityType(String entityNumber, java.util.Collection<String> properties)


class_name: kd.bos.entity.EntityType
method_name: createPropIndexs
param_types_key: IDataEntityType,Map
comment: 创建实体属性关系 @param `type` @param `map`
signature_text:
protected void createPropIndexs(IDataEntityType type, java.util.Map<String, IDataEntityProperty> map)


class_name: kd.bos.entity.ExtendedDataEntity
method_name: <init>
param_types_key: DynamicObject,int,int,String
signature_text:
public ExtendedDataEntity(DynamicObject dataEntity, int dataEntityIndex, int rowIndex, String billNo)

comment:
构造函数
@param `dataEntity` 实体数据
@param `dataEntityIndex` 分录索引
@param `rowIndex` 数据行索引
@param `billNo` 单据编号


class_name: kd.bos.entity.ExtendedDataEntity
method_name: <init>
param_types_key: DynamicObject,int,int,int,String
signature_text:
public ExtendedDataEntity(DynamicObject dataEntity, int dataEntityIndex, int rowIndex, int subRowIndex, String billNo)

comment:
构造函数
@param `dataEntity` 实体数据
@param `dataEntityIndex` 分录索引
@param `rowIndex` 数据行索引
@param `subRowIndex` 数据行索引所在分录索引
@param `billNo` 单据编号


class_name: kd.bos.entity.ExtendedDataEntity
method_name: <init>
param_types_key: DynamicObject,int,int,String,String,String
comment: 此构造函数已废弃，请勿用
signature_text:
ExtendedDataEntity(DynamicObject dataEntity, int dataEntityIndex, int rowIndex, String billNo, String billStatusKey, String forbidStatusKey)


class_name: kd.bos.entity.ExtendedDataEntity
method_name: <init>
param_types_key: DynamicObject,int,int,int,String,String,String
comment: 此构造函数已废弃，请勿用
signature_text:
ExtendedDataEntity(DynamicObject dataEntity, int dataEntityIndex, int rowIndex, int subRowIndex, String billNo, String billStatusKey, String forbidStatusKey)


class_name: kd.bos.entity.FeatureOption
method_name: getValue
signature_text: public int getValue()
comment:
获取当前功能选项的二进制位标志值
该数值为 2 的幂次方值，每个枚举实例对应一个独立的二进制位。 多个选项可通过位或运算组合：` Copyable.getValue() | Importable.getValue()</code>`
`
`
``
@return 当前选项的二进制位权值，用于构建功能组合标识


class_name: kd.bos.entity.filter.CompareType
method_name: createContant
param_types_key: String,LocaleString,String,boolean,CompareInputType
signature_text:
public static CompareType createContant(String id, LocaleString name, String contantClass, boolean isNeedInput, kd.bos.entity.filter.CompareInputType compareInputType)

comment:
根据属性创建比较符实例对象
@param `id` 比较符标识
@param `name` 名称
@param `contantClass` 解析类
@param `isNeedInput` 是否需要输入
@param `compareInputType` 输入类型


class_name: kd.bos.entity.filter.FilterBuilder
method_name: <init>
param_types_key: MainEntityType,FilterCondition
signature_text: public FilterBuilder(MainEntityType dataType, FilterCondition filterCondition)
comment:
过滤条件解析类构造函数
@param `dataType` ` 实体对象 MainEntityType
@param `filterCondition` ` 通用过滤元数据 FilterCondition


class_name: kd.bos.entity.filter.FilterBuilder
method_name: <init>
param_types_key: MainEntityType,FilterCondition,boolean
signature_text:
public FilterBuilder(MainEntityType dataType, FilterCondition filterCondition, boolean isCheckInput)

comment:
过滤条件解析类构造函数
@param `dataType` ` 实体对象 MainEntityType
@param `filterCondition` ` 通用过滤元数据 FilterCondition
@param `isCheckInput` ` 是否进行输入校验，即进行真正的解析，如果是false，只会解析出过滤条件描述，不会生成QFilter


class_name: kd.bos.entity.filter.FilterBuilder
method_name: <init>
param_types_key: MainEntityType,FilterCondition,boolean,List
signature_text:
public FilterBuilder(MainEntityType dataType, FilterCondition filterCondition, boolean isCheckInput, java.util.List<FilterField> filterFields)

comment:
过滤条件解析类构造函数
@param `dataType` ` 实体类型
@param `filterCondition` ` 过滤条件元数据
@param `isCheckInput` ` 是否进行输入校验，即进行真正的解析，如果是false，只会解析出过滤条件描述，不会生成QFilter


class_name: kd.bos.entity.filter.FilterBuilder
method_name: <init>
param_types_key: MainEntityType,FilterCondition,IDataModel
signature_text: public FilterBuilder(MainEntityType dataType, FilterCondition filterCondition, IDataModel model)
comment:
过滤条件解析类构造函数
@param `dataType` ` 实体类型
@param `filterCondition` ` 过滤条件元数据
@param `model` ` 模型（用于字段比较）取数


class_name: kd.bos.entity.filter.FilterBuilder
method_name: <init>
param_types_key: MainEntityType,FilterCondition,IFilterValueSetter,boolean,List
signature_text:
public FilterBuilder(MainEntityType dataType, FilterCondition filterCondition, IFilterValueSetter filterValueSetter, boolean isCheckInput, java.util.List<FilterField> filterFields)

comment:
过滤条件解析类构造函数
@param `dataType` 实体类型
@param `filterCondition` 过滤条件元数据
@param `filterValueSetter` 字段取值接口
@param `isCheckInput` 是否进行输入校验，即进行真正的解析，如果是false，只会解析出过滤条件描述，不会生成QFilter
@param `filterFields` 过滤字段解析需要的工具类集合 FilterField


class_name: kd.bos.entity.filter.FilterBuilder
method_name: addFilterField
param_types_key: String,String,String,String,List,String
signature_text:
public void addFilterField(String fieldName, String compare, String left, String right, java.util.List<Object> value, String logic)

comment:
添加过滤字段
@param `fieldName` ` 字段名称
@param `compare` ` 比较符
@param `left` ` 左括号
@param `right` ` 右括号
@param `value` ` 过滤值
@param `logic` ` 逻辑：And,Or


class_name: kd.bos.entity.filter.FilterBuilder
method_name: addFilterField
param_types_key: String,String,String,String,List,String,String
signature_text:
public void addFilterField(String fieldName, String compare, String left, String right, java.util.List<Object> value, String logic, String entityNumber)

comment:
添加过滤字段
@param `fieldName` ` 字段名称
@param `compare` ` 比较符
@param `left` ` 左括号
@param `right` ` 右括号
@param `value` ` 过滤值
@param `logic` ` 逻辑：And,Or


class_name: kd.bos.entity.filter.FilterBuilder
method_name: getFilterField
param_types_key: FilterObject,String
signature_text: public static FilterField getFilterField(FilterObject filterObject, String fieldName)
comment:
根据过滤字段工具类缓存对象以及字段名获取工具类对象
@param `filterObject` 过滤字段工具类缓存对象 FilterObject
@param `fieldName` 字段名
@return 过滤工具类对象


class_name: kd.bos.entity.filter.FilterBuilder
method_name: getFlexPropExtendResultMap
comment: 获取弹性域扩展属性结果集合
signature_text:
public java.util.Map<String, kd.bos.entity.property.CreateExtendFilterFieldsResult> getFlexPropExtendResultMap()


class_name: kd.bos.entity.filter.FilterContantParserArgs
method_name: <init>
param_types_key: String,FilterRow,List,MainEntityType
signature_text:
public FilterContantParserArgs(String fieldName, FilterRow filterRow, java.util.List<FilterRow> filterRows, MainEntityType mainEntityType)

comment:
构造函数
@param `fieldName` ` ORM字段名
@param `filterRow` ` 过滤行数据
@param `filterRows` ` 过滤所有行数据集合
@param `mainEntityType` ` 过滤对象的实例类型


class_name: kd.bos.entity.filter.FilterField
method_name: <init>
param_types_key: MainEntityType,IDataEntityProperty,IDataEntityProperty,IDataEntityProperty,String
signature_text:
public FilterField(MainEntityType mainType, IDataEntityProperty srcFieldProp, IDataEntityProperty refProp1, IDataEntityProperty refProp2, String refEntityId)

comment:
构造函数
@param `srcFieldProp` ` 单据字段
@param `refProp1` ` 引用属性1
@param `refProp2` ` 引用属性2
@param `refEntityId` ` 字段对应的实体标识


class_name: kd.bos.entity.filter.FilterField
method_name: <init>
param_types_key: LocaleString,String,String,String,int
signature_text:
public FilterField(LocaleString caption, String fieldName, String entityKey, String compareGroupID, int fieldType)

comment:
构造函数
@param `caption` ` 字段标题
@param `fieldName` ` 字段标识，不包含单据体前缀
@param `entityKey` ` 字段所在的单据体
@param `compareGroupID` ` 比较符号集
@param `fieldType` ` 数据库字段类型 是否常量：专用于主组织


class_name: kd.bos.entity.filter.FilterField
method_name: createFilterColumn
param_types_key: CreateFilterColumnParameter
comment: 基于本对象，生成前端过滤表格中用到的过滤字段
signature_text:
public java.util.Map<String, Object> createFilterColumn(kd.bos.entity.filter.CreateFilterColumnParameter createFilterColumnParameter)


class_name: kd.bos.entity.filter.FilterField
method_name: createForItemClassProp
param_types_key: MainEntityType,String,String
signature_text:
public static FilterField createForItemClassProp(MainEntityType mainType, String fieldName, String baseEntityId)

comment:
根据多类别基础资料创建
@param `mainType` 单据主实体
@param `fieldName` 字段名，格式：基础资料.引用属性1.引用属性2
@param `baseEntityId` 字段名，格式：基础资料.引用属性1.引用属性2


class_name: kd.bos.entity.filter.FilterKeyValueCollections
method_name: <init>
param_types_key: String,List
comment: 构造函数 @param `filterKey` ` 字段名 @param `filterList` ` 字段过滤元数据集合
signature_text:
public FilterKeyValueCollections(String filterKey, java.util.List<java.util.Map<String, java.util.List<Object>>> filterList)


class_name: kd.bos.entity.filter.FilterParameter
method_name: <init>
param_types_key: List,List,String
comment: 构造函数
signature_text:
public FilterParameter(java.util.List<String> selectFields, java.util.List<QFilter> qFilters, String orderBy)


class_name: kd.bos.entity.filter.FilterRow
method_name: <init>
param_types_key: MainEntityType,FilterObject,FilterField,String,CompareType,List,String,LogicOperate
signature_text:
public FilterRow(MainEntityType dataType, FilterObject filterObject, FilterField fieldField, String leftBracket, CompareType compareType, java.util.List<String> valueList, String rightBracket, LogicOperate logic)

comment:
构造函数
@param `dataType` ` 实体对象类型
@param `filterObject` ` 实体元数据缓存类
@param `fieldField` ` 过滤字段解析类
@param `leftBracket` ` 左括号
@param `compareType` ` 过滤比较符对象
@param `valueList` ` 过滤值
@param `rightBracket` ` 右括号
@param `logic` ` 逻辑比较符


class_name: kd.bos.entity.filter.SimpleFilterRow
method_name: <init>
param_types_key: String,String,String,String,String,List
signature_text:
public SimpleFilterRow(String leftBracket, String compareType, String fieldName, String rightBracket, String logic, java.util.List<FilterValue> value)

comment:
构造函数
@param `leftBracket` ` 左括号
@param `compareType` ` 比较符
@param `fieldName` ` 字段名
@param `rightBracket` ` 右括号
@param `logic` ` 比较符
@param `value` ` 值


class_name: kd.bos.entity.filter.SimpleFilterRow
method_name: <init>
param_types_key: String,String,String,String,String,String,List
signature_text:
public SimpleFilterRow(String id, String leftBracket, String compareType, String fieldName, String rightBracket, String logic, java.util.List<FilterValue> value)


class_name: kd.bos.entity.flex.FlexEntireData
method_name: setSortedFlexDatas
param_types_key: List
comment: 设置排序后的弹性域数据 @param `flexDatasSorted`
signature_text:
public void setSortedFlexDatas(java.util.List<kd.bos.entity.flex.FlexEntireData.FlexData> flexDatasSorted)


class_name: kd.bos.entity.flex.FlexEntityMetaUtils
method_name: getBasedataPropFlexEntityType
param_types_key: String,String,int,List
comment: 基础资料上弹性域实体类型 @param `flexFieldKey` @param `propertyIds`
signature_text:
public static FlexEntityType getBasedataPropFlexEntityType(String formNumber, String flexFieldKey, int flexTypeId, java.util.List<Long> propertyIds)


class_name: kd.bos.entity.flex.FlexEntityMetaUtils
method_name: getBasedataPropFlexEntityType
param_types_key: CreateFlexMetaArgs
comment: 基础资料上弹性域实体类型 @param `args`
signature_text:
public static FlexEntityType getBasedataPropFlexEntityType(kd.bos.entity.flex.CreateFlexMetaArgs args)


class_name: kd.bos.entity.formula.ExpressionContext
method_name: tryGetBatchRunResult
param_types_key: BatchFuncRunParam,OutValue
signature_text:
default boolean tryGetBatchRunResult(kd.bos.entity.function.BatchFuncRunParam funcParams, kd.bos.entity.formula.OutValue<Object> value)

comment:
尝试获取批量执行结果：如果未执行批量运算，返回false
@param `BatchFuncRunParam` 函数执行参数包
@param `value` 输出批量执行结果
@return 如果查到了批量运算，返回true，同时把执行结果放在value参数中输出


class_name: kd.bos.entity.formula.RowDataModel
method_name: findProperty
param_types_key: MainEntityType,String
signature_text: public static DynamicProperty findProperty(MainEntityType mainType, String var)
comment:
从单据主实体中，寻找变量对应的字段返回：变量名，可能包含了单据体前缀，或者是基础资料的引用属性，本函数会对变量按"."进行分解，找出原始字段属性返回
@param `mainType` 主实体
@param `var` 变量
@return 变量在实体中对应的属性


class_name: kd.bos.entity.formula.RowDataModel
method_name: setValue
param_types_key: String,Object
signature_text: public void setValue(String var, Object value)
comment:
填写变量值
@param `var` 变量，如 "billnoResManager.loadKDString("等，不支持给嵌套的属性赋值（如", "602753689555305472", SubSystemType.SL)dept.number"）
@param `value` 变量值


class_name: kd.bos.entity.list.column.AdminDivisionColumnDesc
method_name: <init>
param_types_key: String,AdminDivisionProp,IDataEntityProperty
comment: 构造函数 @param `key` 控件key @param `adminDivisionProp` 绑定的行政组织字段属性 @param `fieldProp` 绑定的行政组织字段的下级属性
signature_text:
public AdminDivisionColumnDesc(String key, kd.bos.entity.property.AdminDivisionProp adminDivisionProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.AmountColumnDesc
method_name: <init>
param_types_key: String,AmountProp,IDataEntityProperty
comment: 构造函数 @param `key` 控件key @param `amountProp` 原单上的金额属性 @param `fieldProp` 数据包的对应的字段属性
signature_text:
public AmountColumnDesc(String key, kd.bos.entity.property.AmountProp amountProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.BaseDataColumnDesc
method_name: <init>
param_types_key: String,IDataEntityProperty,IDataEntityProperty,AbstractColumnDesc
signature_text:
public BaseDataColumnDesc(String key, IDataEntityProperty srcfieldProp, IDataEntityProperty fieldProp, AbstractColumnDesc columnDesc)

comment:
构造函数
@param `key` 绑定字段标识
@param `srcfieldProp` 根字段
@param `fieldProp` 末级字段
@param `columnDesc` 实际的格式化类


class_name: kd.bos.entity.list.column.BaseDataRefColumnDesc
method_name: <init>
param_types_key: String,IDataEntityProperty,IDataEntityProperty,IDataEntityProperty,AbstractColumnDesc
signature_text:
public BaseDataRefColumnDesc(String key, IDataEntityProperty srcFieldProperty, IDataEntityProperty fieldProp, IDataEntityProperty baseProp, AbstractColumnDesc columnDesc)

comment:
构造函数
@param `key` ` 字段映射
@param `srcFieldProperty` ` 根字段
@param `fieldProp` ` 末级字段
@param `baseProp` ` 绑定的基础资料属性
@param `columnDesc` ` 实际的格式化类


class_name: kd.bos.entity.list.column.BigIntColumnDesc
method_name: <init>
param_types_key: String,BigIntProp,IDataEntityProperty
comment: 构造函数 @param `key` ` 映射的字段类型 @param `bigIntProp` ` 单据上的长整数字段 @param `fieldProp` ` 实际取数的字段类型
signature_text:
public BigIntColumnDesc(String key, kd.bos.entity.property.BigIntProp bigIntProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.BooleanColumnDesc
method_name: <init>
param_types_key: String,BooleanProp,IDataEntityProperty
comment: 构造函数 @param `key` 控件Key @param `srcFieldProp` 原单字段属性 @param `fieldProp` 数据包字段属性
signature_text:
public BooleanColumnDesc(String key, kd.bos.entity.property.BooleanProp srcFieldProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.ComboColumnDesc
method_name: <init>
param_types_key: String,ComboProp,IDataEntityProperty
comment: 构造函数 @param `key` 控件Key @param `comboProp` 对应原单上的下拉列表属性 @param `fieldProp` 数据包上的对应字段属性
signature_text:
public ComboColumnDesc(String key, kd.bos.entity.property.ComboProp comboProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.ControlColumnDesc
method_name: <init>
param_types_key: String,IDataEntityProperty,IDataEntityProperty
comment: 构造函数 @param `key` 控件标识 @param `srcfieldProp` 原单上的字段属性 @param `fieldProp` 数据包上的对应的字段属性
signature_text:
public ControlColumnDesc(String key, IDataEntityProperty srcfieldProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.DateColumnDesc
method_name: <init>
param_types_key: String,DateProp,IDataEntityProperty
comment: 构造函数 @param `key` 控件Key @param `dateProp` 原单上的日期属性 @param `fieldProp` 数据包上的字段属性
signature_text:
public DateColumnDesc(String key, kd.bos.entity.property.DateProp dateProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.DateTimeColumnDesc
method_name: <init>
param_types_key: String,DateTimeProp,IDataEntityProperty
comment: 构造函数 @param `key` 控件Key @param `dateProp` 原单上的日期属性 @param `fieldProp` 数据包上的属性
signature_text:
public DateTimeColumnDesc(String key, kd.bos.entity.property.DateTimeProp dateProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.DecimalColumnDesc
method_name: <init>
param_types_key: String,DecimalProp,IDataEntityProperty
comment: 构造函数 @param `key` 字段标识 @param `decProp` 直接来源字段 @param `fieldProp` 上级基础资料字段
signature_text:
public DecimalColumnDesc(String key, kd.bos.entity.property.DecimalProp decProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.DynamicTextColumnDesc
method_name: <init>
param_types_key: String,List,String
comment: 构造函数 @param `key` 控件标识 @param `columnDescs` 子类格式化工具集合 @param `formatExpression` 格式化表达式
signature_text:
public DynamicTextColumnDesc(String key, java.util.List<AbstractColumnDesc> columnDescs, String formatExpression)


class_name: kd.bos.entity.list.column.ExchangeRateColumnDesc
method_name: <init>
param_types_key: String,DecimalProp,IDataEntityProperty
comment: 构造函数 @param `key` 字段标识 @param `decProp` 直接来源字段 @param `fieldProp` 上级基础资料字段
signature_text:
public ExchangeRateColumnDesc(String key, kd.bos.entity.property.DecimalProp decProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.FlexColumnDesc
method_name: <init>
param_types_key: String,IDataEntityProperty,IDataEntityProperty,String
signature_text:
public FlexColumnDesc(String key, IDataEntityProperty srcFieldProp, IDataEntityProperty fieldProp, String basePropKey)

comment:
构造函数
@param `key` 控件标识
@param `srcFieldProp` 原单上的来源字段属性
@param `fieldProp` 数据包上的字段属性
@param `basePropKey` 弹性域绑定的基础资料字段标识


class_name: kd.bos.entity.list.column.IntegerColumnDesc
method_name: <init>
param_types_key: String,IntegerProp,IDataEntityProperty
comment: 构造函数 @param `key` 控件Key @param `intProp` 绑定的原单上的 @param `fieldProp`
signature_text:
public IntegerColumnDesc(String key, kd.bos.entity.property.IntegerProp intProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.ItemClassColumnDesc
method_name: <init>
param_types_key: String,IDataEntityProperty,IDataEntityProperty
comment: 构造函数 @param `key` 控件Key @param `srcFieldProp` 原单上的来源字段属性 @param `fieldProp` 数据包上的字段属性
signature_text:
public ItemClassColumnDesc(String key, IDataEntityProperty srcFieldProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.MulBaseDataColumnDesc
method_name: <init>
param_types_key: String,IDataEntityProperty,IDataEntityProperty,AbstractColumnDesc
signature_text:
public MulBaseDataColumnDesc(String key, IDataEntityProperty srcfieldProp, IDataEntityProperty fieldProp, AbstractColumnDesc columnDesc)

comment:
构造函数
@param `key` 控件Key
@param `srcfieldProp` 原单上的来源字段属性
@param `fieldProp` 数据包上的字段属性
@param `columnDesc` 下级属性工具类


class_name: kd.bos.entity.list.column.MuliLangTextColumnDesc
method_name: <init>
param_types_key: String,IDataEntityProperty,IDataEntityProperty
comment: 构造函数 @param `key` 控件Key @param `srcFieldProp` 原单上的来源字段属性 @param `fieldProp` 数据包上的字段属性
signature_text:
public MuliLangTextColumnDesc(String key, IDataEntityProperty srcFieldProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.NumberColumnDesc
method_name: <init>
param_types_key: String,IDataEntityProperty,IDataEntityProperty
comment: 构造函数 @param `key` 控件Key @param `srcFieldProp` 原单上的字段属性 @param `fieldProp` 数据包上的字段属性
signature_text:
public NumberColumnDesc(String key, IDataEntityProperty srcFieldProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.QtyColumnDesc
method_name: <init>
param_types_key: String,DecimalProp,IDataEntityProperty
comment: 构造函数 @param `key` 控件标识 @param `srcFieldProp` 原单上的字段属性 @param `fieldProp` 数据包上的字段属性
signature_text:
public QtyColumnDesc(String key, kd.bos.entity.property.DecimalProp srcFieldProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.column.RefBillColumnDesc
method_name: <init>
param_types_key: String,IDataEntityProperty,IDataEntityProperty,AbstractColumnDesc
signature_text:
public RefBillColumnDesc(String key, IDataEntityProperty srcfieldProp, IDataEntityProperty fieldProp, AbstractColumnDesc columnDesc)

comment:
构造函数
@param `key` 控件Key
@param `srcfieldProp` 原单上的字段属性
@param `fieldProp` 数据包上的字段属性
@param `columnDesc` 引用格式化工具


class_name: kd.bos.entity.list.column.TimeColumnDesc
method_name: <init>
param_types_key: String,TimeProp,IDataEntityProperty
comment: 构造函数 @param `key` 控件标识 @param `timeProp` 原单上的字段属性 @param `fieldProp` 数据包上的字段属性
signature_text:
public TimeColumnDesc(String key, kd.bos.entity.property.TimeProp timeProp, IDataEntityProperty fieldProp)


class_name: kd.bos.entity.list.IQuery
method_name: getChildsId
param_types_key: GroupProp,String
comment: 获取长编码id集合 @param `groupProp` 分组属性 @param `longNumber` 长编码字段标识
signature_text:
public java.util.List<String> getChildsId(kd.bos.entity.property.GroupProp groupProp, String longNumber)


class_name: kd.bos.entity.list.IQuery
method_name: getGroupNodes
param_types_key: GroupProp,List,String,Object,String,Map
signature_text:
public java.util.List<TreeNode> getGroupNodes(kd.bos.entity.property.GroupProp groupProp, java.util.List<QFilter> filters, String format, Object parentId, String longNumber, java.util.Map<String, Object> queryParas)

comment:
获取树形列表左树结点
@param `groupProp` 分组属性
@param `filters` 过滤条件
@param `format` 长编码格式化模版
@param `parentId` 父结点id
@param `longNumber` 长编码字段标识
@param `queryParas` 查询参数值


class_name: kd.bos.entity.list.QueryBuilder
method_name: <init>
param_types_key: List,String,QFilter[],String,int,int,IDataEntityType,List
signature_text:
public QueryBuilder(java.util.List<ListField> sumFields, String selectFields, QFilter[] filters, String orderBys, int start, int limit, IDataEntityType entityType, java.util.List<ListField> visibleSelectFieldList)

comment:
构造函数
@param `sumFields` ` 合计字段
@param `selectFields` ` 查询字段列表
@param `filters` ` 过滤条件
@param `orderBys` ` 排序字段
@param `start` ` 起始行
@param `limit` ` 查询条数
@param `entityType` ` 实体类型
@param `visibleSelectFieldList` ` 可见字段列表


class_name: kd.bos.entity.MainEntityType
method_name: getCacheRegionKey
signature_text: protected String getCacheRegionKey()
comment:
获取缓存key，注意 RefEntityType 有重载。 增加 hashcode 是防止二次开发代码手动创建了同名的类型，互相影响了缓存。
@return 数据中心 + 实体名称 + Hashcode


class_name: kd.bos.entity.MarkdownLinkData
method_name: setCode
param_types_key: String
signature_text: public void setCode(String code)
comment:
设置指令 可以是外部指令，如：https://www.baidu.com，外部指令会跳转到新页签打开页面 可以是内部指令，如：click，会发送customEvent事件到插件。
@param `code`


class_name: kd.bos.entity.NumberFormatProvider
method_name: <init>
param_types_key: List,DynamicObjectCollection
comment: 构造函数
signature_text:
public NumberFormatProvider(java.util.List<FmtField> fmtFields, DynamicObjectCollection dataEntitys)


class_name: kd.bos.entity.NumberFormatProvider
method_name: <init>
param_types_key: List,DynamicObjectCollection,DynamicObject
comment: 构造函数
signature_text:
public NumberFormatProvider(java.util.List<FmtField> fmtFields, DynamicObjectCollection dataEntitys, DynamicObject dataEntity)


class_name: kd.bos.entity.NumberFormatProvider
method_name: <init>
param_types_key: List,DynamicObjectCollection,DynamicObject,int
comment: 构造函数
signature_text:
public NumberFormatProvider(java.util.List<FmtField> fmtFields, DynamicObjectCollection dataEntitys, DynamicObject dataEntity, int rowStartIndex)


class_name: kd.bos.entity.NumberFormatProvider
method_name: <init>
param_types_key: List,DynamicObjectCollection,DynamicObject,int,boolean
comment: 构造函数
signature_text:
public NumberFormatProvider(java.util.List<FmtField> fmtFields, DynamicObjectCollection dataEntitys, DynamicObject dataEntity, int rowStartIndex, boolean isApplyMaterialPrecision)


class_name: kd.bos.entity.NumberFormatProvider
method_name: <init>
param_types_key: List,DynamicObjectCollection,DynamicObject,FormatObject,boolean
signature_text:
public NumberFormatProvider(java.util.List<FmtField> fmtFields, DynamicObjectCollection dataEntitys, DynamicObject dataEntity, kd.bos.entity.format.FormatObject formatObject, boolean isApplyMaterialPrecision)

comment:
构造器, 直接传入 isApplyMaterialPrecision 由于 isApplyMaterialPrecision 的获取消耗性能, 这里使用参数传递. 外部可自行缓存 isApplyMaterialPrecision
@param `fmtFields` 格式化字段
@param `dataEntitys` 实体集合
@param `dataEntity` 实体
@param `isApplyMaterialPrecision`


class_name: kd.bos.entity.NumberFormatProvider
method_name: <init>
param_types_key: List,DynamicObjectCollection,DynamicObject,FormatObject
signature_text:
public NumberFormatProvider(java.util.List<FmtField> fmtFields, DynamicObjectCollection dataEntitys, DynamicObject dataEntity, kd.bos.entity.format.FormatObject formatObject)

comment:
构造器, 直接传入 FormatObject 由于 FormatObject 的获取消耗性能, 在外部循环创建 NumberFormatProvider 时存在性能瓶颈, 这里使用参数传递. 外部可自行缓存 FormatObject
@param `fmtFields` 格式化字段
@param `dataEntitys` 实体集合
@param `dataEntity` 实体
@param `formatObject` 格式化对象


class_name: kd.bos.entity.NumberFormatProvider
method_name: getFieldFmtInfo
comment: 获取字段的格式化信息
signature_text:
public java.util.Map<String, java.util.Map<String, java.util.Map<String, Object>>> getFieldFmtInfo()


class_name: kd.bos.entity.NumberFormatProvider
method_name: getFormatPrecision
param_types_key: String,DynamicObject,DynamicObject
comment: 获取格式化精度 @param `rowData` 数据字段所在行 @param `fmtRowData` 币别/计量单位等控制字段所在行
signature_text:
public NumberPrecision getFormatPrecision(String scaleFieldName, DynamicObject rowData, DynamicObject fmtRowData)


class_name: kd.bos.entity.NumberFormatProvider
method_name: getRowAllFmtInfo
comment: 获取所有行的格式化信息 rowIdex -> (currencyfmt -> fmt) rowIdex -> (unitfmt -> fmt)
signature_text:
public java.util.Map<Integer, java.util.Map<String, java.util.Map<String, Object>>> getRowAllFmtInfo()


class_name: kd.bos.entity.operate.bizrule.asyncbizrule.AbstractAsyncOpBizRuleAction
method_name: setMServiceParam
param_types_key: AsyncOpBizRuleServiceMsgInfo,DynamicObject[]
comment: @param `serviceMessageInfo` 消息对象 @param `datas` 单据信息 @return void
signature_text:
public abstract void setMServiceParam(kd.bos.entity.operate.bizrule.asyncbizrule.AsyncOpBizRuleServiceMsgInfo serviceMessageInfo, DynamicObject[] datas)


class_name: kd.bos.entity.operate.interaction.KDInteractionException
method_name: <init>
param_types_key: String,InteractionContext
signature_text: public KDInteractionException(String sponsor, InteractionContext interactionContext)
comment:
交互错误：插件通过抛出交互错误，要求操作显示交互界面
@param `sponsor` 本次交互的标识，由插件指定的固定值，不能与其他交互重复
@param `interactionContext` 交互上下文，包含了交互提示内容等


class_name: kd.bos.entity.operate.KDOpAsynExecutorException
method_name: <init>
param_types_key: String,InteractionContext
signature_text: public KDOpAsynExecutorException(String sponsor, InteractionContext interactionContext)
comment:
构造方法
@param `sponsor` 本次交互的标识，由插件指定的固定值，不能与其他交互重复
@param `interactionContext` 交互请求上下文对象，包含交互提示内容、交互界面及显示参数等


class_name: kd.bos.entity.operate.result.OperateErrorInfo
method_name: <init>
param_types_key: String,ErrorLevel,Object,Object,Object
signature_text:
public OperateErrorInfo(String errorCode, ErrorLevel level, Object pkValue, Object entryId, Object detailId)

comment:
构造函数
@param `errorCode` 错误码
@param `level` 错误级别
@param `pkValue` 单据内码
@param `entryId` 分录内码
@param `detailId` 子分录内码


class_name: kd.bos.entity.operate.result.OperateErrorInfo
method_name: <init>
param_types_key: String,ErrorLevel,Object,List
comment: 构造函数 @param `errorCode` 错误码 @param `level` 错误级别 @param `pkValue` 单据内码
signature_text:
public OperateErrorInfo(String errorCode, ErrorLevel level, Object pkValue, java.util.List<kd.bos.entity.validate.MsgReplaceHolder> msgReplaceHolders)


class_name: kd.bos.entity.operate.result.OperationResult
method_name: setCustShowFormId
param_types_key: String
signature_text: public void setCustShowFormId(String custShowFormId)
comment:
设置操作结果展示表单(模态打开) 当设置了操作结果提示信息和展示表单，操作完毕，打开该表单显示结果 注意事项： 1. 表单自定义参数通过结果 customData 传递 （FormShowParameter.getCustomParam("customData")） 2. 该优先级高于交互信息InteractionContext 3. 设定弹出自定义页面不会执行成功后下一操作（如提交后关闭，保存后提交等），该场景多适用于操作失败自定义反馈场景
@param `custShowFormId` 表单编码


class_name: kd.bos.entity.param.AppParam
method_name: <init>
param_types_key: String,String,String,Long,Long,Long
signature_text:
public AppParam(String cloudId, String appId, String viewType, Long orgId, Long actBookId, Long acctingBookId)

comment:
构造函数
@param `cloudId` 云ID
@param `appId` 应用ID
@param `viewType` 职能类型
@param `orgId` 组织
@param `actBookId` 账簿
@param `acctingBookId` 会计账簿


class_name: kd.bos.entity.param.AppParam
method_name: <init>
param_types_key: String,String,String,List,Long,Long
signature_text:
public AppParam(String cloudId, String appId, String viewType, java.util.List<Long> orgIds, Long actBookId, Long acctingBookId)

comment:
构造函数
@param `cloudId` 云ID
@param `appId` 应用ID
@param `viewType` 职能类型
@param `orgIds` 组织列表
@param `actBookId` 账簿
@param `acctingBookId` 会计账簿


class_name: kd.bos.entity.param.FuzzySearch
method_name: <init>
param_types_key: int,List,List
comment: 构造函数 @param `pageSize` 分页大小 @param `comboListFields` 模糊查询列头字段 @param `searchFields` 查询字段
signature_text:
public FuzzySearch(int pageSize, java.util.List<ShowColumn> comboListFields, java.util.List<String> searchFields)


class_name: kd.bos.entity.param.ParamPublishObject
method_name: <init>
param_types_key: String,String,String,boolean
signature_text: public ParamPublishObject(String cloudId, String formId, String appId, boolean actBookEnable)
comment:
构造函数，用于创建带有云ID、表单ID、应用ID和是否启用实际账本的参数查询对象
@param `cloudId` 云服务的唯一标识符
@param `formId` 表单的唯一标识符
@param `appId` 应用的唯一标识符
@param `actBookEnable` 是否启用实际账本


class_name: kd.bos.entity.param.ParamPublishObject
method_name: <init>
param_types_key: String,String,String,String
signature_text: public ParamPublishObject(String id, String formId, String cloudId, String appId)
comment:
构造函数，用于创建带有ID、云ID、表单ID和应用ID的参数查询对象
@param `id` 参数的唯一标识符
@param `formId` 表单的唯一标识符
@param `cloudId` 云服务的唯一标识符
@param `appId` 应用的唯一标识符


class_name: kd.bos.entity.param.ParamRow
method_name: <init>
param_types_key: ParamKey,Object,boolean,boolean
signature_text: public ParamRow(ParamKey key, Object value, boolean isLock, boolean sync)
comment:
构造函数，用于创建带有参数键、值、锁定状态和同步状态的参数行对象
@param `key` 参数的键对象
@param `value` 参数的值
@param `isLock` 是否锁定的标志
@param `sync` 是否同步的标志


class_name: kd.bos.entity.param.ShowColumn
method_name: <init>
param_types_key: String,String,float,boolean
signature_text: public ShowColumn(String id, String caption, float width, boolean visible)
comment:
构造函数，用于创建带有列ID、标题、宽度和可见性的列头对象
@param `id` 列的ID
@param `caption` 列的标题
@param `width` 列的宽度
@param `visible` 列是否可见


class_name: kd.bos.entity.plugin.AbstractOperationServicePlugIn
method_name: getOperateProgress
signature_text: public kd.bos.entity.operate.OperateProgress getOperateProgress()
comment:
获取操作进度控制器 插件可通过此对象，输出进度提示信息 示例： ` this.getOperateProgress().feedbackProgress("当前正在进行...."); </code>`
``
`


class_name: kd.bos.entity.plugin.AbstractOperationServicePlugIn
method_name: getOption
signature_text: public OperateOption getOption()
comment:
获取操作可选参数包 此对象会包含一些自定义的可选参数，使用如下示例代码获取可选参数： ` String opVal = this.getOption().getVariableValue(name, defVal); </code>`
``
`


class_name: kd.bos.entity.plugin.AbstractOperationServicePlugIn
method_name: setContext
param_types_key: MainEntityType,Map,OperateOption
comment: 设置操作上下文对象 此方法由操作引擎调用，传入操作上下文对象，插件不需要调用
signature_text:
public void setContext(MainEntityType billEntityType, java.util.Map<String, Object> operateMeta, OperateOption option)


class_name: kd.bos.entity.plugin.AddValidatorsEventArgs
method_name: <init>
param_types_key: DynamicObject[],List
comment: 构造函数 @param `dataEntities` 单据数据包 @param `validators` 已注册的校验器
signature_text:
public AddValidatorsEventArgs(DynamicObject[] dataEntities, java.util.List<AbstractValidator> validators)


class_name: kd.bos.entity.plugin.args.BeforeOperationArgs
method_name: getDataEntities
signature_text: public DynamicObject[] getDataEntities()
comment:
返回已通过校验的单据数据包 本方法和 getValidExtDataEntities()效果相同，只是本方法返回原始数据包，而getValidExtDataEntities()返回再包装后的数据包 推荐使用 getValidExtDataEntities()方法


class_name: kd.bos.entity.plugin.args.BeforeOperationArgs
method_name: getValidExtDataEntities
signature_text: public java.util.List<ExtendedDataEntity> getValidExtDataEntities()
comment:
返回已通过校验的单据数据包：对数据包进行了再包装，包含了数据索引 插件可以进一步校验，调整此集合中的单据，从而排除不符合要求的单据 getSelectedRows()有歧义，用此方法替代 示例代码：
publicvoidbeforeExecuteOperationTransaction(BeforeOperationArgs e) {
List<ExtendedDataEntity> dataEntities = newArrayList<>(e.getValidExtDataEntities());
// 此处略去数据检查逻辑...
e.getValidExtDataEntities().clear();
e.getValidExtDataEntities().addAll(dataEntities);
}


class_name: kd.bos.entity.plugin.args.BeforeOperationArgs
method_name: setCancel
param_types_key: boolean
signature_text: public void setCancel(boolean cancel)
comment:
设置标志，取消操作 示例代码：
publicvoidbeforeExecuteOperationTransaction(BeforeOperationArgs e) {
e.setCancel(true);
e.setCancelMessage("因为...，所以取消操作，请...");
}
@param `cancel` 设为true，则取消操作执行


class_name: kd.bos.entity.plugin.args.BeforeSaveAuditLogEvent
method_name: <init>
param_types_key: String,String,String,String
comment: 构造函数 @param `cloudId` 云id @param `appId` 应用id @param `entityNumber` 实体标识 @param `operationKey` 操作类型
signature_text:
public BeforeSaveAuditLogEvent(String cloudId, String appId, String entityNumber, String operationKey)


class_name: kd.bos.entity.plugin.args.BeginOperationTransactionArgs
method_name: setCancelOperation
param_types_key: boolean
signature_text: public void setCancelOperation(boolean cancelOperation)
comment:
设置参数，略过更新数据库逻辑 设置为true会跳过标准操作内含的更新数据库逻辑，但操作还是会继续，返回结果也为操作成功（已经更改为操作失败2023/5/23）： 特别说明：这个参数非常容易引起误解，而且因为跳过了数据库更新逻辑，但操作结果成功，出现问题非常难以排查。 如果需要操作结果返回失败，则需抛出异常强制中断操作，如` throw new KDBizException("异常提示")</code>`
`
`
`
@param `cancelOperation` 传入true，将跳过更新数据库的逻辑，单据不会保存入库，事务会回滚


class_name: kd.bos.entity.plugin.args.SensitiveArgs
method_name: <init>
param_types_key: Object
signature_text: public SensitiveArgs(Object source)
comment:
Constructs a prototypical Event.
@param `source` The object on which the Event initially occurred.
@throws `IllegalArgumentException` if source is null.


class_name: kd.bos.entity.plugin.args.SensitiveArgs
method_name: addField
param_types_key: Map
comment: 添加需要处理的敏感字段 @param `fieldMap`
signature_text:
public void addField(java.util.Map<String, kd.bos.entity.plugin.args.SensitiveArgs.SensitiveRule> fieldMap)


class_name: kd.bos.entity.plugin.args.SensitiveArgs
method_name: setDesensitiveFun
param_types_key: DesensitiveFun
comment: 设置替换函数 @param `desensitiveFun`
signature_text:
public void setDesensitiveFun(kd.bos.entity.plugin.args.SensitiveArgs.DesensitiveFun desensitiveFun)


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: afterExecuteOperationTransaction
param_types_key: AfterOperationArgs
signature_text: default void afterExecuteOperationTransaction(AfterOperationArgs e)
comment:
操作事务提交后触发此事件 执行操作事务后的逻辑处理,后续事情不影响当前操作事务的可以放在此处理
示例
publicclassDemoOpServicePluginextendsAbstractOperationServicePlugIn {</code>
`
`
`
@param `e` 事件参数


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: beforeExecuteOperationTransaction
param_types_key: BeforeOperationArgs
signature_text: default void beforeExecuteOperationTransaction(BeforeOperationArgs e)
comment:
操作校验通过，开启事务前触发此事件 通知插件在事务开启前，对要处理的数据进行预处理 数据处理的逻辑推荐放在事务外进行，在事务中，则只需要把已处理好的数据，更新到数据库。从而避免拉长事务占用时间，造成性能瓶颈 本事件参数只含已通过校验的单据，未通过校验的单据已被剔除；如果没有任何单据通过校验，则直接结束操作，不会进入此事件
示例
publicclassDemoOpServicePluginextendsAbstractOperationServicePlugIn {</code>
`
`
`
@param `e` 事件参数，内含已通过校验的单据数据包


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: beforeSaveAuditLog
param_types_key: BeforeSaveAuditLogArg
signature_text: default void beforeSaveAuditLog(BeforeSaveAuditLogArg e)
comment:
操作完成，保存审计日志前触发此事件 单据设置了监控字段变动清单后，会在操作完成时，记录这些字段的值变化，以供后续审计 本事件在保存审计日志之前触发，供插件修改审计日志内容
@param `e` 事件参数，含审计日志内容


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: beginOperationTransaction
param_types_key: BeginOperationTransactionArgs
signature_text: default void beginOperationTransaction(BeginOperationTransactionArgs e)
comment:
调用操作事务开始（事务内） 触发此事件时，操作引擎还未把单据数据更新到数据库
示例
publicclassDemoOpServicePluginextendsAbstractOperationServicePlugIn {</code>
`
`
`
@param `e` 事件参数，内含待更新到数据库的单据


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: endOperationTransaction
param_types_key: EndOperationTransactionArgs
signature_text: default void endOperationTransaction(EndOperationTransactionArgs e)
comment:
调用操作事务结束（事务内） 触发此事件时，操作引擎已把单据数据更新到了数据库，但事务还未提交
示例
publicclassDemoOpServicePluginextendsAbstractOperationServicePlugIn {</code>
`
`
`
@param `e` 事件参数


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: getOperateProgress
signature_text: default kd.bos.entity.operate.OperateProgress getOperateProgress()
comment:
获取进度控制接口实例 插件基类AbstractOperationServicePlugIn已实现此方法，返回本地的进度控制接口实例
使用示例 ` this.getOperateProgress().feedbackProgress("当前正在进行...."); </code>`
`
`
`
@return 操作进度控制接口


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: getOption
signature_text: OperateOption getOption()
comment:
获取操作可选参数包 插件基类AbstractOperationServicePlugIn已实现了此方法，返回本地的参数包变量
使用示例： ` String opVal = this.getOption().getVariableValue(name, defVal); </code>`
`
`
`
@return 操作可选参数包


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: isSupportSplitPageMode
signature_text: default boolean isSupportSplitPageMode()
comment:
本插件是否已支持单据体分页加载模式？
超级大单执行操作时，单据体行数非常庞大，最优方案是分页加载：只加载少量单据体行 分批后，当前内存中只有一页分录行数据，插件如果要对全部行进行处理，必须考虑到有些行还没有加载，需要调整实现逻辑，自行访问数据库读取其余的行 如果本插件已对单据体分页加载模式进行了针对性的处理，或不涉及单据体行运算，可重写此方法，返回true； 默认返回false，操作引擎在遇到大单分页时，自动略过本插件，不执行本插件的逻辑
@return 默认返回false，插件可重写此方法，返回true；


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: onAddValidators
param_types_key: AddValidatorsEventArgs
signature_text: default void onAddValidators(AddValidatorsEventArgs e)
comment:
注册操作校验器事件 通过此事件，通知插件进行添加自定义数据校验器：kd.bos.entity.validate.AbstractValidator的子类
示例：
publicclassDemoOpServicePluginextendsAbstractOperationServicePlugIn {</code>
`
`
`
@param `e` 事件参数，含已注册的操作校验器集合


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: onPreparePropertys
param_types_key: PreparePropertysEventArgs
signature_text: default void onPreparePropertys(PreparePropertysEventArgs e)
comment:
预指定加载字段事件 在操作正式执行时，准备加载待处理的单据数据包前触发 在单据上执行保存、提交、审核操作时，直接把界面上的数据包传入操作服务，操作引擎不需要再加载数据包，不会触发此事件 在单据上执行其他操作，或在列表上执行操作时会触发此事件：调用操作只传入了单据内码，需由操作引擎自行加载数据包 默认是按需加载，只加载了最少量的字段。插件要用到的字段，必须通过本事件指定，否则后续插件到数据包取字段值时，会报找不到字段的异常
示例：
publicclassDemoOpServicePluginextendsAbstractOperationServicePlugIn {</code>
`
`
`
@param `e` 事件参数，含需加载的字段集合


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: onReturnOperation
param_types_key: ReturnOperationArgs
signature_text: default void onReturnOperation(ReturnOperationArgs e)
comment:
操作结束时触发此事件 操作服务执行完毕，准备返回操作结果之前触发此事件 无论操作是否成功，都会触发此事件 允许插件基于操作结果进行后续处理，或者修改操作结果提示，释放资源
示例
publicclassDemoOpServicePluginextendsAbstractOperationServicePlugIn {</code>
`
`
`
@param `e` 参数


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: rollbackOperation
param_types_key: RollbackOperationArgs
signature_text: default void rollbackOperation(RollbackOperationArgs e)
comment:
操作处理失败，回滚事务时触发此事件 该方法在事务异常后执行，供业务在此对没有事务保护的数据更新进行补偿。
示例
publicclassDemoOpServicePluginextendsAbstractOperationServicePlugIn {</code>
`
`
`
@param `e` 事件参数


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: setContext
param_types_key: MainEntityType,Map,OperateOption
signature_text:
default void setContext(MainEntityType billEntityType, java.util.Map<String, Object> operateMeta, OperateOption option)

comment:
设置上下文 本方法由操作引擎调用，传入操作执行上下文信息 插件基类AbstractOperationServicePlugIn已实现此方法，把收到的方法放在本地
@param `billEntityType` 单据主实体
@param `operateMeta` 操作元数据
@param `option` 自定义参数


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: setOperateProgress
param_types_key: OperateProgress
signature_text: default void setOperateProgress(kd.bos.entity.operate.OperateProgress progress)
comment:
设置进度控制接口实例 本方法由操作引擎调用，传入操作进度控制接口实例变量 插件基类AbstractOperationServicePlugIn已实现此方法，把收到的变量放在本地
@param `progress` 进度


class_name: kd.bos.entity.plugin.IOperationServicePlugIn
method_name: validatePrefix
param_types_key: ValidatePrefixArgs
signature_text: default void validatePrefix(ValidatePrefixArgs validatePrefixArgs)
comment:
执行操作校验前触发此事件 插件可在此事件，设置校验提示的前缀，默认是以单据编号为提示前缀，插件可以设置按其他字段值做提示前缀
``````````
@param `validatePrefixArgs` 事件参数，插件通过此参数设置作为提示前缀的字段名


class_name: kd.bos.entity.plugin.PreparePropertysEventArgs
method_name: getFieldKeys
signature_text: public java.util.List<String> getFieldKeys()
comment:
获取待加载的字段集合 插件把需加载的字段，添加到此集合中 示例代码：
publicvoidonPreparePropertys(PreparePropertysEventArgs e) {
e.getFieldKeys().add("billno");
}


class_name: kd.bos.entity.QueryEntityType
method_name: getQueryDataSet
param_types_key: String,QFilter[],String
signature_text: public DataSet getQueryDataSet(String queryFileds, QFilter[] qFilters, String orderBys)
comment:
按查询字段，过滤条件，排序，获取查询数据的数据集
@param `queryFileds` 查询字段
@param `qFilters` 过滤信息
@param `orderBys` 排序字段，多个用,分隔


class_name: kd.bos.entity.QueryEntityType
method_name: getQueryDataSet
param_types_key: String,QFilter[],String,int,int
signature_text:
public DataSet getQueryDataSet(String queryFileds, QFilter[] qFilters, String orderBys, int start, int limit)

comment:
按查询字段，过滤条件，排序，获取查询数据的数据集
@param `queryFileds` 查询字段
@param `qFilters` 过滤信息
@param `orderBys` 排序字段，多个用,分隔
@param `start` 开始行数
@param `limit` 数量


class_name: kd.bos.entity.QueryEntityType
method_name: getQueryDataSet
param_types_key: String,QFilter[],String,boolean,int,int
signature_text:
public DataSet getQueryDataSet(String queryFileds, QFilter[] qFilters, String orderBys, boolean isLimitCount, int start, int limit)

comment:
按查询字段，过滤条件，排序，获取查询数据的数据集
@param `queryFileds` 查询字段
@param `qFilters` 过滤信息
@param `orderBys` 排序字段，多个用,分隔
@param `isLimitCount` 获取指定范围的数据 ，为 false 时 不限制范围
@param `start` 开始行数
@param `limit` 数量


class_name: kd.bos.entity.QueryEntityType
method_name: getQueryDataSetByPK
param_types_key: QueryBuilder,List,String,boolean
signature_text:
public DataSet getQueryDataSetByPK(QueryBuilder queryBuilder, java.util.List<QFilter> idFilters, String queryFileds, boolean isLimitCount)

comment:
查询列表调用，按查询条件取数，用于主键取数调用
@param `queryBuilder`
@param `idFilters`
@param `queryFileds`
@param `isLimitCount`


class_name: kd.bos.entity.report.AbstractReportListDataPlugin
method_name: export
param_types_key: ReportQueryParam,Object
signature_text: public DataSet export(ReportQueryParam queryParam, Object selectedObj)
comment:
导出查询全量数据
@param `queryParam` 查询参数
@param `selectedObj` 左树（表）右表是选中左树（表）对象，左树时为节点ID，左表时为选中行数据
@return 返回报表数据
@throws `Throwable` 抛出查询异常


class_name: kd.bos.entity.report.AbstractReportListDataPlugin
method_name: exportWithSheet
param_types_key: ReportQueryParam,Object
signature_text:
public java.util.List<kd.bos.entity.report.ReportExportDataResult> exportWithSheet(ReportQueryParam queryParam, Object selectedObj)

comment:
分sheet页导出数据
@param `queryParam` 查询参数
@param `selectedObj` 左树（表）右表是选中左树（表）对象，左树时为节点ID，左表时为选中行数据
@return 一个sheet页对一个一个数据 ReportExportDataResult
@throws `Throwable` 抛出查询异常


class_name: kd.bos.entity.report.AbstractReportListDataPlugin
method_name: getColumns
param_types_key: List
comment: 改变列信息 @param `columns` 报表设计列 @return 页面显示列
signature_text:
public java.util.List<AbstractReportColumn> getColumns(java.util.List<AbstractReportColumn> columns) throws Throwable


class_name: kd.bos.entity.report.AbstractReportListDataPlugin
method_name: query
param_types_key: ReportQueryParam,Object
signature_text: public abstract DataSet query(ReportQueryParam queryParam, Object selectedObj) throws Throwable
comment:
查询数据
@param `queryParam` 查询参数
@param `selectedObj` 左树（表）右表是选中左树（表）对象，左树时为节点ID，左表时为选中行数据
@return 返回报表数据
@throws `Throwable` 抛出查询异常


class_name: kd.bos.entity.report.AbstractReportListDataPlugin
method_name: queryBatchBy
param_types_key: ReportQueryParam
signature_text: public DataSet queryBatchBy(ReportQueryParam queryParam)
comment:
返回用于分批取数的依据数据 eg：以物料为分批依据，些接口返回涉及的所有物料， 然后query接口中通queryParam.getCurrentBatch获取当前分批， 并可基于该分批过滤取数
@param `queryParam` 查询参数
@return 返回报表数据


class_name: kd.bos.entity.report.AbstractReportTreeDataPlugin
method_name: query
param_types_key: ReportQueryParam,String
signature_text:
public abstract java.util.List<TreeNode> query(ReportQueryParam queryParam, String nodeId) throws Throwable

comment:
查询树节点数据
@param `queryParam` 查询参数
@param `parentId` 上级节点ID
@return 返回树控件一级节点集合，内含下级节点（树形结构）
@throws `Throwable` 抛出查询异常


class_name: kd.bos.entity.report.FastFilter
method_name: <init>
param_types_key: List,List
comment: 快速过滤构造函数 @param `fastFilterValues` 快速过滤集合 @param `qFilters` 实际过滤条件集合
signature_text:
public FastFilter(java.util.List<java.util.Map<String, java.util.List<Object>>> fastFilterValues, java.util.List<QFilter> qFilters)


class_name: kd.bos.entity.report.FilterInfo
method_name: addCommFilter
param_types_key: String,FilterCondition,ITimeService,IUserService
signature_text:
public void addCommFilter(String entityId, FilterCondition filter, ITimeService timeService, kd.bos.service.IUserService userService)

comment:
增加通用过滤条件
@param `entityId` 单据实体编码
@param `filter` 过滤条件
@param `timeService` 时间服务接口类
@param `userService` 用户服务接口类


class_name: kd.bos.entity.report.FilterInfo
method_name: addDefaultFilters
param_types_key: List
comment: 添加默认过滤条件 @param `defaultFilterList` 默认过滤条件集合
signature_text:
public void addDefaultFilters(java.util.List<java.util.Map<String, java.util.List<Object>>> defaultFilterList)


class_name: kd.bos.entity.report.FilterInfo
method_name: getCol2ndFilterOption
param_types_key: String
signature_text: public kd.bos.entity.report.Col2ndFilterOption getCol2ndFilterOption(String reportListKey)
comment:
获取按列头对报表数据进行二次过滤时的参数（内含过滤条件、排序设置）
@param `reportListKey` 报表列表控件标识，列头过滤条件，按报表控件隔离存储
@return 默认返回为null，不需要对报表数据按列头进行二次过滤


class_name: kd.bos.entity.report.FilterInfo
method_name: setCol2ndFilterOption
param_types_key: String,Col2ndFilterOption
comment: 设置按列头二次过滤参数 @param `reportListKey` 报表列表控件标识，列头过滤条件，按报表控件隔离存储 @param `col2ndFilterOption` 按列头二次过滤参数
signature_text:
public void setCol2ndFilterOption(String reportListKey, kd.bos.entity.report.Col2ndFilterOption col2ndFilterOption)


class_name: kd.bos.entity.report.IReportListDataPlugin
method_name: export
param_types_key: ReportQueryParam,Object
signature_text: default DataSet export(ReportQueryParam queryParam, Object selectedObj)
comment:
导出查询全量数据
@param `queryParam` 查询参数
@param `selectedObj` 左树（表）右表是选中左树（表）对象，左树时为节点ID，左表时为选中行数据
@return 返回报表数据


class_name: kd.bos.entity.report.IReportListDataPlugin
method_name: exportWithSheet
param_types_key: ReportQueryParam,Object
signature_text:
default java.util.List<kd.bos.entity.report.ReportExportDataResult> exportWithSheet(ReportQueryParam queryParam, Object selectedObj)

comment:
分sheet页导出数据
@param `queryParam` 查询参数
@param `selectedObj` 左树（表）右表是选中左树（表）对象，左树时为节点ID，左表时为选中行数据
@return 一个sheet页对一个一个数据 ReportExportDataResult


class_name: kd.bos.entity.report.IReportListDataPlugin
method_name: getColumns
param_types_key: List
comment: 改变列信息 @param `columns` 报表设计列 @return 页面显示列
signature_text:
default java.util.List<AbstractReportColumn> getColumns(java.util.List<AbstractReportColumn> columns) throws Throwable


class_name: kd.bos.entity.report.IReportListDataPlugin
method_name: query
param_types_key: ReportQueryParam,Object
signature_text: default DataSet query(ReportQueryParam queryParam, Object selectedObj) throws Throwable
comment:
查询数据
@param `queryParam` 查询参数
@param `selectedObj` 左树（表）右表是选中左树（表）对象，左树时为节点ID，左表时为选中行数据
@return 返回报表数据


class_name: kd.bos.entity.report.IReportListDataPlugin
method_name: queryBatchBy
param_types_key: ReportQueryParam
signature_text: default DataSet queryBatchBy(ReportQueryParam queryParam)
comment:
返回用于分批取数的依据数据 eg：以物料为分批依据，此接口返回涉及的所有物料， 然后Object)接口中通过queryParam.getCurrentBatch获取当前分批， 并可基于该分批过滤取数
@param `queryParam` 查询参数
@return 返回报表数据


class_name: kd.bos.entity.report.IReportListModel
method_name: getRowData
param_types_key: int,int,boolean
signature_text:
default DynamicObjectCollection getRowData(int startIndex, int length, boolean onlyWithSelectedRows)

comment:
获取报表某行数据
@param `startIndex` 初始查询位置
@param `length` 查询条数
@param `onlyWithSelectedRows` 是否只获取已选行数据
@return 报表数据


class_name: kd.bos.entity.report.ReportBatchQueryInfo
method_name: getBatchByDataSetCacheId
signature_text: public String getBatchByDataSetCacheId()
comment:
获取分批取数的【过滤依据数据】 eg:以物料为分批依据，接口返回涉及的所有物料， 然后query接口中通queryParam.getCurrentBatch获取当前分批， 并可基于该分批过滤取数 setC *ountPerBatch设置每批的个数，没设置时报表框架按【过滤依据数据】总行数的量级大致设置每批个数


class_name: kd.bos.entity.report.ReportBatchQueryInfo
method_name: setBatchByDataSetCacheId
param_types_key: String
signature_text: public void setBatchByDataSetCacheId(String batchByDataSetCacheId)
comment:
设置分批取数的【过滤依据数据】 eg:以物料为分批依据，接口返回涉及的所有物料， 然后query接口中通queryParam.getCurrentBatch获取当前分批， 并可基于该分批过滤取数 setCountPerBatch设置每批的个数，没设置时报表框架按【过滤依据数据】总行数的量级大致设置每批个数
@param `batchByDataSetCacheId`


class_name: kd.bos.entity.report.ReportBatchQueryInfo
method_name: setLargeData
param_types_key: boolean
signature_text: public void setLargeData(boolean largeData)
comment:
设置是否大数据 （指插件有实现重载AbstractReportListDataPlugin.queryBatchBy，一般数据量超10w考虑用这种分批加载方式）
@param `largeData` 大数据


class_name: kd.bos.entity.report.ReportColumn
method_name: createBaseDataPropColumn
param_types_key: String,String,String
comment: 生成基础资料属性列 @param `fieldKey` 字段标识 @param `refBasedataProp` 引用的基础资料字段 @param `displayProp` 基础资料显示属性
signature_text:
public static ReportColumn createBaseDataPropColumn(String fieldKey, String refBasedataProp, String displayProp)


class_name: kd.bos.entity.report.ReportColumn
method_name: formatCell
param_types_key: DynamicObject,Object,NumberFormatProvider,DynamicProperty
signature_text:
public Object formatCell(DynamicObject rowData, Object value, NumberFormatProvider numberFormatProvider, DynamicProperty dynamicProperty)

comment:
报表引出和合计无法支持缺省值，先不调用此方法 报表列表字段支持缺省值
@param `rowData`
@param `value`
@param `numberFormatProvider`
@param `dynamicProperty`


class_name: kd.bos.entity.report.ReportColumn
method_name: formatCell
param_types_key: DynamicObject,Object,NumberFormatProvider
comment: 根据字段实体属性类型获取格式化值 @param `rowData` 行数据 @param `value` 当前字段值 @param `numberFormatProvider` 格式化信息
signature_text:
public Object formatCell(DynamicObject rowData, Object value, NumberFormatProvider numberFormatProvider)


class_name: kd.bos.entity.report.ReportColumn
method_name: getFieldType
signature_text: public String getFieldType()
comment:
获取字段类型 报表列字段类型用途列举：确定比较符；动态添加列，根据列定义反向生成实体属性； 可选值范围在本类常量中有定义，基本固定：TYPE_TEXT, TYPE_DATE... 增加新类型需要同步调整上述使用的代码。
@return 返回字段类型，如 ReportColumn.TYPE_TEXT 等


class_name: kd.bos.entity.report.ReportColumn
method_name: initNumberFormatProvider
param_types_key: DynamicObjectCollection,List
comment: 被金额和数量引用的币别和计量单位精度取值 @param `datas` @param `columns`
signature_text:
public static NumberFormatProvider initNumberFormatProvider(DynamicObjectCollection datas, java.util.List<ReportColumn > columns)


class_name: kd.bos.entity.report.ReportQueryParam
method_name: setReportFilterFieldConfig
param_types_key: ReportFilterFieldConfig
comment: 设置报表过滤条件配置 @param `reportFilterFieldConfig` 过滤配置
signature_text:
public void setReportFilterFieldConfig(kd.bos.entity.report.queryds.ReportFilterFieldConfig reportFilterFieldConfig)


class_name: kd.bos.entity.report.ReportTaskParam
method_name: getDataSource
param_types_key: ReportQueryParam,Object
comment: 获取数据源配置json @param `queryParam` 查询参数 @param `selectedObj` 数据包
signature_text:
public kd.bos.entity.report.ds.DataSource getDataSource(ReportQueryParam queryParam, Object selectedObj)


class_name: kd.bos.entity.Tips
method_name: <init>
param_types_key: String,LocaleString,LocaleString,boolean,List
signature_text:
public Tips(String type, LocaleString title, LocaleString content, boolean link, java.util.List<java.util.Map<String, Object>> linkData)

comment:
构造函数
@param `type` 显示类型
@param `title` 纯文本title
@param `content` 纯文本内容
@param `link` 是否包含链接
@param `linkData` 链接数据项


class_name: kd.bos.entity.Tips
method_name: createLinkData
param_types_key: List
comment: 创建一个链接数据对象 @param `tipsLink`
signature_text:
public static java.util.List<java.util.Map<String, Object>> createLinkData(java.util.List<TipsLink> tipsLink)


class_name: kd.bos.entity.tree.TreeMenuNode
method_name: <init>
param_types_key: String,String,String,String,String
signature_text: public TreeMenuNode(String parentId, String id, String text, String iconUrl, String activedIconUrl)
comment:
构造带图标的节点
@param `parentId` 父节点标识
@param `id` 本节点标识
@param `text` 显示内容
@param `iconUrl` 图标
@param `activedIconUrl` 聚焦时的图标


class_name: kd.bos.entity.tree.TreeNode
method_name: Parse
param_types_key: String,Map,String,String,String
signature_text:
public static TreeNode Parse(String rootParentId, java.util.Map<String, Object> map, String idKey, String textKey, String itemsKey)

comment:
Map 转 TreeNode
@param `rootParentId` 父节点标识
@param `map` 传入节点数据包，用Key-Value存储节点的属性值
@param `idKey` 传入的节点数据包中，存储节点标识属性的Key值
@param `textKey` 节点数据包中，存储节点显示内容属性的Key值
@param `itemsKey` 节点数据包中，存储节点子节点的Key值
@return 返回转换成功的节点


class_name: kd.bos.entity.tree.TreeNode
method_name: <init>
param_types_key: String,String,String,boolean
signature_text: public TreeNode(String parentId, String id, String text, boolean isParent)
comment:
构造节点
@param `parentId` 父节点标识
@param `id` 本节点标识
@param `text` 节点显示内容
@param `isParent` true-非叶子节点，false-叶子节点


class_name: kd.bos.entity.tree.TreeNode
method_name: <init>
param_types_key: String,String,String,boolean,Object
signature_text: public TreeNode(String parentId, String id, String text, boolean isParent, Object data)
comment:
构造带数据的节点
@param `parentId` 父节点标识
@param `id` 本节点标识
@param `text` 节点显示内容
@param `isParent` true-非叶子节点，false-叶子节点
@param `data` 附加数据


class_name: kd.bos.entity.tree.TreeNode
method_name: getTreeNodeListById
param_types_key: List,String,int
signature_text:
public java.util.List<TreeNode > getTreeNodeListById(java.util.List<TreeNode > treeNodes, String id, int maxLevel)

comment:
递归查找模糊匹配id所有节点
@param `treeNodes` 输出找到的节点集合
@param `id` 节点标识
@param `maxLevel` 最大遍历深度（子节点算第一层）
@return 返回所有找到的节点


class_name: kd.bos.entity.tree.TreeNode
method_name: getTreeNodeListByText
param_types_key: List,String,int
signature_text:
public java.util.List<TreeNode > getTreeNodeListByText(java.util.List<TreeNode > treeNodes, String text, int maxLevel)

comment:
递归查找text所在节点（模糊匹配）
@param `treeNodes` 输出所有匹配的节点
@param `text` 节点显示内容
@param `maxLevel` 最大遍历深度（子节点算第一层）
@return 返回所有模糊匹配的树节点集合


class_name: kd.bos.entity.tree.TreeNode
method_name: getTreeNodeListByText
param_types_key: List,String,Consumer,int
signature_text:
public java.util.List<TreeNode > getTreeNodeListByText(java.util.List<TreeNode > treeNodes, String text, java.util.function.Consumer<TreeNode > childrenLoader, int maxLevel)

comment:
递归查找text所在节点（模糊匹配）
@param `treeNodes` 输出所有匹配的节点
@param `text` 节点显示内容
@param `childrenLoader` 子节点加载实现：在递归时，如果发现子节点未加载，会通知本对象加载子节点
@param `maxLevel` 最大遍历深度（子节点算第一层）
@return 返回所有模糊匹配的树节点集合


class_name: kd.bos.entity.tree.TreeNodePartialVariables
method_name: <init>
param_types_key: String,String,String,Boolean,Boolean,String,List
signature_text:
public TreeNodePartialVariables(String parentId, String id, String text, Boolean disabled, Boolean isOpened, String icon, java.util.List<java.util.Map<String, String>> labelPara)

comment:
构造带数据的节点
@param `parentId` 父节点标识
@param `id` 本节点标识
@param `text` 节点显示内容
@param `disabled` 是否锁定
@param `isOpened` 展开折叠状态
@param `icon` 图标信息
@param `labelPara` 标签信息


class_name: kd.bos.entity.validate.AbstractValidator
method_name: addMessage
param_types_key: ExtendedDataEntity,String,String,ErrorLevel,List
signature_text:
protected void addMessage(ExtendedDataEntity dataEntity, String title, String content, ErrorLevel errorLevel, java.util.List<kd.bos.entity.validate.MsgReplaceHolder> msgReplaceHolders)


class_name: kd.bos.entity.validate.AbstractValidator
method_name: addMessage
param_types_key: ExtendedDataEntity,String,String,ErrorLevel
signature_text:
protected void addMessage(ExtendedDataEntity dataEntity, String title, String content, ErrorLevel errorLevel)

comment:
添加指定错误级别的提示
@param `dataEntity` 数据实体
@param `title` 标题
@param `content` 报错的提示信息
@param `errorLevel` 错误级别


class_name: kd.bos.entity.validate.AbstractValidator
method_name: addMessage
param_types_key: ExtendedDataEntity,String,ErrorLevel,String
comment: 添加指定错误级别的提示 @param `dataEntity` 数据实体 @param `content` 报错的提示信息 @param `errorLevel` 错误级别
signature_text:
protected void addMessage(ExtendedDataEntity dataEntity, String content, ErrorLevel errorLevel, String pattern)


class_name: kd.bos.entity.validate.AbstractValidator
method_name: addMessage
param_types_key: ExtendedDataEntity,String,ErrorLevel,String,List
comment: 添加指定错误级别的提示 @param `dataEntity` 数据实体 @param `content` 报错的提示信息 @param `errorLevel` 错误级别
signature_text:
protected void addMessage(ExtendedDataEntity dataEntity, String content, ErrorLevel errorLevel, String pattern, java.util.List<kd.bos.entity.validate.MsgReplaceHolder> msgReplaceHolders)


class_name: kd.bos.entity.validate.AbstractValidator
method_name: addMessage
param_types_key: ExtendedDataEntity,String,String,ErrorLevel,String,List
signature_text:
protected void addMessage(ExtendedDataEntity dataEntity, String title, String content, ErrorLevel errorLevel, String pattern, java.util.List<kd.bos.entity.validate.MsgReplaceHolder> msgReplaceHolders)

comment:
添加指定错误级别的提示
@param `dataEntity` 数据实体
@param `title` 标题
@param `content` 报错的提示信息
@param `errorLevel` 错误级别


class_name: kd.bos.entity.validate.AbstractValidator
method_name: addMessage2
param_types_key: ExtendedDataEntity,String,ErrorLevel,List
comment: 添加指定错误级别的提示 @param `dataEntity` 数据实体 @param `content` 报错的提示信息 @param `errorLevel` 错误级别
signature_text:
public void addMessage2(ExtendedDataEntity dataEntity, String content, ErrorLevel errorLevel, java.util.List<kd.bos.entity.validate.MsgReplaceHolder> msgReplaceHolders)


class_name: kd.bos.entity.validate.RequiredValidator
method_name: <init>
param_types_key: DynamicProperty,String,String,IValueComparator
signature_text:
public RequiredValidator(DynamicProperty vProperty, String fieldKey, String fieldName, kd.bos.entity.validate.IValueComparator valueComparator)

comment:
构造函数
@param `vProperty` 要校验的字段属性
@param `fieldKey` 字段标识
@param `fieldName` 名称
@param `valueComparator` 数据比较器


class_name: kd.bos.entity.validate.ValidateContext
method_name: <init>
param_types_key: List,String,String,ExtendedDataEntitySet
signature_text:
public ValidateContext(java.util.List<java.util.Map<String, Object>> validationMeta, String entityNumber, String operateKey, ExtendedDataEntitySet extendedDataEntitySet)

comment:
构造方法
@param `validationMeta` 校验元数据相关信息
@param `entityNumber` 实体编码
@param `extendedDataEntitySet` 拉平的数据信息，供自定义校验器使用
@param `operateKey` 操作标识


class_name: kd.bos.entity.validate.ValidateResult
method_name: setFeedbackCusOpData
param_types_key: Map
signature_text: public void setFeedbackCusOpData(java.util.Map<String, String> feedbackCusOpData)
comment:
设置自定操作结果反馈信息， 在操作结果中返回 kd.bos.entity.operate.result.OperationResult#getCustomData()
@param `feedbackCusOpData`


class_name: kd.bos.entity.validate.ValidationErrorInfo
method_name: <init>
param_types_key: String,ExtendedDataEntity,String,String,String,ErrorLevel
signature_text:
public ValidationErrorInfo(String displayToFieldKey, ExtendedDataEntity dataEntity, String errCode, String title, String message, ErrorLevel level)

comment:
初始化 ValidationErrorInfo 实例
@param `displayToFieldKey`
@param `dataEntity`
@param `errCode`
@param `title`
@param `message`
@param `level`


class_name: kd.bos.entity.validate.ValidationErrorInfo
method_name: <init>
param_types_key: String,Object,int,int,String,String,String,ErrorLevel,String,List
signature_text:
public ValidationErrorInfo(String displayToFieldKey, Object pkId, int dataEntityIndex, int rowIndex, String errCode, String title, String message, ErrorLevel level, String pattern, java.util.List<kd.bos.entity.validate.MsgReplaceHolder> msgReplaceHolders)

comment:
初始化 ValidationErrorInfo 实例
@param `displayToFieldKey` 此错误信息将显示到哪个属性上。此属性并不是总是和实际的结果一致，例如某个校验器校验出多个错误，而这些错误可能分布在不同的字段上，而不是一个字段上
@param `pkId` 主键id
@param `dataEntityIndex` 帮助定位此错误信息的位置，此参数描述了批量校验时发生错误的实体索引
@param `rowIndex` 帮助定位此错误信息的位置，此参数描述了如果错误存在与明细，他在第几行
@param `errCode` 此错误的类型编号
@param `title` 标题
@param `message` 此错误的文本信息
@param `level` 此条目的错误级别
@param `pattern` 提示语格式


class_name: kd.bos.entity.validate.ValidationErrorInfo
method_name: <init>
param_types_key: String,Object,int,int,String,String,String,ErrorLevel,String
signature_text:
public ValidationErrorInfo(String displayToFieldKey, Object pkId, int dataEntityIndex, int rowIndex, String errCode, String title, String message, ErrorLevel level, String pattern)

comment:
初始化 ValidationErrorInfo 实例
@param `displayToFieldKey` 此错误信息将显示到哪个属性上。此属性并不是总是和实际的结果一致，例如某个校验器校验出多个错误，而这些错误可能分布在不同的字段上，而不是一个字段上
@param `pkId` 主键id
@param `dataEntityIndex` 帮助定位此错误信息的位置，此参数描述了批量校验时发生错误的实体索引
@param `rowIndex` 帮助定位此错误信息的位置，此参数描述了如果错误存在与明细，他在第几行
@param `errCode` 此错误的类型编号
@param `title` 标题
@param `message` 此错误的文本信息
@param `level` 此条目的错误级别
@param `pattern` 提示语格式


class_name: kd.bos.entity.validate.ValidationErrorInfo
method_name: <init>
param_types_key: String,Object,int,int,String,String,String,ErrorLevel
signature_text:
public ValidationErrorInfo(String displayToFieldKey, Object pkId, int dataEntityIndex, int rowIndex, String errCode, String title, String message, ErrorLevel level)

comment:
初始化 ValidationErrorInfo 实例
@param `displayToFieldKey` 此错误信息将显示到哪个属性上。此属性并不是总是和实际的结果一致，例如某个校验器校验出多个错误，而这些错误可能分布在不同的字段上，而不是一个字段上
@param `pkId` ` pkid
@param `dataEntityIndex` 帮助定位此错误信息的位置，此参数描述了批量校验时发生错误的实体索引
@param `rowIndex` 帮助定位此错误信息的位置，此参数描述了如果错误存在与明细，他在第几行
@param `errCode` 此错误的类型编号
@param `message` 此错误的文本信息
@param `title` 标题
@param `level` 此条目的错误级别


class_name: kd.bos.entity.validate.ValidationErrorInfo
method_name: <init>
param_types_key: String,Object,int,int,String,String,String,ErrorLevel,List
signature_text:
public ValidationErrorInfo(String displayToFieldKey, Object pkId, int dataEntityIndex, int rowIndex, String errCode, String title, String message, ErrorLevel level, java.util.List<kd.bos.entity.validate.MsgReplaceHolder> msgReplaceHolders)

comment:
初始化 ValidationErrorInfo 实例
@param `displayToFieldKey` 此错误信息将显示到哪个属性上。此属性并不是总是和实际的结果一致，例如某个校验器校验出多个错误，而这些错误可能分布在不同的字段上，而不是一个字段上
@param `pkId` ` pkid
@param `dataEntityIndex` 帮助定位此错误信息的位置，此参数描述了批量校验时发生错误的实体索引
@param `rowIndex` 帮助定位此错误信息的位置，此参数描述了如果错误存在与明细，他在第几行
@param `errCode` 此错误的类型编号
@param `message` 此错误的文本信息
@param `title` 标题
@param `level` 此条目的错误级别
@param `msgReplaceHolders` 占位符文案索引信息


class_name: kd.bos.entity.ValueMapItem
method_name: <init>
param_types_key: String,String,LocaleString,boolean
signature_text: public ValueMapItem(String imageKey, String value, LocaleString name, boolean itemVisible)
comment:
构造函数
@param `imageKey` ` 下拉项标识
@param `value` ` 下拉项值
@param `name` ` 下拉项名称
@param `itemVisible` ` 下拉项选项可见性


class_name: kd.bos.event.ReportQueryExtEvent
method_name: <init>
param_types_key: MainEntityType,ReportQueryParam,List,DataSet
signature_text:
public ReportQueryExtEvent(MainEntityType entityType, ReportQueryParam reportQueryParam, java.util.List<AbstractReportColumn> columns, DataSet dataSet)

comment:
构造函数 初始化报表查询扩展事件对象
@param `entityType` 标识报表查询对应的实体
@param `reportQueryParam` 报表查询参数，包含查询条件和参数信息
@param `columns` 报表列集合，包含所有列信息
@param `dataSet` 数据集，报表查询结果的数据集合


class_name: kd.bos.exception.ErrorCode
method_name: of
param_types_key: String,String,String,String,boolean
signature_text: of(String errorCode, String project, String key, String desc, boolean staticResource)
comment:
仅支持bos资源进行多语言处理，适用于已有的静态ErrorCode多语言改造，其他场景请传入当前语言的desc构建ErrorCode ErrorCode(String errorCode, String message)


class_name: kd.bos.extplugin.PluginProxy
method_name: create
param_types_key: Object,Class,String,PluginFilter,PluginProvider
comment: 创建插件代理
signature_text:
create(P defaultPlugin, Class<P> pluginCls, String caseName, PluginFilter filter, PluginProvider plugInProvide)


class_name: kd.bos.extplugin.PluginProxy
method_name: createByKingScriptDeclared
param_types_key: String,Supplier
comment: 创建KingScript声明的接口的插件代理
signature_text:
createByKingScriptDeclared(String caseName, java.util.function.Supplier<KingScriptEngine> engineSupplier)


class_name: kd.bos.fileservice.FileService
method_name: download
param_types_key: String,Map,Map
comment: 文件下载
signature_text:
download(String path, java.util.Map<String, String> header, java.util.Map<String, String> resHeader)


class_name: kd.bos.filestorage.spi.FileStorageConfig
method_name: <init>
param_types_key: String,String,String,String,String,int,int,boolean,String
comment: 构造方法
signature_text:
FileStorageConfig(String fileServerHttpUrl, String authUserName, String authPassword, String container, String authType, int uploadTimeout, int maxUploadSize, boolean previewCacheEnable, String previewUrl)


class_name: kd.bos.filestorage.spi.FileStorageService
method_name: upload
param_types_key: InputStream,String,String,boolean,Map
comment: 文件上传核心方法
signature_text:
upload(java.io.InputStream inputStream, String path, String fileName, boolean isCreateNewFileWhenExists, java.util.Map<String, String> headers)


class_name: kd.bos.filter.AbstractFilterGridView
method_name: setSetFilterListeners
param_types_key: List
comment: 设置设置过滤监听 @param `setFilterListeners` 设置过滤监听
signature_text:
public void setSetFilterListeners(java.util.List<java.util.function.Consumer<SetFilterEvent>> setFilterListeners)


class_name: kd.bos.filter.CommonCheckBoxGroupFilterColumn
method_name: addConstant
param_types_key: List
comment: addConstant @param `clientItems`
signature_text:
protected void addConstant(java.util.List<java.util.Map<String, Object>> clientItems) throws UnsupportedOperationException


class_name: kd.bos.filter.CommonCheckBoxGroupFilterColumn
method_name: fireAfterCreateColumn
param_types_key: List,Map
signature_text:
protected void fireAfterCreateColumn(java.util.List<java.util.Map<String, Object>> clientItems, java.util.Map<String, Object> map)


class_name: kd.bos.filter.CommonCheckBoxGroupFilterColumn
method_name: getFilterValues
param_types_key: Map
signature_text:
protected java.util.List<java.util.Map<String, java.util.List<Object>>> getFilterValues(java.util.Map<String, java.util.List<Object>> value)


class_name: kd.bos.filter.CommonFilterColumn
method_name: createBaseDataComboItems
param_types_key: List,String,String,DynamicObjectCollection
signature_text:
protected java.util.List<String> createBaseDataComboItems(java.util.List<ComboItem> dataItems, String pkField, String nameField, DynamicObjectCollection dynamicObjectCollection)

comment:
创建基础资料过滤项
@param `dataItems` 过滤项集合
@param `pkField` 主键字段标识
@param `nameField` 过滤项显示名称
@param `dynamicObjectCollection` 动态对象集合
@return 过滤项主键


class_name: kd.bos.filter.CommonFilterColumn
method_name: createQueryBaseDataParameter
param_types_key: IBasedataField,BasedataEntityType,String,String,List
signature_text:
protected QueryBaseDataParameter createQueryBaseDataParameter(IBasedataField basedataProp, BasedataEntityType dt, String nameField, String inSelectFields, java.util.List<QFilter> inQfilters)

comment:
获取基础资料查询参数
@param `basedataProp` 基础资料字段
@param `dt` 基础资料实体对象
@param `nameField` 名称
@param `inSelectFields` 查询字段
@param `inQfilters` 过滤条件
@return 基础资料查询参数


class_name: kd.bos.filter.CommonFilterColumn
method_name: getAddtionalItems
param_types_key: QueryBaseDataParameter,String,int,List,String
signature_text:
protected java.util.List<ComboItem> getAddtionalItems(QueryBaseDataParameter parameterObject, String pkField, int pkDbType, java.util.List<String> pkList, String nameField)

comment:
获取常用过滤基础资料下拉项，默认只取20条，超过20条单独加载
@param `parameterObject` 基础资料查询参数
@param `pkField` 主键字段标识
@param `pkDbType` 主键字段类型，如Types.VARCHAR、Types.NVARCHAR等
@param `pkList` 主键集合
@param `nameField` 名称字段
@return 下拉项数据集合


class_name: kd.bos.filter.DependField
method_name: <init>
param_types_key: String,String,String
signature_text: public DependField(String fieldName, String dependFieldName, String joinPropertyName)
comment:
构造函数
@param `fieldName` ` 依赖字段名
@param `dependFieldName` ` 被依赖字段名
@param `joinPropertyName` ` 被依赖字段与依赖字段的关系字段，一般在被依赖字段上


class_name: kd.bos.filter.FilterColumn
method_name: createQueryBaseDataParameter
param_types_key: IBasedataField,BasedataEntityType,String,String,List
signature_text:
protected QueryBaseDataParameter createQueryBaseDataParameter(IBasedataField basedataProp, BasedataEntityType dt, String nameField, String inSelectFields, java.util.List<QFilter> inQfilters)

comment:
获取基础资料查询条件（实体，查询字段，过滤条件，排序）
@param `basedataProp` 基础资料实体属性
@param `dt` 基础资料实体类型
@param `nameField` 名称
@param `inSelectFields` 查询字段
@param `inQfilters` 过滤条件
@return 基础资料查询条件


class_name: kd.bos.filter.FilterColumn
method_name: queryBaseDataCollections
param_types_key: IBasedataField,BasedataEntityType,QueryBaseDataParameter,int
signature_text:
protected DynamicObjectCollection queryBaseDataCollections(IBasedataField basedataProp, BasedataEntityType dt, QueryBaseDataParameter parameterObject, int topSize)

comment:
查询基础资料数据
@param `basedataProp` 基础资料实体属性
@param `dt` 基础资料实体类型
@param `parameterObject` 查询参数
@param `topSize` 查询前多少条数据
@return 基础资料数据集合


class_name: kd.bos.filter.FilterContainer
method_name: addSetFilterContainerBaseDataSearchClosedListener
param_types_key: SetFilterContainerBaseDataSearchClosedListener
comment: 添加关闭常用过滤基础资料模糊查询事件 @param `listener` ` 关闭常用过滤基础资料模糊查询事件
signature_text:
public void addSetFilterContainerBaseDataSearchClosedListener(SetFilterContainerBaseDataSearchClosedListener listener)


class_name: kd.bos.filter.FilterContainer
method_name: getSchemeBaseDataItems
param_types_key: String,String,String,List
signature_text:
public void getSchemeBaseDataItems(String entityId, String fieldName, String searchKey, java.util.List<Object> filters)

comment:
方案过滤字段基础资料模糊查询接口
@param `entityId` 实体标识
@param `fieldName` 字段标识
@param `searchKey` 搜索内容
@param `filters` 过滤条件


class_name: kd.bos.filter.FilterContainer
method_name: schemeSearch
param_types_key: List,List,String
comment: 方案过滤查询 @param `fastFilter` 快速过滤条件 @param `filter` 过滤条件 @param `entryEntity` 单据实体
signature_text:
public void schemeSearch(java.util.List<java.util.Map<String, java.util.List<Object>>> fastFilter, java.util.List<java.util.Map<String, java.util.List<Object>>> filter, String entryEntity)


class_name: kd.bos.filter.FilterContainer
method_name: schemeSearch
param_types_key: List,List,String,List
signature_text:
public void schemeSearch(java.util.List<java.util.Map<String, java.util.List<Object>>> fastFilter, java.util.List<java.util.Map<String, java.util.List<Object>>> filter, String entryEntity, java.util.List<java.util.Map<String, java.util.List<Object>>> andFilter)

comment:
方案过滤查询
@param `fastFilter` 快速过滤条件
@param `filter` 过滤条件
@param `andFilter` 二次过滤条件
@param `entryEntity` 单据实体


class_name: kd.bos.filter.FilterContainerFilterValues
method_name: <init>
param_types_key: FilterKeyValueCollections,FilterKeyValueCollections
comment: 构造函数 @param `fastFilterValues` ` 快速过滤字段值 @param `otherFilterValues` ` 常用/方案字段默认值
signature_text:
public FilterContainerFilterValues(FilterKeyValueCollections fastFilterValues, FilterKeyValueCollections otherFilterValues)


class_name: kd.bos.filter.FilterContainerFilterValues
method_name: <init>
param_types_key: List,String,List,String
signature_text:
public FilterContainerFilterValues(java.util.List<java.util.Map<String, java.util.List<Object>>> fastFilter, String filterKey, java.util.List<java.util.Map<String, java.util.List<Object>>> filter, String entryEntity)

comment:
构造函数
@param `fastFilter` ` 快速过滤字段值
@param `filterKey` ` common/scheme 固定值
@param `filter` ` 常用/方案字段默认值
@param `entryEntity` ` 查询实体范围


class_name: kd.bos.filter.FilterContainerFilterValues
method_name: createMapFilterValues
comment: 创建过滤集合
signature_text:
public java.util.Map<String, java.util.List<java.util.Map<String, java.util.List<Object>>>> createMapFilterValues()


class_name: kd.bos.filter.FilterGridView
method_name: getCommonFilters
param_types_key: Set,Map
comment: 获取常用过滤条件 @param `commonFilterColumns` 常用过滤字段 @param `controlFilters` 过滤条件字典 @return 常用过滤条件
signature_text:
protected java.util.Map<String, java.util.List<Object>> getCommonFilters(java.util.Set<FilterColumn> commonFilterColumns, java.util.Map<String, ControlFilter> controlFilters)


class_name: kd.bos.filter.FilterGridView
method_name: setDefaultHiddenFields
param_types_key: List
comment: 设置初始字段 @param `defaultHiddenFields`
signature_text:
public void setDefaultHiddenFields(java.util.List<kd.bos.filter.DefaultHiddenField> defaultHiddenFields)


class_name: kd.bos.filter.FilterGridView
method_name: setSelectedCommomFilterFieldValues
param_types_key: List
comment: 设置当前选中字段值 @param `selectedCommomFilterFieldValues`
signature_text:
protected void setSelectedCommomFilterFieldValues(java.util.List<Object> selectedCommomFilterFieldValues)


class_name: kd.bos.filter.FilterModel
method_name: getCommonFilterParameter
param_types_key: List
signature_text:
public FilterParameter getCommonFilterParameter(java.util.List<java.util.Map<String, java.util.List<Object>>> commonFilterList)


class_name: kd.bos.filter.FilterModel
method_name: getFastFilterParameter
param_types_key: List
signature_text:
public FilterParameter getFastFilterParameter(java.util.List<java.util.Map<String, java.util.List<Object>>> fastFilterList)


class_name: kd.bos.filter.FilterModel
method_name: getOrderByFilterParameter
param_types_key: List
signature_text:
public OrderByParameter getOrderByFilterParameter(java.util.List<java.util.Map<String, java.util.List<Object>>> orderByFilterList)


class_name: kd.bos.filter.FilterModel
method_name: getSchemeFilterParameter
param_types_key: List
signature_text:
public FilterParameter getSchemeFilterParameter(java.util.List<java.util.Map<String, java.util.List<Object>>> schemeFilterList)


class_name: kd.bos.filter.FilterModel
method_name: getSchemeFilterParameter
param_types_key: List,List
signature_text:
public FilterParameter getSchemeFilterParameter(java.util.List<java.util.Map<String, java.util.List<Object>>> schemeFilterList, java.util.List<java.util.Map<String, java.util.List<Object>>> andFilter)


class_name: kd.bos.filter.FilterModel
method_name: getShareSchemeByIdList
param_types_key: List,Long
signature_text:
public java.util.Map<String, String> getShareSchemeByIdList(java.util.List<String> schemeIdList, Long userId)


class_name: kd.bos.filter.FilterModel
method_name: getShareSchemeMap
param_types_key: long,List
signature_text:
public java.util.Map<String, Integer> getShareSchemeMap(long userId, java.util.List<String> schemeIdList)


class_name: kd.bos.filter.FilterModel
method_name: setFieldCompareTypeMap
param_types_key: Map
signature_text:
public void setFieldCompareTypeMap(java.util.Map<String, java.util.List<CompareType>> fieldCompareTypeMap)


class_name: kd.bos.filter.FilterSchemeService
method_name: createSchemeMap
param_types_key: FilterScheme,boolean,SchemeCodeType
signature_text:
public static java.util.Map<String, Object> createSchemeMap(FilterScheme filterScheme, boolean isSimple, kd.bos.filter.SchemeCodeType schemeCodeType)

comment:
创建过滤方案字典
@param `filterScheme` 过滤方案
@param `isSimple` 是否简单
@param `schemeCodeType` 过滤方案类型
@return 过滤方案字典


class_name: kd.bos.filter.helper.BaseDataSearchHelper
method_name: assembleData
param_types_key: List,int,int,DynamicObjectCollection,Map
signature_text:
public static java.util.List<Object> assembleData(java.util.List<String> showFields, int start, int limit, DynamicObjectCollection queryCollection, java.util.Map<String, Integer> fieldsIndexMap)

comment:
组装基础资料模糊查询需要的数据，数据根据显示字段的索引用数组进行返回
@param `showFields`
@param `start`
@param `limit`
@param `queryCollection`
@param `fieldsIndexMap`


class_name: kd.bos.filter.helper.BaseDataSearchHelper
method_name: assembleDataDistinct
param_types_key: List,int,int,DynamicObjectCollection,Map,Set
signature_text:
public static java.util.List<Object> assembleDataDistinct(java.util.List<String> showFields, int start, int limit, DynamicObjectCollection queryCollection, java.util.Map<String, Integer> fieldsIndexMap, java.util.Set<String> distinctFields)

comment:
根据当前数据包组装基础资料模糊查询需要的数据并根据去重字段去重，数据根据显示字段的索引用数组进行返回
@param `showFields` 显示字段
@param `start` 初始查询位置
@param `limit` 查询条数
@param `queryCollection` 当前数据包
@param `fieldsIndexMap`
@param `distinctFields` 去重字段


class_name: kd.bos.filter.helper.BaseDataSearchHelper
method_name: getFieldsIndexMap
param_types_key: BasedataEntityType,List
comment: 根据实体获取显示字段对于的索引信息 @param `basedataEntityType` @param `showFields`
signature_text:
public static java.util.Map<String, Integer> getFieldsIndexMap(BasedataEntityType basedataEntityType, java.util.List<String> showFields)


class_name: kd.bos.filter.helper.BaseDataSearchHelper
method_name: getSearchFilter
param_types_key: String,List,String
comment: 通过查询内容，查询字段和实体构造查询qfilter @param `searchKey` @param `searchFields` @param `entityName`
signature_text:
public static QFilter getSearchFilter(String searchKey, java.util.List<String> searchFields, String entityName)


class_name: kd.bos.filter.helper.QueryLookUpdataParameter
method_name: <init>
param_types_key: BasedataEntityType,List,List,String,int,int,Map
signature_text:
public QueryLookUpdataParameter(BasedataEntityType dt, java.util.List<String> searchFields, java.util.List<String> showFields, String fullSearchKey, int start, int limit, java.util.Map<String, Integer> fieldsIndexMap)

comment:
构造函数
@param `dt` ` 实体
@param `searchFields` ` 搜索字段
@param `showFields` ` 显示字段
@param `fullSearchKey` ` 搜索内容
@param `start` ` 起始行
@param `limit` ` 结束行
@param `fieldsIndexMap` ` 字段索引


class_name: kd.bos.filter.mcontrol.MobFilterSort
method_name: f7Click
param_types_key: String,boolean,List,List
comment: 常用过滤 F7点击处理
signature_text:
public void f7Click(String fieldName, boolean isMulti, java.util.List<String> selectedIds, java.util.List<Object> filter)


class_name: kd.bos.filter.mcontrol.MobFilterSort
method_name: search
param_types_key: List,List,String
comment: 查询 @param `filter` 过滤条件 @param `sortFilter` 排序条件 @param `entryEntity` 单据实体
signature_text:
public void search(java.util.List<java.util.Map<String, java.util.List<Object>>> filter, java.util.List<java.util.Map<String, java.util.List<Object>>> sortFilter, String entryEntity)


class_name: kd.bos.flex.FlexService
method_name: batchSaveFlexData
param_types_key: int,List
comment: 批量保存弹性域数据 @param `flexTypeId` @param `flexEntireDatas`
signature_text:
public static java.util.List<Long> batchSaveFlexData(int flexTypeId, java.util.List<FlexEntireData> flexEntireDatas)


class_name: kd.bos.flex.FlexService
method_name: getBaseUseFlexProperties
param_types_key: String,Object,String
signature_text:
public static java.util.List<Long> getBaseUseFlexProperties(String entityNumber, Object basePKVal, String flexPropertyKey)

comment:
根据基础资料值获取启用的弹性域属性
@param `entityNumber` ` 基础资料实体标识
@param `basePKVal` ` 基础资料值
@param `flexPropertyKey` ` 基础资料上的弹性域属性标识


class_name: kd.bos.flex.FlexService
method_name: getBaseUseFlexProperties
param_types_key: String,String,Object[]
signature_text:
public static java.util.Map<Object, java.util.List<Long>> getBaseUseFlexProperties(String entityNumber, String flexPropertyKey, Object[] basePKVals)

comment:
根据基础资料值获取启用的弹性域属性
@param `entityNumber` 基础资料实体标识
@param `flexPropertyKey` 基础资料上的弹性域属性标识
@param `basePKVals` 基础资料值


class_name: kd.bos.flex.FlexService
method_name: getBaseUseFlexProperties
param_types_key: String,Object,String,boolean
comment: 引入专用，
signature_text:
getBaseUseFlexProperties(String entityNumber, Object basePKVal, String flexPropertyKey, boolean fromDB)


class_name: kd.bos.form.BindingContext
method_name: <init>
param_types_key: IDataEntityType,DynamicObject,int,BindingContext
signature_text:
public BindingContext(IDataEntityType entityType, DynamicObject dynamicObject, int rowIndex2, BindingContext parentBCtx)

comment:
构造函数
@param `entityType` 单据体实体
@param `dynamicObject` 单据体分录行数据包
@param `rowIndex2` 单据体分录行索引
@param `parentBCtx` 父控件的绑定上下文对象：在绑定单据体分录行字段值时，把单据体的绑定上下文对象传入


class_name: kd.bos.form.BindingContext
method_name: <init>
param_types_key: IDataEntityType,DynamicObject,int,BindingContext,FlexValueFormatter
signature_text:
public BindingContext(IDataEntityType entityType, DynamicObject dynamicObject, int rowIndex2, BindingContext parentBCtx, FlexValueFormatter flexValueFormatter)

comment:
构造函数
@param `entityType` 单据体实体
@param `dynamicObject` 单据体分录行数据包
@param `rowIndex2` 单据体分录行索引
@param `parentBCtx` 父控件的绑定上下文对象：在绑定单据体分录行字段值时，把单据体的绑定上下文对象传入
@param `flexValueFormatter` 分录弹性域字段预加载处理


class_name: kd.bos.form.cardentry.CardEntry
method_name: itemClick
param_types_key: String,String
signature_text: public void itemClick(String itemKey, String operationKey)
comment:
操作列点击时，触发此事件 插件通过捕获kd.bos.form.control.events.ItemClickListener相关事件 在beforeItemClick（执行操作前）、itemClick编写业务逻辑，也可以取消继续执行操作
@param `itemKey` 控件标识
@param `operationKey` 操作标识


class_name: kd.bos.form.cardentry.CardEntry
method_name: selectRows
param_types_key: int[],int,boolean
signature_text: protected void selectRows(int[] rowIndex, int focusRowIndex, boolean forceRefocus)
comment:
选择行，可设置选择行和焦点行，及是否强制触发焦点行改变事件
@param `rowIndex` 选择行号
@param `focusRowIndex` 焦点行号
@param `forceRefocus` 是否强制刷新子单据体数据


class_name: kd.bos.form.cardentry.CardEntry
method_name: setChildEnable
param_types_key: boolean,int,String[]
signature_text: public void setChildEnable(boolean value, int rowIndex, String[] ctlKeys)
comment:
动态设置卡片分录控件锁定性
@param `value` 锁定性值：true或false
@param `rowIndex` 卡片分录行，从0开始
@param `ctlKeys` 卡片容器内控件的key


class_name: kd.bos.form.cardentry.CardEntry
method_name: setChildVisible
param_types_key: boolean,int,String[]
signature_text: public void setChildVisible(boolean value, int rowIndex, String[] ctlKeys)
comment:
动态设置卡片分录控件可见性
@param `value` 可见性值 true或false
@param `rowIndex` 卡片分录行，从0开始
@param `ctlKeys` 卡片容器内控件的key


class_name: kd.bos.form.chart.BaseGraphicType
method_name: getLeft
signature_text: public float getLeft()
comment:
获取与父元素左边的距离 描述怎么根据父元素进行定位 『父元素』是指：如果是顶层元素，父元素是 echarts 图表容器。如果是 group 的子元素，父元素就是 group 元素
@return 与父元素左边的距离


class_name: kd.bos.form.chart.BaseGraphicType
method_name: getTop
signature_text: public float getTop()
comment:
获取与父元素顶部的距离 描述怎么根据父元素进行定位 『父元素』是指：如果是顶层元素，父元素是 echarts 图表容器。如果是 group 的子元素，父元素就是 group 元素
@return 与父元素顶部的距离


class_name: kd.bos.form.chart.BaseGraphicType
method_name: getType
signature_text: public String getType()
comment:
获取图形元素类型值 包括：image, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group
@return 图形元素类型值


class_name: kd.bos.form.chart.BaseGraphicType
method_name: setType
param_types_key: String
signature_text: public void setType(String type)
comment:
设置图形元素类型值
@param `type` 包括：image, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group


class_name: kd.bos.form.chart.Chart
method_name: addClickListener
param_types_key: ClickListener
signature_text: public void addClickListener(kd.bos.form.control.events.ClickListener listener)
comment:
(non-Javadoc)
@see kd.bos.form.control.events.ISuportClick#addClickListener(kd.bos.form.control.events.ClickListener)


class_name: kd.bos.form.chart.Chart
method_name: addItemClickListener
param_types_key: ItemClickListener
signature_text: public void addItemClickListener(kd.bos.form.control.events.ItemClickListener listener)
comment:
(non-Javadoc)
@see kd.bos.form.control.events.ISuportClick#addItemClickListener(kd.bos.form.control.events.ItemClickListener)


class_name: kd.bos.form.chart.Label
method_name: getAlign
signature_text: public String getAlign()
comment:
获取文字水平对齐方式，默认自动。 可选： 'left' 'center' 'right' rich 中如果没有设置 align，则会取父层级的 align。例如： { align: right, rich: { a: { // 没有设置 `align`，则 `align` 为 right } } }
@return 文字水平对齐方式


class_name: kd.bos.form.chart.Label
method_name: getBackgroundColor
signature_text: public String getBackgroundColor()
comment:
获取文字块背景色。 可以是直接的颜色值，例如：'#123234', 'red', rgba(0,23,11,0.3)'。 可以支持使用图片，例如： backgroundColor: { image: 'xxx/xxx.png' // 这里可以是图片的 URL， // 或者图片的 dataURI， // 或者 HTMLImageElement 对象， // 或者 HTMLCanvasElement 对象。 } 当使用图片的时候，可以使用 width 或 height 指定高宽，也可以不指定自适应。 如果设置为 'auto'，则为视觉映射得到的颜色，如系列色。
@return 文字块背景色


class_name: kd.bos.form.chart.Label
method_name: getFontFamily
signature_text: public String getFontFamily()
comment:
获取文字的字体系列 还可以是 'serif' , 'monospace', 'Arial', 'Courier New', 'Microsoft YaHei', ...
@return 文字的字体系列


class_name: kd.bos.form.chart.Label
method_name: getFormatter
signature_text: public String getFormatter()
comment:
获取标签内容格式器，支持字符串模板和回调函数两种形式，字符串模板与回调函数返回的字符串均支持用 \n 换行。 字符串模板 模板变量有： {a}：系列名。 {b}：数据名。 {c}：数据值。 `@xxx `：数据中名为'xxx'的维度的值，如 `@product `表示名为'product'` 的维度的值。 `@[n] `：数据中维度n的值，如`@[3] `` 表示维度 3 的值，从 0 开始计数。 示例： formatter: '{b}: `@score `'
@return 标签内容格式器


class_name: kd.bos.form.chart.Label
method_name: getLineHeight
signature_text: public String getLineHeight()
comment:
获取行高。 rich 中如果没有设置 lineHeight，则会取父层级的 lineHeight。例如： { lineHeight: 56, rich: { a: { // 没有设置 `lineHeight`，则 `lineHeight` 为 56 } } }
@return 行高


class_name: kd.bos.form.chart.Label
method_name: getPadding
signature_text: public String[] getPadding()
comment:
获取文字块的内边距。例如： padding: [3, 4, 5, 6]：表示 [上, 右, 下, 左] 的边距。 padding: 4：表示 padding: [4, 4, 4, 4]。 padding: [3, 4]：表示 padding: [3, 4, 3, 4]。
@return 文字块的内边距


class_name: kd.bos.form.chart.Label
method_name: getVerticalAlign
signature_text: public String getVerticalAlign()
comment:
获取文字垂直对齐方式，默认自动。 可选： 'top' 'middle' 'bottom' rich 中如果没有设置 verticalAlign，则会取父层级的 verticalAlign。例如： { verticalAlign: bottom, rich: { a: { // 没有设置 `verticalAlign`，则 `verticalAlign` 为 bottom } } }
@return 文字垂直对齐方式


class_name: kd.bos.form.chart.LineSeries
method_name: setAreaColor
param_types_key: int,int,int,int,List
comment: 设置区域渐变色 @param `beginX` @param `beginY` @param `endX` @param `endY` @param `items`
signature_text:
public void setAreaColor(int beginX, int beginY, int endX, int endY, java.util.List<GradientItem> items)


class_name: kd.bos.form.chart.radar.RadarAxis
method_name: getCenter
signature_text: public java.util.List<String> getCenter()
comment:
获取雷达图的中心（圆心）坐标，数组的第一项是横坐标，第二项是纵坐标。 支持设置成百分比，设置成百分比时第一项是相对于容器宽度，第二项是相对于容器高度 使用示例： ` // 设置成绝对的像素值 center: [400, 300] // 设置成相对的百分比 center: ['50%', '50%'] </code>`
`
`
`
@return 达图的中心（圆心）坐标


class_name: kd.bos.form.chart.radar.RadarAxis
method_name: getIndicator
signature_text: public java.util.List<RadarIndicator> getIndicator()
comment:
获取雷达图指示器，用来指定雷达图中的多个变量（维度） 如下示例 ` indicator: [ { name: '销售（sales）', max: 6500}, { name: '管理（Administration）', max: 16000, color: 'red'}, // 标签设置为红色 { name: '信息技术（Information Techology）', max: 30000}, { name: '客服（Customer Support）', max: 38000}, { name: '研发（Development）', max: 52000}, { name: '市场（Marketing）', max: 25000} ]</code>`
`
`
`
@return 雷达图指示器


class_name: kd.bos.form.chart.Series
method_name: addData
param_types_key: String,Number,String
signature_text: public void addData(String name, Number value, String color)
comment:
添加数据到数据集中，addData(ItemValue)调用，是不是转成private？
@param `name` 数据key
@param `value` 数据value
@param `color` 图形显示的颜色


class_name: kd.bos.form.ClientActions
method_name: createCellStyle
signature_text: public static ListCellStyleBuilder createCellStyle()
comment:
获取列表单元格风格指令构造类 可使用此类类生成前端控制指令 使用示例：
IClientViewProxyclientViewProxy=this.getView().getService(IClientViewProxy.class);
List<kd.bos.entity.report.CellStyle> cellStyles = newjava.util.ArrayList<>(1);
kd.bos.entity.report.CellStylecellStyle=newkd.bos.entity.report.CellStyle();
cellStyle.setForeColor("#2ab277");
cellStyle.setRow(0);
cellStyle.setFieldKey("billno");
cellStyles.add(cellStyle);
ListCellStyleBuilderactionBuilder= ClientActions.createCellStyle();
actionBuilder.addAll(cellStyles);
actionBuilder.invokeControlMethod(clientViewProxy, "billlistap");
@return 指令构造类


class_name: kd.bos.form.ClientActions
method_name: createControlStyleBuilder
signature_text: public static kd.bos.form.builder.SetControlStyleBuilder createControlStyleBuilder()
comment:
获取控件外观设置指令构造类 可使用指令构造类生成前端控制指令 使用示例：
IClientViewProxyclientViewProxy=this.getView().getService(IClientViewProxy.class);
SetControlStyleBuilderactionBuilder= ClientActions.createControlStyleBuilder();
actionBuilder.setFontSize(12);
actionBuilder.addAction(clientViewProxy, fieldKey);
@return 指令构造类


class_name: kd.bos.form.ClientActions
method_name: createRowStyleBuilder
signature_text: public static kd.bos.form.builder.ListRowStyleBuilder createRowStyleBuilder()
comment:
获取列表行显示指令构造类 可使用此类类生成前端控制指令 使用示例：
IClientViewProxyclientViewProxy=this.getView().getService(IClientViewProxy.class);
ListRowStyleBuilderactionBuilder= ClientActions.createRowStyleBuilder();
actionBuilder.setBackColor("#ffffff");
actionBuilder.setForeColor("#2ab277");
actionBuilder.setFontSize(12);
actionBuilder.buildStyle();
actionBuilder.invokeControlMethod(clientViewProxy, "billlistap");
@return 指令构造类


class_name: kd.bos.form.CloseCallBack
method_name: <init>
param_types_key: String,String
signature_text: public CloseCallBack(String callbackClassName, String actionId)
comment:
构造函数
@param `callbackClassName` 接收回调处理的类名，必须实现ICloseCallBack接口
@param `actionId` 回调标识：由发起者自定义，以便和其他回调来源进行区分


class_name: kd.bos.form.CloseCallBack
method_name: setControlKey
param_types_key: String
signature_text: public void setControlKey(String controlKey)
comment:
设置控件标识 通常打开子页面时会指定由本插件处理回调，或指定回调处理的类名 某些控件（如过滤面板）本身就实现了回调处理接口，能够自行做回调处理，设置回调参数时指定控件标识即可 特别说明：优先以指定的类处理回调，如果没有指定类，则转给指定控件处理回调
@param `controlKey` 控件标识


class_name: kd.bos.form.CloseCallBackWraper
method_name: <init>
param_types_key: String,CloseCallBack,Object,boolean
comment: 构造函数 @param `pageId` 页面id @param `closeCallBack` 界面关闭回调参数 @param `pkId` 主键id @param `isBillView`
signature_text:
public CloseCallBackWraper(String pageId, CloseCallBack closeCallBack, Object pkId, boolean isBillView)


class_name: kd.bos.form.CloseCallBackWraper
method_name: <init>
param_types_key: String,List,Object,boolean
comment: 构造函数
signature_text:
CloseCallBackWraper(String pageId, java.util.List<CloseCallBack> closeCallBacks, Object pkId, boolean isBillView)


class_name: kd.bos.form.ConfirmCallBackListener
method_name: <init>
param_types_key: String,String,MessageCallBackType
comment: 构造函数 @param `callBackId` 回调标识 @param `typeName` 执行回调处理的类名 @param `messageCallBackType` 回调处理类型
signature_text:
public ConfirmCallBackListener(String callBackId, String typeName, kd.bos.form.MessageCallBackType messageCallBackType)


class_name: kd.bos.form.container.Container
method_name: setCollapseFieldsVisible
param_types_key: List,List
comment: 控制容器内折叠摘要字段的显示和隐藏 @param `addFields` 新增加要显示的字段 @param `hideFields` 隐藏的字段
signature_text:
public void setCollapseFieldsVisible(java.util.List<String> addFields, java.util.List<String> hideFields)


class_name: kd.bos.form.container.Tab
method_name: batchCloseTabs
param_types_key: List
signature_text: public void batchCloseTabs(java.util.List<String> tabKeys)
comment:
关闭页签 closeTabs的名称取的不好，只有页签右键关闭其他和全部走closeTabs 页签关闭自身和X掉走的还是各自view的close处理 建议相关监听改为closeAll或者closeBatch更为合适
@param `tabKeys` 关闭的页签keys 字符串以,分隔


class_name: kd.bos.form.container.Wizard
method_name: setWizardStepsOptions
param_types_key: List
signature_text: public void setWizardStepsOptions(java.util.List<kd.bos.form.control.StepsOption> stepsOptions)
comment:
例子： setWizardStepsOptions(stepsOptions);
@param `stepsOptions` [{title: '标题', description: '描述', status: '状态，对应currentStatus的枚举值'}]


class_name: kd.bos.form.control.embedform.EmbedForm
method_name: getRefModelType
signature_text: public String getRefModelType()
comment:
内嵌表单的类型：动态表单(DynamicFormModel)、单据(BillFormModel)、基础资料(BaseFormModel)、查询(QueryListModel)
@return 返回 DynamicFormModel、BillFormModel、BaseFormModel、QueryListModel


class_name: kd.bos.form.control.events.BaseDataColumnDependFieldSetEvent
method_name: addDependField
param_types_key: String,String,String
signature_text: public void addDependField(String fieldName, String dependFieldName, String joinPropertyName)
comment:
获取常用过滤依赖字段
@param `fieldName` 字段名
@param `dependFieldName` 依赖的字段名
@param `joinPropertyName` 基础资料之间的外键关系字段


class_name: kd.bos.form.control.events.BeforeAttachmentRemoveEvent
method_name: <init>
param_types_key: Object,Map
signature_text: public BeforeAttachmentRemoveEvent(Object source, java.util.Map<String, Object> attachemnt)
comment:
Creates a new event.
@param `source` The object on which the Event initially occurred.
@throws `IllegalArgumentException` if source is null.


class_name: kd.bos.form.control.events.BeforeAttachmentUploadEvent
method_name: <init>
param_types_key: Object,List
signature_text:
public BeforeAttachmentUploadEvent(Object source, java.util.List<java.util.Map<String, Object>> sourceAttachments)

comment:
构造函数
@param `source` the object on which the Event initially occurred
@param `sourceAttachments` 原始附件


class_name: kd.bos.form.control.events.BeforeImageUploadEvent
method_name: <init>
param_types_key: Object,List
comment: 图片上传前 @param `source` @param `sourceImages`
signature_text:
public BeforeImageUploadEvent(Object source, java.util.List<java.util.Map<String, Object>> sourceImages)


class_name: kd.bos.form.control.events.FilterContainerInitEvent
method_name: <init>
param_types_key: Object,FastSearchGridView,FilterGridView,SchemeFilterView,List,List,List
signature_text:
public FilterContainerInitEvent(Object source, FastSearchGridView fastSearchGridView, FilterGridView filterGridView, SchemeFilterView schemeFilterView, java.util.List<FilterColumn> fastFilterColumns, java.util.List<FilterColumn> commonFilterColumns, java.util.List<FilterColumn> schemeFilterColumns)

comment:
构造方法：初始化容器过滤条件初始化事件参数
@param `source` 事件源
@param `fastSearchGridView` 快速过滤视图
@param `filterGridView` 常用过滤视图
@param `schemeFilterView` 方案过滤视图
@param `fastFilterColumns` 快速过滤字段
@param `commonFilterColumns` 常用过滤字段
@param `schemeFilterColumns` 方案过滤字段


class_name: kd.bos.form.control.events.MobFilterSortInitEvent
method_name: <init>
param_types_key: Object,List,List
comment: 构造方法：初始化过滤容器初始化事件参数 @param `source` 事件源 @param `filterColumns` 过滤字段列表 @param `sortColumns` 排序字段列表
signature_text:
public MobFilterSortInitEvent(Object source, java.util.List<FilterColumn> filterColumns, java.util.List<MobSortColumn> sortColumns)


class_name: kd.bos.form.control.events.webOffice.WebOfficeDataListener
method_name: onGetBookmarkCheckResult
param_types_key: WebOfficeBookmarkCheckEvent
comment: 获取书签检查结果回调 @param `event`
signature_text:
void onGetBookmarkCheckResult(kd.bos.form.control.events.webOffice.event.WebOfficeBookmarkCheckEvent event)


class_name: kd.bos.form.control.events.webOffice.WebOfficeDataListener
method_name: onGetCustomParam
param_types_key: WebOfficeCustomEvent
comment: 自定义参数回传 @param `event` 事件
signature_text:
default void onGetCustomParam(kd.bos.form.control.events.webOffice.event.WebOfficeCustomEvent event)


class_name: kd.bos.form.control.events.webOffice.WebOfficeDataListener
method_name: onGetDocChangeCheckResult
param_types_key: WebOfficeDocChangeEvent
comment: 获取文档变动检查结果回调 @param `event`
signature_text:
void onGetDocChangeCheckResult(kd.bos.form.control.events.webOffice.event.WebOfficeDocChangeEvent event)


class_name: kd.bos.form.control.events.webOffice.WebOfficeDataListener
method_name: onGetTextByBookmark
param_types_key: WebOfficeBookmarkValueEvent
comment: 按书签获取文本结果回调 @param `event`
signature_text:
void onGetTextByBookmark(kd.bos.form.control.events.webOffice.event.WebOfficeBookmarkValueEvent event)


class_name: kd.bos.form.control.grid.DataGrid
method_name: addBeforeCreateDataGridColumnsListener
param_types_key: BeforeCreateDataGridColumnsListener
comment: 注册构建表格列之前的监听事件 @param `listener`
signature_text:
public void addBeforeCreateDataGridColumnsListener(kd.bos.form.control.grid.events.BeforeCreateDataGridColumnsListener listener)


class_name: kd.bos.form.control.grid.DataGrid
method_name: addSelectRowListener
param_types_key: DataGridSelectRowListener
comment: 注册选择行事件监听器 @param `listener`
signature_text:
public void addSelectRowListener(kd.bos.form.control.grid.events.DataGridSelectRowListener listener)


class_name: kd.bos.form.control.grid.DataGrid
method_name: fireBeforeCreateMobTableColumns
param_types_key: BeforeCreateDataGridColumnsEvent
comment: 触发移动表格控件创建列事件之前的监听器 @param `event`
signature_text:
protected void fireBeforeCreateMobTableColumns(kd.bos.form.control.grid.events.BeforeCreateDataGridColumnsEvent event)


class_name: kd.bos.form.CoreShowFormHelper
method_name: createShowListForm
param_types_key: ListParamCreateOption
comment: 构建列表打开参数 @param `option` 列表打开参数选项
signature_text:
public static ListShowParameter createShowListForm(kd.bos.form.CoreShowFormHelper.ListParamCreateOption option)


class_name: kd.bos.form.events.BeforeCreateListColumnsArgs
method_name: <init>
param_types_key: Object,List,List
comment: 构造函数 @param `source` 事件源 @param `listColumns` 列表字段集合 @param `listGroupColumns` 分组字段集合
signature_text:
public BeforeCreateListColumnsArgs(Object source, java.util.List<IListColumn> listColumns, java.util.List<ListColumnGroup> listGroupColumns)


class_name: kd.bos.form.events.BeforeCreateListColumnsArgs
method_name: addListColumnGroup
param_types_key: ListColumnGroup
signature_text: public void addListColumnGroup(ListColumnGroup listColumnGroup)
comment:
添加分组字段 示例：
ComboListColumncomboListColumn= (ComboListColumn) beforecreatelistcolumnsargs.getListColumn("test");
comboListColumn.setFixed(true);
comboListColumn.setListFieldKey("combofield");
comboListColumn.setCaption(newLocaleString("combo"));
comboListColumn.setParentViewKey("test1");
beforecreatelistcolumnsargs.addListColumn(comboListColumn);
ListColumnGrouplistColumnGroup=newListColumnGroup();
listColumnGroup.setKey("test1");
// listColumnGroup.setParentViewKey("gridview");
listColumnGroup.setName(newLocaleString("test"));
listColumnGroup.getItems().add(comboListColumn);
listColumnGroup.setVisible(11);
beforecreatelistcolumnsargs.addListColumnGroup(listColumnGroup);
@param `listColumnGroup` 列表分组字段


class_name: kd.bos.form.events.BeforeFieldPostBackEvent
method_name: <init>
param_types_key: Object,Object,int,int
signature_text: public BeforeFieldPostBackEvent(Object source, Object value, int rowIndex, int parentRowIndex)
comment:
构造方法：初始化客户端提交字段值到服务端事件参数
@param `source` 事件源
@param `value` 字段值
@param `rowIndex` 实体行号
@param `parentRowIndex` 父实体行号


class_name: kd.bos.form.events.BeforeQueryOfExportEvent
method_name: <init>
param_types_key: Object,String,String,QFilter[]
signature_text:
public BeforeQueryOfExportEvent(Object source, String selectFields, String orderBys, QFilter[] filters)

comment:
构造方法：初始化查询引出数据前事件
@param `source` 事件源
@param `selectFields` 选择的字段
@param `orderBys` 排序规则
@param `filters` 过滤字段


class_name: kd.bos.form.events.BillListHyperLinkClickEvent
method_name: <init>
param_types_key: Object,String,int,ListSelectedRow
signature_text:
public BillListHyperLinkClickEvent(Object source, String fieldName, int rowIndex, ListSelectedRow currentRow)

comment:
构造方法：初始化单据列表单元格链接点击事件参数
@param `source` 事件源
@param `fieldName` 字段名
@param `rowIndex` 行号
@param `currentRow` 当前选中行


class_name: kd.bos.form.events.CustomEventArgs
method_name: <init>
param_types_key: Object,String,String,String
signature_text: public CustomEventArgs(Object source, String key, String eventName, String eventArgs)
comment:
构造方法：初始化自定义事件参数
@param `source` 事件源
@param `key` 自定义事件标识
@param `eventName` 自定义事件名称
@param `eventArgs` 自定义事件参数


class_name: kd.bos.form.events.FilterColumnSetFilterEvent
method_name: <init>
param_types_key: Object,List,String,Map
signature_text:
public FilterColumnSetFilterEvent(Object source, java.util.List<QFilter> qFilters, String ordeyBy, java.util.Map<String, java.util.List<Object>> commonFilters)

comment:
构造方法：初始化绑定数据前事件参数
@param `source` 事件源
@param `qFilters` 过滤条件
@param `ordeyBy` 排序规则
@param `conmmonFilters` 常用过滤字段


class_name: kd.bos.form.events.FilterContainerSearchClickArgs
method_name: getFilterValues
comment: 过滤条件原始值 @return 条件原始值
signature_text:
public java.util.Map<String, java.util.List<java.util.Map<String, java.util.List<Object>>>> getFilterValues()


class_name: kd.bos.form.events.FilterContainerSearchClickArgs
method_name: setCurrentCommonFilter
param_types_key: Map
comment: 设置当前点击的常用过滤条件 @param `currentCommonFilter` 当前点击的常用过滤条件
signature_text:
public void setCurrentCommonFilter(java.util.Map<String, java.util.List<Object>> currentCommonFilter)


class_name: kd.bos.form.events.FilterContainerSearchClickArgs
method_name: setFilterValues
param_types_key: Map
comment: 设置过滤条件原始值 @param `filterValues` 过滤条件原始值
signature_text:
public void setFilterValues(java.util.Map<String, java.util.List<java.util.Map<String, java.util.List<Object>>>> filterValues)


class_name: kd.bos.form.events.HyperLinkClickEvent
method_name: <init>
param_types_key: Object,String,int,DynamicObject,int
signature_text:
HyperLinkClickEvent(Object source, String fieldName, int rowIndex, DynamicObject rowData, int pageIndex)


class_name: kd.bos.form.events.ListColumnCompareTypesSetEvent
method_name: <init>
param_types_key: Object,List,String
signature_text:
public ListColumnCompareTypesSetEvent(Object source, java.util.List<ListColumnCompareType> listColumnCompareTypes, String listFieldKey)

comment:
构造方法：初始化列表表头过滤比较符设置事件参数
@param `source` 事件来源
@param `listColumnCompareTypes` 过滤比较符集合
@param `listFieldKey` 表头映射字段标识


class_name: kd.bos.form.events.ListColumnCompareTypesSetEvent
method_name: <init>
param_types_key: Object,String,List
comment: 构造函数 @param `source` 事件来源 @param `listFieldKey` 表头映射字段标识 @param `comboItems` 下拉列表字段元数据集合
signature_text:
public ListColumnCompareTypesSetEvent(Object source, String listFieldKey, java.util.List<ValueMapItem> comboItems)


class_name: kd.bos.form.events.MessageBoxClosedEvent
method_name: <init>
param_types_key: Object,String,int,String
signature_text:
public MessageBoxClosedEvent(Object source, String callBackId, int resultOption, String customVaule)

comment:
构造方法：初始化提示框关闭事件参数
@param `source` 事件源
@param `callBackId` 执行句柄
@param `resultOption` 提示框选择结果
@param `customVaule` 自定义值


class_name: kd.bos.form.field.events.AfterF7SelectEvent
method_name: <init>
param_types_key: Object,String,int
signature_text: public AfterF7SelectEvent(Object source, String actionId, int currentRowIndex)
comment:
构造方法：初始化F7选择后事件
@param `source` 事件源
@param `actionId` 回调标识：由发起者自定义，以便和其他回调来源进行区分
@param `currentRowIndex` 当前行号。表头返回0


class_name: kd.bos.form.field.events.BaseDataCustomControllerEvent
method_name: <init>
param_types_key: Object,ListShowParameter,BasedataControllerSourceEnum
signature_text:
public BaseDataCustomControllerEvent(Object source, ListShowParameter listShowParameter, BasedataControllerSourceEnum sourceEnum)

comment:
构造方法：初始化基础资料个性化逻辑控制功能事件参数
@param `source` 事件源
@param `listShowParameter` 列表打开参数
@param `sourceEnum` 基础资料个性化逻辑控制类型


class_name: kd.bos.form.field.events.BaseDataCustomControllerEvent
method_name: <init>
param_types_key: Object,ListShowParameter,BasedataControllerSourceEnum,String
signature_text:
public BaseDataCustomControllerEvent(Object source, ListShowParameter listShowParameter, BasedataControllerSourceEnum sourceEnum, String filterColumnOrderBy)

comment:
构造方法：初始化基础资料个性化逻辑控制功能事件参数
@param `source` 事件源
@param `listShowParameter` 列表打开参数
@param `sourceEnum` 基础资料个性化逻辑控制类型
@param `filterColumnOrderBy` 查询排序字段


class_name: kd.bos.form.field.events.BaseDataCustomControllerEvent
method_name: <init>
param_types_key: Object,ListShowParameter,BasedataControllerSourceEnum,String,String
signature_text:
public BaseDataCustomControllerEvent(Object source, ListShowParameter listShowParameter, BasedataControllerSourceEnum sourceEnum, String filterColumnOrderBy, String sourceMethod)

comment:
构造方法：初始化基础资料个性化逻辑控制功能事件参数
@param `source` 事件源
@param `listShowParameter` 列表打开参数
@param `sourceEnum` 基础资料个性化逻辑控制类型
@param `filterColumnOrderBy` 查询排序字段
@param `sourceMethod` 来源方法(setItemByNumber、getLookUpList、setItemByIdFromClient)


class_name: kd.bos.form.field.events.BeforeF7PrepareUserOrgsEvent
method_name: <init>
param_types_key: FieldEdit,int,Object
comment: 构造方法：初始化选择基础资料前（弹出过滤窗口前）事件参数 @param `source` 事件源 @param `row` 行号 @param `originalValue` 源值
signature_text:
public BeforeF7PrepareUserOrgsEvent(kd.bos.form.field.FieldEdit source, int row, Object originalValue)


class_name: kd.bos.form.field.events.BeforeF7SelectEvent
method_name: <init>
param_types_key: FieldEdit,int,Object,String
signature_text:
public BeforeF7SelectEvent(kd.bos.form.field.FieldEdit source, int row, Object originalValue, String sourceMethod)

comment:
构造方法：初始化选择基础资料前（弹出过滤窗口前）事件参数
@param `source` 事件源
@param `row` 行号
@param `originalValue` 源值
@param `sourceMethod` 来源方法(click、setItemByNumber、getLookUpList、setItemByIdFromClient、f7combolist)


class_name: kd.bos.form.field.events.BeforeFilterF7SelectEvent
method_name: <init>
param_types_key: String,String,boolean,String,Object[],List
signature_text:
public BeforeFilterF7SelectEvent(String refEntityId, String refPropKey, boolean isMulti, String fieldName, Object[] selectedIds, java.util.List<QFilter> qfilters)

comment:
构造函数
@param `refEntityId` 打开的基础资料字段实体标识
@param `refPropKey` 基础资料字段在实体上的最后一级的标识，比如A.B.C，这里就是C
@param `isMulti` 是否多选
@param `fieldName` 字段名
@param `selectedIds` 已选数据集合
@param `qfilters` 过滤条件


class_name: kd.bos.form.field.events.ModifyFilterValuesControllerEvent
method_name: <init>
param_types_key: Object,List,Map,String
signature_text:
public ModifyFilterValuesControllerEvent(Object source, java.util.List<java.util.Map<String, java.util.List<Object>>> filterValuesMapList, java.util.Map<String, FilterField> filterColumnMap, String filterType)

comment:
@param `source` 事件源
@param `filterValuesMapList` 过滤条件
@param `filterColumnMap` 过滤字段
@param `filterType` customfilter常用过滤 schemefilter方案查询


class_name: kd.bos.form.field.format.FieldFormatContext
method_name: <init>
param_types_key: String,List,DynamicObjectCollection
comment: 已废弃，请使用kd.bos.form.field.format.FieldFormatContext.FieldFormatContext(
signature_text:
FieldFormatContext(String entityId, java.util.List<AbstractColumnDesc> cols, DynamicObjectCollection pageData)


class_name: kd.bos.form.field.format.FieldFormatContext
method_name: <init>
param_types_key: MainEntityType,List,DynamicObjectCollection
comment: 构造函数 @param `entityType` 实体类型 @param `cols` 列表字段格式化 @param `pageData` 数据
signature_text:
public FieldFormatContext(MainEntityType entityType, java.util.List<AbstractColumnDesc> cols, DynamicObjectCollection pageData)


class_name: kd.bos.form.field.format.FieldFormatContext
method_name: setPackageDataListeners
param_types_key: List
comment: 设置 packageData 插件监听器 @param `packageDataListeners`
signature_text:
public void setPackageDataListeners(java.util.List<java.util.function.Consumer<PackageDataEvent>> packageDataListeners)


class_name: kd.bos.form.field.format.FlexValueFormatter
method_name: getBaseDataValueByOrg
param_types_key: List,DynamicObject
signature_text:
protected Object getBaseDataValueByOrg(java.util.List<DynamicObject> baseDataValueList, DynamicObject currentRow)

comment:
根据当前行所属组织，获取对应的基础资料 (只有设置了上下文，并且能够找到主业务组织ID，才进行匹配，否则获取第一条数据) 对于报表，根据上下文中的ReportCols中寻找ID是orgid获取
@param `baseDataValueList` ： 基础资料集合（masterId，相同）
@param `currentRow` ： 当前行，包含组织信息


class_name: kd.bos.form.field.format.FlexValueFormatter
method_name: getDisplayValueForReport
param_types_key: List,FlexProp,String
signature_text:
public java.util.Map<Object, Object> getDisplayValueForReport(java.util.List<DynamicObject> values, FlexProp flexProp, String basePropKey)

comment:
弹性域在报表显示处理
@param `values` 数据集合（同一类型数据），批量数据尽量控制在1000条以内，避免oom
@param `flexProp` 弹性域属性
@param `basePropKey` 弹性域关联基础资料key
@return 数据包主键关联的键值对


class_name: kd.bos.form.field.format.FlexValueFormatter
method_name: getFlexData
param_types_key: String,String,Object,BasedataEntityType
signature_text:
public DynamicObject getFlexData(String flexId, String flexField, Object pkValue, BasedataEntityType basedataEntityType)

comment:
获取弹性域数据
@param `flexId` 弹性域id
@param `flexField` 弹性域字段（f0001）
@param `pkValue` 弹性域维度 （f0001）对应基础资料id/组织id
@param `basedataEntityType` 基础资料实体类型


class_name: kd.bos.form.field.format.FlexValueFormatter
method_name: getFlexValueMap
param_types_key: DynamicObject,FlexProp,String
comment: 根据字段名获取弹性域数据 @param `v` 数据包 @param `flexProp` 弹性域属性 @param `basePropKey` 字段名
signature_text:
public static java.util.Map<String, String> getFlexValueMap(DynamicObject v, FlexProp flexProp, String basePropKey)


class_name: kd.bos.form.field.format.FlexValueFormatter
method_name: loadBasedata
param_types_key: BasedataEntityType,Object[]
signature_text:
protected java.util.Map<Object, java.util.List<DynamicObject>> loadBasedata(BasedataEntityType type, Object[] masterIds)

comment:
按masterId获取所有数据 注意：这里假设相同masterid，不同的id场景很少，因此，全量取出。 如果存在masterid存在大量不同id场景，需要继续优化
@param `type` ：基础资料类型
@param `masterIds` ： masterIds集合


class_name: kd.bos.form.field.format.FlexValueFormatter
method_name: loadFromCache
param_types_key: Object[],DynamicObjectType,boolean
comment: 根据 pk 加载缓存数据 @param `pkArray` @param `dt` @param `loadReferenceData`
signature_text:
protected java.util.Map<Object, DynamicObject> loadFromCache(Object[] pkArray, DynamicObjectType dt, boolean loadReferenceData)


class_name: kd.bos.form.field.format.FlexValueFormatter
method_name: preLoadFlexValueToCache
param_types_key: List,DynamicObjectCollection
comment: 分录弹性域数据预加载 @param `flexProps` 弹性域字段 @param `dataEntities` 单据体数据包
signature_text:
public void preLoadFlexValueToCache(java.util.List<FlexProp> flexProps, DynamicObjectCollection dataEntities)


class_name: kd.bos.form.field.format.FlexValueFormatter
method_name: setBaseKeyMapFlexProperties
param_types_key: Map
comment: 设置基础资料实体类型 @param `baseKeyMapFlexProperties`
signature_text:
public void setBaseKeyMapFlexProperties(java.util.Map<String, kd.bos.form.field.format.FlexValueFormatter.BaseFlexEntityTypeCollection> baseKeyMapFlexProperties)


class_name: kd.bos.form.FieldTip
method_name: <init>
param_types_key: FieldTipsLevel,FieldTipsTypes,String,String
comment: 构造函数 @param `level` 提示级别 @param `type` 提示信息类别 @param `fieldKey` 字段 @param `tip` 提示内容
signature_text:
public FieldTip(FieldTip.FieldTipsLevel level, FieldTip.FieldTipsTypes type, String fieldKey, String tip)


class_name: kd.bos.form.fieldtip.DeleteRule
method_name: setAction
param_types_key: String
signature_text: public void setAction(String action)
comment:
设置规则的名称 系统预置了规则"isChange"，在字段值发生变化时自动隐藏提示 示例：
FieldTipfieldTip=newFieldTip();
fieldTip.setFieldKey(fieldKey);
fieldTip.setLevel(FieldTip.FieldTipsLevel.Info);
fieldTip.setSuccess(false);
fieldTip.setTipsType(FieldTip.FieldTipsTypes.others);
fieldTip.setTip("数据已存在");
DeleteRuledeleteRule=newDeleteRule();
deleteRule.setAction("isChange");
List<String> fields = newArrayList<>(1);
fields.add(fieldKey);
deleteRule.setFields(fields);
fieldTip.setDeleteRule(deleteRule);
this.getView().showFieldTip(fieldTip);
@param `action` 规则名称，设置为"isChange"值改变时自动隐藏提示


class_name: kd.bos.form.flex.event.FlexControlMetaPreRenderEvent
method_name: <init>
param_types_key: Object,String,String,DynamicObject,List
signature_text:
public FlexControlMetaPreRenderEvent(Object source, String formId, String flexFieldKey, DynamicObject baseData, java.util.List<Long> flexPropertyIds)


class_name: kd.bos.form.flex.FlexValueFormatUtils
method_name: getListDisplayValue
param_types_key: DynamicObject,FlexProp,String
comment: 根据字段名获取弹性域数据 @param `v` 数据包 @param `flexProp` 弹性域属性 @param `basePropDataKey` 字段标识
signature_text:
public static Object getListDisplayValue(DynamicObject v, FlexProp flexProp, String basePropDataKey)


class_name: kd.bos.form.flex.FlexValueFormatUtils
method_name: getQingValue
param_types_key: DynamicObject,FlexProp,String
comment: 根据字段名获取弹性域字段值 @param `v` 数据包 @param `flexProp` 弹性域属性 @param `basePropDataKey` 字段标识
signature_text:
public static java.util.Map<String, Object> getQingValue(DynamicObject v, FlexProp flexProp, String basePropDataKey)


class_name: kd.bos.form.flex.FlexValueFormatUtils
method_name: getReportDisplayValue
param_types_key: DynamicObject,FlexProp,List,Map
comment: 获取报表弹性域展示值 @param `v` @param `flexProp` @param `properties` @param `valueMap`
signature_text:
public static String getReportDisplayValue(DynamicObject v, FlexProp flexProp, java.util.List<IDataEntityProperty> properties, java.util.Map<String, String> valueMap)


class_name: kd.bos.form.FormConfig
method_name: createPlugin
param_types_key: Class,String
comment: 创建插件 @param `scriptPluginClass` 脚本插件类 @param `formId` 表单标识 @return 创建的插件列表
signature_text:
public java.util.List<kd.bos.form.plugin.IFormPlugin> createPlugin(Class<?> scriptPluginClass, String formId)


class_name: kd.bos.form.FormConfig
method_name: createScriptPlugin
param_types_key: String,String
comment: 创建脚本插件 @param `formId` 表单标识 @param `classname` 脚本名称 @return 表单插件
signature_text:
public synchronized kd.bos.form.plugin.IFormPlugin createScriptPlugin(String formId, String classname)


class_name: kd.bos.form.FormConfig
method_name: createScriptPlugin
param_types_key: String,String,String
comment: 创建脚本插件 @param `formId` 表单标识 @param `classname` 脚本名称 @param `scriptContent` 脚本内容
signature_text:
public synchronized kd.bos.form.plugin.IFormPlugin createScriptPlugin(String formId, String classname, String scriptContent)


class_name: kd.bos.form.FormConfig
method_name: setViewShowType
param_types_key: ShowType
signature_text: public final void setViewShowType(ShowType viewShowType)
comment:
设置ResManager.loadKDString("查看详情", "602753013416722432", SubSystemType.SL)展示风格
@param `viewShowType` ResManager.loadKDString("查看详情", "602753013416722432", SubSystemType.SL)展示风格


class_name: kd.bos.form.FormMetadataCache
method_name: getEntityTypeTree
param_types_key: EntityType
signature_text: public static TreeNode getEntityTypeTree(EntityType dt)
comment:
把实体对象转为树结构，每个字段属性对象对应一个节点 本方法不能对输出的字段做过滤，不推荐使用 建议使用` kd.bos.metadata.treebuilder.FormTreeBuilder.buildDynamicPropertyTree(dt, option)`构建实体树结构
@param `dt` 实体对象
@return 树结构


class_name: kd.bos.form.FormShowParameter
method_name: callBuilderFunc
param_types_key: Supplier,Supplier
comment: 如果Builder有覆盖方法，则调用controlBuilder的方法，否则调用原方法 @param `builderFunc` ： @param `defaultFunc` :` 原方法
signature_text:
protected Object callBuilderFunc(java.util.function.Supplier<R> builderFunc, java.util.function.Supplier<R> defaultFunc)


class_name: kd.bos.form.FormShowParameter
method_name: couldnotShowForm
param_types_key: List,Map
comment: 触发插件事件，让插件能够强制取消页面显示 @param `plugins` @param `config`
signature_text:
protected boolean couldnotShowForm(java.util.List<kd.bos.form.plugin.IFormPlugin> plugins, java.util.Map<String, Object> config)


class_name: kd.bos.form.FormShowParameter
method_name: getCheckRightAppId
signature_text: public String getCheckRightAppId()
comment:
获取页面使用的验权应用
1. 通常来说，页面在哪个应用显示，就使用哪个应用进行验权、许可检查
2. 如果页面未发布权限当前显示应用，则按照页面设计时应用进行验权
3. 某些特殊场景，比如工作流消息应用，在打开业务单据(差旅报销单)时，
不能按照工作流应用验权，也不能按照页面设计时应用(出纳)验权，必须由工作流代码自行指定按哪个应用(人人差旅)验权


class_name: kd.bos.form.FormShowParameter
method_name: getParentPageId
signature_text: public final String getParentPageId()
comment:
获取父页面PageId 子页面据此检索、通知父页面 显示表单页面时，系统自动会把当前页面作为新显示页面的父页面 例如使用` this.getView().showForm(showParam)`显示表单页面，` this.getView()`被自动当成父页面
@return 父页面pageId


class_name: kd.bos.form.FormShowParameter
method_name: getPermissionItemId
signature_text: public String getPermissionItemId()
comment:
返回表单打开时验证的权限项 动态表单打开，检查查看权限 "47150e89000000ac" view权限项 单据打开，根据界面状态可能验证查看、新建或修改权限项
@return 权限项内码，系统预置了一批常用的权限项


class_name: kd.bos.form.FormShowParameter
method_name: getServiceAppId
signature_text: public String getServiceAppId()
comment:
获取页面使用的微服务应用节点，该微服务节点，必须部署有页面插件
1. 通常来说，业务插件只部署在设计时的应用节点，因此，需要路由到设计时应用的微服务节点
2. BOS页面插件，会部署到所有微服务节点，因此，返回当前页面挂在哪个应用主页下即可
3. 某些特殊场景，由调用者直接指定页面使用的微服务节点


class_name: kd.bos.form.FormShowParameter
method_name: setPageId
param_types_key: String
signature_text: public final void setPageId(String value)
comment:
指定新页面的PageId 显示表单时，系统默认会自动为表单产生一个随机页面PageId，每次打开表单都会产生不同pageId，同一个表单可重复打开 调用者也可以自行指定新页面的PageId，以避免重复打开表单 风险警示：如果指定的PageId已被其他用户打开，本地并不存在，就显示不出来。所以，不要指定一个完全固定的页面pageId
@param `value` 页面pageId


class_name: kd.bos.form.func.FuncSettingHelper
method_name: createShowParameter
param_types_key: FunctionTypes,TreeNode,CloseCallBack
signature_text:
public static FormShowParameter createShowParameter(FunctionTypes functionTypes, TreeNode varNodes, CloseCallBack closeCallBack)

comment:
构造显示参数
@param `functionTypes` 自定义函数
@param `varNodes` 参数的可选变量；传入根节点，变量放在根节点下
@param `closeCallBack` 回调


class_name: kd.bos.form.func.FuncSettingHelper
method_name: createShowParameter
param_types_key: String,String,CloseCallBack
signature_text:
public static FormShowParameter createShowParameter(String functionTypes, String varNodes, CloseCallBack closeCallBack)

comment:
构造显示参数
@param `functionTypes` 函数集FunctionTypes，序列化为xml内容
@param `varNodes` 变量树节点TreeNode序列化为Json内容
@param `closeCallBack` 回调


class_name: kd.bos.form.func.FuncSettingHelper
method_name: show
param_types_key: FunctionTypes,List,TreeNode,Map,IFormView,CloseCallBack
signature_text:
public static void show(FunctionTypes functionTypes, java.util.List<java.util.Map<String, Object>> entityItems, TreeNode fieldNodes, java.util.Map<String, String> custParams, IFormView view, CloseCallBack closeCallBack)

comment:
基于单据设计时，显示函数配置界面
@param `functionTypes` 可选的自定义函数管理器，可以通过FunctionTypes.get()自动生成
@param `entityItems` 单据设计时，元素集合
@param `fieldNodes` 函数参数可选的变量：单据上的字段集合；传入根节点，变量放在根节点下
@param `view` 父页面
@param `closeCallBack` 回调：父页面接收函数配置返回


class_name: kd.bos.form.func.FuncSettingHelper
method_name: show
param_types_key: String,List,String,Map,IFormView,CloseCallBack
signature_text:
public static void show(String functionTypes, java.util.List<java.util.Map<String, Object>> entityItems, String fieldNodes, java.util.Map<String, String> custParams, IFormView view, CloseCallBack closeCallBack)

comment:
基于单据设计时，显示函数配置界面
@param `functionTypes` 函数集FunctionTypes序列化为XML内容
@param `entityItems` 单据设计时，元素集合
@param `fieldNodes` 树节点TreeNode序列化为JSON内容
@param `view` 父页面
@param `closeCallBack` 回调：父页面接收函数配置返回


class_name: kd.bos.form.func.FuncSettingHelper
method_name: show
param_types_key: FunctionTypes,String,TreeNode,Map,IFormView,CloseCallBack
signature_text:
public static void show(FunctionTypes functionTypes, String entityNumber, TreeNode fieldNodes, java.util.Map<String, String> custParams, IFormView view, CloseCallBack closeCallBack)

comment:
基于单据运行时，显示函数配置界面
@param `functionTypes` 可选的自定义函数管理器，可以通过FunctionTypes.get()自动生成
@param `entityNumber` 单据标识
@param `fieldNodes` 函数参数可选的变量：单据上的字段集合；传入根节点，变量放在根节点下
@param `view` 父页面
@param `closeCallBack` 回调：父页面接收函数配置返回


class_name: kd.bos.form.func.FuncSettingHelper
method_name: show
param_types_key: String,String,String,Map,IFormView,CloseCallBack
signature_text:
public static void show(String functionTypes, String entityNumber, String fieldNodes, java.util.Map<String, String> custParams, IFormView view, CloseCallBack closeCallBack)

comment:
基于单据运行时，显示函数配置界面
@param `functionTypes` 可选的自定义函数管理器，可以通过FunctionTypes.get()自动生成
@param `entityNumber` 单据标识
@param `fieldNodes` 函数参数可选的变量：单据上的字段集合；传入根节点，变量放在根节点下
@param `view` 父页面
@param `closeCallBack` 回调：父页面接收函数配置返回


class_name: kd.bos.form.func.FuncSettingHelper
method_name: show
param_types_key: FunctionTypes,TreeNode,Map,IFormView,CloseCallBack
signature_text:
public static void show(FunctionTypes functionTypes, TreeNode varNodes, java.util.Map<String, String> custParams, IFormView view, CloseCallBack closeCallBack)

comment:
非单据环境，显示函数配置界面
@param `functionTypes` 可选的自定义函数管理器
@param `varNodes` 函数参数可选的变量；传入根节点，变量放在根节点下
@param `view` 父页面
@param `closeCallBack` 回调：父页面接收函数配置返回


class_name: kd.bos.form.func.FuncSettingHelper
method_name: show
param_types_key: String,String,Map,IFormView,CloseCallBack
signature_text:
public static void show(String functionTypes, String varNodes, java.util.Map<String, String> custParams, IFormView view, CloseCallBack closeCallBack)

comment:
非单据环境，显示函数配置界面
@param `functionTypes` 可选的自定义函数管理器
@param `varNodes` 函数参数可选的变量；传入根节点，变量放在根节点下
@param `view` 父页面
@param `closeCallBack` 回调：父页面接收函数配置返回


class_name: kd.bos.form.IClientViewProxy
method_name: checkNodesWithoutChild
param_types_key: String,List
comment: 选择不带子节点 前面接口无法通用,改动怕影响到其它的，因此写了这个接口，把前端指令拿出去，交给控件处理 @param `key` 树形分支标识 @param `nodes` 待检查节点
signature_text:
kd.bos.form.control.TreeView.TreeState checkNodesWithoutChild(String key, java.util.List<TreeNode> nodes)


class_name: kd.bos.form.IClientViewProxy
method_name: clearEntryRowActions
param_types_key: String
signature_text: default void clearEntryRowActions(String entryKey)
comment:
清除单据体增删相关的指令： 重新绑定单据体数据前，需要调用此方法，清理可能已生成的新增行、删除行等指令，以免和重新绑定数据指令冲突
会清除单据体已下达的插入行、删除行指令，需谨慎调用
@param `entryKey` 单据体标识


class_name: kd.bos.form.IClientViewProxy
method_name: getClientLocalStorage
param_types_key: String,String
signature_text: void getClientLocalStorage(String key, String callbackid)
comment:
异步获取客户端localStorage存储 （插件clientCallBack事件中依据callbackid判断获取前端回调传值）
@param `key` 键
@param `callbackid` 回调Id


class_name: kd.bos.form.IClientViewProxy
method_name: insertRow
param_types_key: String,int,List,boolean
signature_text:
default void insertRow(String entryKey, int row, java.util.List<Object> rowData, boolean insertNext)

comment:
在单据体中插入行()
@param `entryKey` 单据体标识
@param `row` 行号
@param `rowData` 行数据
@param `insertNext` 是否在当前行号后面插入 (解决单据体过滤排序模式下前端无法区别是上插还是下插问题)


class_name: kd.bos.form.IClientViewProxy
method_name: removeInvokeControlMethod
param_types_key: Predicate
comment: 根据条件移除调用控件方法 @param `predicate`
signature_text:
default void removeInvokeControlMethod(java.util.function.Predicate<kd.bos.form.ICallParameter> predicate)


class_name: kd.bos.form.IClientViewProxy
method_name: removeInvokeControlMethod
param_types_key: Predicate,boolean
comment: 根据条件移除调用控件方法 @param `predicate` 删除条件 @param `alsoRemoveActions` 是否也删除action队列中的指令
signature_text:
default void removeInvokeControlMethod(java.util.function.Predicate<kd.bos.form.ICallParameter> predicate, boolean alsoRemoveActions)


class_name: kd.bos.form.IClientViewProxy
method_name: selectRows
param_types_key: String,int[],int,Integer
signature_text:
default kd.bos.form.control.AbstractGrid.GridState selectRows(String entrykey, int[] selRows, int focusRow, Integer pr)

comment:
选中多行记录
@param `entrykey` 单据体标识
@param `selRows` 选择行的行号
@param `focusRow` 焦点聚集的行号
@param `pr` 父id
@return 表格


class_name: kd.bos.form.IClientViewProxy
method_name: updateCellFmt
param_types_key: String,Map
comment: 更新单元格格式化信息 @param `entryGridKey` 单据体分录标识 @param `rowsFmtMapping` 行格式对照参数： {行号 : 字段标识集合}
signature_text:
void updateCellFmt(String entryGridKey, java.util.Map<Integer, java.util.List<String>> rowsFmtMapping)


class_name: kd.bos.form.IMobileView
method_name: callClientAppMethod
param_types_key: ClientMethod,Object
signature_text: void callClientAppMethod(ClientMethod clientMethod, Object parameter)
comment:
调用移动端客户端App（云之家）提供的方法 如前端有回调方法，可在customevent方法监听key为callAppMethod
@param `clientMethod` 方法枚举，包括客户端支持的几种方法
@param `parameter` 参数


class_name: kd.bos.form.IPageCache
method_name: isSuspendCommit
signature_text: default boolean isSuspendCommit()
comment:
当前是否暂停提交缓存 在循环中更新页面缓存值，如果每次都即时提交，会极大增加缓存访问次数。 可以在循环外，调用#suspendCommit()方法，暂停缓存即时提交。 循环结束后，调用#resumeCommit()恢复缓存提交


class_name: kd.bos.form.mcontrol.mobtable.events.BeforeCreateMobTableColumnsEvent
method_name: <init>
param_types_key: Object,List
comment: 构造函数 @param `source` 事件源 @param `mobTableColumns` 表格列
signature_text:
public BeforeCreateMobTableColumnsEvent(Object source, java.util.List<kd.bos.form.mcontrol.mobtable.tablecolumn.MobTableColumn> mobTableColumns)


class_name: kd.bos.form.mcontrol.mobtable.events.BeforeCreateMobTableColumnsEvent
method_name: getMobTableColumns
comment: 获取表格列
signature_text:
public java.util.List<kd.bos.form.mcontrol.mobtable.tablecolumn.MobTableColumn> getMobTableColumns()


class_name: kd.bos.form.mcontrol.mobtable.events.IMobTableDataProviderListener
method_name: createMobTableDataProvider
param_types_key: MobTableDataProviderEvent
comment: 创建移动表格数据访问类事件 @param `event` 创建移动表格数据访问类事件参数
signature_text:
void createMobTableDataProvider(kd.bos.form.mcontrol.mobtable.events.MobTableDataProviderEvent event)


class_name: kd.bos.form.mcontrol.mobtable.events.MobTablePackageDataHandlerArgs
method_name: setMobTableColumns
param_types_key: List
comment: 设置移动表格列 @param `mobTableColumns`
signature_text:
public void setMobTableColumns(java.util.List<kd.bos.form.mcontrol.mobtable.tablecolumn.MobTableColumn> mobTableColumns)


class_name: kd.bos.form.mcontrol.mobtable.IMobTableModel
method_name: setMobTableColumns
param_types_key: List
comment: 设置表格列 @param `mobTableColumns`
signature_text:
void setMobTableColumns(java.util.List<kd.bos.form.mcontrol.mobtable.tablecolumn.MobTableColumn> mobTableColumns)


class_name: kd.bos.form.mcontrol.mobtable.IMobTableModel
method_name: setMobTableDataProvider
param_types_key: IMobTableDataProvider
comment: 设置移动表格数据提供者 @param `mobTableDataProvider`
signature_text:
void setMobTableDataProvider(kd.bos.form.mcontrol.mobtable.IMobTableDataProvider mobTableDataProvider)


class_name: kd.bos.form.mcontrol.mobtable.MobTable
method_name: fireBeforeCreateMobTableColumns
param_types_key: BeforeCreateMobTableColumnsEvent
comment: 创建列之前插件干预事件 @param `beforeCreateMobTableColumnsEvent`
signature_text:
protected void fireBeforeCreateMobTableColumns(BeforeCreateMobTableColumnsEvent beforeCreateMobTableColumnsEvent)


class_name: kd.bos.form.mcontrol.mobtable.MobTable
method_name: getData
signature_text: public MobTableData getData()
comment:
获取表格数据 取数步骤： 1.创建dataIndex数据索引，优先取设计器索引（插件干预创建列），有数据映射的字段索引； 2.创建rows数据行，默认null（插件重新取数）
@return 表格数据


class_name: kd.bos.form.mcontrol.mobtable.MobTable
method_name: getPrepareDataListener
comment: 设置准备数据监听器
signature_text:
public java.util.List<kd.bos.form.mcontrol.mobtable.events.IMobTablePrepareDataListener> getPrepareDataListener()


class_name: kd.bos.form.mcontrol.mobtable.MobTablePackageDataHandler
method_name: cacheMobTableRowDataList
param_types_key: List,MobTable
comment: 将结果转为List缓存起来
signature_text:
protected void cacheMobTableRowDataList(java.util.List<MobTableRowData> mobTableRowDataList, MobTable mobTable)


class_name: kd.bos.form.mcontrol.mobtable.MobTableRowBuilder
method_name: buildTemplateRowData
param_types_key: int,List
comment: 构造行数据模板 @param `rowIndex` @param `mobTableColumns`
signature_text:
public static MobTableRowData buildTemplateRowData(int rowIndex, java.util.List<kd.bos.form.mcontrol.mobtable.tablecolumn.MobTableColumn> mobTableColumns)


class_name: kd.bos.form.MessageBoxLink
method_name: setValue
param_types_key: String
signature_text: public MessageBoxLink setValue(String value)
comment:
设置链接回调标识 如果超链接是内部调整，需要设置此值。 用户点击时，会带上此值发送请求到服务端，以便服务端代码区分请求来自哪个链接
@param `value` 链接回调标识
@return 返回本对象


class_name: kd.bos.form.operate.CoreMutexHelper
method_name: requireIntent
param_types_key: IFormView,String,Object,StringBuilder
comment: 申请意向锁 @param `view` @param `entityId` @param `pkId` @param `errMsg`
signature_text:
public static String requireIntent(IFormView view, String entityId, Object pkId, StringBuilder errMsg)


class_name: kd.bos.form.operate.FormOperate
method_name: checkFunctionPermission
param_types_key: String,String,List
comment: 批量校验 @param `permissionItemId` 权限 @param `dimType` @param `dimObjIds` 主字段+辅字段
signature_text:
protected int checkFunctionPermission(String permissionItemId, String dimType, java.util.List<Long> dimObjIds)


class_name: kd.bos.form.operate.FormOperate
method_name: checkFunctionPermissionBatch
param_types_key: String,List
comment: 批量验证指定权限项
signature_text:
protected java.util.List<CheckDimObjParam> checkFunctionPermissionBatch(String permissionItemId, java.util.List<CheckDimObjParam> dimObjParamList)


class_name: kd.bos.form.operate.FormOperate
method_name: doPermission
param_types_key: OperationResult,String,List
comment: 按主业务组织验权 @param `result` @param `permissionItemId` @param `orgIds`
signature_text:
protected void doPermission(OperationResult result, String permissionItemId, java.util.List<Long> orgIds)


class_name: kd.bos.form.operate.IFormMutexService
method_name: destoryLockingPage
param_types_key: String,Object,String,boolean
signature_text:
kd.bos.form.operate.MutexResult destoryLockingPage(String entityNum, Object pkId, String opKey, boolean ignoreActiveState)

comment:
销毁持有锁的页面 （仅允许同用户，非当前会话且页面websocket失联状态下可清理。 从页面的角度释放锁，若锁非页面申请的则无法成功）
@param `entityNum` 实体编码
@param `pkId` 单据内码
@param `opKey` 操作编码
@param `ignoreActiveState` 忽略锁定页面存活状态（true:忽略页面活跃状态，直接销毁 false:页面活跃时，不销毁页面）


class_name: kd.bos.form.operate.IFormMutexService
method_name: destoryLockingPage
param_types_key: String,Object,String,boolean,List
signature_text:
kd.bos.form.operate.MutexResult destoryLockingPage(String entityNum, Object pkId, String opKey, boolean ignoreActiveState, java.util.List<String> ignorePageIds)

comment:
销毁持有锁的页面 （仅允许同用户，非当前会话且页面websocket失联状态下可清理。 从页面的角度释放锁，若锁非页面申请的则无法成功）
@param `entityNum` 实体编码
@param `pkId` 单据内码
@param `opKey` 操作编码
@param `ignoreActiveState` 忽略锁定页面存活状态（true:忽略页面活跃状态，直接销毁 false:页面活跃时，不销毁页面）
@param `ignorePageIds` 不需要释放的pageid


class_name: kd.bos.form.operate.IFormMutexService
method_name: require
param_types_key: String,Object,String,boolean
signature_text:
kd.bos.form.operate.MutexResult require(String entityNum, Object pkId, String opKey, boolean isStrict)

comment:
给当前页面申请操作互斥锁
@param `entityNum` 实体编码
@param `pkId` 单据内码
@param `opKey` 操作编码
@param `isStrict` 严格互斥（禁止重入）
@return 申请结果


class_name: kd.bos.form.operate.IFormOperate
method_name: addBeforeShowBillListener
param_types_key: Consumer
comment: 增加单据展示前监听
signature_text:
void addBeforeShowBillListener(java.util.function.Consumer<FormShowParameter> beforeShowBillListener)


class_name: kd.bos.form.operate.imptapi.RowMapper
method_name: <init>
param_types_key: Map,DynamicObject,RowMapper,int
signature_text:
public RowMapper(java.util.Map<String, Object> sourceObj, DynamicObject targetObj, RowMapper parent, int rowIndex)

comment:
构造函数
@param `sourceObj` 已解析的源数据
@param `targetObj` 目标转换数据对象
@param `parent` 父行数据
@param `rowIndex` 行号


class_name: kd.bos.form.operate.imptapi.RowMapper
method_name: getValueFromSourceObj
param_types_key: String,boolean
signature_text: public Object getValueFromSourceObj(String propName, boolean searchTargetObj)
comment:
从源数据包中，获取指定属性值；常用于获取关联字段值，如基础资料获取使用组织，多类别基础资料字段获取类型字段值 源单数据包默认是区分大小写的，需要做特别处理使不区分大小写
@param `propName` 需要获取的属性值，不区分大小写
@param `searchTargetObj` 如果源数据包中不存在指定的属性值，是否从目标数据包中取值
@return 一个`Object`对象，字段属性对应的值


class_name: kd.bos.form.operate.MutexHelper
method_name: allFieldWithRequiredLock
param_types_key: IClientViewProxy,List,BillOperationStatus,MainEntityType
signature_text:
public static boolean allFieldWithRequiredLock(IClientViewProxy clientViewProxy, java.util.List<Control> controls, BillOperationStatus lockType, MainEntityType mainType)

comment:
判断是否有字段去掉了提交锁定性或审核锁定性
@param `clientViewProxy` 前端指令集合
@param `controls` 控件集合
@param `lockType` 需要判断的锁定性类型（提交锁定性或审核锁定性） BillOperationStatus#SUBMITBillOperationStatus#AUDIT
@param `mainType` 主实体
@return true：无字段去掉锁定性 false：有字段去掉了锁定性


class_name: kd.bos.form.operate.MutexHelper
method_name: enableReentrant
param_types_key: String,Object,String
signature_text: public static boolean enableReentrant(String entityId, Object pkId, String opKey)
comment:
是否允许重入锁，满足以下所有条件，则允许重入： 1.持有锁的用户为当前用户； 2.持有锁的会话不是当前会话； 3.持有锁的客户端等于当前客户端； 4.持有锁的会话下不存在websocket
@param `entityId` 实体编码
@param `pkId` 数据ID
@param `opKey` 操作编码


class_name: kd.bos.form.operate.MutexHelper
method_name: enableReentrant4ListViewOp
param_types_key: String,Object,String,String
signature_text:
public static boolean enableReentrant4ListViewOp(String entityId, Object pkId, String opKey, String pageId)

comment:
列表操作是否可重入，满足以下所有条件，则允许重入： 1.当前存在锁 2.当前持有锁的会话和当前会话是同一个
@param `entityId` 实体编码
@param `pkId` 数据ID
@param `opKey` 操作编码
@param `pageId` 页面标识


class_name: kd.bos.form.operate.MutexHelper
method_name: register
param_types_key: IFormView,String,String,String
signature_text:
public static void register(IFormView view, String mutexObjId, String mutexEntityKey, String mutexOperationKey)

comment:
内部使用，记录最后一次成功申请锁的页面
@param `view` 视图
@param `mutexObjId`
@param `mutexEntityKey` 实体
@param `mutexOperationKey` 操作


class_name: kd.bos.form.operate.MutexHelper
method_name: require
param_types_key: IFormView,String,Object,String,boolean,StringBuilder
comment: 申请互斥锁，本接口会先释放页面中记录的修改锁，再重新申请一个锁
signature_text:
require(IFormView view, String entityId, Object pkId, String opKey, boolean isStrict, StringBuilder errMsg)


class_name: kd.bos.form.operate.MutexHelper
method_name: require
param_types_key: IFormView,MutexLockInfo,StringBuilder
signature_text: public static boolean require(IFormView view, MutexLockInfo lockInfo, StringBuilder errMsg)
comment:
申请互斥锁，本接口会先释放页面中记录的修改锁，再重新申请一个锁
@param `view` 具体页面
@param `lockInfo` MutexLockInfo 申请锁信息
@param `errMsg` 申请锁失败时的错误的信息


class_name: kd.bos.form.operate.MutexHelper
method_name: requireMutex4BillController
param_types_key: IFormView,String,Object,String,StringBuilder
comment: （平台内部使用）
signature_text:
requireMutex4BillController(IFormView view, String entityId, Object pkId, String opKey, StringBuilder errMsg)


class_name: kd.bos.form.operate.MutexHelper
method_name: requireMutex4BillController
param_types_key: IFormView,String,Object,String,boolean,StringBuilder
comment: （平台内部使用）
signature_text:
requireMutex4BillController(IFormView view, String entityId, Object pkId, String opKey, boolean isStrict, StringBuilder errMsg)


class_name: kd.bos.form.operate.MutexHelper
method_name: requireMutex4BillController
param_types_key: IFormView,MutexLockInfo,StringBuilder
signature_text:
public static boolean requireMutex4BillController(IFormView view, MutexLockInfo lockInfo, StringBuilder errMsg)

comment:
（平台内部使用） 该方法提供给billcontroller使用，与require的不同之处在于errMsg返回的提示语
@param `view` view
@param `lockInfo` 互斥锁信息
@param `errMsg` 失败信息


class_name: kd.bos.form.operatecol.OperationColItem
method_name: <init>
param_types_key: String,int,String,String,String,boolean,String,String
signature_text:
public OperationColItem(String id, int showStyle, String operationName, String operationKey, String icon, boolean visible, String foreColor, String fontSize)

comment:
构造函数
@param `id` 标识
@param `showStyle` 显示方式：0-文字，1-图片
@param `operationName` 操作名称（显示内容）
@param `operationKey` 操作标识
@param `icon` 显示图标
@param `visible` 是否可见
@param `foreColor` 前景色
@param `fontSize` 字体


class_name: kd.bos.form.operatecol.OperationColItem
method_name: <init>
param_types_key: String,int,LocaleString,String,String,boolean,String,String
signature_text:
public OperationColItem(String id, int showStyle, LocaleString operationName, String operationKey, String icon, boolean visible, String foreColor, String fontSize)

comment:
构造函数
@param `id` 标识
@param `showStyle` 显示方式：0-文字，1-图片
@param `operationName` 操作名称（显示内容）
@param `operationKey` 操作标识
@param `icon` 显示图标
@param `visible` 是否可见
@param `foreColor` 前景色
@param `fontSize` 字体


class_name: kd.bos.form.operatecol.OperationColItem
method_name: <init>
param_types_key: String,int,String,String,String,boolean,String,String,String
signature_text:
public OperationColItem(String id, int showStyle, String operationName, String operationKey, String icon, boolean visible, String foreColor, String fontSize, String permissionId)

comment:
构造函数，增加权限id，原来的构造函数保留
@param `id` 标识
@param `showStyle` 显示方式：0-文字，1-图片
@param `operationName` 操作名称（显示内容）
@param `operationKey` 操作标识
@param `icon` 显示图标
@param `visible` 是否可见
@param `foreColor` 前景色
@param `fontSize` 字体
@param `permissionId` 权限id


class_name: kd.bos.form.operatecol.OperationColItem
method_name: <init>
param_types_key: String,int,LocaleString,String,String,boolean,String,String,String
signature_text:
public OperationColItem(String id, int showStyle, LocaleString operationName, String operationKey, String icon, boolean visible, String foreColor, String fontSize, String permissionId)

comment:
构造函数，增加权限id，原来的构造函数保留
@param `id` 标识
@param `showStyle` 显示方式：0-文字，1-图片
@param `operationName` 操作名称（显示内容）
@param `operationKey` 操作标识
@param `icon` 显示图标
@param `visible` 是否可见
@param `foreColor` 前景色
@param `fontSize` 字体
@param `permissionId` 权限id


class_name: kd.bos.form.plugin.importentry.strategy.ImportEntryTemplateListener
method_name: beforeSetBaseData
param_types_key: BeforeDownloadImportEntryTemplateEvent
signature_text: default void beforeSetBaseData(BeforeDownloadImportEntryTemplateEvent evt)
comment:
插件传入对应的基础资料下拉值，下载模板中的基础资料下拉值集合依据此数据包生成
@param `evt` ` public class TestImportEntryBaseDataPlugin implements ImportEntryTemplateListener{


class_name: kd.bos.form.plugin.ImportTemplateListener
method_name: beforeSetBaseData
param_types_key: BeforeDownloadImportTemplateEvent
signature_text: default void beforeSetBaseData(BeforeDownloadImportTemplateEvent evt)
comment:
插件传入对应的基础资料下拉值，下载模板中的基础资料下拉值集合依据此数据包生成
@param `evt` ` public class TestImportTemplatePlugin implements ImportTemplateListener {


class_name: kd.bos.form.plugin.impt.BatchImportPlugin
method_name: beforeSave
param_types_key: List,ImportLogger
signature_text: protected void beforeSave(java.util.List<ImportBillData> billdatas, ImportLogger logger)
comment:
保存前操作，校验待保存的数据包 重写该方法，可自定义校验逻辑 **注意：重写后建议调用super#beforeSave,不调用时， 将不执行待导入数据的前置校验逻辑（包含模板设置的必录（Excel标识行中，字段标识前存在*）、下拉项值的转换、以及行政区划字段的转换）**
@param `billdatas`
@param `logger`


class_name: kd.bos.form.plugin.impt.BatchImportPlugin
method_name: importData
signature_text: protected void importData() throws Throwable
comment:
导入线程使用该方法 导入线程，包含数据分批、校验、保存操作 一次导入对应一个解析线程，及保存线程 导入线程取阻塞队列中JSON数据包（解析线程入队），转换为动态队列并保存
@throws Throwable


class_name: kd.bos.form.plugin.impt.BatchImportPlugin
method_name: save
param_types_key: List,ImportLogger
signature_text: protected ApiResult save(java.util.List<ImportBillData> rowdatas, ImportLogger logger)
comment:
导入数据保存 重写该方法，自定义保存单据的逻辑
@param `rowdatas` Excel数据转换成的JSON数据包集合
@param `logger` 导入过程中日志类
@return ApiResult 该批次保存结果


class_name: kd.bos.form.plugin.impt.ImportBillData
method_name: <init>
param_types_key: JSONObject,int,int,ImportEntityMapping
signature_text:
public ImportBillData(com.alibaba.fastjson.JSONObject data, int startIndex, int endIndex, kd.bos.form.plugin.impt.ImportEntityMapping mapping)

comment:
构造函数
@param `data` excle解析出的单据原始JSON数据
@param `startIndex` 在excel中，该单据的起始行号
@param `endIndex` 在excel中，该单据的结束行号
@param `mapping` 映射规则对象，描述excel中的列与动态对象各字段的映射关系


class_name: kd.bos.form.plugin.IWaterMarkPlugin
method_name: setWaterMarkInfo
param_types_key: LoadWaterMarkInfoEventArgs
signature_text: default void setWaterMarkInfo(LoadWaterMarkInfoEventArgs e)
comment:
实现该接口的插件可绑定在水印配置中，从而实现自定义的水印效果 示例可参考社区文档：https://vip.kingdee.com/knowledge/specialDetail/294832938980257024?category=294833149400665344&id=289788705932651264&type=Knowledge&productLineId=29&lang=zh-CN
@param `e` 水印信息事件。内部封装了具体的水印配置参数，参数由用户自定义设置。


class_name: kd.bos.form.ShowFormHelper
method_name: getBizAppId
param_types_key: FormShowParameter
signature_text: public static String getBizAppId(FormShowParameter showParameter)
comment:
从showParameter中获取appId对应的内码,若无法直接获取到appId,则获取表单编码,从元数据中得到appId再获取对应内码
@param `showParameter`
@return bizAppId appId对应的内码


class_name: kd.bos.form.SingleOrgContextHelper
method_name: createCardSingleOrgContext
param_types_key: ListCardView,List
comment: 单组织企业管理模式下控制隐藏所有卡片列表中组织字段，配置了组织的基础资料属性字段... 针对卡片有效(移动列表）
signature_text:
public static void createCardSingleOrgContext(ListCardView lstcardview, java.util.List<java.util.Map<String, Object>> cardviewItems)


class_name: kd.bos.form.SingleOrgContextHelper
method_name: createFilterGridSingleOrgContext
param_types_key: Map,MainEntityType
comment: 通用过滤控件FilterGrid
signature_text:
public static void createFilterGridSingleOrgContext(java.util.Map<String, java.util.List<java.util.Map<String, Object>>> fieldMap, MainEntityType mainType)


class_name: kd.bos.form.SingleOrgContextHelper
method_name: createReportSearchConditionSingleOrgContext
param_types_key: List,IFormView
comment: 报表筛选条件内容隐藏控制
signature_text:
public static void createReportSearchConditionSingleOrgContext(java.util.List<String> fields, IFormView view)


class_name: kd.bos.form.upgrade.AbstractUpgradePlugin
method_name: afterExecuteSql
param_types_key: String,String,String,String
signature_text:
public UpgradeResult afterExecuteSql(String ver, String iteration, String dbKey, String sqlFileName)


class_name: kd.bos.form.upgrade.AbstractUpgradePlugin
method_name: beforeExecuteSql
param_types_key: String,String,String,String
signature_text:
public UpgradeResult beforeExecuteSql(String ver, String iteration, String dbKey, String sqlFileName)


class_name: kd.bos.form.widget.WidgetContainer
method_name: addGroup
param_types_key: Map,Map
comment: 卡片容器中增加一个分组 @param `designerGroup` ` 设计时分组 @param `runtimeGroup` ` 运行时分组
signature_text:
public void addGroup(java.util.Map<String, Object> designerGroup, java.util.Map<String, Object> runtimeGroup)


class_name: kd.bos.form.widget.WidgetContainer
method_name: addItemClickListener
param_types_key: ItemClickListener
signature_text: public void addItemClickListener(kd.bos.form.control.events.ItemClickListener listener)
comment:
注册itemclick监听
@see kd.bos.form.container.Container#addItemClickListener(kd.bos.form.control.events.ItemClickListener)#addItemClickListener(kd.bos.form.control.events.ItemClickListener)
@param `listener`


class_name: kd.bos.form.widget.WidgetContainer
method_name: addWidget
param_types_key: String,Map,Map
comment: 在卡片分组中增加一个卡片 @param `groupId` 分组id @param `designerWidget` 设计时分组 @param `runtimeWidget` 运行时分组
signature_text:
public void addWidget(String groupId, java.util.Map<String, Object> designerWidget, java.util.Map<String, Object> runtimeWidget)


class_name: kd.bos.form.widget.WidgetContainer
method_name: renameGroup
param_types_key: Map,Map
comment: 重命名分组 @param `designerGroup` ` 设计时分组 @param `runtimeGroup` ` 运行时分组
signature_text:
public void renameGroup(java.util.Map<String, Object> designerGroup, java.util.Map<String, Object> runtimeGroup)


class_name: kd.bos.form.widget.WidgetContainer
method_name: setWidgetProperty
param_types_key: String,Map,Map
comment: 设置卡片属性 @param `id` @param `designerProperty` 设计时属性 @param `runtimeProperty` 运行时属性
signature_text:
public void setWidgetProperty(String id, java.util.Map<String, Object> designerProperty, java.util.Map<String, Object> runtimeProperty)


class_name: kd.bos.formula.FormulaEngine
method_name: execExcelFormula
param_types_key: String,Map,UDFunction[]
comment: 执行表达式
signature_text:
execExcelFormula(String formula, java.util.Map<String, Object> variableMap, UDFunction[] userDefinedFunctions)


class_name: kd.bos.formula.FormulaEngine
method_name: execExcelFormula
param_types_key: Expr,Map,UDFunction[]
comment: 执行表达式
signature_text:
execExcelFormula(Expr expr, java.util.Map<String, Object> variableMap, UDFunction[] userDefinedFunctions)


class_name: kd.bos.formula.platform.api.FuncInfo
method_name: <init>
param_types_key: String,String,String,String,String
signature_text: public FuncInfo(String name, String caption, String formula, String category, String desc)
comment:
构造函数
@param `name` 函数名称
@param `caption` 函数标题
@param `formula` 函数表达式
@param `category` 函数分组目录
@param `desc` 函数描述，用法说明


class_name: kd.bos.formula.platform.api.FuncInfo
method_name: <init>
param_types_key: String,String,String,String,String,String
signature_text:
public FuncInfo(String name, String caption, String formula, String category, String desc, String formId)

comment:
构造函数
@param `name` 函数名称
@param `caption` 函数标题
@param `formula` 函数表达式
@param `category` 函数分组目录
@param `desc` 函数描述，用法说明
@param `formId` 函数参数配置界面FormId


class_name: kd.bos.formula.platform.api.IFormulaFunctions
method_name: getParaFormId
param_types_key: String
signature_text: String getParaFormId(String funcName)
comment:
输出函数自定义参数配置界面FormId，页面插件，必须实现 IFuncParamInputFormPlugin 接口
@param `funcName` 函数名称
@return 参数配置页面FormId


class_name: kd.bos.formula.platform.api.IFormulaVarInfos
method_name: genVarsDefBlock
param_types_key: Iterable
signature_text: public String genVarsDefBlock(Iterable vars)
comment:
基于传入的变量集合，生成变量定义代码块 var name {bos_formula_comments_var|var_name=name|var_scope=scope|var_desc=desc|var_type=type|var_alias=alias}
@return String 变量定义代码块


class_name: kd.bos.formula.platform.api.IFormulaVarInfos
method_name: getDisplayString
param_types_key: String
signature_text: public String getDisplayString(String formulaStr)
comment:
去掉脚本中的描述性语句，输出用于查看的脚本内容：脚本中，会包含变量定义代码块、返回值代码块等，这些内容在运行时必须，但是在查看脚本时，就显得冗余，需要去掉 1. 去掉 //{bos_formula_comments_var 开头语句，变量描述 2. 去掉 //bizenum 开头语句，枚举项定义 3. 去掉 return formula_result;
@return 脚本内容


class_name: kd.bos.formula.platform.api.IVarInfo
method_name: get
param_types_key: String
signature_text: public static IVarInfo get(String line)
comment:
解析传入的脚本当前行内容，如果是变量定义，则转为变量对象输出
@param `line` 当前脚本行 //{bos_formula_comments_var|var_name=name|var_scope=scope|var_desc=desc|var_type=type|var_alias=alias}
@return 公式变量信息


class_name: kd.bos.formula.platform.api.IVarInfo
method_name: innerDealVarComments
param_types_key: String,String
signature_text: public static String innerDealVarComments(String commentLeft, String commentLine)
comment:
分解注释条目
@param `commentLeft` 需分解的条目名：var_name
@param `commentLine` 完整内容：//{bos_formula_comments_var|var_name=name|var_scope=scope|var_desc=desc|var_type=type|var_alias=alias}
@return 输出条目内容：name


class_name: kd.bos.formula.platform.api.VarInfo
method_name: <init>
param_types_key: String,String,String,String,String,String
signature_text: public VarInfo(String name, String alias, String type, String initval, String scope, String desc)
comment:
构造函数
@param `name` 变量名
@param `alias` 变量别名
@param `type` 变量类型
@param `initval` 变量初值
@param `scope` 变量作用域
@param `desc` 变量描述


class_name: kd.bos.i18n.api.model.TelephoneParseResult
method_name: <init>
param_types_key: boolean,String
signature_text: public TelephoneParseResult(boolean success, String errorMsg)
comment:
描述：`TelephoneParseResult` 对象，对手机号码解析结果进行描述。
@param `success` 布尔类型，表示解析成功或失败。
@param `errorMsg` 一个字符串类型的错误信息，解释手机号码解析失败的原因。


class_name: kd.bos.i18n.api.model.TelephoneParseResult
method_name: <init>
param_types_key: String,String,List
signature_text: public TelephoneParseResult(String telephone, String areaCode, java.util.List<String> countryList)
comment:
描述：`TelephoneParseResult` 对象，对手机号码解析结果进行描述。
@param `telephone` 解析后的手机号码(不包含任何国家或地区编码)
@param `areaCode` 与手机号码关联的地区编码
@param `countryList` 字符串列表，手机号码可能关联的国家列表


class_name: kd.bos.i18n.api.model.TelephoneVerifyResult
method_name: <init>
param_types_key: boolean,boolean,String,Map
signature_text:
public TelephoneVerifyResult(boolean parseSuccess, boolean verifySuccess, String parseErrorMsg, java.util.Map<String, String> verifyResult)

comment:
描述：`TelephoneVerifyResult` 对象，对手机号码校验结果进行描述。
@param `parseSuccess` 布尔类型，解析成功或失败。
@param `verifySuccess` 布尔类型，校验成功或失败。
@param `parseErrorMsg` 字符类型，解析失败原因描述。
@param `verifyResult` 手机号码校验结果。


class_name: kd.bos.i18n.api.telephone.TelephoneService
method_name: batchParseTelephone
param_types_key: List
signature_text: java.util.List<TelephoneParseResult> batchParseTelephone(java.util.List<String> telephoneList)
comment:
描述：批量解析手机号码，获取号码的详细信息（如国家、运营商、地区等）。
**注意：** 使用时需控制批量处理的规模，避免因数据量过大导致性能问题。
@param `telephoneList` 手机号码列表，每个号码应为有效的手机号格式。
@return 返回 TelephoneParseResult 对象的列表，每个对象包含对应手机号码的解析结果。


class_name: kd.bos.i18n.api.telephone.TelephoneService
method_name: batchVerifyTelephoneNumber
param_types_key: List
signature_text:
java.util.List<TelephoneVerifyResult> batchVerifyTelephoneNumber(java.util.List<String> telephoneNumberVerifyList)

comment:
描述：批量校验手机号码的有效性。
**注意：** 使用时需控制批量处理的规模，避免因数据量过大导致性能问题。
@param `telephoneNumberVerifyList` 手机号码列表，每个号码应为待校验的手机号。
@return 返回 TelephoneVerifyResult 对象的列表，每个对象包含对应手机号码的校验结果。 具体结果请参考 TelephoneVerifyResult 的说明。


class_name: kd.bos.i18n.api.telephone.TelephoneService
method_name: batchVerifyTelephoneNumberFormat
param_types_key: List
signature_text:
java.util.List<java.util.Map<String, String>> batchVerifyTelephoneNumberFormat(java.util.List<java.util.Map<String, Object>> telephoneNumberVerifyList)

comment:
描述：批量校验手机号码的格式是否正确。
**注意：** 使用时需控制批量处理的规模，避免因数据量过大导致性能问题。
@param `telephoneNumberVerifyList` 手机号码验证列表，每个Map包含以下键值对： \- "telephoneNumber": 要验证的手机号码（字符串类型）。 \- "countryNumberList": 验证的相关国家地区编码列表（列表类型）。
@return 返回一个Map列表，每个Map包含以下键值对： \- "message": 结果为FASLE时，校验失败的原因描述。 \- "code": 格式校验结果（"TRUE" 表示格式正确，"FALSE" 表示格式不正确）。


class_name: kd.bos.i18n.api.telephone.TelephoneService
method_name: parseTelephone
param_types_key: String
signature_text: TelephoneParseResult parseTelephone(String telephone)
comment:
描述：解析手机号码，获取号码的详细信息（如国家、运营商、地区等）。
@param `telephone` 需要解析的手机号码，应为有效的手机号格式。
@return 返回 TelephoneParseResult 对象，包含手机号码的解析结果。 具体结果请参考 TelephoneParseResult 的说明。


class_name: kd.bos.i18n.api.telephone.TelephoneService
method_name: verifyTelephoneNumberFormat
param_types_key: String,String[]
signature_text:
java.util.Map<String, String> verifyTelephoneNumberFormat(String telephoneNumber, String[] countryNumber)

comment:
描述：对手机号码进行格式校验，验证其是否符合指定国家或地区的手机号码格式规则。
@param `telephoneNumber` 手机号码（不带区号，必填）。
@param `countryNumber` 国家或地区编码（可选，如果未提供则使用默认规则校验）。
@return 返回一个Map，包含以下键值对： \- "code": 格式校验结果（"TRUE" 表示格式正确，"FALSE" 表示格式不正确）。 \- "message": 格式不正确时的错误信息（仅当 isValid 为 "FALSE" 时有效）。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: VerifyTaxNumber
param_types_key: String,String
signature_text: public static java.util.Map<String, String> VerifyTaxNumber(String number, String taxNumber)
comment:
描述：验证税号是否符合规则。
@param `number` 国家编码或地区编码（二选一），用于指定税号所属国家或地区。
@param `taxNumber` 待验证的税号。
@return 返回一个包含验证结果的Map。 键 "isSuccess" 判断验证是否成功： \- true：验证成功，税号符合规则。 \- false：验证失败，税号不符合规则。 键 "errorMsg" 当验证失败时，返回验证失败的具体原因。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: amountConvertUppercase
param_types_key: String,String,String
signature_text:
public static AmountConvertResult amountConvertUppercase(String langAbbrCode, String currencyNumber, String amount)

comment:
描述：将金额小写转换为大写形式。
@param `langAbbrCode` 语言编码，用于指定转换的语言（如 "ZH" 表示中文，"EN" 表示英文）。
@param `currencyNumber` 币别编码，用于指定金额的货币类型（如 "CNY" 表示人民币，"USD" 表示美元）。
@param `amount` 金额值，需为有效的数字字符串。
@return 返回 AmountConvertResult 对象，包含转换后的金额大写形式及其他相关信息。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: amountConvertUppercase
param_types_key: String,String,String,String
signature_text:
public static AmountConvertResult amountConvertUppercase(String langAbbrCode, String currencyNumber, String amount, String isTransCurrNum)

comment:
描述：将金额小写转换为大写形式。
@param `langAbbrCode` 语言编码，用于指定转换的语言（如 "ZH" 表示中文，"EN" 表示英文）。
@param `currencyNumber` 币别编码，用于指定金额的货币类型（如 "CNY" 表示人民币，"USD" 表示美元）。
@param `amount` 金额值，需为有效的数字字符串。
@param `isTransCurrNum` 是否翻译货币代码： \- "true"：将货币代码翻译为目标语言。 \- "false"：保留原始货币代码。
@return 返回 AmountConvertResult 对象，包含转换后的金额大写形式及其他相关信息。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: batchAmountConvertUppercase
param_types_key: List
signature_text:
public static java.util.List<AmountConvertResult> batchAmountConvertUppercase(java.util.List<java.util.Map<String, String>> amountList)

comment:
描述：批量将金额小写转换为大写形式。
**注意：** 使用时需控制批量处理的规模，避免因数据量过大导致性能问题。
@param `amountList` 包含金额信息的Map列表，每个Map应包含以下键值对： \- "langAbbrCode": 语言编码（如 "zh" 表示中文，"en" 表示英文）。 \- "currencyNumber": 币别编码（如 "CNY" 表示人民币，"USD" 表示美元）。 \- "amount": 金额值，需为有效的数字字符串。 \- "isTransCurrNum": 是否翻译货币代码（"true" 或 "false"）。
@return 返回 AmountConvertResult 对象的列表，每个对象包含对应金额的转换结果。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: batchGetAdminDivisionTimeZone
param_types_key: List
signature_text:
public static java.util.Map<Long, String> batchGetAdminDivisionTimeZone(java.util.List<Long> adminDivisionIdList)

comment:
描述：批量获取行政区划的时区信息。
**注意：** 使用时需控制批量处理的规模，避免因数据量过大导致性能问题。
@param `adminDivisionIdList` 行政区划ID列表，每个ID应为有效的行政区划标识。
@return 返回一个Map，其中： \- Key: 行政区划ID。 \- Value: 对应的时区编码（如 "Asia/Shanghai"）。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: batchParseTelephone
param_types_key: List
signature_text:
public static java.util.List<TelephoneParseResult> batchParseTelephone(java.util.List<String> telephoneList)

comment:
描述：批量解析手机号码，获取号码的详细信息（如国家、运营商、地区等）。
**注意：** 使用时需控制批量处理的规模，避免因数据量过大导致性能问题。
@param `telephoneList` 手机号码列表，每个号码应为有效的手机号格式。
@return 返回 TelephoneParseResult 对象的列表，每个对象包含对应手机号码的解析结果。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: batchVerifyTelephoneNumber
param_types_key: List
signature_text:
public static java.util.List<TelephoneVerifyResult> batchVerifyTelephoneNumber(java.util.List<String> telephoneNumberVerifyList)

comment:
描述：批量校验手机号码的有效性。
**注意：** 使用时需控制批量处理的规模，避免因数据量过大导致性能问题。
@param `telephoneNumberVerifyList` 手机号码列表，每个号码应为待校验的手机号。
@return 返回 TelephoneVerifyResult 对象的列表，每个对象包含对应手机号码的校验结果。 具体结果请参考 TelephoneVerifyResult 的说明。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: batchVerifyTelephoneNumberFormat
param_types_key: List
signature_text:
public static java.util.List<java.util.Map<String, String>> batchVerifyTelephoneNumberFormat(java.util.List<java.util.Map<String, Object>> telephoneNumberVerifyList)

comment:
描述：批量校验手机号码的格式是否正确。
**注意：** 使用时需控制批量处理的规模，避免因数据量过大导致性能问题。
@param `telephoneNumberVerifyList` 手机号码验证列表，每个Map包含以下键值对： \- "telephoneNumber": 要验证的手机号码（字符串类型）。 \- "countryNumberList": 验证的相关国家地区编码列表（列表类型）。
@return 返回一个Map列表，每个Map包含以下键值对： \- "message": 结果为FASLE时，校验失败的原因描述。 \- "code": 格式校验结果（"TRUE" 表示格式正确，"FALSE" 表示格式不正确）。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: calculateDateByInterval
param_types_key: Long,Date,Integer,Integer,Integer
signature_text:
public static java.util.Map<String, Object> calculateDateByInterval(Long workingPlanId, java.util.Date date, Integer interval, Integer intervalType, Integer outputIntervalType)

comment:
根据间隔日计算日期，支持工作日和自然日的计算。
**注意：** 当 isSuccess 为 false 时，可通过 errorMsg 查看具体失败原因。
@param `workingPlanId` 工作日计划ID，用于定义工作日的规则（如节假日、调休等）。
@param `date` 输入日期，作为计算的起始日期。
@param `interval` 间隔天数，表示需要计算的天数。
@param `intervalType` 间隔天数类型： \- 0: 工作日（仅计算工作日）。 \- 1: 自然日（包括所有日期）。
@param `outputIntervalType` 输出日期类型： \- 0: 输出结果为工作日。 \- 1: 输出结果为自然日。
@return 返回一个Map，包含以下键值对： \- "isSuccess": 计算是否成功（true: 成功，false: 失败）。 \- "errorMsg": 失败时的错误信息（仅当 isSuccess 为 false 时有效）。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: calculateDateByStartAndEndDate
param_types_key: Long,Date,Date
signature_text:
public static java.util.Map<String, Object> calculateDateByStartAndEndDate(Long workingPlanId, java.util.Date startDate, java.util.Date endDate)

comment:
描述：根据开始日期和结束日期计算间隔日，支持工作日和自然日的计算。
**注意：** 当 isSuccess 为 false 时，可通过 errorMsg 查看具体失败原因。
@param `workingPlanId` 工作日计划ID，用于定义工作日的规则（如节假日、调休等）。
@param `startDate` 开始日期，计算的起始日期。
@param `endDate` 结束日期，计算的截止日期。
@return 返回一个Map，包含以下键值对： \- "isSuccess": 计算是否成功（true: 成功，false: 失败）。 \- "errorMsg": 失败时的错误信息（仅当 isSuccess 为 false 时有效）。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: currencyFormat
param_types_key: double
signature_text: public static String currencyFormat(double currency)
comment:
描述：根据用户的个人设置，对金额进行格式化处理。
@param `currency` 需要格式化的金额值。
@return 返回格式化后的金额字符串，格式根据用户的个人设置（如货币符号、千位分隔符、小数位数等）。。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: dateFormat
param_types_key: Date
signature_text: public static String dateFormat(java.util.Date date)
comment:
描述：根据用户的个人设置，对日期进行格式化处理。
@param `date` 需要格式化的日期对象。
@return 返回格式化后的日期字符串，格式根据用户的个人设置（如 "yyyy-MM-dd" 或 "dd/MM/yyyy" 等）。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: getCrossRate
param_types_key: List
signature_text:
public static java.util.List<java.util.Map<String, Object>> getCrossRate(java.util.List<java.util.Map<String, Object>> exchangeRateList)

comment:
描述：批量获取对应汇率的交叉汇率信息。
**注意：** 使用时需控制批量处理的规模，避免因数据量过大导致性能问题。
@param `exchangeRateList` 汇率参数列表，每个Map包含以下键值对： \- "orgcur": 源货币Id。 \- "cur": 目标货币Id。 \- "exctable": 汇率表Id 。 \- "excval": 直接汇率 。 \- "effectdate": 生效日期 。 \- "expirydate": 失效日期 。
@return 返回一个Map列表，每个Map包含以下键值对： \- "orgcur": 源货币Id。 \- "cur": 目标货币Id。 \- "exctable": 汇率表Id。 \- "excval": 直接汇率。 \- "effectdate": 生效日期。 \- "expirydate": 失效日期。 \- "computationrules": 计算规则。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: getCrossRateByIds
param_types_key: List
signature_text:
public static java.util.List<java.util.Map<String, Object>> getCrossRateByIds(java.util.List<Long> exchangeRateListIds)

comment:
描述：根据汇率ID列表，返回对应的交叉汇率信息。
**注意：** 使用时需控制批量处理的规模，避免因数据量过大导致性能问题。
@param `exchangeRateListIds` 汇率ID列表，每个ID应为有效的汇率标识。
@return 返回一个Map列表，每个Map包含以下键值对： \- "exctable": 汇率表ID。 \- "orgcur": 源货币ID。 \- "cur": 目标货币ID。 \- "excval": 汇率值。 \- "effectDate": 汇率生效日期（格式化后的字符串）。 \- "expiryDate": 汇率失效日期（格式化后的字符串）。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: getDateByWorkingPlan
param_types_key: Long,Date,Date
signature_text:
public static java.util.Map<String, Object> getDateByWorkingPlan(Long workingPlanId, java.util.Date startDate, java.util.Date endDate)

comment:
批量获取工作日计划中指定日期范围内的日期及其类型（如工作日、节假日等）。
@param `workingPlanId` 工作日计划ID，用于指定工作日计划的规则（如工作日、节假日等）。
@param `startDate` 开始日期，查询的起始日期。
@param `endDate` 结束日期，查询的截止日期。
@return 返回一个Map，包含以下键值对： \- "isSuccess": 操作是否成功（true: 成功，false: 失败）。 \- "errorMsg": 失败时的错误信息（仅当 isSuccess 为 false 时有效）。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: getIdentityNumber
param_types_key: Long
signature_text: public static java.util.Map<String, Object> getIdentityNumber(Long countryId)
comment:
根据国家ID，获取该国家的证件编码规则信息。
**注意：** 当 isSuccess 为 false 时，可通过 errorMsg 查看具体失败原因。
@param `countryId` 国家ID，用于指定需要查询证件编码规则的国家。
@return 返回一个Map，包含以下键值对： \- "isSuccess": 操作是否成功（true: 成功，false: 失败）。 \- "errorMsg": 失败时的错误信息（仅当 isSuccess 为 false 时有效）。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: getPublicHoliday
param_types_key: Collection,Date,Date
signature_text:
public static java.util.Map<String, Object> getPublicHoliday(java.util.Collection<Object> countryIds, java.util.Date startDate, java.util.Date endDate)

comment:
描述：批量获取指定国家在给定日期范围内的公共假期信息。
**注意：** 当 isSuccess 为 false 时，可通过 errorMsg 查看具体失败原因。
@param `countryIds` 国家ID集合，用于指定需要查询公共假期的国家。
@param `startDate` 开始日期，查询的起始日期。
@param `endDate` 结束日期，查询的截止日期。
@return 返回一个Map，包含以下键值对： \- "isSuccess": 操作是否成功（true: 成功，false: 失败）。 \- "errorMsg": 失败时的错误信息（仅当 isSuccess 为 false 时有效）。 \- "data": 成功时，公共假期信息。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: getTheZone
param_types_key: Long,Long,Date
signature_text: public static java.util.Set<Object> getTheZone(Long zoneTypeId, Long addrId, java.util.Date date)
comment:
描述：根据区域类型ID、地址ID和指定日期，获取地址所属的区域信息。
@param `zoneTypeId` 区域类型ID，用于指定区域的分类（如行政区域、经济区域等）。
@param `addrId` 地址ID，用于指定需要查询区域的地址。
@param `date` 日期，用于确定区域信息的有效性（如历史区域划分或未来区域规划）。
@return 返回一个包含区域信息的Set集合。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: getTheZoneMap
param_types_key: List,Long,Date
signature_text:
public static java.util.Map<Long, java.util.Set<Object>> getTheZoneMap(java.util.List<Long> zoneTypeIds, Long addrId, java.util.Date date)

comment:
描述：批量获取地址所属的区域信息，支持多个区域类型的查询。
@param `zoneTypeIds` 区域类型ID列表，用于指定需要查询的区域分类（如行政区域、经济区域等）。
@param `addrId` 地址ID，用于指定需要查询区域的地址。
@param `date` 日期，用于确定区域信息的有效性。
@return 返回一个Map，其中： \- Key: 地址ID。 \- Value: 区域ID集合。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: validIdentityCardNo
param_types_key: Long,String,String
signature_text:
public static java.util.Map<String, Object> validIdentityCardNo(Long countryId, String number, String identityNo)

comment:
描述：验证身份证号的格式是否符合指定国家和证件类型的规则。
@param `countryId` 国家ID，用于指定身份证号所属的国家。
@param `number` 证件类型编码，用于指定身份证号的类型（如居民身份证、护照等）。
@param `identityNo` 待验证的身份证号。
@return 返回一个Map，包含以下键值对： \- "isSuccess": 验证是否成功（true: 成功，false: 失败）。 \- "errorMsg": 失败时的错误信息（仅当 isSuccess 为 false 时有效）。


class_name: kd.bos.i18n.mservice.I18nServiceHelper
method_name: verifyTelephoneNumberFormat
param_types_key: String,String[]
signature_text:
public static java.util.Map<String, String> verifyTelephoneNumberFormat(String telephoneNumber, String[] countryNumber)

comment:
描述：对手机号码进行格式校验，验证其是否符合指定国家或地区的手机号码格式规则。
@param `telephoneNumber` 手机号码（不带区号，必填）。
@param `countryNumber` 国家或地区编码（可选，如果未提供则使用默认规则校验）。
@return 返回一个Map，包含以下键值对： \- "code": 格式校验结果（"TRUE" 表示格式正确，"FALSE" 表示格式不正确）。 \- "message": 格式不正确时的错误信息（仅当 isValid 为 "FALSE" 时有效）。


class_name: kd.bos.i18n.mservice.utils.AmountConvertResult
method_name: <init>
param_types_key: boolean,String,String
signature_text: public AmountConvertResult(boolean success, String errorMsg, String result)
comment:
描述：`AmountConvertResult` 对象，金额转换结果的描述。
@param `success` 布尔类型，表示解析成功或失败。
@param `errorMsg` 一个字符串类型的错误信息，解释手机号码解析失败的原因。
@param `result` 一个字符串类型的金额。


class_name: kd.bos.i18n.mservice.utils.AmountConvertResult
method_name: <init>
param_types_key: boolean,String
signature_text: public AmountConvertResult(boolean success, String errorMsg)
comment:
描述：`AmountConvertResult` 对象，金额转换结果的描述。
@param `success` 布尔类型，表示解析成功或失败。
@param `errorMsg` 一个字符串类型的错误信息，解释手机号码解析失败的原因。


class_name: kd.bos.id.ID
method_name: genStringId
signature_text: static String genStringId()
comment:
字符类型ID，最大长度12，是产生long值ID后再用Base39编码进行转换所得，它和long值保持一一对应关系，是有序的。
Base39字符集：`+/0123456789=ABCDEFGHIJKLMNOPQRSTUVWXYZ`
常用作实体主键
@return String类型ID


class_name: kd.bos.id.ID
method_name: longTo36Radix
param_types_key: long
signature_text: static String longTo36Radix(long id)
comment:
long ID -> Base36编码字符ID (最大长度13)
Base36字符集：`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ`
比Base39少了三个字符：`+/=`
用于只接受数字和字符的场合，不可用作实体主键。


class_name: kd.bos.impt.ExcelReader
method_name: read
param_types_key: InputStream,SheetHandler
signature_text: public void read(java.io.InputStream in, SheetHandler sheetHandler) throws Exception
comment:
事件驱动模式解析excel
### 使用示例：
// 入参为@See SheetHandler的子类，可传递匿名类，实现其handlerRow方法即可newExcelReader().read(文件流, newSheetHandler() {
@param `in` Excel文件流
@param `sheetHandler` 页签解析类
@throws `Exception` 解析过程可能抛出异常


class_name: kd.bos.instance.Instance
method_name: getInstanceId
signature_text: public static String getInstanceId()
comment:
获取实例id，每个jvm的实例id是唯一的 格式：appName + "-" + new SecureRandom().nextInt(9) + (System.currentTimeMillis() % 1000000000)
@return 实例id


class_name: kd.bos.kdtx.sdk.api.EventualConsistencyService
method_name: execute
param_types_key: Object,Object
signature_text: public abstract DtxResponse execute(Object param, Object lastReturn) throws Exception
comment:
执行逻辑办法
@param `param` 业务传入参数
@param `lastReturn` 上一个服务的返回值
@return 返回当前服务的计算结果，下一个服务可以在lastReturn参数中获取


class_name: kd.bos.kdtx.sdk.api.KdtxBusinessHelper
method_name: manuallyRetry
param_types_key: String,String
signature_text: public static CompensateResponse manuallyRetry(String sceneCode, String businessId)
comment:
使用场景编码(sceneCode)和业务ID(businessId)重试对应的分布式事务的分支事务
@param `sceneCode` 分布式事务的场景编码, 需要配置事务场景白名单才可使用此方法重试
@param `businessId` 触发分布式事务的业务操作ID, 此ID需要在注册分支事务时设置
@return 重试结果信息


class_name: kd.bos.kdtx.sdk.api.KdtxBusinessHelper
method_name: manuallyRetry
param_types_key: String,String,boolean
signature_text: public static CompensateResponse manuallyRetry(String sceneCode, String businessId, boolean sync)
comment:
使用场景编码(sceneCode)和业务ID(businessId)重试对应的分布式事务的分支事务
@param `sceneCode` 分布式事务的场景编码, 需要配置事务场景白名单才可使用此方法重试
@param `businessId` 触发分布式事务的业务操作ID, 此ID需要在注册分支事务时设置
@param `sync` 是否同步执行重试，默认false
@return 重试结果信息


class_name: kd.bos.kdtx.sdk.api.KdtxBusinessHelper
method_name: queryRelativeTxBranchExecuteInfos
param_types_key: String
comment: 使用原单ID(businessId)查询分布式事务分支执行情况 @param `businessId` 对应分支注册时的业务id @return 分布式事务分支执行情况
signature_text:
public static java.util.Map<String, java.util.List<BranchExecuteInfo>> queryRelativeTxBranchExecuteInfos(String businessId)


class_name: kd.bos.kdtx.sdk.api.KdtxBusinessHelper
method_name: queryTxLogInfo
param_types_key: String,String
signature_text: public static java.util.List<TxLogInfo> queryTxLogInfo(String sceneCode, String businessId)
comment:
使用场景编码(sceneCode)和业务ID(businessId)查询对应分布式事务的日志信息
@param `sceneCode` 分布式事务的场景编码
@param `businessId` 触发分布式事务的业务操作ID, 此ID需要在注册分支事务时设置
@return 分布式事务的日志信息列表


class_name: kd.bos.kdtx.sdk.api.KdtxBusinessHelper
method_name: queryTxLogInfo
param_types_key: String
signature_text: public static java.util.Map<String, java.util.List<TxLogInfo>> queryTxLogInfo(String businessId)
comment:
使用场景编码(sceneCode)和业务ID(businessId)查询对应分布式事务的日志信息
@param `businessId` 触发分布式事务的业务操作ID, 此ID需要在注册分支事务时设置
@return 分布式事务的日志信息列表


class_name: kd.bos.kdtx.sdk.api.KdtxBusinessHelper
method_name: queryUncompletedRelativeTxBranchExecuteInfos
param_types_key: String
comment: 使用原单ID(businessId)查询分布式事务未完成的分支执行情况 @param `businessId` 对应分支注册时的业务id @return 未完成的分支执行情况
signature_text:
public static java.util.Map<String, java.util.List<BranchExecuteInfo>> queryUncompletedRelativeTxBranchExecuteInfos(String businessId)


class_name: kd.bos.kdtx.sdk.api.TCCAdapterService
method_name: confirm
param_types_key: Object,Object
signature_text: public abstract DtxResponse confirm(Object param, Object lastReturn) throws Exception
comment:
TCC模式confir阶段：提交事务
@param `param` 参数
@param `lastReturn` 上个分支事务返回结果
@return 事务confirm结果
@throws `Exception` 异常


class_name: kd.bos.kdtx.sdk.api.TCCAdapterService
method_name: loadData
comment: 根据事务id和分支事务id查询业务数据 @return 业务数据 @throws TCCLoadDataException
signature_text:
protected java.util.Set<String> loadData() throws kd.bos.kdtx.sdk.exception.tcc.TCCLoadDataException


class_name: kd.bos.kdtx.sdk.api.TCCAdapterService
method_name: saveData
param_types_key: Set
signature_text:
protected void saveData(java.util.Set<String> appendDataSet) throws kd.bos.kdtx.sdk.exception.tcc.TCCSaveDataException

comment:
保存数据 try阶段保存临时数据，confirm/cancel取出使用 限制：默认最多不能超过1000条（可配置）
@param `appendDataSet` 保存数据列表
@throws `TCCSaveDataException` 保存数据异常


class_name: kd.bos.kdtx.sdk.check.TxCheckUtil
method_name: getLocked
param_types_key: String,List
signature_text:
public static java.util.List<String> getLocked(String businessType, java.util.List<String> businessIds)

comment:
根据业务类型和业务ID获取被锁定的事务businessIds列表
@param `businessType` 业务类型
@param `businessIds` 业务ID列表
@return 返回被锁定的事务businessIds列表


class_name: kd.bos.kdtx.sdk.check.TxCheckUtil
method_name: getLockedMap
param_types_key: List
comment: 获取被锁定的事务Map @param `businessIds` 业务ID列表 @return 返回被锁定的事务Map列表(key:业务类型,value:业务ID列表)
signature_text:
public static java.util.Map<String, java.util.List<String>> getLockedMap(java.util.List<String> businessIds)


class_name: kd.bos.kdtx.sdk.check.TxCheckUtil
method_name: loadUnfinishedTx
param_types_key: String,List
signature_text:
public static java.util.List<String> loadUnfinishedTx(String businessType, java.util.List<String> businessIds)

comment:
根据业务类型，在协调器中获取传入的”业务ID列表“中未完成的事务
@param `businessType` 业务类型
@param `businessIds` 业务ID列表
@return 返回未完成的事务businessIds列表


class_name: kd.bos.kdtx.sdk.check.TxCheckUtil
method_name: loadUnfinishedTxBusinessInfo
param_types_key: List
comment: 获取执行中的事务Map @param `businessIds` 业务ID列表 @return 返回未完成的事务Map列表(key:业务类型,value:业务ID列表)
signature_text:
public static java.util.Map<String, java.util.List<String>> loadUnfinishedTxBusinessInfo(java.util.List<String> businessIds)


class_name: kd.bos.kdtx.sdk.session.DTX
method_name: requiresNew
param_types_key: String,String,DBRoute,boolean,boolean
signature_text:
public static DTXHandle requiresNew(String scenesCode, String tag, DBRoute dbRoute, boolean waitAllDone, boolean oneByOne)

comment:
开启新的分布式事务
@param `scenesCode` 场景号
@param `tag` 本地事务标签
@param `waitAllDone` 是否 等待全部分支事务执行完成
@param `oneByOne` 是否 逐个顺序执行
@return DTXHandle kd.bos.kdtx.sdk.session.DTXHandle


class_name: kd.bos.kdtx.sdk.session.DTX
method_name: requiresNew
param_types_key: String,DBRoute
signature_text: public static DTXHandle requiresNew(String scenesCode, DBRoute dbRoute)
comment:
开启新的分布式事务
@param `scenesCode` 场景号
@param `dbRoute` 路由
@return DTXHandle kd.bos.kdtx.sdk.session.DTXHandle


class_name: kd.bos.kdtx.sdk.session.DTX
method_name: requiresNew
param_types_key: String,DBRoute,boolean
signature_text: public static DTXHandle requiresNew(String scenesCode, DBRoute dbRoute, boolean waitAllDone)
comment:
开启新的分布式事务
@param `scenesCode` 场景号
@param `dbRoute` 数据库路由
@param `waitAllDone` 是否 等待全部分支事务执行完成
@return DTXHandle kd.bos.kdtx.sdk.session.DTXHandle


class_name: kd.bos.kdtx.sdk.session.DtxFactory
method_name: createSimpleEc
param_types_key: String,String
signature_text:
public static kd.bos.kdtx.sdk.session.simpleec.SimpleECSession createSimpleEc(String scenesCode, String serializer)

comment:
创建最终一致Simple对象
@param `scenesCode` 业务场景编码
@return 创建最终一致Simple对象 kd.bos.kdtx.sdk.session.simpleec.SimpleECSession


class_name: kd.bos.kdtx.sdk.session.DTXHandle
method_name: register
param_types_key: String,String,String,Param,String,String
signature_text:
public void register(String cloudId, String appId, String serviceName, Param param, String branchScenesCode, String bizId)

comment:
注册分支事务
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数
@param `branchScenesCode` 分支场景编码(可选)
@param `bizId` 业务id


class_name: kd.bos.kdtx.sdk.session.DTXHandle
method_name: register
param_types_key: String,String,String,Param,String,List
signature_text:
public void register(String cloudId, String appId, String serviceName, Param param, String branchScenesCode, java.util.List<String> bizIds)

comment:
注册分支事务
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数
@param `branchScenesCode` 分支场景编码(可选)
@param `bizIds` 业务id


class_name: kd.bos.kdtx.sdk.session.DTXHandle
method_name: register
param_types_key: String,String,String,Param
signature_text: public void register(String cloudId, String appId, String serviceName, Param param)
comment:
注册分支事务
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数


class_name: kd.bos.kdtx.sdk.session.DTXHandle
method_name: register
param_types_key: String,String,String,Param,String
signature_text:
public void register(String cloudId, String appId, String serviceName, Param param, String branchScenesCode)

comment:
注册分支事务
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数
@param `branchScenesCode` 分支场景编码(可选)


class_name: kd.bos.kdtx.sdk.session.ec.ECGlobalSession
method_name: begin
param_types_key: String,DBRoute,boolean
comment: 事务开始 @param `scenesCode` 场景编码 @param `dbRoute` DB路由
signature_text:
public static void begin(String scenesCode, DBRoute dbRoute, boolean isReentrant) throws KDException


class_name: kd.bos.kdtx.sdk.session.ec.ECGlobalSession
method_name: register
param_types_key: String,String,String,Param,String,List
signature_text:
public static void register(String cloudId, String appId, String serviceName, Param param, String branchScenesCode, java.util.List<String> bizIds) throws KDException

comment:
分支事务注册
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数对象（可选）
@param `branchScenesCode` 分支场景编码（可选），但如果传入则会检验是否存在
@param `bizIds` 业务ID（可选），当前的业务相关ID，方便业务定位问题


class_name: kd.bos.kdtx.sdk.session.ec.ECGlobalSession
method_name: register
param_types_key: String,String,String,Param,String,String
signature_text:
public static void register(String cloudId, String appId, String serviceName, Param param, String branchScenesCode, String bizId) throws KDException

comment:
分支事务注册
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数对象（可选）
@param `branchScenesCode` 分支场景编码（可选），但如果传入则会检验是否存在
@param `bizId` 务ID（可选），当前的业务相关ID，方便业务定位问题
@throws `KDException` 异常


class_name: kd.bos.kdtx.sdk.session.ec.ECGlobalSession
method_name: register
param_types_key: String,String,String
signature_text: public static void register(String cloudId, String appId, String serviceName) throws KDException
comment:
分支事务注册
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@throws `KDException` 异常


class_name: kd.bos.kdtx.sdk.session.ec.ECGlobalSession
method_name: register
param_types_key: String,String,String,Param
signature_text:
public static void register(String cloudId, String appId, String serviceName, Param param) throws KDException

comment:
分支事务注册
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数
@throws `KDException` 异常


class_name: kd.bos.kdtx.sdk.session.ec.ECGlobalSession
method_name: register
param_types_key: String,String,String,Param,String
signature_text:
public static void register(String cloudId, String appId, String serviceName, Param param, String branchScenesCode) throws KDException

comment:
分支事务注册
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数
@param `branchScenesCode` 分支场景
@throws `KDException` 异常


class_name: kd.bos.kdtx.sdk.session.ec.ECSession
method_name: register
param_types_key: String,String,String,Param,String,List
signature_text:
public void register(String cloudId, String appId, String serviceName, Param param, String branchScenesCode, java.util.List<String> bizIds) throws kd.bos.kdtx.sdk.exception.DtxSdkException

comment:
分支事务注册
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数对象（可选）
@param `branchScenesCode` 分支场景编码（可选），但如果传入则会检验是否存在
@param `bizIds` 业务ID（可选），当前的业务相关ID，方便业务定位问题


class_name: kd.bos.kdtx.sdk.session.ec.ECSession
method_name: register
param_types_key: String,String,String
signature_text: public void register(String cloudId, String appId, String serviceName) throws KDException
comment:
分支事务注册
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名,需在SericeFactory里注册
@throws `KDException` 异常


class_name: kd.bos.kdtx.sdk.session.ec.ECSession
method_name: register
param_types_key: String,String,String,Param
signature_text:
public void register(String cloudId, String appId, String serviceName, Param param) throws KDException

comment:
分支事务注册
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名,需在SericeFactory里注册
@param `param` 参数
@throws `KDException` 异常


class_name: kd.bos.kdtx.sdk.session.ec.ECSession
method_name: register
param_types_key: String,String,String,Param,String
signature_text:
public void register(String cloudId, String appId, String serviceName, Param param, String branchScenesCode) throws KDException

comment:
分支事务注册
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名,需在SericeFactory里注册
@param `param` 参数
@param `branchScenesCode` 分支场景编码（可选），但如果传入则会检验是否存在
@throws `KDException` 异常


class_name: kd.bos.kdtx.sdk.session.ec.ECSession
method_name: register
param_types_key: String,String,String,Param,String,String
signature_text:
public void register(String cloudId, String appId, String serviceName, Param param, String branchScenesCode, String bizId) throws kd.bos.kdtx.sdk.exception.DtxSdkException

comment:
分支事务注册
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名,需在SericeFactory里注册
@param `param` 参数
@param `branchScenesCode` 分支场景编码（可选），但如果传入则会检验是否存在
@param `bizId` 业务ID（可选），当前的业务相关ID，方便业务定位问题
@throws `DtxSdkException` 异常


class_name: kd.bos.kdtx.sdk.session.tcc.TCCGlobalSession
method_name: Try
param_types_key: String,String,String,String,Param,String,DBRoute,List
signature_text:
public static void Try(String scenesCode, String cloudId, String appId, String serviceName, Param param, String branchScenesCode, DBRoute dbRoute, java.util.List<String> bizIds) throws TCCTryException

comment:
TCC锁定资源
@param `scenesCode` 场景编码
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数对象（可选）
@param `branchScenesCode` 分支场景编码（可选），但如果传入则会检验是否存在
@param `dbRoute` DB路由
@param `bizIds` 业务ID关联事务


class_name: kd.bos.kdtx.sdk.session.tcc.TCCGlobalSession
method_name: Try
param_types_key: String,String,String,String,Param,String,DBRoute
signature_text:
public static void Try(String scenesCode, String cloudId, String appId, String serviceName, Param param, String branchScenesCode, DBRoute dbRoute) throws TCCTryException

comment:
TCC锁定资源
@param `scenesCode` 场景编码
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数对象（可选）
@param `branchScenesCode` 分支场景编码（可选），但如果传入则会检验是否存在
@param `dbRoute` DB路由


class_name: kd.bos.kdtx.sdk.session.tcc.TCCGlobalSession
method_name: Try
param_types_key: String,String,String,String,Param,String
signature_text:
public static void Try(String scenesCode, String cloudId, String appId, String serviceName, Param param, String branchScenesCode) throws TCCTryException

comment:
TCC锁定资源
@param `scenesCode` 场景编码
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数对象（可选）
@param `branchScenesCode` 分支场景编码（可选），但如果传入则会检验是否存在


class_name: kd.bos.kdtx.sdk.session.tcc.TCCGlobalSession
method_name: Try
param_types_key: String,String,String,Param,String
signature_text:
public static void Try(String cloudId, String appId, String serviceName, Param param, String branchScenesCode) throws TCCTryException

comment:
TCC锁定资源
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数对象（可选）
@param `branchScenesCode` 分支场景编码（可选），但如果传入则会检验是否存在


class_name: kd.bos.kdtx.sdk.session.tcc.TCCGlobalSession
method_name: Try
param_types_key: String,String,String,String
signature_text:
public static void Try(String scenesCode, String cloudId, String appId, String serviceName) throws TCCTryException

comment:
TCC锁定资源
@param `scenesCode` 场景编码
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册


class_name: kd.bos.kdtx.sdk.session.tcc.TCCSession
method_name: Try
param_types_key: String,String,String,Param,String,List
signature_text:
public void Try(String cloudId, String appId, String serviceName, Param param, String branchScenesCode, java.util.List<String> bizIds) throws Exception

comment:
TCC模式try阶段:锁定资源
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数对象（可选）
@param `branchScenesCode` 分支场景编码（可选），但如果传入则会检验是否存在
@param `bizIds` 业务ID关联事务，一直跟随事务


class_name: kd.bos.kdtx.sdk.session.tcc.TCCSession
method_name: Try
param_types_key: String,String,String,Param,String
signature_text:
public void Try(String cloudId, String appId, String serviceName, Param param, String branchScenesCode) throws Exception

comment:
TCC模式try阶段:锁定资源
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数对象（可选）
@param `branchScenesCode` 分支场景编码（可选），但如果传入则会检验是否存在


class_name: kd.bos.kdtx.sdk.session.tcc.TCCSession
method_name: Try
param_types_key: String,String,String,Param
signature_text: public void Try(String cloudId, String appId, String serviceName, Param param) throws Exception
comment:
TCC模式try阶段:锁定资源
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册
@param `param` 参数对象（可选）


class_name: kd.bos.kdtx.sdk.session.tcc.TCCSession
method_name: Try
param_types_key: String,String,String
signature_text: public void Try(String cloudId, String appId, String serviceName) throws Exception
comment:
TCC模式try阶段:锁定资源
@param `cloudId` 云ID
@param `appId` 应用ID
@param `serviceName` 服务名，需在SericeFactory里注册


class_name: kd.bos.lang.HZPinyin
method_name: getFirstSpell
param_types_key: String
signature_text: public static String getFirstSpell(String cn) throws java.io.UnsupportedEncodingException
comment:
获取中文拼音的首字符，如金蝶->jd
@param `cn` 中文字符串
@return 中文拼音的首字符
@throws `UnsupportedEncodingException` 不支持的编码异常


class_name: kd.bos.lang.HZPinyin
method_name: getFirstSpell
param_types_key: String,Map
signature_text:
public static String getFirstSpell(String cn, java.util.Map<Character, String> pinyinMap) throws java.io.UnsupportedEncodingException

comment:
获取中文拼音的首字符，如金蝶->jd
@param `cn` 中文字符串
@param `pinyinMap` 自定义拼音映射map
@return 中文拼音的首字符
@throws `UnsupportedEncodingException` 不支持的编码异常


class_name: kd.bos.lang.HZPinyin
method_name: getFullSpell
param_types_key: String
signature_text: public static String getFullSpell(String cn) throws java.io.UnsupportedEncodingException
comment:
获取中文的全拼，如金蝶->jin die
@param `cn` 中文字符串
@return 中文的全拼
@throws `UnsupportedEncodingException` 不支持的编码异常


class_name: kd.bos.lang.HZPinyin
method_name: getFullSpell
param_types_key: String,String
signature_text:
public static String getFullSpell(String cn, String separator) throws java.io.UnsupportedEncodingException

comment:
获取中文的全拼
@param `cn` 中文字符串
@param `separator` 分隔符
@return 中文的全拼
@throws `UnsupportedEncodingException` 不支持的编码异常


class_name: kd.bos.lang.HZPinyin
method_name: getFullSpell
param_types_key: String,Map
signature_text:
public static String getFullSpell(String cn, java.util.Map<Character, String> pinyinMap) throws java.io.UnsupportedEncodingException

comment:
获取中文的全拼
@param `cn` 中文字符串
@param `pinyinMap` 自定义拼音映射map
@return 中文的全拼
@throws `UnsupportedEncodingException` 不支持的编码异常


class_name: kd.bos.lang.HZPinyin
method_name: getFullSpell
param_types_key: String,Map,String
signature_text:
public static String getFullSpell(String cn, java.util.Map<Character, String> pinyinMap, String separator) throws java.io.UnsupportedEncodingException

comment:
获取中文的全拼
@param `cn` 中文字符串
@param `pinyinMap` 自定义拼音映射map
@param `separator` 分隔符
@return 中文的全拼
@throws `UnsupportedEncodingException` 不支持的编码异常


class_name: kd.bos.list.AbstractListColumn
method_name: setCaption
param_types_key: LocaleString
signature_text: public void setCaption(LocaleString caption)
comment:
(non-Javadoc)
@see kd.bos.list.IListColumn#setCaption(kd.bos.dataentity.entity.LocaleString)#setCaption(kd.bos.dataentity.entity.LocaleString)


class_name: kd.bos.list.AbstractListColumn
method_name: setEntityName
param_types_key: String
signature_text: public void setEntityName(String name)
comment:
(non-Javadoc)
@see kd.bos.list.IListColumn#setEntityName(java.lang.String)#setEntityName(java.lang.String)


class_name: kd.bos.list.AbstractListColumn
method_name: setForeColor
param_types_key: String
signature_text: public void setForeColor(String foreColor)
comment:
(non-Javadoc)
@see kd.bos.list.IListColumn#setForeColor(java.lang.String)#setForeColor(java.lang.String)


class_name: kd.bos.list.AbstractListColumn
method_name: setParentViewKey
param_types_key: String
signature_text: public void setParentViewKey(String parentViewKey)
comment:
(non-Javadoc)
@see kd.bos.list.IListColumn#setParentViewKey(java.lang.String)#setParentViewKey(java.lang.String)


class_name: kd.bos.list.AbstractListColumn
method_name: setTextAlign
param_types_key: String
signature_text: public void setTextAlign(String textAlign)
comment:
(non-Javadoc)
@see kd.bos.list.IListColumn#setTextAlign(java.lang.String)#setTextAlign(java.lang.String)


class_name: kd.bos.list.AbstractListColumn
method_name: setWidth
param_types_key: LocaleString
signature_text: public void setWidth(LocaleString width)
comment:
设置列表字段宽度
@see kd.bos.list.IListColumn#setWidth(kd.bos.dataentity.entity.LocaleString)#setWidth(kd.bos.dataentity.entity.LocaleString)


class_name: kd.bos.list.AbstractListContainerColumn
method_name: setDecimalFieldMap
param_types_key: Map
comment: 设置所有格式化的数字字段信息 @param `decimalFieldMap`
signature_text:
public void setDecimalFieldMap(java.util.Map<String, java.util.Map<String, Object>> decimalFieldMap)


class_name: kd.bos.list.BillList
method_name: addBillListGetEntityTypeListener
param_types_key: BillListGetEntityTypeListener
comment: 注册控件绑定的实体类型干预事件 @param `billListGetEntityTypeListener`
signature_text:
public void addBillListGetEntityTypeListener(BillListGetEntityTypeListener billListGetEntityTypeListener)


class_name: kd.bos.list.BillList
method_name: addClearSelectionListener
param_types_key: Consumer
comment: 添加取消选中行事件监听 @param `clearSelectionListener` ` 取消选中行事件监听
signature_text:
public void addClearSelectionListener(java.util.function.Consumer<java.util.EventObject> clearSelectionListener)


class_name: kd.bos.list.BillList
method_name: addListColumnCompareTypesSetListener
param_types_key: ListColumnCompareTypesSetListener
comment: 添加表头字段比较符设置监听 @param `listColumnCompareTypesSetListener` 表头字段比较符设置监听
signature_text:
public void addListColumnCompareTypesSetListener(ListColumnCompareTypesSetListener listColumnCompareTypesSetListener)


class_name: kd.bos.list.BillList
method_name: addListFieldsControlListeners
param_types_key: Consumer
comment: 添加列表选项控制干预事件 @param `listFieldsControlListener`
signature_text:
public void addListFieldsControlListeners(java.util.function.Consumer<kd.bos.list.events.ListFieldsControlEvent> listFieldsControlListener)


class_name: kd.bos.list.BillList
method_name: addListRowDetailShowListeners
param_types_key: Consumer
comment: 添加列表“单头”展开事件 @param `listRowDetailShowListener`
signature_text:
public void addListRowDetailShowListeners(java.util.function.Consumer<ListRowDetailShowEvent> listRowDetailShowListener)


class_name: kd.bos.list.BillList
method_name: addListRowFilterListeners
param_types_key: Consumer
comment: 添加列表字段过滤监听列表 @param `listRowFilterListener`
signature_text:
public void addListRowFilterListeners(java.util.function.Consumer<ListRowFilterEvent> listRowFilterListener)


class_name: kd.bos.list.BillList
method_name: addListRowSelectAllListeners
param_types_key: Consumer
comment: 添加列表选中全部事件 @param `listRowSelectAllListener`
signature_text:
public void addListRowSelectAllListeners(java.util.function.Consumer<kd.bos.list.events.ListRowSelectAllEvent> listRowSelectAllListener)


class_name: kd.bos.list.BillList
method_name: addListRowSortListeners
param_types_key: Consumer
comment: 添加列表字段排序监听 @param `listRowSortListener` ` 列表字段排序监听
signature_text:
public void addListRowSortListeners(java.util.function.Consumer<kd.bos.list.events.ListRowSortEvent> listRowSortListener)


class_name: kd.bos.list.BillList
method_name: addPackageDataListener
param_types_key: Consumer
comment: 添加数据包装事件,用于修改发送给前端之前的数据，用于单元格填值 @param `packageDataListener` ` 数据包装事件
signature_text:
public void addPackageDataListener(java.util.function.Consumer<PackageDataEvent> packageDataListener)


class_name: kd.bos.list.BillList
method_name: addRowSelection
param_types_key: List,List,String
comment: 添加选中行 @param `rowKeys` @param `rowDatas` @param `fieldKey` 区分行点击还是勾选框点击
signature_text:
public void addRowSelection(java.util.List<Integer> rowKeys, java.util.List<java.util.List<Object>> rowDatas, String fieldKey)


class_name: kd.bos.list.BillList
method_name: addRowSelection
param_types_key: List,List
comment: 添加选中行 @param `rowKeys` @param `rowDatas`
signature_text:
public void addRowSelection(java.util.List<Integer> rowKeys, java.util.List<java.util.List<Object>> rowDatas)


class_name: kd.bos.list.BillList
method_name: clearRowSelection
param_types_key: List,List,String
comment: @param `rowKeys` @param `rowDatas` @param `fieldKey` 区分行点击还是勾选框点击
signature_text:
public void clearRowSelection(java.util.List<Integer> rowKeys, java.util.List<java.util.List<Object>> rowDatas, String fieldKey)


class_name: kd.bos.list.BillList
method_name: clearRowSelection
param_types_key: List,List
comment: 清除选中行 @param `rowKeys` @param `rowDatas`
signature_text:
public void clearRowSelection(java.util.List<Integer> rowKeys, java.util.List<java.util.List<Object>> rowDatas)


class_name: kd.bos.list.BillList
method_name: doubleClickRow
param_types_key: List,List
comment: 双击行 @param `rowKeys` @param `rowDatas`
signature_text:
public void doubleClickRow(java.util.List<Integer> rowKeys, java.util.List<java.util.List<Object>> rowDatas)


class_name: kd.bos.list.BillList
method_name: getBackListColumns
param_types_key: List
comment: 星辰需要子类中覆盖该方法，修改protected @param `listColumns`
signature_text:
protected java.util.List<java.util.Map<String, Object>> getBackListColumns(java.util.List<java.util.Map<String, Object>> listColumns)


class_name: kd.bos.list.BillList
method_name: getClearSelectionListeners
comment: 获取取消选中行事件监听 @return 取消选中行事件监听
signature_text:
public java.util.List<java.util.function.Consumer<java.util.EventObject>> getClearSelectionListeners()


class_name: kd.bos.list.BillList
method_name: setClearSelectionListeners
param_types_key: List
comment: 设置取消选中行事件监听 @param `clearSelectionListeners` ` 取消选中行事件监听
signature_text:
public void setClearSelectionListeners(java.util.List<java.util.function.Consumer<java.util.EventObject>> clearSelectionListeners)


class_name: kd.bos.list.BillList
method_name: setCreateListColumnsListenerListeners
param_types_key: List
comment: 设置创建列监听器到列表 @param `createListColumnsListenerListeners`
signature_text:
public void setCreateListColumnsListenerListeners(java.util.List<CreateListColumnsListener> createListColumnsListenerListeners)


class_name: kd.bos.list.BillList
method_name: setListColumnCompareTypesSetListeners
param_types_key: List
comment: 设置表头字段比较符设置监听集合 @param `listColumnCompareTypesSetListeners` 表头字段比较符设置监听集合
signature_text:
public void setListColumnCompareTypesSetListeners(java.util.List<ListColumnCompareTypesSetListener> listColumnCompareTypesSetListeners)


class_name: kd.bos.list.BillList
method_name: setLongPressItemProp
param_types_key: int,String,boolean,boolean
signature_text: public void setLongPressItemProp(int index, String key, boolean visible, boolean lock)
comment:
在插件中，动态设置长按操作项的可见性与锁定性
@param `index` ` 卡片行索引
@param `key` ` 操作项标识
@param `visible` ` 可见性
@param `lock` ` 锁定性


class_name: kd.bos.list.CheckBoxListColumn
method_name: addFieldSet
param_types_key: Map,EntityType,boolean,boolean,boolean
signature_text:
public void addFieldSet(java.util.Map<String, ListField> fieldSet, EntityType entityType, boolean withoutDetailEntry, boolean isListShowParameter, boolean isLookUp)


class_name: kd.bos.list.column.ComboSearchValue
method_name: <init>
param_types_key: ListColumnMeta,String,List
comment: 构造函数 @param `listColumnMeta` 列表字段类型 @param `entityId` 实体标识 @param `values` 搜索值
signature_text:
public ComboSearchValue(kd.bos.list.column.ListColumnMeta listColumnMeta, String entityId, java.util.List<String> values)


class_name: kd.bos.list.column.CompareSearchValue
method_name: <init>
param_types_key: ListColumnMeta,String,String,List
signature_text:
public CompareSearchValue(kd.bos.list.column.ListColumnMeta listColumnMeta, String entityId, String compareId, java.util.List<String> values)

comment:
构造函数
@param `listColumnMeta` 列表字段类型
@param `entityId` 实体标识
@param `compareId` 比较符标识
@param `values` 值


class_name: kd.bos.list.column.ListColumnCompareService
method_name: getFormShowParameter
param_types_key: ListFormShowParameterIn
comment: 字段打开超链接时需要的打开参数 @param `listFormShowParameterIn` 参数上下文 @return 打开参数
signature_text:
default FormShowParameter getFormShowParameter(kd.bos.list.service.ListFormShowParameterIn listFormShowParameterIn)


class_name: kd.bos.list.column.ListColumnCompareService
method_name: getSchemeFilterColumnCompares
param_types_key: ListColumnMeta
comment: 获取方案比较符类型 @param `listColumnMeta` 列表字段类型
signature_text:
default ListColumnCompares getSchemeFilterColumnCompares(kd.bos.list.column.ListColumnMeta listColumnMeta)


class_name: kd.bos.list.column.ListColumnCompareService
method_name: packageData
param_types_key: PackageDataServiceIn
comment: 服务提供的包装数据方法 @param `packageDataServiceIn` 参数上下文 @return 包装数据结果
signature_text:
default kd.bos.list.service.PackageDataServiceResults packageData(kd.bos.list.service.PackageDataServiceIn packageDataServiceIn)


class_name: kd.bos.list.column.ListOperationColumnDesc
method_name: <init>
param_types_key: String,IDataEntityProperty,IDataEntityProperty
comment: 构造函数 @param `key` ` 字段标识 @param `srcFieldProp` ` 第一级字段 @param `fieldProp` ` 末级字段
signature_text:
public ListOperationColumnDesc(String key, IDataEntityProperty srcFieldProp, IDataEntityProperty fieldProp)


class_name: kd.bos.list.column.ListOperationColumnDesc
method_name: <init>
param_types_key: String,IDataEntityProperty,IDataEntityProperty,List
signature_text:
public ListOperationColumnDesc(String key, IDataEntityProperty srcFieldProp, IDataEntityProperty fieldProp, java.util.List<OperationColItem> items)

comment:
构造函数
@param `key` ` 字段标识
@param `srcFieldProp` ` 第一级字段
@param `fieldProp` ` 末级字段
@param `items` ` 操作项集合


class_name: kd.bos.list.CtsyListShowParameter
method_name: getRemoteConfig
param_types_key: FormShowParameter,String
comment: 获取远端表单元数据config @param `showParameter` @param `type`
signature_text:
public static java.util.Map<String, Object> getRemoteConfig(FormShowParameter showParameter, String type)


class_name: kd.bos.list.DateListColumn
method_name: addControlField
param_types_key: Map,IDataEntityProperty,String,String
signature_text:
protected void addControlField(java.util.Map<String, ListField> fieldSet, IDataEntityProperty srcFieldProp, String typePropName, String ormFieldName)


class_name: kd.bos.list.DynamicTextListColumn
method_name: <init>
param_types_key: String,LocaleString,List,String
signature_text:
public DynamicTextListColumn(String key, LocaleString caption, java.util.List<ListFieldMeta> listFieldMetas, String formatExpression)

comment:
构造函数
@param `key` ` 字段
@param `caption` ` 标题
@param `listFieldMetas` ` 格式化设置元数据
@param `formatExpression` ` 格式化设置表达式


class_name: kd.bos.list.events.BillListGetEntityTypeListener
method_name: getEntityType
param_types_key: GetEntityTypeEventArgs
signature_text: void getEntityType(GetEntityTypeEventArgs e)
comment:
单据列表获取主实体对象时触发此事件
插件可在此事件，向主实体动态注册新属性，以实现给表单动态添加字段的效果 特别注意：主实体对象是共享的，不允许直接修改主实体对象本身。必须先复制，然后在拷贝的主实体对象上动态注册新属性
@param `e` 事件参数，含默认的主实体对象


class_name: kd.bos.list.events.ListColumnFilter
method_name: <init>
param_types_key: String,CompareTypeEnum,String,List,List
signature_text:
public ListColumnFilter(String fieldName, CompareTypeEnum compareTypeEnum, String value, java.util.List<String> values, java.util.List<Object> ids)

comment:
构造函数
@param `fieldName`
@param `compareTypeEnum`
@param `value`
@param `values` 用于比较的值
@param `ids` 用于比较的id


class_name: kd.bos.list.events.ListColumnFilter
method_name: <init>
param_types_key: String,CompareTypeEnum,String,LogicOperate
signature_text:
public ListColumnFilter(String fieldName, CompareTypeEnum compareTypeEnum, String value, LogicOperate logicOperate)

comment:
构造函数
@param `fieldName` 过滤字段名
@param `compareTypeEnum` 比较符
@param `value` 值
@param `logicOperate` 逻辑比较符


class_name: kd.bos.list.events.ListColumnFilter
method_name: <init>
param_types_key: String,String,CompareTypeEnum,String,String,LogicOperate
signature_text:
public ListColumnFilter(String leftBracket, String fieldName, CompareTypeEnum compareTypeEnum, String value, String rightBracket, LogicOperate logicOperate)

comment:
构造函数
@param `leftBracket` ` 左括号
@param `fieldName` ` 过滤字段名
@param `compareTypeEnum` ` 比较符
@param `value` ` 值
@param `rightBracket` ` 左括号
@param `logicOperate` ` 逻辑比较符


class_name: kd.bos.list.events.ListRowClickEvent
method_name: <init>
param_types_key: Object,int,int,ListSelectedRowCollection,ListSelectedRow
signature_text:
public ListRowClickEvent(Object source, int row, int pageIndex, ListSelectedRowCollection listSelectedRowCollection, ListSelectedRow currentListSelectedRow)

comment:
构造方法
@param `source` 事件源
@param `row` 行
@param `pageIndex` 页面编号
@param `listSelectedRowCollection` 列表选择行数据集
@param `currentListSelectedRow` 选择的行数据


class_name: kd.bos.list.events.ListRowFilterEvent
method_name: addListColumnFilter
param_types_key: String,String,CompareTypeEnum,String,String,LogicOperate
signature_text:
public void addListColumnFilter(String leftBracket, String fieldName, CompareTypeEnum compareTypeEnum, String value, String rightBracket, LogicOperate logicOperate)

comment:
添加表头过滤值
@param `leftBracket` ` 做括号
@param `fieldName` ` 字段名
@param `compareTypeEnum` ` 比较符
@param `value` ` 值
@param `rightBracket` ` 右括号
@param `logicOperate` ` 逻辑比较符


class_name: kd.bos.list.events.SetCellFieldValueArgs
method_name: setSetCellFieldValueEvents
param_types_key: List
comment: 设置设置单元格事件监听集合 @param `setCellFieldValueEvents` 设置单元格事件监听集合
signature_text:
public void setSetCellFieldValueEvents(java.util.List<SetCellFieldValueEvent> setCellFieldValueEvents)


class_name: kd.bos.list.ITreeListView
method_name: addTreeNodeClickListener
param_types_key: TreeNodeClickListener
comment: 添加树节点点击监听事件 @param `treeNodeClickListener` 树节点点击监听事件
signature_text:
default void addTreeNodeClickListener(kd.bos.form.control.events.TreeNodeClickListener treeNodeClickListener)


class_name: kd.bos.list.ListColumn
method_name: addFieldSet
param_types_key: Map,EntityType,boolean,boolean,boolean
comment:
(non-Javadoc)
@see kd.bos.list.IListColumn#addFieldSet(java.util.Map, EntityType, boolean, boolean, boolean)#addFieldSet(java.util.Map, EntityType, boolean, boolean, boolean)


class_name: kd.bos.list.ListColumn
method_name: setClassName
param_types_key: String
signature_text: public void setClassName(String className)
comment:
(non-Javadoc)
@see kd.bos.list.IListColumn#setClassName(java.lang.String)#setClassName(java.lang.String)


class_name: kd.bos.list.ListColumn
method_name: setFieldName
param_types_key: String
signature_text: public void setFieldName(String fieldName)
comment:
(non-Javadoc)
@see kd.bos.list.IListColumn#setFieldName(java.lang.String)#setFieldName(java.lang.String)


class_name: kd.bos.list.ListColumn
method_name: setSeqColumnType
param_types_key: String
signature_text: public void setSeqColumnType(String seqColumnType)
comment:
(non-Javadoc)
@see kd.bos.list.IListColumn#setSeqColumnType(java.lang.String)#setSeqColumnType(java.lang.String)


class_name: kd.bos.list.ListColumnCompareType
method_name: <init>
param_types_key: String,LocaleString,String,int,boolean
signature_text:
public ListColumnCompareType(String id, LocaleString name, String value, int inputCtlType, boolean isEqual)

comment:
构造函数
@param `id` PK
@param `name` 名字
@param `value` 值
@param `inputCtlType` 录入类型
@param `isEqual` 是否是等于比较符


class_name: kd.bos.list.ListColumnCompareType
method_name: <init>
param_types_key: ListColumnCompareTypeParameter
signature_text:
public ListColumnCompareType(kd.bos.list.ListColumnCompareTypeParameter listColumnCompareTypeParameter)


class_name: kd.bos.list.ListFilterParameter
method_name: <init>
param_types_key: List,List,String
comment: 列表过滤参数构造函数 @param `selectFields` ` 查询字段 @param `qFilters` ` 过滤条件 @param `orderBy` ` 构造函数
signature_text:
public ListFilterParameter(java.util.List<String> selectFields, java.util.List<QFilter> qFilters, String orderBy)


class_name: kd.bos.list.plugin.AbstractListPlugin
method_name: filterContainerAfterSearchClick
param_types_key: FilterContainerSearchClickArgs
signature_text: public void filterContainerAfterSearchClick(FilterContainerSearchClickArgs args)
comment:
过滤容器搜索点击后的处理方法,此事件发生在过滤条件解析后，主要用于点击过滤条件时联动修改其他过滤字段控件, 修改前已先在filterContainerInit事件将要修改的字段用全局变量进行缓存
@param `args` 过滤容器搜索点击参数


class_name: kd.bos.list.plugin.AbstractListPlugin
method_name: filterContainerSetBaseDataSearchClosed
param_types_key: SetFilterContainerBaseDataSearchClosedEvent
signature_text:
public void filterContainerSetBaseDataSearchClosed(SetFilterContainerBaseDataSearchClosedEvent args)


class_name: kd.bos.list.plugin.IListPlugin
method_name: beforeCreateListColumns
param_types_key: BeforeCreateListColumnsArgs
signature_text: default void beforeCreateListColumns(BeforeCreateListColumnsArgs args)
comment:
创建列表列前触发 示例：beforeCreateListColumns
</code>
`
`
`
@param `args` ` 创建列表前事件参数 BeforeCreateListColumnsArgs


class_name: kd.bos.list.plugin.IListPlugin
method_name: beforeCreateListDataProvider
param_types_key: BeforeCreateListDataProviderArgs
signature_text: default void beforeCreateListDataProvider(BeforeCreateListDataProviderArgs args)
comment:
创建列表数据提供者前触发 示例：beforeCreateListDataProvider(自定义取数)
</code>
`
`
`
@param `args` ` 创建列表数据提供者参数 BeforeCreateListDataProviderArgs


class_name: kd.bos.list.plugin.IListPlugin
method_name: beforePackageData
param_types_key: BeforePackageDataEvent
signature_text: default void beforePackageData(BeforePackageDataEvent e)
comment:
数据包装前事件,数据包为整体数据包 示例：beforePackageData(注意不要修改基础资料的引用属性，因为会打乱缓存数据，此方法只适合非基础资料字段修改)
</code>
`
`
`
@param `e` ` 数据再包装事件参数 BeforePackageDataEvent


class_name: kd.bos.list.plugin.IListPlugin
method_name: packageData
param_types_key: PackageDataEvent
signature_text: default void packageData(PackageDataEvent e)
comment:
数据包装事件,用于修改发送给前端之前的数据，用于单元格填值 示例：packageData(此方法为单元格填值，操作列设置字体颜色和根据条件修改文本字段内容)
</code>
`
`
`
@param `e` ` 数据包装事件参数 PackageDataEvent


class_name: kd.bos.list.plugin.IListPlugin
method_name: setFilter
param_types_key: SetFilterEvent
signature_text: default void setFilter(SetFilterEvent e)
comment:
设置过滤条件 示例：setFilter(如果是树型列表的过滤条件添加建议重载buildTreeListFilter)
</code>
`
`
````````
@param `e` ` 设置过滤条件事件 SetFilterEvent


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: addCustomViews
param_types_key: AddCustomViewEvent
signature_text: void addCustomViews(AddCustomViewEvent addCustomViewEvent)
comment:
用户在列表添加自定义视图 示例：脚本插件
varplugin=newListPlugin({
addCustomViews:function(e) {
CustomView customView=newCustomView();
customView.setCustomView("customView");
// 接下来可以在CustomView添加自定义控件实现业务逻辑// 最后将视图添加进列表
e.setCustomView(customView);
}
@param `addCustomViewEvent` AddCustomViewEvent


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: baseDataColumnDependFieldSet
param_types_key: BaseDataColumnDependFieldSetEvent
signature_text: void baseDataColumnDependFieldSet(BaseDataColumnDependFieldSetEvent args)
comment:
设置常用过滤的基础资料依赖字段， 用于基础资料字段的之间的级联
比如，常用过滤有两个基础资料，一个币别，一个组织，币别字段依赖于组织，最后一个参数是基础资料之间的外键关系字段 示例:
@OverridepublicvoidbaseDataColumnDependFieldSet(BaseDataColumnDependFieldSetEvent args) {
args.addDependField("currencyfield.name", "orgfield1.name", "id");
super.baseDataColumnDependFieldSet(args);
}
@param `args` BaseDataColumnDependFieldSetEvent


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: filterColumnSetFilter
param_types_key: SetFilterEvent
signature_text: void filterColumnSetFilter(SetFilterEvent args)
comment:
过滤字段上的基础资料字段过滤条件调整事件
示例：filterColumnSetFilter
@OverridepublicvoidfilterColumnSetFilter(SetFilterEvent args) {
System.err.println("filterColumnSetFilter");
if ("basedatafield2.name".equals(args.getFieldName()))
args.addCustomQFilter(newQFilter("name", QFilter.equals, "test123"));
// 基础资料依赖于上面的选择字段orgfield1,将orgfield1的已选中值添加到basedatafield2if ("basedatafield2.name".equals(args.getFieldName())) {
FilterColumnSetFilterEventargs2= (FilterColumnSetFilterEvent) args;
args.addCustomQFilter(newQFilter("name", QFilter.equals, args2.getCommonFilterValue("orgfield1.number")));
}
super.filterColumnSetFilter(args);
}
@param `args` 通过参数设置主业务组织，特殊数据权限，数据权限，自定义过滤条件 SetFilterEvent


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: filterContainerAfterSearchClick
param_types_key: FilterContainerSearchClickArgs
signature_text: void filterContainerAfterSearchClick(FilterContainerSearchClickArgs args)
comment:
过滤容器搜索点击后的处理方法,此事件发生在过滤条件解析后，主要用于点击过滤条件时联动修改其他过滤字段控件, 修改前已先在filterContainerInit事件将要修改的字段用全局变量进行缓存
@param `args` 过滤容器搜索点击参数 FilterContainerSearchClickArgs


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: filterContainerBeforeF7Select
param_types_key: BeforeFilterF7SelectEvent
signature_text: void filterContainerBeforeF7Select(BeforeFilterF7SelectEvent args)
comment:
过滤容器内F7弹出前的处理方法 示例：
@OverridepublicvoidfilterContainerBeforeF7Select(BeforeFilterF7SelectEvent args) {
System.err.println("filterContainerBeforeF7Select");
if("basedatafield2.name".equals(args.getFieldName()))
args.addCustomQFilter(newQFilter("name", QFilter.equals,"test123"));
super.filterContainerBeforeF7Select(args);
}
@param `args` 过滤容器内F7弹出前触发参数 BeforeFilterF7SelectEvent


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: filterContainerInit
param_types_key: FilterContainerInitArgs
signature_text: void filterContainerInit(FilterContainerInitArgs args)
comment:
过滤容器初始化的处理方法,页面加载和点击搜索时触发 示例：
@OverridepublicvoidfilterContainerInit(FilterContainerInitArgs args) {
// 获取 datefield字段FilterColumnfilterColumn= args.getFilterColumn("datefield");
// 给字段设置默认值
filterColumn.setDefaultValues("2019-1-30", "2019-1-31");
// 创建一个textfield字段FilterColumnfilterColumn2=newFilterColumn("textfield");
// 添加到字段元数据集合
args.addFilterColumn(filterColumn2);
// 创建一个combofield 通用过滤字段CommonFilterColumncommonFilterColumn=newCommonFilterColumn("combofield");
// 添加到字段元数据集合
args.addFilterColumn(commonFilterColumn);
// 创建一个combofield 方案过滤字段SchemeFilterColumnschemeFilterColumn=newSchemeFilterColumn("combofield");
// 添加到字段元数据集合
args.addFilterColumn(schemeFilterColumn);
super.filterContainerInit(args);
}
@param `args` FilterContainerInitArgs


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: filterContainerSearchClick
param_types_key: FilterContainerSearchClickArgs
signature_text: void filterContainerSearchClick(FilterContainerSearchClickArgs args)
comment:
过滤容器搜索点击的处理方法,此事件之前先触发filterContainerInit 示例：
@OverridepublicvoidfilterContainerSearchClick(FilterContainerSearchClickArgs args) {
// 添加常用过滤条件（日期常量“今天”）
args.addConstFilter("datefield", CompareTypeEnum.TODAY);
// 添加快速过滤条件
args.addFastFilter("textfield", "test");
// 添加方案过滤条件
args.addFilter("textfield", CompareTypeEnum.EQUAL, "123");
super.filterContainerSearchClick(args);
}
@param `args` 过滤容器搜索点击参数 FilterContainerSearchClickArgs


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: filterContainerSetBaseDataSearchClosed
param_types_key: SetFilterContainerBaseDataSearchClosedEvent
signature_text: void filterContainerSetBaseDataSearchClosed(SetFilterContainerBaseDataSearchClosedEvent args)
comment:
新版过滤模式下提供了基础资料模糊查询功能，如果不需要此功能可以通过重写此方法来关闭
示例：通过脚本插件关闭字段名为basedatafield的基础资料字段的模糊查询功能
varplugin=newListPlugin({
filterContainerSetBaseDataSearchClosed:function(e) {
e.addFieldName("basedatafield");
}
@param `args`


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: listColumnCompareTypesSet
param_types_key: ListColumnCompareTypesSetEvent
signature_text: void listColumnCompareTypesSet(ListColumnCompareTypesSetEvent args)
comment:
应用范围列表表头字段过滤比较符排序列表表头下拉列表移除部分字段功能说明 示例场景： 1. 列表上需要将文本字段（textfield）的第一个比较符移除掉 2. 列表上需要将下拉列表字段（combofield）的第一项内容移除掉 示例：
@OverridepublicvoidlistColumnCompareTypesSet(ListColumnCompareTypesSetEvent args) {
ListColumnCompareType[] array;
if ("textfield".equals(args.getListFieldKey())) {
args.getListColumnCompareTypes().remove(0);
array = args.getListColumnCompareTypes().toArray(newListColumnCompareType[0]);
Arrays.sort(array, (o1, o2) -> {
return Integer.valueOf(o1.getId()).compareTo(Integer.valueOf(o2.getId()));
});
args.setListColumnCompareTypes(Arrays.asList(array));
} elseif ("combofield".equals(args.getListFieldKey())) {
args.getComboItems().remove(0);
}
super.listColumnCompareTypesSet(args);
}
@param `args` 插件参数 ListColumnCompareTypesSetEvent


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: setEnableCustomSum
param_types_key: EnableCustomSumEvent
signature_text: void setEnableCustomSum(kd.bos.list.events.EnableCustomSumEvent args)
comment:
通过插件方式关闭已选合计
示例：脚本插件
varplugin=newListPlugin({
setEnableCustomSum:function(e) {
e.setEnableCustomSum(true);
}
@param `args` EnableCustomSumEvent


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: setIndexMode
param_types_key: IndexModeSetEvent
signature_text: void setIndexMode(IndexModeSetEvent args)
comment:
基础资料F7界面默认开启简单分页模式，有些场景需要开启跳页模式，使用此方法开启
示例：脚本插件
varplugin=newListPlugin({
setIndexMode:function(e) {
e.setIndexMode(true);
}
@param `args` IndexModeSetEvent


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: setMultiSortFields
param_types_key: MultiFieldsSortEvent
signature_text: void setMultiSortFields(MultiFieldsSortEvent args)
comment:
背景 业务员想要自定义列表的多个字段排序，这样就可以按照自己关注的数据维度进行列表数据查看。
2、支持排序的字段范围 可开放的字段为列表设计器上的单头字段（除图片、附件、基础资料、多选基础资料、多类别基础资料外），需要在插件中指定字段范围。
2.1 监听操作项点击事件 示例： multifieldsort即新建操作项标识
/** 当标识为multifieldsort的按钮点击时触发多字段排序请求
@OverridepublicvoiditemClick(ItemClickEvent evt) {
if ("multifieldsort".equals(evt.getItemKey())) {
this.getView().invokeOperation("multifieldsort");
}
super.itemClick(evt);
}
2.2 指定能够用于多字段排序的表格列表字段
@OverridepublicvoidsetMultiSortFields(MultiFieldsSortEvent multiFieldsSortEvent) {
multiFieldsSortEvent.addMultiSortField("textfield");
multiFieldsSortEvent.addMultiSortField("datefield");
super.setMultiSortFields(multiFieldsSortEvent);
}
@param `args` 插件参数 MultiFieldsSortEvent


class_name: kd.bos.list.plugin.IPCListPlugin
method_name: sumDataLoadOnFirstSet
param_types_key: SumDataLoadOnFirstSetEvent
signature_text: void sumDataLoadOnFirstSet(SumDataLoadOnFirstSetEvent args)
comment:
列表“计算合计”需要用户点击后触发， 如果数据量不是太大，没有性能问题，需要优化用户体验时，可以重写此方法， 用于页面加载时同时“计算合计” 示例：
@OverridepublicvoidsumDataLoadOnFirstSet(SumDataLoadOnFirstSetEvent args) {
args.setSumDataLoadOnFirst(true);
super.sumDataLoadOnFirstSet(args);
}
@param `args` 插件参数 SumDataLoadOnFirstSetEvent


class_name: kd.bos.list.plugin.StandardTreeListPlugin
method_name: getChildrenDynamicObject
param_types_key: BeforeDoOperationEventArgs,BasedataEntityType
comment: 获取下级节点数据集合 @param `args` 操作之前事件参数 @param `entityType` @return 下级节点数据集合
signature_text:
public DynamicObjectCollection getChildrenDynamicObject(BeforeDoOperationEventArgs args, BasedataEntityType entityType)


class_name: kd.bos.list.plugin.StandardTreeListPlugin
method_name: getOperationData
param_types_key: BeforeDoOperationEventArgs,BasedataEntityType
comment: 获取操作选中数据 @param `args` 操作之前事件参数 @param `entityType` @return 操作选中数据
signature_text:
public ListSelectedRowCollection getOperationData(BeforeDoOperationEventArgs args, BasedataEntityType entityType)


class_name: kd.bos.list.ViewCommonUtil
method_name: analysisSearch2Sql
param_types_key: String,String
comment: @param `billFormId` ` 单据编号 @param `searchContent` ` 分析内容
signature_text:
public static String analysisSearch2Sql(String billFormId, String searchContent) throws java.io.IOException


class_name: kd.bos.list.ViewCommonUtil
method_name: checkCompare
param_types_key: List
comment: 检测是否为智能搜索, 智能搜索的需要通过schema解析filter @param `fastFilterList`
signature_text:
public static boolean checkCompare(java.util.List<java.util.Map<String, java.util.List<Object>>> fastFilterList)


class_name: kd.bos.list.ViewCommonUtil
method_name: createContainerListColumns
param_types_key: Container,ControlContext
comment: 递归遍历单据列表控件将遍历结果返回 @param `container` 单据列表控件 @param `context` 控件上下文 @return 遍历结果
signature_text:
public static BeforeCreateListColumnsArgs createContainerListColumns(Container container, kd.bos.list.ControlContext context)


class_name: kd.bos.list.ViewCommonUtil
method_name: createDecimalEditor
param_types_key: Map,Map,Map
comment: 为列表数字字段设置editor @param `column` @param `editor`
signature_text:
protected static void createDecimalEditor(java.util.Map<String, Object> column, java.util.Map<String, Object> editor, java.util.Map<String, java.util.Map<String, Object>> decimalFieldMap)


class_name: kd.bos.list.ViewCommonUtil
method_name: expandListColumns
param_types_key: List,List
comment: 展开列信息，将合并列表字段和动态文本字段的子元素展开到集合中 @param `controlItems` 传入的列信息 @param `newControlItems` 展开的列信息
signature_text:
public static void expandListColumns(java.util.List<IListColumn> controlItems, java.util.List<IListColumn> newControlItems)


class_name: kd.bos.list.ViewCommonUtil
method_name: getCompareOpByNo
param_types_key: String
comment: @param `billFormId` ` 单据编号
signature_text:
public static java.util.List<NlpAnalysisHttpRequest.EntityMeta.FieldBean> getCompareOpByNo(String billFormId)


class_name: kd.bos.list.ViewCommonUtil
method_name: getEntityFields
param_types_key: EntityType,List,List
signature_text:
public static java.util.List<IListColumn> getEntityFields(EntityType entityType, java.util.List<IListColumn> controlItems, java.util.List<EntryEntityDto> entryEntityDtos)

comment:
获取列表当前指定分录要显示的字段列表
@param `entityType` ` 实体类型
@param `controlItems` ` 列表配置的所有字段
@param `entryEntityDtos` ` 分录列表
@return 要显示的字段列表


class_name: kd.bos.list.ViewCommonUtil
method_name: getEntityFields
param_types_key: EntityType,List,String,List
signature_text:
public static java.util.List<IListColumn> getEntityFields(EntityType entityType, java.util.List<IListColumn> controlItems, String entryEntity, java.util.List<EntryEntityDto> entryEntityDtos)

comment:
获取列表当前指定分录要显示的字段列表
@param `entityType` ` 实体类型
@param `controlItems` ` 列表配置的所有字段
@param `entryEntity` ` 指定分录（默认为第一个分录）
@param `entryEntityDtos` ` 分录列表
@return 要显示的字段列表


class_name: kd.bos.list.ViewCommonUtil
method_name: getEntityFields
param_types_key: EntityType,List,List,List,boolean,List
signature_text:
protected static java.util.List<IListColumn> getEntityFields(EntityType entityType, java.util.List<IListColumn> controlItems, java.util.List<java.util.Map<String, Object>> userConfigListColumns, java.util.List<EntryEntityDto> entryEntityDtos, boolean isIncludeComplexListColumn, java.util.List<String> blackFields)

comment:
获取列表当前指定分录要显示的字段列表
@param `entityType` ` 实体类型
@param `controlItems` ` 列表配置的所有字段
@param `userConfigListColumns` ` 前端传过来的列表用户配置（与设计器设置进行合并,用户配置优先）
@param `entryEntityDtos` ` 分录列表
@return 要显示的字段列表


class_name: kd.bos.list.ViewCommonUtil
method_name: getFirstEntryEntity
param_types_key: EntityType,List
comment: 获取第一个分录 @param `entityType` ` 实体类型 @param `entryEntityDtos` ` 分录列表 @return 第一个分录
signature_text:
public static String getFirstEntryEntity(EntityType entityType, java.util.List<EntryEntityDto> entryEntityDtos)


class_name: kd.bos.list.ViewCommonUtil
method_name: getFirstEntryEntity
param_types_key: String,List
comment: 获取第一个分录 @param `entityTypeName` ` 实体名称 @param `entryEntityDtos` ` 分录列表 @return 第一个分录
signature_text:
public static String getFirstEntryEntity(String entityTypeName, java.util.List<EntryEntityDto> entryEntityDtos)


class_name: kd.bos.list.ViewCommonUtil
method_name: getFullEntryEntityDtos
param_types_key: List,MainEntityType
comment: 集合中可能没有父单据体，添加 @param `entryEntityDtos`
signature_text:
public static java.util.List<EntryEntityDto> getFullEntryEntityDtos(java.util.List<EntryEntityDto> entryEntityDtos, MainEntityType mainEntityType)


class_name: kd.bos.list.ViewCommonUtil
method_name: getValidEntryListByFilterColumn
param_types_key: EntityType,List
comment: 根据实体和过滤列信息获取分录信息 @param `entityType` 实体 @param `filterColumns` 过滤列信息
signature_text:
public static java.util.List<EntryEntityDto> getValidEntryListByFilterColumn(EntityType entityType, java.util.List<FilterColumn> filterColumns)


class_name: kd.bos.list.ViewCommonUtil
method_name: getValidEntryListByListColumn
param_types_key: EntityType,List
signature_text:
public static java.util.List<EntryEntityDto> getValidEntryListByListColumn(EntityType entityType, java.util.List<IListColumn> controlItems)

comment:
获取有效分录(有些单据分录在列表设置器没有配置列表字段，所以要去掉)
@param `entityType` ` 实体类型
@param `controlItems` ` 列表字段配置
@return 有效分录


class_name: kd.bos.list.ViewCommonUtil
method_name: setComboListColumnEditor
param_types_key: IListColumn,ComboProp,Map
comment: 构造发送到前端的下拉列表数据 @param `col` 列信息 @param `comboProp` 列绑定的下拉列表属性 @param `editor` 前端数据集合Map
signature_text:
public static void setComboListColumnEditor(IListColumn col, ComboProp comboProp, java.util.Map<String, Object> editor)


class_name: kd.bos.list.ViewCommonUtil
method_name: setComboListColumnEditor
param_types_key: int,ComboProp,Map
signature_text:
public static void setComboListColumnEditor(int showStyle, ComboProp comboProp, java.util.Map<String, Object> editor)

comment:
根据显示方式构造发送到前端的下拉列表数据
@param `showStyle` 显示方式
@param `comboProp` 列绑定的下拉列表属性
@param `editor` 前端数据集合Map


class_name: kd.bos.logging.Log
method_name: debug
param_types_key: String,Object,Object
signature_text: void debug(String msg, Object arg1, Object arg2)
comment:
通过多个占位{}符输出调试信息 log.debug("Found {} matching '{}'", records, filter); will return the string "Found records matching v"


class_name: kd.bos.logging.Log
method_name: error
param_types_key: String,Object,Object
signature_text: void error(String msg, Object arg1, Object arg2)
comment:
log.error("Found {} matching '{}'", records, filter); will return the string "Found records matching records"


class_name: kd.bos.logging.Log
method_name: info
param_types_key: String,Object,Object
signature_text: void info(String msg, Object arg1, Object arg2)
comment:
log.info("Found {} matching '{}'", records, filter); will return the string "Found records matching filter"


class_name: kd.bos.logging.Log
method_name: warn
param_types_key: String,Object,Object
signature_text: void warn(String msg, Object arg1, Object arg2)
comment:
log.warn("Found {} matching '{}'", records, filter); will return the string "Found records matching records"


class_name: kd.bos.login.thirdauth.app.ThirdAppAuthtication
method_name: appAuthtication
param_types_key: HttpServletRequest,Account
signature_text:
public abstract kd.bos.login.thirdauth.app.AppAuthResult appAuthtication(HttpServletRequest request, Account currentCenter)

comment:
url请求时，如果执行isNeedHandle的方法返回true，则会执行appAuthtication认证逻辑，实现和第三方系统的认证处理逻辑并返回用户信息及账号类型
示例代码：
AppAuthResultresult=newAppAuthResult();
result.setSucceed(false);
Stringcode= request.getParameter("code");//第三方用户身份标识 参数名根据实际情况而定//现场需自行实现下面逻辑，将用户的授权码传输到第三方办公APP认证系统进行解析，从而实现对授权码进行识别和获取用户信息，request包含请求的授权码MapauthUserInfo= DemoUtils.getAuthUserInfo(code);// 此逻辑需现场实现通过调用第三方办公APP接口获取用户身份信息  请勿复制使用if (authUserInfo != null) {
result.setSucceed(true);
result.setUserFlag(authUserInfo.getMobile());// 用户标识，包括手机号、邮箱、用户名
result.setUserType(UserType.MOBILE_PHONE); // 用户类型 枚举类UserType 对应用户标识
}
return result;
@param `request` url请求的HttpServletRequest对象
@param `currentCenter` url请求的数据中心
@return 返回认证结果，认证结果的账号和账号类型需要一致


class_name: kd.bos.login.thirdauth.app.ThirdAppAuthtication
method_name: isNeedHandle
param_types_key: HttpServletRequest,Account
signature_text: public abstract boolean isNeedHandle(HttpServletRequest request, Account currentCenter)
comment:
URL的请求会先执行二开免登插件，判断此url是否需要执行appAuthtication认证逻辑
注意：星瀚的url请求时，都会执行此方法，此方法不要执行复杂逻辑，也不要执行数据库的操作
示例代码：
booleanisNeed=false;//是否需要通过第三方办公APP插件认证//示例代码 仅供参考Stringcode= request.getParameter("code");//第三方用户身份标识 参数名根据实际情况而定StringthirdAppType= request.getParameter("thirdAppType");//请求 url携带的判断第三方办公APP认证插件类型  示例：金蝶云使用jindieyun 可自行定义传参用于判断if(StringUtils.isNotEmpty(code)&& thirdAppType.equals("jindieyun")){
isNeed=true;
}
return isNeed;
@param `request` url请求的HttpServletRequest对象
@param `currentCenter` url请求的数据中心
@return 返回boolean值，true是需要执行appAuthtication方法，否则返回false


class_name: kd.bos.login.thirdauth.ThirdSSOAuthHandler
method_name: callTrdSSOLogin
param_types_key: HttpServletRequest,HttpServletResponse,String
signature_text:
void callTrdSSOLogin(HttpServletRequest servletRequest, HttpServletResponse servletResponse, String backUrl)

comment:
认证失败，通过重写此方法实现重定向第三方的登录页
@param `servletRequest` HttpServletRequest对象
@param `servletResponse` HttpServletResponse对象
@param `backUrl` 默认空


class_name: kd.bos.login.thirdauth.ThirdSSOAuthHandler
method_name: getTrdSSOAuth
param_types_key: HttpServletRequest,HttpServletResponse
signature_text:
kd.bos.login.thirdauth.UserAuthResult getTrdSSOAuth(HttpServletRequest servletRequest, HttpServletResponse servletResponse)

comment:
获取单点登录验证结果
//返回的认证结果
UserAuthResult result=newUserAuthResult();
result.setSucess(false);
//二开需自行实现下面逻辑，将用户的认证凭据传输到认证系统进行认证，从而实现对认证凭据进行识别和获取用户信息，request包含请求的认证凭据
String phone=SSODemo.getLoginPhone(request);//此逻辑需二开实现if(phone!=null){
//当前返回类型手机，用户名，邮箱、工号
result.setUserType(UserProperType.Mobile); //用户信息标识
result.setUser(phone);
result.setSucess(true);
}
@param `servletRequest` HttpServletRequest对象
@param `servletResponse` HttpServletResponse对象
@return 认证结果，返回的认证结果的账号和账号类型需要匹配 示例代码：


class_name: kd.bos.login.thirdauth.ThirdSSOAuthHandler
method_name: isNeedSSOAuth4UserChange
param_types_key: HttpServletRequest
signature_text: default boolean isNeedSSOAuth4UserChange(HttpServletRequest request)
comment:
是否需要 SSO 认证: 此接口用作检查用户身份是否发生切换, 默认不开启. 如果 SSO 认证服务器需要在同一浏览器中做用户切换, 则需要开启 注意: 如果写死为 true, 则每个请求都会与 SSO 认证服务器通信, 所以需要根据约定的 SSO 回调请求参数标识, 来判定是否要进行认证
使用示例: String ticket = request.getParameter("ticket");
if(StringUtils.isNotEmpty(ticket)){
return true;
}
return false;
@param `request` HttpServletRequest请求对象
@return 是否需要切换用户身份会话


class_name: kd.bos.login.thirdauth.ThirdSSOAuthHandler
method_name: processSucceedLogin
param_types_key: HttpServletRequest,String
signature_text: default void processSucceedLogin(HttpServletRequest request, String globalSessionId)
comment:
单点登录认证成功，并且创建会话后，可以通过此方法处理部分特殊逻辑
@param `request` HttpServletRequest对象
@param `globalSessionId` 会话session标识


class_name: kd.bos.login.utils.AgentUtil
method_name: isMobile
param_types_key: HttpServletRequest
signature_text: public static boolean isMobile(HttpServletRequest request)
comment:
通过解析HTTP请求头中的User-Agent字段判断客户端是否为移动端设备
@param `request` HTTP请求的HttpServletRequest对象
@return 返回一个boolean值，true是移动端，false是非移动端


class_name: kd.bos.login.utils.sms.SMSSender
method_name: sendMessage
param_types_key: String,String,String,Lang
signature_text: default boolean sendMessage(String phone, String code, String signature, Lang lang)
comment:
发送短信
@param `phone` 手机号
@param `code` 验证码
@param `signature` 短信签名
@param `lang` 当前语言
@return 返回boolean值，是否发送成功


class_name: kd.bos.message.api.IMessageService
method_name: dingdingMessage
param_types_key: DingdingMessageInfo
signature_text: public default java.util.Map<String, Object> dingdingMessage(DingdingMessageInfo messageInfo)
comment:
钉钉消息处理方法（根据messageInfo中的messageType来确定执行什么操作：create:推送 recall:撤回 check:查看推送结果 create：推送钉钉消息 check ：查看消息推送结果，备注：此操作在dingdingMessage内部没做任何逻辑处理，返回 null recall：撤回，备注：此操作在dingdingMessage内部没做任何逻辑处理，返回 null ）
@param `messageInfo` 钉钉消息对象 DingdingMessageInfo
@return 消息处理的结果 {result: true 代表成功 false 代表失败，code：0 代表成功 400 代表失败 ，description ：处理结果描述}


class_name: kd.bos.message.api.IMessageService
method_name: dingdingTodo
param_types_key: DingdingTodoInfo
signature_text: public default java.util.Map<String, Object> dingdingTodo(DingdingTodoInfo todoInfo)
comment:
钉钉待办处理方法（创建待办，处理待办，删除待办,根据todoInfo中的todoType来确定执行什么操作 : create :创建 ；deal：处理； delete：删除）
@param `todoInfo` 待办信息对象 DingdingTodoInfo
@return 待办处理的结果 {result: true 代表成功 false 代表失败，code：0 代表成功 400 代表失败 ，description ：处理结果描述}


class_name: kd.bos.message.api.IMessageService
method_name: dingdingUpdateProcessInstanceState
param_types_key: String,String
signature_text:
public default java.util.Map<String, Object> dingdingUpdateProcessInstanceState(String state, String dingProcessInstId)

comment:
更新钉钉实例状态
@param `state` 更新的状态，{terminate（终止）| 其他值（完成）}
@param `dingProcessInstId` 钉钉流程实例
@return 结果 {result: true 代表成功 false 代表失败，code：0 代表成功 400 代表失败 ，description ：处理结果描述}


class_name: kd.bos.message.api.IMessageService
method_name: getChannelsByMsgTypeNum
param_types_key: String
signature_text: public default String getChannelsByMsgTypeNum(String msgTypeNum)
comment:
根据消息类型，获取该消息类型的渠道设置
@param `msgTypeNum` 消息类型编码
@return 该消息类型的渠道 {sysnotice | weixinqy | dingding | welink | yunzhijiaup | yunzhijiaeco | kingdee_sky | OATest | sms | email | yunzhijia}


class_name: kd.bos.message.api.IMessageService
method_name: getHashTag
param_types_key: String
signature_text: public default String getHashTag(String accountId)
comment:
工作流获取消息渠道版本更新hashtag
@param `accountId` 请求的账户ID
@return 消息渠道版本更新hashtag（hashtag 是由消息渠道的修改时间的hash值生成的）


class_name: kd.bos.message.api.IMessageService
method_name: invokeMsgBizPlugin
param_types_key: String,String,Object[]
signature_text:
default Object invokeMsgBizPlugin(String clazz, String method, Object[] args) throws NoSuchMethodException, IllegalAccessException, java.lang.reflect.InvocationTargetException

comment:
消息中心业务插件调用方法
@param `clazz` 插件类
@param `method` 插件类的方法
@param `args` 方法的入参
@return 执行插件方法的返回结果
@return 插件类返回结果。具体类型根据插件方法的返回值而定
@throws `NoSuchMethodException` 找不到匹配的方法
@throws `IllegalAccessException` 没有访问权限
@throws `InvocationTargetException` 方法执行抛异常


class_name: kd.bos.message.api.IMessageService
method_name: queryDDTask
param_types_key: String,long,long,long
signature_text:
public default java.util.Map<String, Object> queryDDTask(String userId, long offSet, long count, long status)

comment:
查询钉钉任务待办
@param `userId` 用户id
@param `offSet` 查询起始（第几条开始查）
@param `count` 查询数量
@param `status` 查询的任务状态 (0：待处理 | -1：已经移除)
@return 结果 {errcode：错误返回码 ，errmsg：错误信息 ，result：返回查询的数据}


class_name: kd.bos.message.api.IMessageService
method_name: sendWeixinqyMessage
param_types_key: WeixinqyMessageInfo
signature_text: public default java.util.Map<String, Object> sendWeixinqyMessage(WeixinqyMessageInfo messageInfo)
comment:
推送企业微信消息
@param `messageInfo` 企业微信消息对象WeixinqyMessageInfo
@return 结果 {result: true 代表成功，false 代表失败，code：0 代表成功 400 代表失败 ，description ：处理结果描述}


class_name: kd.bos.message.api.IMsgEventListener
method_name: calculateInterveneMessage
param_types_key: Map
signature_text: default boolean calculateInterveneMessage(java.util.Map<String, Object> param)
comment:
消息推送干预操作接口，业务可以实现该接口，干预本业务下消息发送逻辑
@param `param` 包含四种类型信息 entityNumber |businessKey |msgId |channelMsgId
@return boolean 业务通过计算之后，判断该消息是仍需要发送，continueSend=[true|false]


class_name: kd.bos.message.api.IMsgEventListener
method_name: calculateMessageContent
param_types_key: Map
signature_text: default java.util.Map<String, Object> calculateMessageContent(java.util.Map<String, Object> param)
comment:
业务计算消息模板插件
@param `param` 包含 entityNumber |businessKey
@return 返回值需要确保是Map对象 Map key="messageTitle" value=(ILocalString messageTitle = new LocalString()) key="messageContent" value=(ILocalString messageContent = new LocalString())


class_name: kd.bos.message.api.IMsgEventListener
method_name: getMessageQuantitySummaryByPlugin
param_types_key: Map
signature_text:
default DynamicObjectCollection getMessageQuantitySummaryByPlugin(java.util.Map<String, Object> param)

comment:
获取首页卡片数量统计和消息中心菜单
@param `param` dateType {tohandle/handled} , userIds 用户id
@return 获取首页按业务单据类型和用户分组统计的单据数量


class_name: kd.bos.message.api.IMsgEventListener
method_name: subscribeFailMsgResult
param_types_key: Long,Map
signature_text: default void subscribeFailMsgResult(Long msgId, java.util.Map<String, Object> data)
comment:
订阅渠道失败消息 对应事件subscribeFailMsg
channelMsgId ：xxxxx,    - 渠道消息ID(t_wf_msgfail主键)
state : "success | fail",   - 消息状态
errorinfo : "xxxx",   - 失败消息原因
retries : 0,   - 失败消息重试次数
@param `msgId` 消息id(t_wf_message主键)
@param `data` 失败消息信息：


class_name: kd.bos.message.api.IMsgEventListener
method_name: subscribeSuccessMsgResult
param_types_key: Long,Map
signature_text: default void subscribeSuccessMsgResult(Long msgId, java.util.Map<String, Object> data)
comment:
订阅渠道成功消息 对应事件subscribeSuccessMsg
channelMsgId ：xxxxx,    - 渠道消息ID(t_wf_msgfail主键)
state : "success | fail",   - 消息状态
errorinfo : "xxxx",   - 失败消息原因
retries : 0,   - 失败消息重试次数
@param `msgId` 消息id(t_wf_message主键)
@param `data` 成功消息信息：


class_name: kd.bos.metadata.botp.WriteBackRuleReader
method_name: buildXml
param_types_key: String,boolean,boolean
signature_text: public String buildXml(String ruleId, boolean runtime, boolean onlyLocaleValue)
comment:
该方法直接从WriteBackRuleReader可以获取到反写规则xml，是为了解耦WriteBackRuleMetadata和WriteBackRuleTemplate的引用
@param `ruleId`
@param `runtime`
@param `onlyLocaleValue`


class_name: kd.bos.metadata.botp.WriteBackRuleReader
method_name: loadMeta
param_types_key: String,boolean,UpgradeStrategy
signature_text:
public kd.bos.metadata.botp.WriteBackRuleMetadata loadMeta(String id, boolean runtime, UpgradeStrategy upgradeStrategy)


class_name: kd.bos.metadata.botp.WriteBackRuleReader
method_name: loadMeta
param_types_key: String,boolean,boolean,UpgradeStrategy
signature_text:
public kd.bos.metadata.botp.WriteBackRuleMetadata loadMeta(String id, boolean runtime, boolean isBaseMeta, UpgradeStrategy upgradeStrategy)


class_name: kd.bos.metadata.botp.WriteBackRuleReader
method_name: loadMetas
param_types_key: List,boolean,boolean
signature_text:
public java.util.List<kd.bos.metadata.botp.WriteBackRuleMetadata> loadMetas(java.util.List<String> ids, boolean runtime, boolean isBaseMeta)

comment:
批量读取指定的反写规则元数据对象
@param `ids` ` 反写规则标识
@param `runtime` ` 是否运行时刻？运行时刻，可以加载全部扩展；设计时刻，则需要有选择性的加载扩展
@param `isBaseMeta` ` 是否在读取差量化基准对象？读取基准对象时，需要加载其他兄弟扩展；否则，不能加载


class_name: kd.bos.metadata.botp.WriteBackRuleReader
method_name: loadRules
param_types_key: String
signature_text: public java.util.List<WriteBackRuleElement> loadRules(String targetEntityNumber)
comment:
加载指定单据全部的运行时转换规则：用于反写操作；扩展规则，会附加在原生规则上，不单独输出
@param `targetEntityNumber` ` 目标单据：反写时发生在目标单据保存时，因此，需要以目标单为基准，找反写规则


class_name: kd.bos.metadata.entity.BillEntity
method_name: setFastFilters
param_types_key: List
comment: 设置快速过滤条件 @param `fastFilters` 快速过滤条件
signature_text:
public void setFastFilters(java.util.List<kd.bos.metadata.entity.businessfield.FilterField> fastFilters)


class_name: kd.bos.metadata.entity.EntityItem
method_name: addBuildError
param_types_key: int,String,String
signature_text: protected void addBuildError(int level, String propertyName, String error)
comment:
添加错误信息，用于在设计器保存元数据时，如果有错误信息，调用本方法添加，用于在界面上展示
@param `level` 错误级别
@param `propertyName` 属性标识
@param `error` 错误信息


class_name: kd.bos.metadata.entity.EntityMetadata
method_name: buildRuntimeMetadata
param_types_key: String
comment: 建立运行时元数据 @param `runtimeVersion` @return 运行时元数据集合
signature_text:
public java.util.List<kd.bos.metadata.entity.RuntimeEntityMeta> buildRuntimeMetadata(String runtimeVersion)


class_name: kd.bos.metadata.entity.EntryEntity
method_name: createEntityTreeNodes
param_types_key: boolean,int,boolean
signature_text:
public java.util.List<java.util.Map<String, Object>> createEntityTreeNodes(boolean isAllNode, int level, boolean isIncludeEntry)


class_name: kd.bos.metadata.entity.MainEntity
method_name: buildSubRuntimeMetadata
param_types_key: List,String
comment: 构造关联实体运行时元数据 @param `metas` @param `runtimeVersion`
signature_text:
public void buildSubRuntimeMetadata(java.util.List<kd.bos.metadata.entity.RuntimeEntityMeta> metas, String runtimeVersion)


class_name: kd.bos.metadata.entity.MainEntity
method_name: createEntityTree
param_types_key: String,boolean,boolean,int,boolean
signature_text:
public java.util.Map<String, Object> createEntityTree(String type, boolean isNeedSeq, boolean isAllNode, int level, boolean isIncludeEntry)

comment:
构建实体的树形节点数据
@param `type` 节点类型
@param `isNeedSeq` 是否需要序号字段
@param `isAllNode` 是否包含所有节点
@param `level` 层级
@param `isIncludeEntry` 是否包含分录
@return 树形节点信息


class_name: kd.bos.metadata.entity.MainEntity
method_name: setGenericExtPlugins
param_types_key: List
comment: 设置通用扩展点插件 @param `genericExtPlugins` 通用扩展点插件
signature_text:
public void setGenericExtPlugins(java.util.List<kd.bos.metadata.form.genericext.GenericExtPlugin> genericExtPlugins)


class_name: kd.bos.metadata.entity.MainEntity
method_name: setNetworkControl
param_types_key: List
comment: 设置网络控制集合 @param `networkControl` 单据的网络控制集合的操作集合
signature_text:
public void setNetworkControl(java.util.List<kd.bos.metadata.entity.operation.NetCtrlOperation> networkControl)


class_name: kd.bos.metadata.entity.report.ReportColumnFactory
method_name: createAmountColumn
param_types_key: LocaleString,String,String
comment: 创建报表金额列 @param `caption` @param `fieldKey` @param `currencyField`
signature_text:
public static ReportColumn createAmountColumn(LocaleString caption, String fieldKey, String currencyField)


class_name: kd.bos.metadata.entity.report.ReportColumnFactory
method_name: createBaseDataColumn
param_types_key: LocaleString,String,String,String
comment: 创建报表基础资料列 @param `caption` @param `fieldKey` @param `entityId` @param `displayProp`
signature_text:
public static ReportColumn createBaseDataColumn(LocaleString caption, String fieldKey, String entityId, String displayProp)


class_name: kd.bos.metadata.entity.report.ReportColumnFactory
method_name: createBaseDataPropColumn
param_types_key: LocaleString,String,String,String,String
comment: 创建报表基础资料属性列 @param `caption` @param `fieldKey` @param `refBasedataProp` @param `displayProp`
signature_text:
public static ReportColumn createBaseDataPropColumn(LocaleString caption, String fieldKey, String refBasedataProp, String displayProp, String fieldType)


class_name: kd.bos.metadata.entity.report.ReportColumnFactory
method_name: createComboColumn
param_types_key: LocaleString,String,int,List
comment: 创建报表下拉列表列 @param `caption` @param `fieldKey` @param `showStyle` @param `comboItems`
signature_text:
public static ReportColumn createComboColumn(LocaleString caption, String fieldKey, int showStyle, java.util.List<ValueMapItem> comboItems)


class_name: kd.bos.metadata.entity.report.ReportColumnFactory
method_name: createFlexColumn
param_types_key: LocaleString,String,String,String
comment: 创建报表弹性域列 @param `caption` @param `fieldKey` @param `entityId` @param `displayProp`
signature_text:
public static ReportColumn createFlexColumn(LocaleString caption, String fieldKey, String entityId, String displayProp)


class_name: kd.bos.metadata.entity.report.ReportColumnFactory
method_name: createMulComboColumn
param_types_key: LocaleString,String,int,List
comment: 创建报表多选下拉列表列 @param `caption` @param `fieldKey` @param `showStyle` @param `comboItems`
signature_text:
public static ReportColumn createMulComboColumn(LocaleString caption, String fieldKey, int showStyle, java.util.List<ValueMapItem> comboItems)


class_name: kd.bos.metadata.entity.report.ReportColumnFactory
method_name: createPriceColumn
param_types_key: LocaleString,String,String
comment: 创建报表单价列 @param `caption` @param `fieldKey` @param `currencyField`
signature_text:
public static ReportColumn createPriceColumn(LocaleString caption, String fieldKey, String currencyField)


class_name: kd.bos.metadata.entity.report.ReportColumnFactory
method_name: createQtyColumn
param_types_key: LocaleString,String,String
comment: 创建报表数量列 @param `caption` @param `fieldKey` @param `measureUnitField`
signature_text:
public static ReportColumn createQtyColumn(LocaleString caption, String fieldKey, String measureUnitField)


class_name: kd.bos.metadata.entity.report.ReportColumnFactory
method_name: createReportColumnBuilder
param_types_key: EntryFieldAp
comment: 根据字段创建报表列 @param `field`
signature_text:
public static ReportColumn createReportColumnBuilder(kd.bos.metadata.form.control.EntryFieldAp field)


class_name: kd.bos.metadata.filter.FilterGridViewAp
method_name: setDefaultShowFields
param_types_key: List
comment: 设置初始字段，可设置过滤字段的可见性 @param `defaultHiddenFields` 初始字段
signature_text:
public void setDefaultShowFields(java.util.List<kd.bos.filter.DefaultHiddenField> defaultHiddenFields)


class_name: kd.bos.metadata.form.BillFormAp
method_name: buildRuntimeMeta
param_types_key: List,String
signature_text:
public void buildRuntimeMeta(java.util.List<kd.bos.metadata.form.RuntimeFormMeta> metas, String runtimeVersion)


class_name: kd.bos.metadata.form.cardentry.CardEntryRowAp
method_name: getCardOperationBarItems
comment: 获取配置分录的功能项
signature_text:
public java.util.List<kd.bos.metadata.entity.commonfield.CardOperationBarItem> getCardOperationBarItems()


class_name: kd.bos.metadata.form.cardentry.CardEntryRowAp
method_name: setCardOperationBarItems
param_types_key: List
comment: 设置配置分录的功能项 @param `cardOperationBarItems`
signature_text:
public void setCardOperationBarItems(java.util.List<kd.bos.metadata.entity.commonfield.CardOperationBarItem> cardOperationBarItems)


class_name: kd.bos.metadata.form.cardentry.CardEntryViewAp
method_name: setLongPressItems
param_types_key: List
comment: 设置移动表单 - 长按操作项 @param `longPressItems`
signature_text:
public void setLongPressItems(java.util.List<kd.bos.metadata.entity.commonfield.LongPressItem> longPressItems)


class_name: kd.bos.metadata.form.container.GridFlatPanelAp
method_name: setFlatSummaryField
param_types_key: List
comment: 设置平铺视图摘要字段 @param `flatSummaryField`
signature_text:
public void setFlatSummaryField(java.util.List<kd.bos.metadata.form.collap.FieldId> flatSummaryField)


class_name: kd.bos.metadata.form.container.TabPageAp
method_name: setTabPageOperationItems
param_types_key: List
comment: 设置页签的操作 @param `tabPageOperationItems`
signature_text:
public void setTabPageOperationItems(java.util.List<kd.bos.metadata.entity.commonfield.DropdownItem> tabPageOperationItems)


class_name: kd.bos.metadata.form.control.embedform.EmbedFormShowParam
method_name: getLeftJoinField
signature_text: public String getLeftJoinField()
comment:
返回左匹配字段（及父表单上的字段），通过匹配父子表单上的字段值，搜索出子表单数据内码，加载并显示。
匹配方式：SELECT 子表单.id FROM 父表单 LEFT JOIN 子表单 ON (父表单.左匹配字段 = 子表单.右匹配字段)。
此属性在关联动态表单时无效。
@return 返回父表单上的字段名，作为关联实体的左匹配字段


class_name: kd.bos.metadata.form.control.embedform.EmbedFormShowParam
method_name: setFilter
param_types_key: String
signature_text: public void setFilter(String filter)
comment:
关联实体数据筛选条件，FilterCondition序列化Json字符串。
过滤条件不允许差量化合并，差量化合并条件会导致条件逻辑出现问题，比如括号不匹配等。 把属性值设置为字符串，扩展条件后，可整体替换原始条件。如此设计，缺点是扩展后，原始条件升级不会起作用
@param `filter`


class_name: kd.bos.metadata.form.ControlAp
method_name: callBuilderFunc
param_types_key: Supplier,Supplier
signature_text:
protected Object callBuilderFunc(java.util.function.Supplier<R> builderFunc, java.util.function.Supplier<R> defaultFunc)

comment:
如果controlBuilder有覆盖方法，则调用controlBuilder的方法，否则调用原方法
@param `builderFunc` ：
@param `defaultFunc` :` 原方法


class_name: kd.bos.metadata.form.FormAp
method_name: buildDesignMeta
param_types_key: Map,MetadataSerializer
comment: 生成FormAp设计时的前端元数据 @param `clientMeta` @param `ser`
signature_text:
public void buildDesignMeta(java.util.Map<String, Object> clientMeta, kd.bos.metadata.dao.MetadataSerializer ser)


class_name: kd.bos.metadata.form.FormMetadata
method_name: buildRuntimeMetadata
param_types_key: String
comment: 创建运行时元数据（运行时的表单元数据） 因为运行时的元数据是按照种类分的，所以一个表单会有多条 @param `runtimeVersion` @return 运行时元数据的集合
signature_text:
public java.util.List<kd.bos.metadata.form.RuntimeFormMeta> buildRuntimeMetadata(String runtimeVersion)


class_name: kd.bos.metadata.form.IBillListAp
method_name: buildList
param_types_key: FormMetadata,FormMetadata,List,String
comment: 创建缺省的PC列表元数据 @param `ownerMeta` @param `listMeta` @param `metas` @param `runtimeVersion`
signature_text:
default void buildList(FormMetadata ownerMeta, FormMetadata listMeta, java.util.List<kd.bos.metadata.form.RuntimeFormMeta> metas, String runtimeVersion)


class_name: kd.bos.metadata.form.IBillListAp
method_name: buildMobList
param_types_key: FormMetadata,FormMetadata,List,String
comment: 创建缺省的移动列表元数据 @param `ownerMeta` @param `listMeta` @param `metas` @param `runtimeVersion`
signature_text:
default void buildMobList(FormMetadata ownerMeta, FormMetadata listMeta, java.util.List<kd.bos.metadata.form.RuntimeFormMeta> metas, String runtimeVersion)


class_name: kd.bos.metadata.form.MobileBillFormAp
method_name: createMenu
param_types_key: List
comment: 构建菜单项控件元数据 @param `items`
signature_text:
public static java.util.List<java.util.Map<String, Object>> createMenu(java.util.List<MenuItem> items)


class_name: kd.bos.metadata.ICreateUIElement
method_name: createUIElements
param_types_key: CreateUIElementArgs
signature_text: void createUIElements(CreateUIElementArgs args)
comment:
设计器创建元素
用户点击设计器工具栏上的元素图标，在表单上创建元素。 默认由设计器前端自动实例化元素，放在表单容器上。 部分特殊元素需要自主控制创建元素实例的过程，可设置元素定义CreateType=1，在设计时元素上实现此接口方法，创建并输出表单UI元素、实体元素
@param `args` 创建元素参数


class_name: kd.bos.metadata.list.BillListAp
method_name: buildList
param_types_key: FormMetadata,FormMetadata,List,String
signature_text:
public void buildList(FormMetadata ownerMeta, FormMetadata listMeta, java.util.List<RuntimeFormMeta> metas, String runtimeVersion)


class_name: kd.bos.metadata.list.BillListAp
method_name: buildMobList
param_types_key: FormMetadata,FormMetadata,List,String
signature_text:
public void buildMobList(FormMetadata ownerMeta, FormMetadata listMeta, java.util.List<RuntimeFormMeta> metas, String runtimeVersion)


class_name: kd.bos.metadata.list.BillListAp
method_name: setQueryType
param_types_key: String
signature_text: public void setQueryType(String queryType)
comment:
设置查询方式 IdQuery查询模式，这种模式会先取ID，然后再根据分页条数进行二次取数； SqlQuery查询模式，采用数据库的分页方式查询，取当页数据，这种查询方式性能相对较好
@param `queryType`


class_name: kd.bos.metadata.lockvisible.BillTypeInfo
method_name: setDifferentialControlInfos
param_types_key: List
signature_text:
public void setDifferentialControlInfos(java.util.List<DifferentialControlInfo> differentialControlInfos)


class_name: kd.bos.metadata.lockvisible.ControlInfo
method_name: setBarItemParentContainerVisible
param_types_key: List
signature_text:
public void setBarItemParentContainerVisible(java.util.List<ControlLockVisibleInfo> barItemParentContainerVisible)


class_name: kd.bos.metadata.lockvisible.ControlInfo
method_name: setFieldParentContainerLockVisible
param_types_key: List
signature_text:
public void setFieldParentContainerLockVisible(java.util.List<ControlLockVisibleInfo> fieldParentContainerLockVisible)


class_name: kd.bos.metadata.report.ReportListAp
method_name: setDataSource
param_types_key: String
signature_text: public void setDataSource(String dataSource)
comment:
设置报表数据源（旧），作为报表界面数据来源 新增的报表需要通过ReportListAp#setQueryDataSource(QueryDataSource) ()}获取
@param `dataSource`


class_name: kd.bos.metadata.treebuilder.ExpressionEditHelper
method_name: showExprEdit
param_types_key: IFormView,String,PropTreeBuildOption,String,CloseCallBack
signature_text:
public static void showExprEdit(IFormView parentView, String entityNumber, kd.bos.metadata.treebuilder.PropTreeBuildOption option, String expr, CloseCallBack closeCallBack)

comment:
弹窗显示通用的表达式编辑界面 根据传入的实体编码，显示此实体的表达式编辑界面
@param `parentView` 父视图
@param `entityNumber` 实体
@param `option` 字段树构造参数，可以传null，按默认参数构造字段树
@param `expr` 已配置好的表达式：会显示在界面上，供用户浏览、修改
@param `closeCallBack` 多选返回后的回调处理参数，指定由谁接收返回值，返回值格式为Map，内含"Expr"


class_name: kd.bos.metadata.treebuilder.ExpressionEditHelper
method_name: showExprEdit
param_types_key: IFormView,String,TreeNode,String,CloseCallBack
signature_text:
public static void showExprEdit(IFormView parentView, String entityNumber, TreeNode fieldNodes, String expr, CloseCallBack closeCallBack)

comment:
弹窗显示通用的表达式编辑界面 根据传入的实体编码，显示此实体的表达式编辑界面
@param `parentView` 父视图
@param `entityNumber` 实体
@param `fieldNodes` 表达式字段树，根节点，内含所有可选的字段
@param `expr` 已配置好的表达式：会显示在界面上，供用户浏览、修改
@param `closeCallBack` 多选返回后的回调处理参数，指定由谁接收返回值，返回值格式为Map，内含"Expr"


class_name: kd.bos.metadata.treebuilder.ExpressionEditHelper
method_name: showExprEdit
param_types_key: IFormView,String,String,String,CloseCallBack
signature_text:
public static void showExprEdit(IFormView parentView, String entityNumber, String fieldNodesJson, String expr, CloseCallBack closeCallBack)

comment:
弹窗显示通用的表达式编辑界面 根据传入的实体编码，显示此实体的表达式编辑界面
@param `parentView` 父视图
@param `entityNumber` 实体
@param `fieldNodesJson` 表达式字段树，根节点，内含所有可选的字段
@param `expr` 已配置好的表达式：会显示在界面上，供用户浏览、修改
@param `closeCallBack` 多选返回后的回调处理参数，指定由谁接收返回值，返回值格式为Map，内含"Expr"


class_name: kd.bos.metadata.treebuilder.ExpressionEditHelper
method_name: tranExpr
param_types_key: TreeNode,String
signature_text: public static String tranExpr(TreeNode rootNode, String expression)
comment:
翻译表达式，输出中文译文：如果表达式语法有误，翻译过程可能会出错
@param `rootNode` 包含了所有字段变脸的字段树。需要根据字段树上的节点标识，把变量翻译为中文名。 表达式中的字段，类似于"a.b.c"，不是一个单一的字段标识，不能简单的通过实体属性名来翻译
@param `expression` 表达式原文
@return 返回表达式译文


class_name: kd.bos.metadata.treebuilder.FilterEditHelper
method_name: showFilterConditionEdit
param_types_key: IFormView,String,FilterFieldBuildOption,FilterCondition,CloseCallBack
signature_text:
public static void showFilterConditionEdit(IFormView parentView, String entityNumber, kd.bos.metadata.treebuilder.FilterFieldBuildOption option, FilterCondition filterCondition, CloseCallBack closeCallBack)

comment:
显示通用的过滤条件配置界面：界面仅包含过滤条件表格和确认按钮 根据传入的实体编码，显示此实体的过滤条件配置表格
@param `parentView` 父视图
@param `entityNumber` 实体
@param `option` 过滤字段挑选参数：控制过滤表格中列出什么样的过滤字段，可传null，采用默认控制
@param `filterCondition` 过滤条件表格显示已配置好的过滤条件。可传null，显示空白的过滤条件表格
@param `closeCallBack` 多选返回后的回调处理参数，指定由谁接收返回值


class_name: kd.bos.metadata.treebuilder.FilterEditHelper
method_name: showFilterConditionEdit
param_types_key: IFormView,String,List,FilterCondition,CloseCallBack
signature_text:
public static void showFilterConditionEdit(IFormView parentView, String entityNumber, java.util.List<java.util.Map<String, Object>> filterColumns, FilterCondition filterCondition, CloseCallBack closeCallBack)

comment:
显示通用的过滤条件配置界面：界面仅包含过滤条件表格和确认按钮 根据传入的实体编码，显示此实体的过滤条件配置表格
@param `parentView` 父视图
@param `entityNumber` 实体
@param `filterColumns` 过滤字段集合：过滤表格中可选的过滤字段
@param `filterCondition` 过滤条件表格显示已配置好的过滤条件。可传null，显示空白的过滤条件表格
@param `closeCallBack` 多选返回后的回调处理参数，指定由谁接收返回值


class_name: kd.bos.mq.broadcast.BroadcastService
method_name: broadcastMessage
param_types_key: String,String,Object[]
signature_text: public static void broadcastMessage(String className, String methodName, Object[] params)
comment:
发送广播消息到系统中的其他实例，当前实例会主动过滤该消息，不会接收 调用该方法时，会根据传入的类全限定名、方法名和方法参数，构建一个消息并广播出去。 其他实例接收到消息后，会尝试根据消息中的信息反射调用相应的类和方法。
@param `className` 目标方法所在类的全限定名，例如 "com.example.MyClass"。 此参数用于定位要调用的目标类，必须是完整的包名加类名， 以确保能准确找到对应的类。如果传入的类名无效， 可能会导致其他实例在反射调用时抛出 ClassNotFoundException。
@param `methodName` 要调用的目标方法的名称，例如 "doSomething"。 此参数用于指定要执行的具体方法，其他实例会根据该名称在指定类中查找方法。 如果传入的方法名在指定类中不存在，会导致反射调用失败。
@param `params` 调用目标方法所需的参数数组。参数的类型和顺序必须与目标方法的定义一致。 为了避免因消息过大导致传输性能下降或出现异常，建议参数数组序列化后的总大小小于512Kb。 如果参数数组包含复杂对象，要注意对象的序列化大小。 若参数数组过大，可能会在广播过程中抛出异常，导致消息无法正常发送。


class_name: kd.bos.mq.broadcast.BroadcastService
method_name: broadcastMessageContainSelf
param_types_key: String,String,Object[]
signature_text:
public static void broadcastMessageContainSelf(String className, String methodName, Object[] params)

comment:
发送广播消息到系统中的其他实例，包含当前实例 调用该方法时，会根据传入的类全限定名、方法名和方法参数，构建一个消息并广播出去。 其他实例接收到消息后，会尝试根据消息中的信息反射调用相应的类和方法。
@param `className` 目标方法所在类的全限定名，例如 "com.example.MyClass"。 此参数用于定位要调用的目标类，必须是完整的包名加类名， 以确保能准确找到对应的类。如果传入的类名无效， 可能会导致其他实例在反射调用时抛出 ClassNotFoundException。
@param `methodName` 要调用的目标方法的名称，例如 "doSomething"。 此参数用于指定要执行的具体方法，其他实例会根据该名称在指定类中查找方法。 如果传入的方法名在指定类中不存在，会导致反射调用失败。
@param `params` 调用目标方法所需的参数数组。参数的类型和顺序必须与目标方法的定义一致。 为了避免因消息过大导致传输性能下降或出现异常，建议参数数组序列化后的总大小小于512Kb。 如果参数数组包含复杂对象，要注意对象的序列化大小。 若参数数组过大，可能会在广播过程中抛出异常，导致消息无法正常发送。


class_name: kd.bos.mq.broadcast.BroadcastService
method_name: broadcastMessageContainSelfWithApp
param_types_key: String,String,String,Object[]
signature_text:
public static void broadcastMessageContainSelfWithApp(String appId, String className, String methodName, Object[] params)

comment:
发送广播消息到系统中的其他实例，包含当前实例 调用该方法时，会根据传入的类全限定名、方法名和方法参数，构建一个消息并广播出去。 其他实例接收到消息后，会尝试根据消息中的信息反射调用相应的类和方法。
@param `appId` 应用编码
@param `className` 目标方法所在类的全限定名，例如 "com.example.MyClass"。 此参数用于定位要调用的目标类，必须是完整的包名加类名， 以确保能准确找到对应的类。如果传入的类名无效， 可能会导致其他实例在反射调用时抛出 ClassNotFoundException。
@param `methodName` 要调用的目标方法的名称，例如 "doSomething"。 此参数用于指定要执行的具体方法，其他实例会根据该名称在指定类中查找方法。 如果传入的方法名在指定类中不存在，会导致反射调用失败。
@param `params` 调用目标方法所需的参数数组。参数的类型和顺序必须与目标方法的定义一致。 为了避免因消息过大导致传输性能下降或出现异常，建议参数数组序列化后的总大小小于512Kb。 如果参数数组包含复杂对象，要注意对象的序列化大小。 若参数数组过大，可能会在广播过程中抛出异常，导致消息无法正常发送。


class_name: kd.bos.mq.broadcast.BroadcastService
method_name: broadcastMessageWithApp
param_types_key: String,String,String,Object[]
signature_text:
public static void broadcastMessageWithApp(String appId, String className, String methodName, Object[] params)

comment:
发送广播消息到系统中的其他实例，当前实例会主动过滤该消息，不会接收 调用该方法时，会根据传入的类全限定名、方法名和方法参数，构建一个消息并广播出去。 其他实例接收到消息后，会尝试根据消息中的信息反射调用相应的类和方法。
@param `appId` 应用编码
@param `className` 目标方法所在类的全限定名，例如 "com.example.MyClass"。 此参数用于定位要调用的目标类，必须是完整的包名加类名， 以确保能准确找到对应的类。如果传入的类名无效， 可能会导致其他实例在反射调用时抛出 ClassNotFoundException。
@param `methodName` 要调用的目标方法的名称，例如 "doSomething"。 此参数用于指定要执行的具体方法，其他实例会根据该名称在指定类中查找方法。 如果传入的方法名在指定类中不存在，会导致反射调用失败。
@param `params` 调用目标方法所需的参数数组。参数的类型和顺序必须与目标方法的定义一致。 为了避免因消息过大导致传输性能下降或出现异常，建议参数数组序列化后的总大小小于512Kb。 如果参数数组包含复杂对象，要注意对象的序列化大小。 若参数数组过大，可能会在广播过程中抛出异常，导致消息无法正常发送。


class_name: kd.bos.mq.MessageAcker
method_name: ack
param_types_key: String
signature_text: void ack(String messageId)
comment:
确认消息已成功处理完毕。 调用此方法表示消息已经被正确处理，不需要再次消费。 消息队列系统在接收到此确认后，通常会将该消息标记为已处理并从队列中移除。
@param `messageId` 消息的标识符，此标识符并非全局唯一


class_name: kd.bos.mq.MessageAcker
method_name: deny
param_types_key: String
signature_text: void deny(String messageId)
comment:
拒绝处理消息，将消息返回队列以便重新被消费。 当消息处理过程中出现暂时的异常或错误，导致消息无法立即处理时，可以调用此方法。 消息队列系统会将该消息重新放回队列尾部，等待后续的消费尝试。
@param `messageId` 消息的标识符，此标识符并非全局唯一


class_name: kd.bos.mq.MessageAcker
method_name: discard
param_types_key: String
signature_text: void discard(String messageId)
comment:
直接丢弃消息，不再进行后续处理。 当消息被判定为无效、过期或者不需要处理时，可以调用此方法。 消息队列系统在接收到此操作后，会将该消息从队列中移除，不再进行消费。
@param `messageId` 消息的标识符，此标识符并非全局唯一


class_name: kd.bos.mq.MessageConsumer
method_name: onMessage
param_types_key: Object,String,boolean,MessageAcker
signature_text: void onMessage(Object message, String messageId, boolean resend, MessageAcker acker)
comment:
消费生产者发送的消息
@see kd.bos.mq.MessageAcker
@param `message` 消息内容，Object类型，需自行强转为生产者发送的类型
@param `messageId` 消息id，用于消息确认，非全局唯一
@param `resend` 是否重新发送，此参数不准确，禁止用于幂等性判定。场景如下：1、前面发送的没有确认成功，mq服务器会重复发送过来；2、mq服务器不稳定也可能重复推送
@param `acker` 消息确认器，支持消息确认ack、拒绝deny和丢弃discard


class_name: kd.bos.mq.MessagePublisher
method_name: publish
param_types_key: Object,String
signature_text: void publish(Object message, String partitionKey)
comment:
发送分区消息，消息过大会抛异常，这是为了避免因消息过大导致系统性能下降或出现其他问题
背景：普通MQ队列是不支持跨应用的，正常场景中每个队列的消息都由同一个应用发布，并由固定的应
用节点消费；这种背景下如果MQ队列跨应用的话，会变成多个应用的消息都发送到同一个队列，并由
一个应用消费，每个应用业务繁忙程度不一样，很大概率会造成个应用消息积压、消息相互阻塞的问题；
解决：MQ队列存在跨应用的消息，则通过分区，把消息根据appId发送到指定应用的队列，并由指定应用消费；
使用：
MessagePublisher pub=MQFactory.get().createPartitionPublisher(“workflow”,“kd.bos.bec.engine.job_queue”,PartitionStrategy.APP_ID);
pub.publish(message,appid)//按appid发布-即发布到workflow.kd.bos.bec.engine.job_queue.appid队列，由appid应用的消费者消费
@param `message` 消息内容，类型：Object，建议小于512Kb
@param `partitionKey` 分区标识，如appId


class_name: kd.bos.mq.MessagePublisher
method_name: publishDelay
param_types_key: Object,int
signature_text: void publishDelay(Object message, int seconds)
comment:
发送延迟消息，最小延迟5秒，最大延迟7200秒 消息过大会抛异常，这是为了避免因消息过大导致系统性能下降或出现其他问题
@param `message` 消息内容，建议小于512Kb
@param `seconds` 延迟时间，单位秒


class_name: kd.bos.mq.MessagePublisher
method_name: publishDelay
param_types_key: Object,int,String
signature_text: void publishDelay(Object message, int seconds, String partitionKey)
comment:
发送具有延迟效果的分区消息，最小延迟5秒，最大延迟7200秒 消息过大会抛异常，这是为了避免因消息过大导致系统性能下降或出现其他问题
@param `message` 消息内容，建议小于512Kb
@param `seconds` 延迟时间，单位秒，最长支持延迟7200秒
@param `partitionKey` 分区标识


class_name: kd.bos.mq.MessagePublisher
method_name: publishDelayInDbTranscation
param_types_key: Object,int
signature_text: void publishDelayInDbTranscation(Object message, int seconds)
comment:
发送延迟数据库事务消息，保障业务的db事务和生产者发送mq消息的原子性和一致性 消息过大会抛异常，这是为了避免因消息过大导致系统性能下降或出现其他问题
@param `message` 消息内容，建议小于512Kb
@param `seconds` 延迟时间，单位秒，最长支持延迟7200秒


class_name: kd.bos.mq.MessagePublisher
method_name: publishInDbTranscation
param_types_key: String,Object
signature_text: void publishInDbTranscation(String routKey, Object message)
comment:
发送数据库事务消息，保障业务的db事务和生产者发送mq消息的原子性和一致性 消息过大会抛异常，这是为了避免因消息过大导致系统性能下降或出现其他问题
@param `routKey` 数据库路由标识
@param `message` 消息内容，建议小于512Kb


class_name: kd.bos.mq.MessagePublisher
method_name: publishInDbTranscation
param_types_key: String,Object,String
signature_text: void publishInDbTranscation(String routeKey, Object message, String partitionKey)
comment:
以事务状态，发送分区消息，保障业务的db事务和生产者发送mq消息的原子性和一致性 消息过大会抛异常，这是为了避免因消息过大导致系统性能下降或出现其他问题
@param `routeKey` 数据库路由标识
@param `message` 消息内容，建议小于512Kb
@param `partitionKey` 分区标识


class_name: kd.bos.mq.MessagePublisher
method_name: publishInDbTranscation
param_types_key: Object
signature_text: void publishInDbTranscation(Object message)
comment:
发送数据库事务消息，保障业务的db事务和生产者发送mq消息的原子性和一致性 消息过大会抛异常，这是为了避免因消息过大导致系统性能下降或出现其他问题
@param `message` 消息内容，建议小于512Kb


class_name: kd.bos.mq.MQFactory
method_name: createPartitionPublisher
param_types_key: String,String,PartitionStrategy
signature_text:
public abstract MessagePublisher createPartitionPublisher(String region, String queue, PartitionStrategy partitionStrategy)

comment:
创建分区发送者，可发送分区普通消息，分区延迟消息，分区数据库事务消息
@param `region` 领域，可按领域部署MQ服务
@param `queue` 队列名
@param `partitionStrategy` 分区发布使用的策略，仅支持appId分区策略
@return kd.bos.mq.MessagePublisher


class_name: kd.bos.mq.MQFactory
method_name: createSimplePublisher
param_types_key: String,String
signature_text: public abstract MessagePublisher createSimplePublisher(String region, String queue)
comment:
创建常规消息发送者，可发送普通消息，延迟消息，数据库事务消息
@param `region` 领域，可按领域部署MQ服务
@param `queue` 队列名
@return kd.bos.mq.MessagePublisher


class_name: kd.bos.mq.support.MQCreateFactory
method_name: createPartitionPublisher
param_types_key: String,String,PartitionStrategy
signature_text:
public MessagePublisher createPartitionPublisher(String region, String queue, PartitionStrategy partitionStrategy)

comment:
创建分区发送者
@param `region` 领域，可按领域部署MQ服务
@param `queue` 队列名
@param `partitionStrategy` 分区发布使用的策略，仅支持appId分区策略
@return kd.bos.mq.MessagePublisher


class_name: kd.bos.mutex.DataMutex
method_name: batchRelease
param_types_key: List
signature_text:
public java.util.Map<String, Boolean> batchRelease(java.util.List<java.util.Map<String, Object>> data)

comment:
批量释放互斥锁
[ {"dataObjId":"","entityKey":"","operationKey":"","groupId":"","isStrict":true/false},… ]
使用示例：
try (DataMutexdataMutex= DataMutex.create()) {
StringgroupId="default_netctrl";
StringentityKey="bos_user";
List> mutexRequireList = newArrayList<>(1);
MaprequireParam=newHashMap<>();
requireParam.put(DataMutex.PARAMNAME_DATAOBJID, "1488499792815457280");
requireParam.put(DataMutex.PARAMNAME_GROUPID, groupId);
requireParam.put(DataMutex.PARAMNAME_ENTITYKEY, entityKey);
requireParam.put(DataMutex.PARAMNAME_OPERATIONKEY, "modify");
mutexRequireList.add(requireParam);
MapmutexResult= dataMutex.batchRelease(mutexRequireList);
// 分析网控申请结果for (Map.Entry mutexItem : mutexResult.entrySet()) {
StringobjId= mutexItem.getKey();
Booleanret= mutexItem.getValue();
if (ret) {
//申请互斥成功的
} else {
MaplockInfo= dataMutex.getLockInfo(objId, groupId, entityKey);
if (lockInfo != null) {
//提示锁信息
}
}
}
} catch (Exception e) {
Log.error(e);
}
@param `data`


class_name: kd.bos.mutex.DataMutex
method_name: batchrequire
param_types_key: List
signature_text:
public java.util.Map<String, Boolean> batchrequire(java.util.List<java.util.Map<String, Object>> data)

comment:
批量申请互斥锁
使用示例：
try (DataMutexdataMutex= DataMutex.create()) {
//如果需要和标准操作（如保存、提交、审核...）互斥，则可使用default_netctrl(默认分组)，不需要和标准操作互斥则需要用自定义的groupIdStringgroupId="default_netctrl";
StringentityKey="bos_user";
List> mutexRequireList = newArrayList<>(1);
MaprequireParam=newHashMap<>();
requireParam.put(DataMutex.PARAMNAME_DATAOBJID, "1488499792815457280");
requireParam.put(DataMutex.PARAMNAME_DATA_OBJ_NUMBER, "billNo");
requireParam.put(DataMutex.PARAMNAME_GROUPID, groupId);
requireParam.put(DataMutex.PARAMNAME_ENTITYKEY, entityKey);
requireParam.put(DataMutex.PARAMNAME_OPERATIONKEY, "modify");
requireParam.put(DataMutex.PARAMNAME_ISSTRICT, true);
//建议设置自定义标识，用于后续区分标准操作和自定义申请的网控
requireParam.put(DataMutex.PARAMNAME_DATA_CALL_SOURCE, "test");
mutexRequireList.add(requireParam);
MapmutexResult= dataMutex.batchrequire(mutexRequireList);
// 分析网控申请结果for (Map.Entry mutexItem : mutexResult.entrySet()) {
StringobjId= mutexItem.getKey();
Booleanret= mutexItem.getValue();
if (ret) {
//申请互斥成功的
} else {
MaplockInfo= dataMutex.getLockInfo(objId, groupId, entityKey);
if (lockInfo != null) {
//申请锁失败，提示已经存在的锁信息
}
}
}
} catch (Exception e) {
Log.error(e);
}
@param `data` [ {"dataObjId":"","entityKey":"","operationKey":"","groupId":"","isStrict":true/false},… ]


class_name: kd.bos.mutex.DataMutex
method_name: forcerelease
param_types_key: String,String,String
signature_text: public boolean forcerelease(String dataObjId, String entityKey, String operationKey)
comment:
强制根据 实体-操作-数据ID 释放该数据上的互斥锁 可在用户退出登录，或者定期刷新失效锁等情景下调用 删除成功后会留下强制删除锁的数据库记录可追溯
@param `dataObjId` 数据ID 唯一性ID，可使用数据库中的fid
@param `entityKey` 实体编码
@param `operationKey` 操作key
@return true：释放成功，false：释放失败


class_name: kd.bos.mutex.DataMutex
method_name: getLockInfo
param_types_key: String,String,String
signature_text:
public java.util.Map<String, String> getLockInfo(String dataObjId, String groupId, String entityKey)

comment:
根据 实体-互斥组-数据 获取获取指定的数据锁信息
使用示例：
try (DataMutexdataMutex= DataMutex.create()) {
StringdataObjId="1488499792815457280";
StringgroupId="default_netctrl";
StringoperationKey="modify";
MaplockInfo= dataMutex.getLockInfo(dataObjId, groupId, operationKey);
if (CollectionUtils.isEmpty(lockInfo)) {
//无锁，执行具体业务逻辑
}else{
//提示用户锁信息
}
} catch (IOException e) {
Log.error(e);
}
@param `dataObjId` 数据ID 唯一性ID，可使用数据库中的fid
@param `groupId` 网控分组
@param `entityKey` 实体编码


class_name: kd.bos.mutex.DataMutex
method_name: release
param_types_key: String,String,String
signature_text: public boolean release(String dataObjId, String entityKey, String operationKey)
comment:
根据 实体-操作-数据ID 释放该数据上的互斥锁
使用示例：
try (DataMutexdataMutex= DataMutex.create()) {
StringdataObjId="1488499792815457280";
StringoperationKey="modify";
StringentityKey="bos_user";
booleanisRelease= dataMutex.release(dataObjId,entityKey, operationKey);
if(isRelease){
//释放成功
}else{
//释放失败
}
} catch (Exception e) {
Log.error(e);
}
@param `dataObjId` 数据ID 唯一性ID，可使用数据库中的fid
@param `entityKey` 实体编码
@param `operationKey` 操作key
@return true：释放成功，false：释放失败


class_name: kd.bos.mutex.DataMutex
method_name: require
param_types_key: MutexLockInfo
signature_text: public boolean require(MutexLockInfo mutexLockInfo)
comment:
按实体-互斥组-操作-数据ID申请锁； 目前一个实体只有一个互斥组
使用示例：
try (DataMutexdataMutex= DataMutex.create()) {
MutexLockInfolockInfo=newMutexLockInfo("1488499792815457280","00001","default_netctrl","bos_user","modify",true,"test");
booleanisLocked= dataMutex.require(lockInfo);
if(isLocked){
//执行具体业务逻辑
}else{
//提示用户获取锁失败，请稍后重试
}
} catch (IOException e) {
Log.error(e);
}
@param `mutexLockInfo` 网络互斥锁申请操作 必须参数 MutexLockInfo


class_name: kd.bos.mutex.impl.MutexLockDataInfo
method_name: <init>
param_types_key: String,String,String,String
signature_text: public MutexLockDataInfo(String dataObjId, String entityKey, String groupId, String operationKey)
comment:
构造函数
@param `dataObjId` 数据ID
@param `entityKey` 实体标识
@param `groupId` 互斥组ID
@param `operationKey` 操作编码


class_name: kd.bos.mutex.impl.MutexLockInfo
method_name: <init>
param_types_key: String,String,String,String,String,boolean,String
signature_text:
public MutexLockInfo(String dataObjId, String dataObjNumber, String groupId, String entityNumber, String operationKey, boolean isStrict, String callSource)

comment:
构造函数
@param `dataObjId` 数据ID 唯一性ID，可使用数据库中的fid
@param `dataObjNumber` 数据编码：单据为单据编号、基础资料为编码
@param `groupId` 互斥组ID 平台标准操作（如修改、提交、审核等）的互斥组为default_netctrl 业务操作可以根据是否需要和平台操作互斥设置互斥组
@param `entityNumber` 实体编码
@param `operationKey` 操作key
@param `isStrict` 是否可重入: true:不可重入，即只要有锁就失败，无论是否是自己的 false: 1.同sessionId允许重入 2.同userId允许重入
@param `callSource` 调用来源


class_name: kd.bos.mutex.impl.MutexLockInfo
method_name: <init>
param_types_key: String,String,String,String,String,boolean,String,boolean,long
signature_text:
public MutexLockInfo(String dataObjId, String dataObjNumber, String groupId, String entityNumber, String operationKey, boolean isStrict, String callSource, boolean autoClearLostLock, long maxLockTime)

comment:
构造函数
@param `dataObjId` 数据ID 唯一性ID，可使用数据库中的fid
@param `dataObjNumber` 数据编码：单据为单据编号、基础资料为编码
@param `groupId` 互斥组ID 平台标准操作（如修改、提交、审核等）的互斥组为default_netctrl 业务操作可以根据是否需要和平台操作互斥设置互斥组
@param `entityNumber` 实体编码
@param `operationKey` 操作key
@param `isStrict` 是否可重入: true:不可重入，即只要有锁就失败，无论是否是自己的 false: 1.同sessionId允许重入 2.同userId允许重入
@param `callSource` 调用来源(区分平台[default]/业务[自定义标识])
@param `autoClearLostLock` 是否清除实例失联超过最大存活时间的锁（适用于服务器重启导致锁未释放等情况）
@param `maxLockTime` 失联锁的最大存活时间 值需要大于0


class_name: kd.bos.mutex.MutexFactory
method_name: createFunctionMutex
param_types_key: LockType
signature_text: public static FunctionMutex createFunctionMutex(LockType lockType)
comment:
创建功能互斥锁，指定基于何种模式实现分布式互斥锁（不同模式之间性能上可能会有差异）
@param `lockType` 分布式互斥锁实现模式，包括zk, db等方案
@return 返回功能互斥锁实现类


class_name: kd.bos.mutex.ShareLock
method_name: setTimeout
param_types_key: String,long,boolean
signature_text: default boolean setTimeout(String key, long keeptime_s, boolean refreshLock)
comment:
在申请锁之后，设置超期时长，延迟超时
@param `key` 锁标识
@param `keeptime_s` 锁保留时长，单位秒
@param `refreshLock` 是否同时刷新锁申请时间（相当于从此刻重新计时）
@return 重置成功返回true


class_name: kd.bos.mvc.report.ReportListModel
method_name: getRowData
param_types_key: int,int,String,Integer
signature_text:
protected DynamicObjectCollection getRowData(int startIndex, int length, String parentId, Integer currentSeq)

comment:
获取数据行
@param `startIndex` 初始查询位置
@param `length` 查询条数
@param `parentId` pid
@param `currentSeq` 当前行号


class_name: kd.bos.mvc.report.ReportPropUtil
method_name: createReportType
param_types_key: DynamicObjectType,List
comment: 拷贝原实体，并将报表列字段注册到新的实体中 @param `itemType` 报表实体 @param `columns` 报表列信息 @return 注册报表列后的新实体
signature_text:
public static DynamicObjectType createReportType(DynamicObjectType itemType, java.util.List<ReportColumn> columns)


class_name: kd.bos.notification.AbstractNotificationClick
method_name: setContext
param_types_key: IFormView,NotificationFormInfo,String
signature_text:
public void setContext(IFormView formView, kd.bos.notification.NotificationFormInfo notificationFormInfo, String notificationId)

comment:
处理点击事件前，传入上下文信息
@param `formView` 当前页面
@param `notificationFormInfo` 通知消息界面参数
@param `notificationId` 消息标识


class_name: kd.bos.openapi.common.result.CustomApiResult
method_name: fail
param_types_key: String,String
signature_text: public static CustomApiResult fail(String errorCode, String errorMessage)
comment:
接口返回失败，状态false, 入参包括errorCode， errorMessage
@param `errorCode` 错误编码
@param `errorMessage` 错误信息
@return 返回CustomApiResult类型，支持泛型data


class_name: kd.bos.openapi.common.result.OpenApiResult
method_name: fail
param_types_key: ApiErrorCode,Object
signature_text:
public static OpenApiResult fail(kd.bos.openapi.common.constant.ApiErrorCode errorCode, Object data)


class_name: kd.bos.openapi.common.util.OpenApiSdkUtil
method_name: invoke
param_types_key: String,Map,Map
signature_text:
public static OpenApiResult invoke(String apiUrl, java.util.Map<String, Object> requestData, java.util.Map<String, String> header)

comment:
调用API接口
@param `apiUrl` ApiUrl-不包括hostName：如：/v2/open/order/queryByName
@param `requestData` 入参数据
@param `header` 自定义HttpHeader，可以为NULL
@return API执行结果


class_name: kd.bos.openapi.common.util.OpenApiSdkUtil
method_name: invoke
param_types_key: String,Map
signature_text: public static OpenApiResult invoke(String apiUrl, java.util.Map<String, Object> requestData)
comment:
调用API接口
@param `apiUrl` ApiUrl-不包括hostName：如：/v2/open/order/queryByName
@param `requestData` 入参数据
@return API执行结果


class_name: kd.bos.openapi.common.util.OpenApiSdkUtil
method_name: invokeOpenApi
param_types_key: String,Map,Map
signature_text:
public static Object invokeOpenApi(String apiUrl, java.util.Map<String, Object> requestData, java.util.Map<String, String> header)

comment:
调用API接口
@param `apiUrl` 不包括hostName，如：/v2/open/order/queryByName
@param `requestData` 入参数据
@param `header` 自定义HttpHeader，可以为NULL
@return API执行结果


class_name: kd.bos.openapi.common.util.OpenApiSdkUtil
method_name: query
param_types_key: String,Map,int,int
signature_text:
public static OpenApiResult query(String apiUrl, java.util.Map<String, Object> data, int pageSize, int pageNo)

comment:
调用API查询服务
@param `apiUrl` ApiUrl-不包括hostName：如：/v2/open/order/queryByName
@param `data` 入参数据
@param `pageSize` 页大小
@param `pageNo` 第几页
@return API执行结果


class_name: kd.bos.openapi.security.model.CommDataDto
method_name: <init>
param_types_key: String,String,String
signature_text: public CommDataDto(String thirdAppNumber, String accountId, String tenantId)
comment:
根据第三方应用编码thirdAppNumber，数据中心accountId和租户ID tenantId实例化对象
@param `thirdAppNumber` 第三方应用编码
@param `accountId` 数据中心
@param `tenantId` 租户ID


class_name: kd.bos.openapi.security.model.CommonSecurityDto
method_name: valueOf
param_types_key: String,String,String
signature_text: public static CommonSecurityDto valueOf(String encryptData, String dgtlEnvlp, String signature)
comment:
根据加密数据encryptData，信封dgtlEnvlp和签名signature实例化对象
@param `encryptData` 加密数据
@param `dgtlEnvlp` 信封
@param `signature` 签名
@return 实例化对象


class_name: kd.bos.openapi.security.model.RequestSecurityDto
method_name: valueOf
param_types_key: String,String,String
signature_text: public static RequestSecurityDto valueOf(String encryptData, String dgtlEnvlp, String signature)
comment:
根据加密内容，信封和签名实例化对象
@param `encryptData` 加密内容
@param `dgtlEnvlp` 信封
@param `signature` 签名
@return 实例化对象


class_name: kd.bos.openapi.security.model.ResponseSecurityDto
method_name: valueOf
param_types_key: String,Object,String,String,String,String
signature_text:
public static ResponseSecurityDto valueOf(String auth, Object data, String thirdId, String sense, String accountId, String url)

comment:
根据认证类型，返回数据，第三方应用ID，场景，数据中心ID，URL实例化对象
@param `auth` 认证类型
@param `data` 返回数据
@param `thirdId` 第三方应用ID
@param `sense` 场景
@param `accountId` 数据中心ID
@param `url` URL
@return 实例化对象


class_name: kd.bos.openapi.security.model.ResponseSecurityDto
method_name: valueOf
param_types_key: String,String,String
signature_text: public static ResponseSecurityDto valueOf(String encryptData, String dgtlEnvlp, String signature)
comment:
根据加密内容，信封，签名构建ResponseSecurityDto对象
@param `encryptData` 加密内容
@param `dgtlEnvlp` 信封
@param `signature` 签名
@return ResponseSecurityDto对象


class_name: kd.bos.openapi.security.model.SignInfoDto
method_name: of
param_types_key: String,String,String
signature_text: public static SignInfoDto of(String thirdAppNumber, String accountId, String tenantId)
comment:
根据第三方应用编码，数据中心ID， 租户ID创建签名对象SignInfoDto
@param `thirdAppNumber` 第三方应用编码
@param `accountId` 数据中心ID
@param `tenantId` 租户ID
@return 对象SignInfoDto


class_name: kd.bos.orm.query.EntityNotExistsException
method_name: <init>
param_types_key: String,Exception
signature_text: public EntityNotExistsException(String msg, Exception cause)
comment:
实体不存在异常
@param `msg` 详细消息（保存以供稍后通过getMessage（）方法检索）。
@param `cause` 原因（由getCause（）方法保存以供以后检索）。（允许为空值，表示原因不存在或未知。）


class_name: kd.bos.orm.query.QFilter
method_name: <init>
param_types_key: String,String,Object
signature_text: public QFilter(String property, String cp, Object value)
comment:
创建一个 QFilter对象
@see kd.bos.orm.query.QCP
@param `property` 属性
@param `cp` 操作符
@param `value` 值 eg. age = 18


class_name: kd.bos.orm.query.QFilter
method_name: <init>
param_types_key: String,String,Object,QFilterHint
signature_text: public QFilter(String property, String cp, Object value, QFilterHint qFilterHint)
comment:
创建一个 QFilter
@param `property` 属性
@param `cp` 操作符
@param `value` 值
@param `qFilterHint` kd.bos.orm.query.QFilterHint


class_name: kd.bos.orm.query.QFilter
method_name: emptyOrNotExists
param_types_key: String
signature_text: public static QFilter emptyOrNotExists(String property)
comment:
查询单据的基础资料的某属性为空null或者" "或者 根本在基础资料中不存在的数据 QFilter.emptyAndNotExists("auditor.name") 表示: 1.单据的auditor在bos_user中不存在 2.或者auditor.name在bos_user中为空 3.或者auditor.name在bos_user中为空字符串
@param `property` 基础资料属性
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: exists
param_types_key: String
signature_text: public static QFilter exists(String refEntityPKProperty)
comment:
过滤某属性存在值的条件(is not null and != ' ')或者(is not null and != 0) 一般属性某基础资料，譬如查询某单据存在基础资料的数据
@param `refEntityPKProperty` 必须为实体的主键属性
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: exists
param_types_key: String,QFilter
signature_text: public static QFilter exists(String fkProperty, QFilter refObjectFilter)
comment:
子查询的过滤功能，实现对引用对象(单选基础资料、多选基础资料、分录)的子查询过滤。
如： SELECT A.FId "id" FROM t_gy_order_saleorder A WHERE NOT EXISTS(select  B.FId from t_gy_saleorder_signtype B where B.fid=A.fid and B.FBasedataId  in(6839462954711306241))   ORM过滤条件为：QFilter.notExists("signtype", new  QFilter("fbasedataid","=",6839462954711306241L);
@param `fkProperty` 引用外键属性
@param `refObjectFilter` 不需要再写子实体前缀
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: filterOnMetaJoinProperty
param_types_key: String,QFilter
signature_text: public static QFilter filterOnMetaJoinProperty(String joinOnEntityPath, QFilter joinOnFilter)
comment:
join on by meta defined(IJoinProperty)：join关系在元数据中已定义 (用IJoinProperty属性)，增加joinOnFilter条件。
@param `joinOnEntityPath` 设置和主实体连接的字段
@param `joinOnFilter` 已存在的Join QFilter
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: fromSerializedString
param_types_key: String
signature_text: public static QFilter fromSerializedString(String s)
comment:
从序列化的字符串构造出 QFilter 对象
**注意：**
* QFilter的反序列化必须使用此方法！当然必须对应的序列化方法要使用QFilter.toSerializedString()。
@param `s` QFilter.toSerializedString()输出的序列化字符串
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: ftlike
param_types_key: String,String[]
signature_text: public static QFilter ftlike(String value, String[] properties)
comment:
全文检索方式过滤，properties之间为or关系，每个property为单据或分录或子分录的属性，或为其引用基础资料的属性(一级)。
@param `value` 快速搜索的值
@param `properties` 属性集合
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: ftlike
param_types_key: String[],String[]
signature_text: public static QFilter ftlike(String[] values, String[] properties)
comment:
全文检索方式过滤，properties之间为or关系，每个property为单据或分录或子分录的属性，或为其引用基础资料的属性(一级)。
@param `values` 快速搜索的值结合，可以同时匹配多个值
@param `properties` 属性集合
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: ftlikeMultiValue
param_types_key: String,String[]
signature_text: public static QFilter ftlikeMultiValue(String value, String[] properties)
comment:
全文检索匹配多值 ，多值用空格分隔，值之间为and关系。
@param `value` 快速搜索的值，多个值使用空格分割
@param `properties` 属性集合
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: getValue
signature_text: public Object getValue()
comment:
获取QFilter 的值。当有QFilterHint时，返回的值有特别处理： 1.若是LikeHint，且是包含，会在前后加%；若是以...开始，则在后面加%；若是以...结束，则在前面加%； 2.若是NotLikeHint，在前后加% 3.若是FTLikeHint,且若是以...开始，则在后面加%。


class_name: kd.bos.orm.query.QFilter
method_name: join
param_types_key: String,String,QFilter
signature_text: public static QFilter join(String property, String joinEntityProperty, QFilter filter)
comment:
3.join on by filter：纯用QFilter指定join关系和on条件。
不可与其他Filter拼连：joinFilter务必独自一条链(否则会导致join on条件失效，与在where的语义是不一样的)，本身的条件用本方法的filter过滤。
Join的用法：
f1=QFilter.join("a","B.b",QFilter.of("B.number='abc'"));
f2=QFilter.of("billno like ?","N%");
orm.queryDataSet("","A","id,B.status",newQFilter[]{f1,f2});
翻译出SQL：
select A.id,B.status from A
inner join B on B.b=A.a and B.number='abc'
where A.billno like 'N%'
</code>
`
`
`
@param `filter` ` 不支持嵌套join条件


class_name: kd.bos.orm.query.QFilter
method_name: join
param_types_key: String,String,QFilter,JoinHint,boolean
signature_text:
public static QFilter join(String property, String joinEntityProperty, QFilter filter, ORMHint.JoinHint joinHint, boolean joinThisEntity)

comment:
join on by filter 纯用QFilter指定join关系和on条件。 指定 join 方式 指定 join 条件是否作用本实体
@param `property` 连接字段
@param `joinEntityProperty` 连接字段
@param `filter` 条件
@param `joinHint` join方式，left join or inner join
@param `joinThisEntity` join on 条件是否作用本实体
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: join
param_types_key: String,String
signature_text: public static QFilter join(String property, String joinEntityProperty)
comment:
构建一个Join QFilter，可以构建一个inner join的表连接
@param `property` 实体的某个字段
@param `joinEntityProperty` 实体的某个字段
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: joinSQL
param_types_key: String,String,Object[]
signature_text: public static QFilter joinSQL(String joinEntity, String joinSQL, Object[] params)
comment:
1. join on by sql
使用限制：   1) join的表必须与实体对应的表在同一个数据库。   2) joinSQL中的表别名不能与orm自动产生的表别名冲突，因此应避免用别名：A-Z，T1、T2、T3..., 建议用两个字母。   3) 仅join，join的表无法在其他地方使用，如select  field、filter。如果需要使用，请构造动态元数据，用QFilter.join方法。
@param `joinEntity` ` 主实体名称(多级用.分割)
@param `joinSQL` ` 如：inner join t_xx_xx X1 on X1.fid=joinEntity.fid and X1.fnumber like ? (关联条件要用：实体全名.字段名)
@param `params` ` ?的参数值
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: like
param_types_key: String,String
signature_text: public static QFilter like(String property, String value)
comment:
创建 like 过滤条件，如果值没有加 `%`、`_` 通配符则自动在值的前后加 `%`
@param `property` 属性
@param `value` 值
@return 过滤条件 QFilter


class_name: kd.bos.orm.query.QFilter
method_name: notEqualsContainsEmpty
param_types_key: String,String
signature_text: public static QFilter notEqualsContainsEmpty(String property, String value)
comment:
多层级分录或者基础资料 属性不等于 xxx 查询结果包含空的情况
@param `property` 属性字段 eg: entry.name
@param `value` 所选属性不等于的值
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: notExists
param_types_key: String
signature_text: public static QFilter notExists(String refEntityPKProperty)
comment:
过滤某属性不存在值的条件(is null or = ' ')或者(is null or = 0) 一般属性某基础资料，譬如查询某单据存在基础资料的数据
@param `refEntityPKProperty` 必须为主键属性
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: notExists
param_types_key: String,QFilter
signature_text: public static QFilter notExists(String fkProperty, QFilter refObjectFilter)
comment:
生成not exists QFilter。 其中refObjectFilter默认为子查询QFilter，主查询的条件就只有where not exists
@param `fkProperty` 来接字段
@param `refObjectFilter` 默认为子查询filter,不需要再写子实体前缀
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: notInContainsEmpty
param_types_key: String,Object
signature_text: public static QFilter notInContainsEmpty(String property, Object value)
comment:
多层级分录或者基础资料 属性 not in (xxx) 查询结果包含空的情况
@param `property` 属性字段 eg: entry.name
@param `value` 所选属性not in的值


class_name: kd.bos.orm.query.QFilter
method_name: notLike
param_types_key: String,String
signature_text: public static QFilter notLike(String property, String value)
comment:
创建 not like 过滤条件，如果值没有加 `%`、`_` 通配符则自动在值的前后加 `%`
@param `property` 属性
@param `value` 值
@return 过滤条件 QFilter


class_name: kd.bos.orm.query.QFilter
method_name: notLikeContainsEmpty
param_types_key: String,String
signature_text: public static QFilter notLikeContainsEmpty(String property, String value)
comment:
多层级分录或者基础资料 属性不包含 xxx 查询结果包含空的情况
@param `property` 属性字段 eg: entry.name
@param `value` 所选属性不包含的值
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: of
param_types_key: String,Object[]
signature_text: public static QFilter of(String exp, Object[] params)
comment:
通过表达式构建 QFilter
**注意：**
* 表达式中如果有字段进行比较的条件，那么两个字段之前不能跨库;
@param `exp` 表达式
@param `params` 参数
@return QFilter


class_name: kd.bos.orm.query.QFilter
method_name: recombine
signature_text: public QFilter[] recombine()
comment:
将 QFilter 链进行重组，返回的是 QFilter 数组，数组的每个元素为不可再拆分的对象：`单个QFilter`或 `多个or关系的QFilter`
@return 重组后 QFilter 数组


class_name: kd.bos.permission.model.DataRuleInfo
method_name: setBdPropsDataRule
param_types_key: List
comment: 设置基础资料属性的数据规则
signature_text:
setBdPropsDataRule(java.util.List<kd.bos.permission.model.DataRuleInfo.BdPropsDataRule> bdPropsDataRule)


class_name: kd.bos.permission.model.DataRuleInfo
method_name: setPermItemsDataRule
param_types_key: List
comment: 设置权限项的数据规则
signature_text:
setPermItemsDataRule(java.util.List<kd.bos.permission.model.DataRuleInfo.PermItemsDataRule> permItemsDataRule)


class_name: kd.bos.permission.model.EntDataRuleInfo
method_name: setPermItemsDataRule
param_types_key: List
comment: 设置权限项的数据规则 @param `permItemsDataRule` 权限项的数据规则
signature_text:
public void setPermItemsDataRule(java.util.List<EntDataRuleInfo.PermItemsDataRule> permItemsDataRule)


class_name: kd.bos.permission.model.perm.req.admin.GetAdminChargeUserReq
method_name: <init>
param_types_key: Long,boolean,Set
signature_text:
public GetAdminChargeUserReq(Long adminUserId, boolean mustQueryAll, java.util.Set<Long> inUserIdSet)

comment:
构造方法
@param `adminUserId` 管理员的用户ID
@param `mustQueryAll` 当人员范围为所有人员时，是否需要在结果中返回所有人员ID
@param `inUserIdSet` in查询的用户id集合（缩小查询的用户范围）


class_name: kd.bos.permission.model.perm.req.CheckPermissionReq
method_name: <init>
param_types_key: Long,String,String,String,String
signature_text:
public CheckPermissionReq(Long userId, String orgViewType, String appId, String entityNum, String permItemId)

comment:
构造方法
@param `userId` 用户id
@param `orgViewType` 业务单元职能类型(可以传null，传null意味着不考虑具体职能类型的限定)
@param `appId` 应用id
@param `entityNum` 实体编码标识
@param `permItemId` 权限项id


class_name: kd.bos.permission.model.perm.req.field.FieldControlRules2RuleReq
method_name: <init>
param_types_key: DynamicObjectCollection,FieldControlRules,String,String,String
signature_text:
public FieldControlRules2RuleReq(DynamicObjectCollection doc, kd.bos.permission.api.FieldControlRules fieldControlRules, String mainOrg, String dimension, String dataDimensionField)

comment:
构造方法
@param `doc` 行数据包
@param `fieldControlRules` 字段权限
@param `mainOrg` 主业务组织，如：org
@param `dimension` 权限控制类型（大写），如：DIM_ORG
@param `dataDimensionField` 权限控制主字段


class_name: kd.bos.permission.model.perm.req.field.GetFieldControlRulesReq
method_name: <init>
param_types_key: Long,String,String,Long,boolean
signature_text:
public GetFieldControlRulesReq(Long userId, String appId, String entNum, Long dimId, boolean anyAppIdCheckPerm)

comment:
带参数构造方法
@param `userId` 用户id
@param `appId` 应用id
@param `entNum` 实体标识
@param `dimId` 权限控制对象id
@param `anyAppIdCheckPerm` 任一应用验权


class_name: kd.bos.permission.model.perm.req.PermLogReq
method_name: getBusiType
signature_text: public String getBusiType()
comment:
获取业务类型，如:common_role_save。 业务类型确定了对应的日志消费解析方式。 若是平台权限系统拥有的模块，则赋值为表 t_permlog_busitype 中 fbusitype 列值（也可查看表单 permlog_busitype 列表 中 业务类型），平台会进行相应日志明细解析。 否则，平台权限系统不会解析日志明细内容，此时 permNumberSelfGen=true 时，只会入一条权限日志列表记录
@return 业务类型


class_name: kd.bos.permission.model.perm.req.PermLogReq
method_name: getOpbtn
signature_text: public String getOpbtn()
comment:
获取操作按钮名称，用于记录触发点，方便排查, 如 保存操作：保存 若 kd.bos.permission.cache.helper.ConstantsHelper 中没有，需要自行赋值
@return 操作按钮名称


class_name: kd.bos.permission.model.perm.req.PermLogReq
method_name: getPermNumberSelfGen
signature_text: public Boolean getPermNumberSelfGen()
comment:
获取操作日志编码是否自己产生， 默认为false， 即由平台产生， 如果自己产生，需要传 permNumber
@return 操作日志编码是否自己产生， 默认为false， 即由平台产生， 如果自己产生，需要传 permNumber


class_name: kd.bos.permission.model.perm.req.PermLogReq
method_name: setBusiType
param_types_key: String
signature_text: public void setBusiType(String busiType)
comment:
设置业务类型，如:common_role_save。 业务类型确定了对应的日志消费解析方式。 若是平台权限系统拥有的模块，则赋值为表 t_permlog_busitype 中 fbusitype 列值（也可查看表单 permlog_busitype 列表 中 业务类型），平台会进行相应日志明细解析。 否则，平台权限系统不会解析日志明细内容，此时 permNumberSelfGen=true 时，只会入一条权限日志列表记录
@param `busiType` 业务类型


class_name: kd.bos.permission.model.perm.req.PermLogReq
method_name: setOpbtn
param_types_key: String
signature_text: public void setOpbtn(String opbtn)
comment:
设置操作按钮名称，用于记录触发点，方便排查, 如 保存操作：保存 若 kd.bos.permission.cache.helper.ConstantsHelper 中没有，需要自行赋值
@param `opbtn` 操作按钮名称


class_name: kd.bos.permission.model.perm.req.PermLogReq
method_name: setPermNumber
param_types_key: String
signature_text: public void setPermNumber(String permNumber)
comment:
设置操作日志编码， permNumberSelfGen 为 true 时， 不能为空
@param `permNumber` 操作日志编码， permNumberSelfGen 为 true 时， 不能为空


class_name: kd.bos.permission.model.perm.req.PermLogReq
method_name: setPermNumberSelfGen
param_types_key: Boolean
signature_text: public void setPermNumberSelfGen(Boolean permNumberSelfGen)
comment:
设置操作日志编码是否自己产生， 默认为false， 即由平台产生， 如果自己产生，需要传 permNumber
@param `permNumberSelfGen` 操作日志编码是否自己产生， 默认为false， 即由平台产生， 如果自己产生，需要传 permNumber


class_name: kd.bos.permission.model.perm.req.RoleAssignUserDimReq
method_name: getDimType
signature_text: public String getDimType()
comment:
获取隔离维度类型，取 t_perm_ctrltype 表 fnumber 不为 DIM_NULL 的记录 中的 fbizobjectid 的值， 或 预览表单 perm_ctrltype 列表 ，名称不为空的记录的业务对象.编码
@return 隔离维度类型


class_name: kd.bos.permission.model.perm.req.RoleAssignUserDimReq
method_name: setDimType
param_types_key: String
signature_text: public void setDimType(String dimType)
comment:
设置隔离维度类型，取 t_perm_ctrltype 表 fnumber 不为 DIM_NULL 的记录 中的 fbizobjectid 的值， 或 预览表单 perm_ctrltype 列表 ，名称不为空的记录的业务对象.编码
@param `dimType` 隔离维度类型


class_name: kd.bos.permission.model.perm.req.user.GetUsableEntitiesInfoReq
method_name: <init>
param_types_key: Long,Set,Set
comment: 构造方法 @param `userId` 用户id @param `modelTypeSet` 表单类型set集合 @param `cloudIdSet` 云id集合
signature_text:
public GetUsableEntitiesInfoReq(Long userId, java.util.Set<String> modelTypeSet, java.util.Set<String> cloudIdSet)


class_name: kd.bos.permission.model.perm.req.UserAssignUserGroupReq
method_name: <init>
param_types_key: Map,AssignModEnum,GrpUsrFromTypeEnum,String
signature_text:
public UserAssignUserGroupReq(java.util.Map<Long, java.util.Set<Long>> userIdAndGroupIdsMap, AssignModEnum mode, GrpUsrFromTypeEnum grpUsrFromTypeEnum, String reason)

comment:
全参构造方法
@param `userIdAndGroupIdsMap` Map<用户id, Set<用户组id>>
@param `mode` 授权的分配模式枚举
@param `grpUsrFromTypeEnum` 用户组中用户来源类型枚举
@param `reason` 调用原因，可以传null


class_name: kd.bos.permission.model.perm.req.UserGroupAssignUserReq
method_name: <init>
param_types_key: Map,AssignModEnum,GrpUsrFromTypeEnum,String
signature_text:
public UserGroupAssignUserReq(java.util.Map<Long, java.util.Set<Long>> groupIdAndUserIdsMap, AssignModEnum mode, GrpUsrFromTypeEnum grpUsrFromTypeEnum, String reason)

comment:
全参构造方法
@param `groupIdAndUserIdsMap` Map<用户组id, Set<用户id>>
@param `mode` 授权的分配模式枚举
@param `grpUsrFromTypeEnum` 用户组中用户来源类型枚举
@param `reason` 调用原因，可以传null


class_name: kd.bos.print.api.PrintWork
method_name: isEconomizeByBill
signature_text: public boolean isEconomizeByBill()
comment:
是否按单节纸打印。
1、` true`：开启横向节纸/纵向节纸的情况下，同一张单产生的pdf页之间节纸打印，不同单产生的pdf页节纸功能不生效； 2、` false`：开启横向节纸/纵向节纸的情况下，允许不同单之间节纸打印。
@return 是否按单节纸打印


class_name: kd.bos.print.api.PrintWork
method_name: setEconomizeByBill
param_types_key: boolean
signature_text: public void setEconomizeByBill(boolean economizeByBill)
comment:
设置是否按单节纸打印。
1、` true`：开启横向节纸/纵向节纸的情况下，同一张单产生的pdf页之间节纸打印，不同单产生的pdf页节纸功能不生效； 2、` false`：开启横向节纸/纵向节纸的情况下，允许不同单之间节纸打印。
@param `economizeByBill` 是否按单节纸打印


class_name: kd.bos.print.api.PrintWork
method_name: setExtParam
param_types_key: Map
signature_text: public void setExtParam(java.util.Map<String, Object> extParam)
comment:
设置扩展参数。
@see kd.bos.print.core.plugin.AbstractPrintPlugin#getExtParam()#getExtParam()
@param `extParam` 扩展参数


class_name: kd.bos.print.api.PrintWork
method_name: setFileStorageType
param_types_key: FileStorageType
signature_text: public void setFileStorageType(FileStorageType fileStorageType)
comment:
设置文件存贮方式。
要求选择kd.bos.print.api.FileStorageType#TEMP_FILE文件存贮方式，节省磁盘空间。**禁止使用kd.bos.print.api.FileStorageType#ATTACHMENT_FILE方式持久化文件存储，如若未及时清理磁盘，会导致大量磁盘占用。**
@param `fileStorageType` 文件存贮方式


class_name: kd.bos.print.api.PrintWork
method_name: setPrintLang
param_types_key: String
signature_text: public void setPrintLang(String printLang)
comment:
设置打印语言标识。
1、用于打印当前语言下模板的数据； 2、用于打印当前语言下多语言字段的值。 **注意：传入的语言格式需要满足kd.bos.lang.Lang#get()#toString()。**
@see kd.bos.print.service.BosPrintServiceHelper#getPrintLang(Long,String)#getPrintLang(Long, String)
@param `printLang` 打印语言标识


class_name: kd.bos.print.api.PrintWork
method_name: setPrinterId
param_types_key: String
signature_text: public void setPrinterId(String printerId)
comment:
设置打印机id。
@see kd.bos.print.service.BosPrintServiceHelper#getPrinterId(Long,String)#getPrinterId(Long, String)
@param `printerId` 打印机id


class_name: kd.bos.print.core.data.DataRowSet
method_name: deepCopy
signature_text: public DataRowSet deepCopy()
comment:
拷贝当前数据集，返回新数据集。
**注意：该方法会拷贝数据集中所有字段值，但是集合类型kd.bos.print.core.data.field.CollectionField的字段值进行拷贝时，集合中包含的字段不会再次拷贝。**
@see kd.bos.print.core.data.field.CollectionField#copy()#copy()
@return 新数据集


class_name: kd.bos.print.core.data.datasource.prop.SortField
method_name: setOrderBy
param_types_key: String
signature_text: public void setOrderBy(String orderBy)
comment:
设置排序方式（升序/降序）kd.bos.print.core.data.datasource.prop.SortField#DEFAULT_ORDER_BY。
@param `orderBy` 排序方式


class_name: kd.bos.print.core.data.field.DecimalField
method_name: compareTo
param_types_key: DecimalField
signature_text: public int compareTo(DecimalField field)
comment:
字段值比较大小。
1、` "1"`：当前字段大于` field`字段； 2、` "0"`：当前字段等于` field`字段； 3、` "-1"`：当前字段小于` field`字段。
@param `field` 被比较字段
@return 比较结果


class_name: kd.bos.print.core.data.field.IntegerField
method_name: compareTo
param_types_key: IntegerField
signature_text: public int compareTo(IntegerField field)
comment:
字段值比较大小。
1、` "1"`：当前字段大于` field`字段； 2、` "0"`：当前字段等于` field`字段； 3、` "-1"`：当前字段小于` field`字段。
@param `field` 比较字段，要求非空。
@return 比较结果


class_name: kd.bos.print.core.model.designer.grid.MergeBlock
method_name: create
param_types_key: int,int,int,int
signature_text: public static MergeBlock create(int left, int right, int top, int bottom)
comment:
构造函数。
创建合并对象，该对象表示合并区域的坐标信息。 如： [0,0,0,0] 表示：第一行第一个单元格。
@param `left` 合并单元格左边起始坐标
@param `right` 合并单元格右边结束坐标
@param `top` 合并单元格顶部起始坐标
@param `bottom` 合并单元格底部结束坐标
@return 合并单元格设置


class_name: kd.bos.print.core.plugin.AbstractPrintPlugin
method_name: beforeExpFile
param_types_key: ExpFileEvent
signature_text: public void beforeExpFile(ExpFileEvent evt)
comment:
打印引擎输出文件前触发事件。
引擎每输出一个文件都会触发该事件，可以修改每份文件的名称，用户可以自定义文件名称。 例如：默认生成3份文件，默认文件名为“文件A”，则最终可得到“文件A”、”文件A-1“、”文件A-2“3份文件。在插件处理后，最终可以得到”文件A-A“、”文件A-B”、“文件A-C”3份文件。 **如果业务要求文件名称唯一，注意保证唯一性。**
@param `evt` 打印引擎输出文件前触发事件对象


class_name: kd.bos.print.core.plugin.AbstractPrintPlugin
method_name: beforeExport
param_types_key: BeforeExportEvent
signature_text: public void beforeExport(BeforeExportEvent evt)
comment:
打印引擎输出前事件。
可以在此方法中对生成的默认文件名称做修改。假如修改后的文件名称为“文件A“，如果本次打印最终生成了3份文件，最终会得到”文件A“，”文件A-1“，”文件A-2“。
@param `evt` 打印引擎输出前事件对象


class_name: kd.bos.print.core.plugin.event.AfterOutputGridEvent
method_name: addMerge
param_types_key: MergeBlock
signature_text: public PWGridCellBo addMerge(MergeBlock mergeBlock)
comment:
添加合并单元格设置。
合并后单元格默认显示为空。
@see AfterOutputGridEvent#addMerge(MergeBlock,String)#addMerge(MergeBlock, String)
@param `mergeBlock` 合并单元格设置
@return 合并后单元格


class_name: kd.bos.print.core.plugin.event.AfterOutputWidgetEvent
method_name: setOutputValue
param_types_key: Field
signature_text: public void setOutputValue(Field field)
comment:
设置控件输出字段。
该方法不支持`打印在所有页`的控件，固定打印的场景请使用AfterOutputWidgetEvent#setModifyValue(Field)方法。
@param `field` 字段


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: addGridRow
param_types_key: int
signature_text: public PWGridRowBo addGridRow(int rowHeight)
comment:
添加行。并返回当前行。
如果添加行之前，有使用BeforeOutputGridEvent#addMerge(MergeBlock)方法设置单元格合并，则添加行后可能会导致非预期的打印效果。使用BeforeOutputGridEvent#insertGridRow(int,int,boolean)方法，可以在添加行之后执行再合并动作。
@param `rowHeight` 行高
@return 添加的行


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: addMerge
param_types_key: MergeBlock
signature_text: public void addMerge(MergeBlock mergeBlock)
comment:
添加合并单元格。
禁止在kd.bos.print.core.plugin.AbstractPrintPlugin#beforeOutputWidget(BeforeOutputWidgetEvent)事件中对`数据行`做合并操作，如果想要合并数据行，可以在kd.bos.print.core.plugin.AbstractPrintPlugin#afterOutputWidget(AfterOutputWidgetEvent)事件中处理。
@param `mergeBlock` 合并单元格设置


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: addRow
param_types_key: int
signature_text: public java.util.List<PWGridCellBo> addRow(int rowHeight)
comment:
添加行，并返回当前行所有单元格。
如果添加行之前，有使用BeforeOutputGridEvent#addMerge(MergeBlock)方法设置单元格合并，则添加行后可能会导致非预期的打印效果。使用BeforeOutputGridEvent#insertGridRow(int,int,boolean)方法，可以在添加行之后执行再合并动作。
@param `rowHeight` 行高
@return 当前行所有单元格


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: delColumn
param_types_key: int
signature_text: public void delColumn(int colIndex)
comment:
删除列。
如果删除列之前，有使用BeforeOutputGridEvent#addMerge(MergeBlock)方法设置单元格合并，则删除列后可能会导致非预期的打印效果。使用BeforeOutputGridEvent#delColumn(int,boolean)方法，可以在删除列之后执行再合并动作。
@param `colIndex` 列索引，索引从0开始。


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: delColumn
param_types_key: int,boolean
signature_text: public void delColumn(int colIndex, boolean isReMerge)
comment:
删除列。
设置`isReMerge`等于`true`，可以在删除列之后执行再合并动作。
@param `colIndex` 列索引，索引从0开始。
@param `isReMerge` 删除列后，是否重新处理合并。


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: delColumns
param_types_key: List
signature_text: public void delColumns(java.util.List<Integer> colIndexs)
comment:
批量删除列。
如果删除列之前，有使用BeforeOutputGridEvent#addMerge(MergeBlock)方法设置单元格合并，则删除列后可能会导致非预期的打印效果。使用BeforeOutputGridEvent#delColumn(int,boolean)方法，可以在删除列之后执行再合并动作。
@param `colIndexs` 批量删除的列的索引


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: delRow
param_types_key: int
signature_text: public void delRow(int rowIndex)
comment:
删除行。
如果删除行之前，有使用BeforeOutputGridEvent#addMerge(MergeBlock)方法设置单元格合并，则删除行后可能会导致非预期的打印效果。使用BeforeOutputGridEvent#delRow(int,boolean)方法，可以在删除行之后执行再合并动作。
@param `rowIndex` 行索引


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: insertColumn
param_types_key: int,int
signature_text: public java.util.List<PWGridCellBo> insertColumn(int index, int colWidth)
comment:
插入一列，并返当前列所有单元格。
如果插入列之前，有使用BeforeOutputGridEvent#addMerge(MergeBlock)方法设置单元格合并，则插入列后可能会导致非预期的打印效果。使用BeforeOutputGridEvent#insertColumn(int,int,boolean)方法，可以在插入列之后执行再合并动作。
@param `index` 列索引，索引从0开始。
@param `colWidth` 列宽
@return 当前列所有单元格


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: insertColumn
param_types_key: int,int,boolean
signature_text: public java.util.List<PWGridCellBo> insertColumn(int index, int colWidth, boolean isReMerge)
comment:
插入一列，并返回当前列所有单元格。
设置`isReMerge`等于`true`，可以在插入列之后执行再合并动作。
@param `index` 列索引，索引从0开始。
@param `colWidth` 列宽
@param `isReMerge` 插入列后，是否重新处理合并。
@return 当前列所有单元格


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: insertGridRow
param_types_key: int,int
signature_text: public PWGridRowBo insertGridRow(int index, int rowHeight)
comment:
插入行，返回当前行。
如果插入行之前，有使用BeforeOutputGridEvent#addMerge(MergeBlock)方法设置单元格合并，则插入行后可能会导致非预期的打印效果。使用BeforeOutputGridEvent#insertGridRow(int,int,boolean)方法，可以在插入行之后执行再合并动作。
@param `index` 插入的索引位置
@param `rowHeight` 行高
@return 插入的行


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: insertGridRow
param_types_key: int,int,boolean
signature_text: public PWGridRowBo insertGridRow(int index, int rowHeight, boolean isReMerge)
comment:
插入行，返回当前行。
设置`isReMerge`等于`true`，可以在插入行之后执行再合并动作。
@param `index` 插入的索引位置
@param `rowHeight` 行高
@param `isReMerge` 插入行后，是否重新处理合并。
@return 插入的行


class_name: kd.bos.print.core.plugin.event.BeforeOutputGridEvent
method_name: insertRow
param_types_key: int,int
signature_text: public java.util.List<PWGridCellBo> insertRow(int index, int rowHeight)
comment:
插入行，并返回当前行所有单元格。
如果插入行之前，有使用BeforeOutputGridEvent#addMerge(MergeBlock)方法设置单元格合并，则插入行后可能会导致非预期的打印效果。使用BeforeOutputGridEvent#insertGridRow(int,int,boolean)方法，可以在插入行之后执行再合并动作。
@param `index` 插入的索引位置
@param `rowHeight` 行高
@return 当前行所有单元格


class_name: kd.bos.print.core.plugin.event.BeforeOutputRowEvent
method_name: getField
param_types_key: String
signature_text: public Field getField(String fieldKey)
comment:
获取当前执行的数据行的值。
**只针对数据行生效，非数据行返回kd.bos.print.core.data.field.NullField。**
@param `fieldKey` 字段标识
@return 字段


class_name: kd.bos.print.core.plugin.event.BeforeOutputWidgetEvent
method_name: bindField
param_types_key: String,String
signature_text: public void bindField(String dataSource, String field)
comment:
设置控件数据源字段绑定关系。
如果调用了BeforeOutputWidgetEvent#setOutputValue(Field)方法，则优先取`setOutputValue`的值。
@param `dataSource` 数据源标识
@param `field` 字段标识


class_name: kd.bos.print.core.plugin.event.BeforeOutputWidgetEvent
method_name: setHideMove
param_types_key: boolean
signature_text: public void setHideMove(boolean hideMove)
comment:
设置是否隐藏当前控件并移动下方控件。
1、` true`：隐藏当前控件，并且支持下方控件向上偏移； 2、` false`：不隐藏当前控件，正常输出。
@param `hideMove` 是否隐藏当前控件并移动下方控件


class_name: kd.bos.print.core.plugin.event.BeforeOutputWidgetEvent
method_name: setOutputValue
param_types_key: Field
signature_text: public void setOutputValue(Field field)
comment:
设置控件输出字段。
常见字段类型如下： 1、文本字段：kd.bos.print.core.data.field.TextField； 2、整型字段：kd.bos.print.core.data.field.IntegerField； 3、长整型字段：kd.bos.print.core.data.field.LongField； 4、小数字段：kd.bos.print.core.data.field.DecimalField； 5、图片字段：kd.bos.print.core.data.field.ImageField； 6、日期字段：kd.bos.print.core.data.field.DateField； 7、时间字段：kd.bos.print.core.data.field.DateTimeField； 8、空标识控制字段：kd.bos.print.core.data.field.NullField。
@param `field` 字段


class_name: kd.bos.print.core.plugin.event.bo.PluginDataVisitorBo
method_name: getCollectionField
param_types_key: String,boolean,String
signature_text: public CollectionField getCollectionField(String ds, boolean sortAble, String controlKey)
comment:
根据指定数据源标识，获取集合字段。
可以通过参数`sortAble`控制取数据表格排序前的结果，还是排序后的结果。需要结合参数`controlKey`一同使用，`controlKey`用于获取指定数据表格控件中的排序设置。
@param `ds` 数据源标识
@param `sortAble` `true`：获取排序后结果，`false`：获取排序前结果。
@return 集合字段


class_name: kd.bos.print.core.plugin.event.bo.PWGridBo
method_name: getCell
param_types_key: int,int
signature_text: public PWGridCellBo getCell(int rowIndex, int cellIndex)
comment:
根据指定行、列索引，获取单元格。
如果指定行、列索引未获取到单元格，则返回`null`。
@param `rowIndex` 行索引
@param `cellIndex` 列索引
@return 单元格


class_name: kd.bos.print.core.plugin.event.bo.PWGridCellBo
method_name: setCellValue
param_types_key: String,String,int
signature_text: public void setCellValue(String dataSource, String field, int statType)
comment:
设置单元格为合计字段。
1、`0`：不合计； 2、`1`：累计求和； 3、`6`：每页求和。
@param `dataSource` 数据源标识
@param `field` 字段标识
@param `statType` 合计类型


class_name: kd.bos.print.core.plugin.event.bo.PWGridCellBo
method_name: setLineWrapRule
param_types_key: LineWrapRule
signature_text: public void setLineWrapRule(LineWrapRule lineWrapRule)
comment:
设置文本换行规则。
@see kd.bos.print.core.execute.render.common.linewrap.param.LineWrapRule
@param `lineWrapRule` 文本换行规则


class_name: kd.bos.print.core.plugin.event.bo.PWGridCellBo
method_name: setTextFormat
param_types_key: TextFormatEnum
signature_text: public void setTextFormat(TextFormatEnum textFormatEnum)
comment:
设置文本格式类型。
@see kd.bos.print.core.plugin.event.bo.propenum.TextFormatEnum
@param `textFormatEnum` 文本格式类型


class_name: kd.bos.print.core.plugin.event.bo.PWGridRowBo
method_name: getRowType
signature_text: public int getRowType()
comment:
获取行类型。
1、标题行：PWGridRowBo#ROW_TITLE； 2、数据行：PWGridRowBo#ROW_DETAIL； 3、合计行：PWGridRowBo#ROW_STAT。
@return 行类型


class_name: kd.bos.print.service.BosPrintServiceHelper
method_name: doPrintDirect
param_types_key: String,PrintWork
signature_text: public static PrtAttach doPrintDirect(String printerId, PrintWork printWork)
comment:
直接打印接口。
将打印结果直接发送给云打印客户端，再发送至指定的打印机实现打印，该接口需要结合客户端使用。
@param `printerId` 打印机id，详情见kd.bos.print.service.BosPrintServiceHelper#getPrinterId(Long,String)
@param `printWork` 打印工作，详情见kd.bos.print.api.PrintWork
@return 打印结果，详情见kd.bos.print.core.service.PrtAttach


class_name: kd.bos.print.service.BosPrintServiceHelper
method_name: execPrint
param_types_key: PrintWork
signature_text: public static PrtAttach execPrint(PrintWork work)
comment:
执行打印。
**注意：****1、该方法生成的文件为临时文件，过期时间为3小时，文件过期自动清理；****2、该方法仅支持新打印模板的打印，如果传入了旧模板id，将会抛出` KDBizException`异常。**
@param `work` 打印工作，详情见kd.bos.print.api.PrintWork
@return 打印结果，详情见kd.bos.print.core.service.PrtAttach


class_name: kd.bos.print.service.BosPrintServiceHelper
method_name: getFileInputStream
param_types_key: String,String
signature_text: public static java.io.InputStream getFileInputStream(String filePath, String diskType)
comment:
获取指定路径下，打印结果中文件的文件流。
@param `filePath` 文件路径，详情见kd.bos.print.core.service.PrtAttach.AttachDetail#getFilePath()
@param `diskType` 文件贮藏类型，详情见kd.bos.print.core.service.PrtAttach#getDiskType()
@return 文件流


class_name: kd.bos.print.service.BosPrintServiceHelper
method_name: getTplByNum
param_types_key: List
comment: 根据打印模板编码获取打印模板信息。 @param `tplNums` 模板编码集合 @return 模板信息Map集合，（`Map.key`：模板编码，`Map.value`模板id）。
signature_text:
public static java.util.Map<String, BosPrintServiceHelper.TplInfo> getTplByNum(java.util.List<String> tplNums)


class_name: kd.bos.print.service.BosPrintServiceHelper
method_name: getTplIdByNum
param_types_key: String
signature_text: public static String getTplIdByNum(String tplNum)
comment:
根据打印模版编码，获取模版id。
**如果同时查询多个模板，建议使用接口kd.bos.print.service.BosPrintServiceHelper#getTplIdByNum(List)，减少查询次数。**
@param `tplNum` 模版编码
@return 模板id


class_name: kd.bos.print.service.BosPrintServiceHelper
method_name: getTplIdByNum
param_types_key: List
signature_text: public static java.util.Map<String, String> getTplIdByNum(java.util.List<String> tplNums)
comment:
根据打印模板编码集合，批量获取模版编码。
**如果同时查询多个模板，建议使用该接口减少查询次数。**
@param `tplNums` 模板编码集合
@return 查询到的模板Map集合. （`Map.key`：模板编码，`Map.value`模板id）. 如果编码不存在，返回结果Map中将不会有对应的Key值。


class_name: kd.bos.report.AbstractReportListModel
method_name: preProcessExportData
param_types_key: List,DynamicObjectCollection,NumberFormatProvider
comment: 报表导出预处理 @param `exportColumns` 报表列 @param `data` 报表数据 @param `numberFormatProvider` 格式化信息
signature_text:
public void preProcessExportData(java.util.List<AbstractReportColumn> exportColumns, DynamicObjectCollection data, NumberFormatProvider numberFormatProvider)


class_name: kd.bos.report.events.CreateColumnEvent
method_name: <init>
param_types_key: String,List,ReportQueryParam,Object
comment: 构造函数 @param `gridPK` 列表表格标识 @param `columns` 报表列 @param `queryParam` 查询参数 @param `selectedObj` 关联条件
signature_text:
public CreateColumnEvent(String gridPK, java.util.List<AbstractReportColumn> columns, ReportQueryParam queryParam, Object selectedObj)


class_name: kd.bos.report.events.SortAndFilterEvent
method_name: setDisableFilter
param_types_key: boolean
signature_text: public void setDisableFilter(boolean disableFilter)
comment:
关闭本列的列头过滤功能
列表可通过选项开启全部列的列头过滤功能，由平台自动解析列头条件对报表结果进行二次过滤。 如果某列比较特殊，开启列头过滤会导致过滤错误，插件可以在kd.bos.report.plugin.IReportFormPlugin#setSortAndFilter(List)事件，关闭指定列的列头过滤
本方法和#setFilter(boolean)的差别是什么？ #isFilter()属性为true由插件解析列头条件, 为false由平台自动解析列头条件 #isDisableFilter()属性为true强制关闭本列列头过滤功能
@param `disableFilter` 设置为true,停用本列列头过滤


class_name: kd.bos.report.events.SortAndFilterEvent
method_name: setDisableSort
param_types_key: boolean
signature_text: public void setDisableSort(boolean disableSort)
comment:
关闭本列的列头排序功能
列表可通过选项开启全部列的列头排序功能，由平台对报表结果进行二次排序。 如果某列比较特殊，开启自动列头排序会导致数据错乱，插件可以在kd.bos.report.plugin.IReportFormPlugin#setSortAndFilter(List)事件，关闭指定列的列头排序
@param `disableSort` 设置为true,停用本列列头排序


class_name: kd.bos.report.filter.ReportFilter
method_name: getFlexFilterItemInfo
param_types_key: String,Set,DynamicObject
comment: 星辰扩展需求： 需要设置FilterItemInfo存在自定义条件场景。不仅仅是in
signature_text:
protected FilterItemInfo getFlexFilterItemInfo(String flexfield, java.util.Set<Object> val, DynamicObject row)


class_name: kd.bos.report.plugin.AbstractReportFormPlugin
method_name: filterContainerInit
param_types_key: FilterContainerInitEvent,ReportQueryParam
comment: 初始化默认查询参数事件 @return 查询参数
signature_text:
protected void filterContainerInit(FilterContainerInitEvent contInitEvent, ReportQueryParam queryParam)


class_name: kd.bos.report.plugin.AbstractReportFormPlugin
method_name: preProcessExportData
param_types_key: List,DynamicObjectCollection,NumberFormatProvider
signature_text:
public void preProcessExportData(java.util.List<AbstractReportColumn> exportColumns, DynamicObjectCollection data, NumberFormatProvider numberFormatProvider)

comment:
报表导出之前事件，可以对数据进行加工
@param `exportColumns` 报表列
@param `data` 报表数据
@param `numberFormatProvider` 格式化信息


class_name: kd.bos.report.plugin.AbstractReportFormPlugin
method_name: processRowData
param_types_key: String,DynamicObjectCollection,ReportQueryParam
comment: 行数据处理事件 @param `gridPK` 表格控件标识 @param `rowData` 一页数据 @param `queryParam` 查询参数
signature_text:
public void processRowData(String gridPK, DynamicObjectCollection rowData, ReportQueryParam queryParam)


class_name: kd.bos.report.plugin.IReportFormPlugin
method_name: preProcessExportData
param_types_key: List,DynamicObjectCollection,NumberFormatProvider
signature_text:
void preProcessExportData(java.util.List<AbstractReportColumn> exportColumns, DynamicObjectCollection data, NumberFormatProvider numberFormatProvider)

comment:
报表导出之前事件，可以对数据进行加工
@param `exportColumns` 报表列
@param `data` 报表数据
@param `numberFormatProvider` 格式化信息


class_name: kd.bos.report.ReportList
method_name: getGridDataByFilter
param_types_key: List
comment: 与前端交互接口，前端表头过滤数据发到后端 @param `filter` 过滤数据包
signature_text:
public void getGridDataByFilter(java.util.List<java.util.Map<String, java.util.List<Object>>> filter)


class_name: kd.bos.report.ReportList
method_name: getPlainText
param_types_key: Integer,String,List,boolean
signature_text:
public void getPlainText(Integer row, String fieldKey, java.util.List<Object> pks, boolean isPlaintexxt)


class_name: kd.bos.report.ReportList
method_name: getReportColumnList
param_types_key: List
comment: 获取报表平铺列（不包含报表分组） @param `reportColumns` 报表列（包含报表分组）
signature_text:
public java.util.List<ReportColumn> getReportColumnList(java.util.List<AbstractReportColumn> reportColumns)


class_name: kd.bos.report.ReportList
method_name: getVirtualData
param_types_key: int,int,String,Integer
signature_text: public void getVirtualData(int startIndex, int length, String parentId, Integer currentSeq)
comment:
虚模式取数
@param `startIndex` 初始位置
@param `length` 查询条数
@param `parentId` 父节点ID
@param `currentSeq` 当前行号


class_name: kd.bos.schedule.api.JobDispatcher
method_name: countNumOfExecute
param_types_key: String[],Date
signature_text: public abstract int[] countNumOfExecute(String[] scheduleArray, java.util.Date endDate)
comment:
统计执行计划从当前时间到截止时间将要执行的次数
@param `scheduleArray` 调度计划 数组
@param `endDate` 截止时间 可以为null,则到当晚24点
@return 执行次数


class_name: kd.bos.schedule.api.JobDispatcher
method_name: genPlanDesc
param_types_key: String,Date,Date,long,int
signature_text:
default String genPlanDesc(String cron, java.util.Date oriStartTime, java.util.Date endTime, long timeZoneId, int numTimes)

comment:
根据 cron 表达式生成最近执行时间
@param `cron` 表达式
@param `oriStartTime` 开始时间
@param `endTime` 结束时间
@param `timeZoneId` 时区信息
@param `numTimes` 生成执行时间的次数


class_name: kd.bos.schedule.api.JobDispatcher
method_name: genPlanDescByWorkDay
param_types_key: String,Date,Date,long,int,Long
signature_text:
default String genPlanDescByWorkDay(String cron, java.util.Date oriStartTime, java.util.Date endTime, long timeZoneId, int numTimes, Long workdayschId)

comment:
根据 cron 表达式生成最近执行时间
@param `cron` 表达式
@param `oriStartTime` 开始时间
@param `endTime` 结束时间
@param `timeZoneId` 时区信息
@param `numTimes` 生成执行时间的次数
@param `workdayschId` 工作日计划id


class_name: kd.bos.schedule.api.JobDispatcher
method_name: timelistOfExecute
param_types_key: String[],Date
signature_text:
public java.util.List<java.time.ZonedDateTime[]> timelistOfExecute(String[] scheduleArray, java.util.Date endDate)

comment:
统计执行计划从当前时间到截止时间将要执行的时间,没有执行计划时，对应下标值为空
@param `scheduleArray` 调度计划 数组
@param `endDate` 截止时间
@return 将要执行的时间清单


class_name: kd.bos.schedule.api.ShardingTask
method_name: execute
param_types_key: RequestContext,Map,ShardingParam
signature_text:
void execute(RequestContext context, java.util.Map<String, Object> params, ShardingParam shardingParam) throws KDException

comment:
分片任务程序需要实现的接口方法，在此方法编写程序逻辑
@param `context` 执行时的线程上下文
@param `params` 调度作业参数
@param `shardingParam` 分片任务参数
@throws `KDException` 执行时可能会抛出异常


class_name: kd.bos.schedule.api.Task
method_name: execute
param_types_key: RequestContext,Map
comment: 执行任务 @param `context`
signature_text:
public abstract void execute(RequestContext context, java.util.Map<String, Object> params) throws KDException


class_name: kd.bos.schedule.executor.AbstractTask
method_name: feedbackProgress
param_types_key: int,String,Map
comment: 反馈进度，需要业务方法主动调用 @param `progress` 进度值 @param `desc` @param `customData` 自定义数据
signature_text:
protected void feedbackProgress(int progress, String desc, java.util.Map<String, Object> customData)


class_name: kd.bos.schedule.form.JobForm
method_name: dispatch
param_types_key: JobInfo,IFormView,CloseCallBack
signature_text: public static void dispatch(JobInfo jobInfo, IFormView view, CloseCallBack closeCallBack)
comment:
启动一个后台任务，并自动显示任务处理进度界面
@param `jobInfo` 需要启动的作业信息
@param `view` 启动任务的界面
@param `closeCallBack` 回调参数：任务完后后，会自动关闭进度界面，并对启动任务的界面进行回调处理


class_name: kd.bos.schedule.form.TaskClientProxy
method_name: addTask
param_types_key: JobFormInfo,TaskInfo,List
signature_text:
public static void addTask(JobFormInfo jobFormInfo, TaskInfo taskInfo, java.util.List<java.util.Map<String, Object>> formActions)

comment:
使用web socket通道，从服务端往前端发送一个指令，添加一个后台任务提醒：适用于服务端独立运行的异步场景
@param `jobFormInfo` 任务目标及进度界面显示参数
@param `taskInfo` 当前任务状态
@param `formActions` 需要同步发到前端去的界面指令集合，如任务执行完毕后，父页面的回调处理


class_name: kd.bos.schedule.form.TaskClientProxy
method_name: addTask
param_types_key: IFormView,JobFormInfo,TaskInfo
signature_text: public static void addTask(IFormView view, JobFormInfo jobFormInfo, TaskInfo taskInfo)
comment:
使用当前页面视图指令集合，同步向前端发送一个指令，添加一个后台任务提醒：适用前端发起的表单交互场景
@param `view` 当前界面视图
@param `jobFormInfo` 任务目标及进度界面显示参数
@param `taskInfo` 当前任务状态


class_name: kd.bos.schedule.form.TaskClientProxy
method_name: delTask
param_types_key: JobFormInfo,String,List
signature_text:
public static void delTask(JobFormInfo jobFormInfo, String taskId, java.util.List<java.util.Map<String, Object>> formActions)

comment:
使用web socket通道，从服务端，通知前端任务面板中，删除一个任务项 当前任务状态
@param `formActions` 需要同步发到前端去的界面指令集合，如任务执行完毕后，父页面的回调处理


class_name: kd.bos.schedule.form.TaskClientProxy
method_name: feedbackProgress
param_types_key: JobFormInfo,TaskInfo,List
signature_text:
public static void feedbackProgress(JobFormInfo jobFormInfo, TaskInfo taskInfo, java.util.List<java.util.Map<String, Object>> formActions)

comment:
反馈进度
@param `jobFormInfo` 任务目标
@param `taskInfo` 当前任务状态
@param `formActions` 需要同步发到前端去的界面指令集合，如任务执行完毕后，父页面的回调处理


class_name: kd.bos.schedule.server.JobDispatcherProxy
method_name: genPlanDesc
param_types_key: String,Date,Date,long,int
signature_text:
public String genPlanDesc(String cron, java.util.Date oriStartTime, java.util.Date endTime, long timeZoneId, int numTimes)

comment:
根据 cron 表达式生成最近执行时间
@param `cron` 表达式
@param `oriStartTime` 开始时间
@param `endTime` 结束时间
@param `timeZoneId` 时区信息
@param `numTimes` 生成执行时间的次数


class_name: kd.bos.schedule.server.JobDispatcherProxy
method_name: genPlanDescByWorkDay
param_types_key: String,Date,Date,long,int,Long
signature_text:
public String genPlanDescByWorkDay(String cron, java.util.Date oriStartTime, java.util.Date endTime, long timeZoneId, int numTimes, Long workdayschId)

comment:
根据 cron 表达式生成最近执行时间
@param `cron` 表达式
@param `oriStartTime` 开始时间
@param `endTime` 结束时间
@param `timeZoneId` 时区信息
@param `numTimes` 生成执行时间的次数
@param `workdayschId` 工作日计划id


class_name: kd.bos.service.attachment.controller.param.AttachmentDownloadArgs
method_name: <init>
param_types_key: String,Object,String,String
signature_text: public AttachmentDownloadArgs(String entityNumber, Object billPkId, String controlKey, String path)
comment:
附件下载参数类构造方法
@param `entityNumber` 实体标识（单据、基础资料实体标识）
@param `billPkId` 单据主键
@param `controlKey` 附件字段或者附件面板标识
@param `path` 文件路径（相对路径或加密路径）


class_name: kd.bos.service.attachment.controller.param.AttachmentDownloadArgs
method_name: <init>
param_types_key: String,Object,String,String,String
signature_text:
public AttachmentDownloadArgs(String entityNumber, Object billPkId, String controlKey, String path, String appId)

comment:
附件下载参数类构造方法
@param `entityNumber` 实体标识（单据、基础资料实体标识）
@param `billPkId` 单据主键
@param `controlKey` 附件字段或者附件面板标识
@param `path` 文件路径（相对路径或加密路径）
@param `appId` 应用id(用于扩展验权)


class_name: kd.bos.service.attachment.controller.param.AttachmentDownloadArgs
method_name: <init>
param_types_key: String,Object,String,String,Object
signature_text:
public AttachmentDownloadArgs(String entityNumber, Object billPkId, String controlKey, String path, Object attParentPkId)

comment:
附件下载参数类构造方法
如附件字段在单据体，则填写单据体行的主键;如附件字段在子单据体，则填写子单据体行的主键
@param `entityNumber` 实体标识（单据、基础资料实体标识）
@param `billPkId` 单据主键
@param `controlKey` 附件字段或者附件面板标识
@param `path` 文件路径（相对路径或加密路径）
@param `attParentPkId` 附件所在数据行的主键（非必填，未填默认取单据主键）


class_name: kd.bos.service.attachment.controller.param.AttachmentDownloadArgs
method_name: <init>
param_types_key: String,Object,String,String,Object,String
signature_text:
public AttachmentDownloadArgs(String entityNumber, Object billPkId, String controlKey, String path, Object attParentPkId, String appId)

comment:
附件下载参数类构造方法
如附件字段在单据体，则填写单据体行的主键;如附件字段在子单据体，则填写子单据体行的主键
@param `entityNumber` 实体标识（单据、基础资料实体标识）
@param `billPkId` 单据主键
@param `controlKey` 附件字段或者附件面板标识
@param `path` 文件路径（相对路径或加密路径）
@param `attParentPkId` 附件所在数据行的主键（非必填，未填默认取单据主键）
@param `appId` 应用id（用于扩展验权）


class_name: kd.bos.service.attachment.controller.param.AttachmentUploadFileArgs
method_name: <init>
param_types_key: String,Object,Object,Object,String,String,String,String
signature_text:
public AttachmentUploadFileArgs(String entityNumber, Object billPkId, Object entryPkId, Object subEntryPkId, String extFormNumber, String controlKey, String description, String appNumber)

comment:
OpenApi上传附件入参类构造方法
@param `entityNumber` 源实体标识，如附件控件在扩展表单上，在extFormNumber填写扩展表单标识
@param `billPkId` 单据主键
@param `entryPkId` 单据体行主键
@param `subEntryPkId` 子单据体行主键
@param `extFormNumber` 附件控件在扩展表单上添加时需填写扩展表单标识
@param `controlKey` 附件上传到控件(附件字段、附件面板)的标识
@param `description` 附件备注
@param `appNumber` 应用编码


class_name: kd.bos.service.earlywarn.EarlyWarnServiceImpl
method_name: execute
param_types_key: String,String,long
signature_text:
public kd.bos.service.earlywarn.EarlyWarnServiceResult execute(String warnScheduleId, String operationType, long earlyWarnLogId)

comment:
预警监控计划执行
@param `warnScheduleId` 监控方案id
@param `operationType` 执行方式 task(调度计划执行), manual(手工执行)
@param `earlyWarnLogId` 日志id
@return 执行结果


class_name: kd.bos.service.earlywarn.EarlyWarnServiceImpl
method_name: getCommonFilterColumns
param_types_key: String,String
signature_text:
public java.util.List<java.util.Map<String, Object>> getCommonFilterColumns(String earlyWarnId, String entityNumber)

comment:
获取监控方案通用过滤条件展示数据
@param `earlyWarnId` 预警对象id
@param `entityNumber` 数据源
@return 通用过滤条件,条件格式参照 EntityTypeUtil.getFilterColumns的返回数据


class_name: kd.bos.service.InteTimeZone
method_name: format
param_types_key: Date,DateFormat
signature_text: public String format(java.util.Date datetime, java.text.DateFormat format)
comment:
对传入日期进行格式化，按自定义格式输出时间字符串
@param `datetime` 源日期对象（一般是Date）
@param `format` 自定义格式化对象
@return 自定义格式的时间字符串


class_name: kd.bos.service.InteTimeZone
method_name: parse
param_types_key: String,DateFormat
signature_text:
public java.util.Date parse(String datetime, java.text.DateFormat format) throws java.text.ParseException

comment:
按自定义格式解析传入的时间字符串，输出日期
@param `datetime` 时间字符串
@param `format` 自定义格式化对象
@return 日期对象（Date）
@throws `ParseException` 格式有误，解析异常


class_name: kd.bos.service.InteTimeZone
method_name: parseDate
param_types_key: String,DateFormat
signature_text:
public java.util.Date parseDate(String date, java.text.DateFormat format) throws java.text.ParseException

comment:
按自定义格式解析传入的日期字符串，输出日期
@param `date` 日期字符串
@param `format` 自定义格式化对象
@return 日期对象（Date）
@throws `ParseException` 格式有误，解析异常


class_name: kd.bos.service.KDDateUtils
method_name: getTheMonthEnd
param_types_key: int,TimeZone,TimeZone
signature_text:
public static java.util.Date getTheMonthEnd(int amount, java.util.TimeZone userTimeZone, java.util.TimeZone sysTimeZone)


class_name: kd.bos.service.KDDateUtils
method_name: getTheMonthStart
param_types_key: int,TimeZone,TimeZone
signature_text:
public static java.util.Date getTheMonthStart(int amount, java.util.TimeZone userTimeZone, java.util.TimeZone sysTimeZone)


class_name: kd.bos.service.KDDateUtils
method_name: getTheQuarterEnd
param_types_key: TimeZone,TimeZone,int
signature_text:
public static java.util.Date getTheQuarterEnd(java.util.TimeZone userTimeZone, java.util.TimeZone sysTimeZone, int amout)


class_name: kd.bos.service.KDDateUtils
method_name: getTheQuarterStart
param_types_key: TimeZone,TimeZone,int
signature_text:
public static java.util.Date getTheQuarterStart(java.util.TimeZone userTimeZone, java.util.TimeZone sysTimeZone, int amout)


class_name: kd.bos.service.KDDateUtils
method_name: getTheWeekStart
param_types_key: int,TimeZone,DayOfWeek
signature_text:
public static java.util.Date getTheWeekStart(int amount, java.util.TimeZone userTimeZone, java.time.DayOfWeek dayOfWeek)


class_name: kd.bos.service.KDDateUtils
method_name: getTheWeekStart
param_types_key: int,Date,int
comment: 获取以当前时间为基准的指定时间量的周起始时间 @param `amount` 时间量
signature_text:
public static java.util.Date getTheWeekStart(int amount, java.util.Date baseDate, int firstDayOfWeek)


class_name: kd.bos.service.metadata.MetadataService
method_name: batchLoadRuntimeMetadataVersion
param_types_key: Collection
comment: 批量从数据库加载 表单元数据运行时版本 @param `numbers`
signature_text:
default java.util.Map<String, String> batchLoadRuntimeMetadataVersion(java.util.Collection<String> numbers)


class_name: kd.bos.service.metadata.MetadataService
method_name: checkPermission
param_types_key: Long,Long,String,String,String
signature_text:
default boolean checkPermission(Long userId, Long orgId, String appId, String entityNum, String permItemId)

comment:
功能权限检查(按 业务单元 验权) 因 PermissionService 接口含有两个方法名相同，参数个数相同的方法，微服务调用时无法指定确定方法，这里添加一个微服务接口转接，专为 MetadataAction 指令请求的验权服务
@param `userId` 用户id
@param `orgId` 业务单元id
@param `appId` 应用id
@param `entityNum` 业务对象编码
@param `permItemId` 权限项id
@return 是否有权


class_name: kd.bos.service.metadata.MetadataService
method_name: getAppNumberByEntityNumbers
param_types_key: List
comment: 根据实体编码获取对应的应用编码 @param `entityNumbers` @return 实体应用编码map
signature_text:
default java.util.Map<String, String> getAppNumberByEntityNumbers(java.util.List<Object> entityNumbers)


class_name: kd.bos.service.metadata.MetadataService
method_name: getDataEntityOperationKeys
param_types_key: Collection
comment: 获取指定实体的所有操作编码 @param `entityNumbers` 实体编码
signature_text:
default java.util.Map<String, java.util.List<String>> getDataEntityOperationKeys(java.util.Collection<String> entityNumbers)


class_name: kd.bos.service.metadata.MetadataService
method_name: getDesignerMetadata2
param_types_key: String,String,String,String,String
signature_text:
default String getDesignerMetadata2(String formId, String designerMetaType, String lang, String srcFormId, String srcScriptId)

comment:
用于移动表单模板获取 新的方法
@param `formId` 表单 id
@param `designerMetaType` 元数据类型
@param `lang` 语言
@param `srcFormId` 原表单 id
@param `srcScriptId` 切换模板需要返回的 脚本 id


class_name: kd.bos.service.metadata.MetadataService
method_name: getExportWriter
param_types_key: String,long,String,String,String
signature_text:
default String getExportWriter(String formId, long templateId, String plugin, String importPluginType, String extenddata)


class_name: kd.bos.service.metadata.MetadataService
method_name: getFiledReferencedList
param_types_key: Map,List
comment: 得到被删除字段中有其他布局引用的字段集合 @param `content` 元数据 @param `filedList` 字段集合 @return List
signature_text:
java.util.List<java.util.Map<String, Object>> getFiledReferencedList(java.util.Map<String, Object> content, java.util.List<java.util.Map<String, Object>> filedList)


class_name: kd.bos.service.metadata.MetadataService
method_name: loadConvertRuleIds
param_types_key: String,String
signature_text:
default java.util.List<String> loadConvertRuleIds(String sourceEntityNumber, String targetEntityNumber)


class_name: kd.bos.service.metadata.MetadataService
method_name: loadCtConvertRuleIds
param_types_key: String,String,String,String,String,String
signature_text:
default java.util.List<String> loadCtConvertRuleIds(String sourceTenant, String sourceDataCenter, String sourceEntityNumber, String targetTenant, String targetDataCenter, String targetEntityNumber)


class_name: kd.bos.service.metadata.MetadataService
method_name: loadCtConvertRules
param_types_key: String,String,String,String,String,String
comment: 加载两单之间全部跨租户转换规则 @param `sourceEntityNumber` @param `targetEntityNumber`
signature_text:
java.util.List<String> loadCtConvertRules(String sourceTenant, String sourceDataCenter, String sourceEntityNumber, String targetTenant, String targetDataCenter, String targetEntityNumber)


class_name: kd.bos.service.metadata.MetadataService
method_name: loadFormRuntimeTermValueFromCache
param_types_key: String,String
comment: 获取运行时术语资源 （运行时使用，不要在设计时使用） @param `formNumber` @param `resId`
signature_text:
default java.util.Map<String, String> loadFormRuntimeTermValueFromCache(String formNumber, String resId)


class_name: kd.bos.service.metadata.MetadataService
method_name: rebuildByApps
param_types_key: boolean,List
signature_text:
java.util.Map<String, Object> rebuildByApps(boolean forceRebuild, java.util.List<String> rebuidAppParams)


class_name: kd.bos.service.operation.EntityOperateService
method_name: excute
param_types_key: DynamicObject[]
signature_text: public OperationResult excute(DynamicObject[] dataEntities) throws Exception
comment:
开始执行操作入口，内部方法将会调用doExcete()去做具体的逻辑
@param `dataEntities` 动态对象集合
@return 操作结果
@throws `Exception` 异常信息


class_name: kd.bos.service.operation.EntityOperateService
method_name: excute
param_types_key: Object[]
signature_text: public OperationResult excute(Object[] ids) throws Exception
comment:
根据id和插件中PreparePropertys增加的属性构造实体，并执行操作。
@param `ids` 内码
@return OperationResult 操作结果
@throws Exception


class_name: kd.bos.service.operation.EntityOperateService
method_name: getSubOpResult
param_types_key: Map,String,Object[]
comment: 获取当前操作的子操作结果 @param `operateMetaMap` 当前操作元数据 @param `ids` 内码 @return 子操作结果
signature_text:
protected OperationResult getSubOpResult(java.util.Map<String, Object> operateMetaMap, String entityNumber, Object[] ids)


class_name: kd.bos.service.operation.EntityOperateService
method_name: getSubOpResult
param_types_key: Map,DynamicObject[]
comment: 获取当前操作的子操作结果 @param `operateMetaMap` 当前操作元数据 @param `dataEntities` 数据包 @return 子操作结果
signature_text:
protected OperationResult getSubOpResult(java.util.Map<String, Object> operateMetaMap, DynamicObject[] dataEntities)


class_name: kd.bos.service.operation.EntityOperateService
method_name: initialize
param_types_key: MainEntityType,String,DynamicObject[]
signature_text:
public void initialize(MainEntityType entityType, String operationKey, DynamicObject[] dataEntities)

comment:
初始化操作上下文
@param `entityType` 主实体
@param `operationKey` 操作标识
@param `dataEntities` 本次操作的数据集合，如果传入的是ids，此参数为空


class_name: kd.bos.service.operation.EntityOperateService
method_name: preparePropertys
param_types_key: Object[],List
signature_text: protected void preparePropertys(Object[] ids, java.util.List<String> fieldKeys)
comment:
添加操作服务中用到的字段：需要扫描需处理的单据实际数据来决定是否添加某些字段（如反写引擎，需要根据本批单据有没有源单来确定是否加载反写字段）
@param `ids` 当前需处理的单据内码
@param `fieldKeys`


class_name: kd.bos.service.operation.OperationService
method_name: invokeOperation
param_types_key: String,DynamicObject[],OperateOption
signature_text: String invokeOperation(String operationKey, DynamicObject[] dataEntities, OperateOption option)
comment:
执行操作。用于当前单据调用。当前单据数据直接从缓存获取，不用传递，以减少一次序列化和网络传输。该方法实体由单据生成， 不执行PreparePropertys插件
@param `operationKey` ` 操作key
@param `dataEntities` ` 数据对象集合
@param `option` 可选参数


class_name: kd.bos.service.operation.OperationService
method_name: invokeOperation
param_types_key: String,String,Object[],OperateOption
signature_text:
String invokeOperation(String operationKey, String entityNumber, Object[] ids, OperateOption option)

comment:
执行操作。主要用于非单据类的自定义属性实体(如列表)调用。 根据id和插件中PreparePropertys增加的属性构造实体。
@param `operationKey` 操作key
@param `entityNumber` 实体key(设计器中定义的number)
@param `ids` 数据实体的id（主键）
@param `option` 可选参数


class_name: kd.bos.servicehelper.attachment.AttachmentFieldSaveDto
method_name: <init>
param_types_key: String,String,String,String,Object,Object,String
signature_text:
public AttachmentFieldSaveDto(String appId, String formId, String attKey, String tempUrl, Object billPk, Object attPk, String fileName)

comment:
@param `appId` 应用id
@param `formId` 表单标识
@param `attKey` 附件字段元数据标识
@param `tempUrl` 临时附件访问地址
@param `billPk` 单据主键
@param `attPk` 附件主键
@param `fileName` 带扩展名的完整文件名（如"合同.pdf"），字符集限制为UTF-8


class_name: kd.bos.servicehelper.attachment.AttachmentFieldServiceHelper
method_name: saveTempToFileService
param_types_key: AttachmentFieldSaveDto
signature_text: public static String saveTempToFileService(AttachmentFieldSaveDto attachmentFieldSaveDto)
comment:
将临时附件持久化存储到文件服务器
调用文件服务上传接口
记录附件操作信息到日志表
@see kd.bos.servicehelper.attachment.FileService#upload(FileItem)
@param `attachmentFieldSaveDto`
@return 文件在服务器中的存储路径，格式：加密路径或相对路径


class_name: kd.bos.servicehelper.AttachmentServiceHelper
method_name: batchRemove
param_types_key: String,List
signature_text: public static void batchRemove(String formId, java.util.List<Object> pkIds)
comment:
批量附件删除接口 - 物理删除（不可恢复）指定单据的所有附件面板内的文件
高危提醒：本方法执行文件物理删除且影响多张单据，请严格进行操作审计。
高危提醒：本方法将移除单据与文件服务器文件的关联关系（数据表）。
性能提醒：入参pkIds集合大小建议小于100
### 接口特性：
* 根据表单标识和单据主键定位附件
* 级联删除关联的附件
* 直接操作数据库和文件存储系统
### 使用示例：
// 批量物理删除（不可恢复）采购单组件为附件面板的附件QFilterqFilter=newQFilter("billno", QCP.equals, "purchase");
QFilter[] qFilters = newQFilter[]{qFilter};
DynamicObject[] newBillFids = BusinessDataServiceHelper.load("purchase", "fid", qFilters);
AttachmentServiceHelper.batchRemove("purchase",
Arrays.asList(newBillFids[0].getString("id"), newBillFids[1].getString("id")));
### 注意事项：
1. 删除操作不可逆，建议执行前进行二次确认
2. 将影响关联的审批流、日志记录等依赖附件的业务功能
3. 高并发场景可能触发数据库行锁
4. 参数pkIds建议做元素数量校验（1 ≤ n ≤ 100）
5. 避免长事务导致数据库连接池耗尽
@see ##remove(String, Object, Object) 单条删除接口
@param `formId` 表单标识，示例："purchase"
@param `pkIds` 单据主键集合（非空且最多100个元素） 示例：["123", "456"]


class_name: kd.bos.servicehelper.AttachmentServiceHelper
method_name: bindingAttachment
param_types_key: Map
signature_text:
public static java.util.Map<String, Object> bindingAttachment(java.util.Map<String, Object> params) throws Exception

comment:
附件字段和附件面板均可使用
@see ##genBindingParam(String, String, List) 可生成当前方法所需入参
@param `params` 包含附件绑定配置的键值对集合，必须包含： formNumber（表单标识）、 billPkId（表单主键）、 data（附件信息集合）
@return 包含操作结果的对象，结构为： {success:boolean, message:string}
@throws `Exception` 当附件绑定失败时抛出


class_name: kd.bos.servicehelper.AttachmentServiceHelper
method_name: genBindingParam
param_types_key: String,String,List
signature_text:
public static java.util.Map<String, Object> genBindingParam(String formNumber, String billPkId, java.util.List<AttDto> attDtoList) throws Exception

comment:
获取要绑定的附件数据，搭配bindingAttachment使用
@param `formNumber` 表单标识
@param `billPkId` 单据主键
@param `attDtoList` 附件信息集合
@return 附件绑定所需参数集合 @See bindingAttachment(Map param) 参数 | 含义 \-------|------ formNumber | 单据标识 billPkId | 单据主键值 data | 需要绑定的附件参数信息集合（元素类型为AttDto的List集合) AttDto的部分参数说明： 参数 | 含义 \-------|------ entryPkId | 所在分录内码，若不在分录可以不填 fileName | 文件名 size | 附件大小 path | 附件全路径 包含域名 attKey | 附件标识
@throws `Exception` 获取失败抛出异常


class_name: kd.bos.servicehelper.AttachmentServiceHelper
method_name: generateUid
signature_text: public static String generateUid()
comment:
生成符合雪花算法规范的唯一标识符(UID) 本方法基于雪花算法(Snowflake)生成分布式系统下具有时间有序性的唯一ID，生成的ID由以下部分组成： 固定前缀rc-upload + ID
@return 基于雪花算法生成的19位长整型唯一标识符 rc-upload-2153606081487855616


class_name: kd.bos.servicehelper.AttachmentServiceHelper
method_name: getAttachments
param_types_key: String,Object,String,boolean
signature_text:
public static java.util.List<java.util.Map<String, Object>> getAttachments(String formId, Object pkId, String attachKey, boolean enableTempAccess)

comment:
获取指定单据指定附件面板的附件列表
@param `formId` 表单标识
@param `pkId` 单据主键
@param `attachKey` 附件面板标识
@param `enableTempAccess` 请传递false
@return 附件信息 建议可获取使用的参数如下 参数 | 含义 \-------|------ attPkId | 附件全局表主键 creator | 创建人 fileSource | 文件来源 附件字段、附件面板等 kd.bos.service.attachment.FileSource type | 文件类型 url | 文件服务器地址 （含域名的全路径） uid | 附件uid（一般为前端生成） size | 附件大小 单位是字节 name | 附件名称 entityNum | 附件所在的单据的单据标识 billPkId | 附件所在的单据的主键值 status | 附件状态


class_name: kd.bos.servicehelper.AttachmentServiceHelper
method_name: mark
param_types_key: String,String,String
signature_text: public static void mark(String uid, String description, String attPkId)
comment:
为指定附件添加或更新业务备注信息
**建议调用前执行如下逻辑：** 1\. 校验附件是否存在 2. 过滤非法字符（如HTML标签、敏感词）
@param `uid` 附件全局唯一标识，需满足： \- 如rc-upload-1739842919039-24 \- 必须存在于t_bas_attachment表
@param `attPkId` 附件主键，uid未传递或传空时使用，需满足： \- 必须存在于t_bas_attachment主表
@param `description` 备注内容，需满足： \- 非空（长度范围：1-50字长） \- 不包含未转义的XML特殊字符 \- 禁止脚本标签


class_name: kd.bos.servicehelper.AttachmentServiceHelper
method_name: remove
param_types_key: String,Object,Object
signature_text: public static void remove(String formId, Object pkId, Object fileUid)
comment:
附件删除接口 - 永久删除指定表单单据关联的附件面板的指定文件
高危提醒：本方法执行文件物理删除且影响多张单据，请严格进行操作审计。
高危提醒：本方法将移除单据与文件服务器文件的关联关系（数据表）。
高危提醒：建议调用此接口的外部业务限制调用频次。
### 接口特性：
* 根据表单标识和单据主键定位附件
* 级联删除关联的附件
* 直接操作数据库和文件存储系统
### 使用示例：
// 物理删除（不可恢复）采购单附件QFilterqFilter=newQFilter("billno", QCP.equals, "purchase");
QFilter[] qFilters = newQFilter[]{qFilter};
DynamicObject[] newBillFid = BusinessDataServiceHelper.load("purchase", "fid", qFilters);
Stringpkid= newBillFid[0].getString("id");
//字符attachmentPanel为单据附件面板标识ListpanelData= AttachmentServiceHelper.getAttachments("purchase", pkid, "attachmentPanel",false);
Stringuid= panelData.get(0).get("uid") + "";
AttachmentServiceHelper.remove("purchase", pkid, uid);
### 注意事项：
1. 删除操作不可逆，建议执行前进行二次确认
2. 将影响关联的审批流、日志记录等依赖附件的业务功能
3. 高并发场景可能触发数据库行锁
@param `formId` 表单唯一标识（格式：表单标识） 示例："purchase"、"contract"
@param `pkId` 单据业务主键（通常为单据主键也可能是字符格式） 示例："123"、"456"
@param `fileUid` 附件唯一标识 示例："rc_upload_12345678910_22"、"rc_upload_12345678910_55" 可通过查询附件面板表t_bas_attachment获取 或通过 @See getAttachments(String, Object, String,boolean) 获取


class_name: kd.bos.servicehelper.AttachmentServiceHelper
method_name: saveTempAttachments
param_types_key: String,Object,String,Map
signature_text:
public static DynamicObjectCollection saveTempAttachments(String formId, Object pkId, String appId, java.util.Map<String, Object> attachmentMap)

comment:
:附件面板临时附件保存类 保存指定单据的临时附件到远程服务器
@param `formId` 表单标识
@param `pkId` 单据主键
@param `appId` 应用编码
@param `attachmentMap` 附件信息
@return 新上传到文件服务器的附件信息


class_name: kd.bos.servicehelper.AttachmentServiceHelper
method_name: saveTempToFileService
param_types_key: String,String,String,String,Object,String,boolean,boolean
signature_text:
public static String saveTempToFileService(String tempUrl, String appId, String formId, String attachKey, Object pkId, String fileName, boolean isDeleteTempFile, boolean createNewFileWhenExists)

comment:
把临时附件上传到文件服务器
@param `tempUrl` 临时附件url
@param `appId` 应用编码
@param `formId` 表单标识
@param `attachKey` 控件标识
@param `pkId` 单据pkid
@param `fileName` 文件名
@param `isDeleteTempFile` 是否删除临时文件
@param `createNewFileWhenExists` 当文件存在时新建文件
@return 文件相对于文件服务器的相对路径


class_name: kd.bos.servicehelper.AttachmentServiceHelper
method_name: upload
param_types_key: String,Object,String,List
signature_text:
public static void upload(String formId, Object pkId, String attachKey, java.util.List<java.util.Map<String, Object>> attachments) throws KDException

comment:
将业务单据的附件元数据持久化至数据库
提醒：该方法仅处理数据记录不涉及文件存储。
提醒：使用该方法绑定附件时，通常需要绑定持久化附件， 验证附件是否是持久化附件可通过判断url中是否包含"tempfile/download.do?configKey"字符判断。即url.contains("tempfile/download.do?configKey")， 请勿使用url.contains("configKey=redis.serversForCache&id=tempfile")等其他字符串判断
此方法执行以下核心操作： 1. 关联单据绑定 - 建立附件记录与业务单据(formId/pkId)的映射关系 2. 批量插入 - 使用事务批量写入附件元数据记录
**服务边界说明：** \- 不执行物理文件的上传/下载操作
@see kd.bos.servicehelper.FileService#upload(FileItem) 关联的文件物理存储方法
@param `formId` 关联业务单据类型编码
@param `pkId` 关联业务单据主键ID，需满足： \- 与formId对应的单据记录存在 \- 类型匹配（varchar/number）
@param `attachments` 附件元数据集合


class_name: kd.bos.servicehelper.basedata.BaseDataRefrenceHelper
method_name: checkRefrenced
param_types_key: String,Object[],Collection,Collection,OperateOption
signature_text:
public static java.util.Map<Object, BaseDataCheckRefrenceResult> checkRefrenced(String baseEntityTypeKey, Object[] objIds, java.util.Collection<String> ignoreRefEntityIds, java.util.Collection<String> checkRefEntityIds, OperateOption option)

comment:
检查引用
@param `baseEntityTypeKey` 基础资料类型
@param `objIds` 基础资料内码
@param `ignoreRefEntityIds` 指定需要忽略引用检查的单据。如果为空，则会检查全部引用了本基础资料的单据表格
@param `checkRefEntityIds` 指定需要引用检查的单据。如果为空，则会检查全部引用了本基础资料的单据表格


class_name: kd.bos.servicehelper.basedata.BaseDataRefrenceHelper
method_name: checkRefrenced
param_types_key: BasedataEntityType,Object[],Collection,Collection,OperateOption
signature_text:
public static java.util.Map<Object, BaseDataCheckRefrenceResult> checkRefrenced(BasedataEntityType baseEntityType, Object[] objIds, java.util.Collection<String> ignoreRefEntityIds, java.util.Collection<String> checkRefEntityIds, OperateOption option)

comment:
检查引用
@param `baseEntityType` 基础资料主实体
@param `objIds` 基础资料内码
@param `ignoreRefEntityIds` 指定需要忽略引用检查的单据。如果为空，则会检查全部引用了本基础资料的单据表格
@param `checkRefEntityIds` 指定需要引用检查的单据。如果为空，则会检查全部引用了本基础资料的单据表格
@param `option` 可选参数


class_name: kd.bos.servicehelper.basedata.BaseDataRefrenceHelper
method_name: getAllRefs
param_types_key: BasedataEntityType,Object
comment: 获取所有引用关系 @param `baseEntityType` @param `objId`
signature_text:
public static java.util.List<BaseDataRefenceKey> getAllRefs(BasedataEntityType baseEntityType, Object objId)


class_name: kd.bos.servicehelper.basedata.BaseDataRefrenceHelper
method_name: getAllRefs
param_types_key: BasedataEntityType,Object[]
signature_text:
public static java.util.Map<Object, java.util.List<BaseDataRefenceKey>> getAllRefs(BasedataEntityType baseEntityType, Object[] objIds)

comment:
获取所有引用关系（返回的Map结果根据主键的类型不同其key可为String或Long，所以需要注意传入的objIds值为整数范围时，去取结果时要转成Long型。或者传入的objIds直接指定为Long）
@param `baseEntityType`
@param `objIds`


class_name: kd.bos.servicehelper.basedata.BaseDataRefrenceHelper
method_name: getAllRefs
param_types_key: String,Object[]
signature_text:
public static java.util.Map<Object, java.util.List<BaseDataRefenceKey>> getAllRefs(String baseEntityTypeKey, Object[] objIds)

comment:
获取所有引用关系（返回的Map结果根据主键的类型不同其key可为String或Long，所以需要注意传入的objIds值为整数范围时，去取结果时要转成Long型。或者传入的objIds直接指定为Long）
@param `baseEntityTypeKey`
@param `objIds`


class_name: kd.bos.servicehelper.basedata.BaseDataService
method_name: saveBaseDataExc
param_types_key: DynamicObject,Long,Long,List
signature_text:
saveBaseDataExc(DynamicObject dataInfo, Long dataPk, Long createOrgID, java.util.List<Long> orgList)


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: assign
param_types_key: String,Long,String,Set,Set
signature_text:
public static BaseDataResponse assign(String entityId, Long assignOrgId, String appId, java.util.Set<Long> dataIds, java.util.Set<Long> orgIds)

comment:
分配接口 兼容逐级分配/自由分配、新/旧模型
@param `entityId` 基础资料标识
@param `assignOrgId` 分配组织ID
@param `appId` 基础资料所在应用ID
@param `dataIds` 被分配数据ID
@param `orgIds` 被分配组织ID


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: assignQueryByData
param_types_key: List,String,Long,String
signature_text:
public static AssignQueryResponse assignQueryByData(java.util.List<Long> dataIds, String entity, Long orgId, String appId)

comment:
分配查询，查询对应的数据都分配给了哪些组织
@param `dataIds` 数据id集合，orgId能使用的数据
@param `entity` 受控资料实体
@param `orgId` 当前执行分配查询的组织，是数据dataIds的使用组织
@param `appId` 资料所属应用ID，用于验权
@return 数据分配情况


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: baseDataDeleteHandler
param_types_key: DynamicObject[]
signature_text: public static void baseDataDeleteHandler(DynamicObject[] dataInfos)
comment:
描述：删除基础数据时基础数据使用登记表处理 删除数据后需要清除该条基础数据的使用关系表和个性化排除表记录； 不推荐直接调用，建议改调用实体的删除操作
@param `dataInfos` 删除的基础数据


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: batchAssign
param_types_key: String,Long,List,List
comment: 批量分配
signature_text:
batchAssign(String entityID, Long assignOrgID, java.util.List<Long> dataIDs, java.util.List<Long> orgIDs)


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: cancelAssign
param_types_key: String,String,Long,Set,Set
signature_text:
public static java.util.List<CancelAssignResult> cancelAssign(String entityId, String appId, Long opOrgId, java.util.Set<Long> dataIds, java.util.Set<Long> orgIds)

comment:
取消分配接口
@param `entityId` 基础资料实体ID
@param `appId` 应用ID
@param `opOrgId` 执行取消分配的操作组织
@param `dataIds` 待取消分配的数据集合
@param `orgIds` 目标组织集合
@return CancelAssignResult 取消分配结果


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: changeCtrlStrategy
param_types_key: String,Set,String,String,Long
signature_text:
public static BaseDataResponse changeCtrlStrategy(String entityId, java.util.Set<Long> dataIds, String ctrlStrategy, String appId, Long useOrgId)

comment:
变更控制策略
@param `entityId` 基础资料标识ID
@param `dataIds` 数据ID
@param `ctrlStrategy` 目标控制策略
@param `appId` appId：基础资料所在应用菜单的FID
@param `useOrgId` 使用组织ID
@return BaseDataResponse boolean success 成功/失败 String errorMsg 失败原因


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: changeManageRight
param_types_key: String,Long,String,Set,Long
signature_text:
public static BaseDataResponse changeManageRight(String entityId, Long useOrgId, String appId, java.util.Set<Long> dataIds, Long targetOrgId)

comment:
@param `entityId` 基础资料标识
@param `useOrgId` 使用组织
@param `appId` 应用ID
@param `dataIds` 基础资料ID
@param `targetOrgId` 目标组织ID
@return BaseDataResponse 返回实体 success：是否成功 errorMsg：错误信息


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: checkWorkCalendarDateType
param_types_key: Long,Date,String
signature_text: public static boolean checkWorkCalendarDateType(Long orgId, java.util.Date date, String dateType)
comment:
@param `orgId` 组织ID
@param `date` 检查日期
@param `dateType` 日期类型 1 工作日；2 半休日；3 节假日；4 休息日
@return boolean 是否


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: fillCtrlStrategyFieldAfterCopy
param_types_key: String,List
signature_text:
public static void fillCtrlStrategyFieldAfterCopy(String entity, java.util.List<DynamicObject> dataList)

comment:
给数据重新生成位图、原位图字段的值
* 使用场景：通过拷贝数据之后不走保存操作，而且直接执行save方法，此时所保存的是数据是无法正常生成管控范围数据信息，需要先执行该方法后save，再重建使用范围数据
@param `entity` 实体
@param `dataList` 数据集合


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getAssistMUListResult
param_types_key: Long,Long,String
signature_text:
public static java.util.List<Long> getAssistMUListResult(Long materialId, Long srcmuId, String convertType)

comment:
获取与源单位相关联的浮动类型的辅助单位列表
@param `materialId` 物料ID
@param `srcmuId` 来源单位ID
@param `convertType` 换算类型 浮动 "2"； 固定 "1"; 不限 "";
@return assistMUListResult 辅助单位ID列表


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getAssistMUListResult
param_types_key: Long,Long,String,Boolean
signature_text:
public static java.util.List<Long> getAssistMUListResult(Long materialId, Long srcmuId, String convertType, Boolean isAllAssistUnit)

comment:
获取与源单位相关联的浮动类型的辅助单位列表，新增开关参数
@param `materialId` 物料ID
@param `srcmuId` 来源单位ID
@param `convertType` 换算类型 浮动 "2"； 固定 "1"; 不限 "";
@param `isAllAssistUnit` 默认为false ，为否时只取物料上计量单位页签上的设置的计量单位
@return assistMUListResult 辅助单位ID列表


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getBaseDataCtrlPlugin
param_types_key: String
signature_text: public static IBaseDataCtrlPlugin getBaseDataCtrlPlugin(String entityType)
comment:
描述：获取基础数据控制插件 用于二开扩展，重写一些校验，和部分操作后的触发时机，完成业务定制化开发； 插件需要注册到基础数据管控策略默认配置，且需要继承kd.bos.servicehelper.basedata.IBaseDataCtrlPlugin
@param `entityType` 实体标识
@return IBaseDataCtrlPlugin 基础数据控制插件


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getBaseDataFilter
param_types_key: String,Long
signature_text: public static QFilter getBaseDataFilter(String entityID, Long orgID)
comment:
获取基础资料ID过滤
@param `entityID` 实体标识
@param `orgID` 组织机构ID
@return QFilter 过滤条件。类似于inner join T_BD_BaseData_U ur on ur.fdataid = bd_basedata.fid and ur.fuseorgid=100000


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getBaseDataFilter
param_types_key: String,List,boolean
signature_text:
public static QFilter getBaseDataFilter(String entityID, java.util.List<Long> orgID, boolean isRemoveDup)

comment:
批量获取基础资料过滤
@param `entityID` 实体标识
@param `orgID` 组织机构ID
@param `isRemoveDup` 是否去除重复数据，只返回masterid=fid的数据,默认传true
@return QFilter 过滤条件。 类似于QFilter fstategy ='5' and fstatus ='C' or (id in (select fdataid from t_bd_xxx_u))


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getBaseDataFilterWithOrgIds
param_types_key: Long,String,String,Set,boolean
signature_text:
public static QFilter[] getBaseDataFilterWithOrgIds(Long userId, String appId, String entityId, java.util.Set<Long> orgIds, boolean isRemoveDup)

comment:
获取组织可用的受控基础资料数据过滤条件
@param `userId` 用户Id
@param `appId` 应用Id
@param `entityId` 基础资料单据标识
@param `orgIds` 组织Id集合
@param `isRemoveDup` 是否去重
@return 组织可用数据过滤条件


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getBdCtrlStrgyBatch
param_types_key: String,List
comment: 批量获取基础资料配置的控制策略 @param `entity` 基础资料实体ID @param `createOrgs` 创建组织ID集合 @return Map 组织ID-控制策略
signature_text:
public static java.util.Map<String, String> getBdCtrlStrgyBatch(String entity, java.util.List<Long> createOrgs)


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getDesmuCount
param_types_key: Long,Long,double,Long
signature_text: public static double getDesmuCount(Long materialId, Long srcmuid, double srcmuCount, Long desmuid)
comment:
获取目标单位数量
@param `srcmuid` 原目标单位ID
@param `srcmuCount` 原目标单位数量
@param `desmuid` 目标单位ID
@return 目标单位数量


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getDesmuCount
param_types_key: Long,Long,BigDecimal,Long
signature_text:
public static java.math.BigDecimal getDesmuCount(Long materialId, Long srcmuid, java.math.BigDecimal srcmuCount, Long desmuid)

comment:
获取目标单位数量
@param `materialId` 物料id
@param `srcmuid` 原目标单位ID
@param `srcmuCount` 原目标单位数量
@param `desmuid` 目标单位ID
@return 目标单位数量


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getExchangeRateByQuoteType
param_types_key: Long,Long,Long,Date,boolean
signature_text:
public static java.math.BigDecimal getExchangeRateByQuoteType(Long originalCurrency, Long targetCurrency, Long exchangeRateType, java.util.Date conversionDate, boolean quoteType)

comment:
根据换算方式获取汇率
@param `originalCurrency` 原币
@param `targetCurrency` 目标币
@param `exchangeRateType` 汇率类型
@param `conversionDate` 折算日期
@param `quoteType` 换算方式
@return 汇率值


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getExchangeRateMap
param_types_key: Long,Long,Long,Date
signature_text:
public static java.util.Map<String, Object> getExchangeRateMap(Long originalCurrency, Long targetCurrency, Long exchangeRateType, java.util.Date conversionDate)

comment:
根据外币换算规则查询汇率值及换算方式
@param `originalCurrency` 原币
@param `targetCurrency` 目标币
@param `exchangeRateType` 汇率类型
@param `conversionDate` 折算日期
@return {"quoteType": true, "exchangeRate": 1.343}


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getHasCtrlQueryPermOrgIds
param_types_key: Long,String,String
signature_text:
public static java.util.List<Long> getHasCtrlQueryPermOrgIds(Long userId, String entityId, String appId)

comment:
获取有基础资料查询权限的组织Id集合
@param `entityId` 基础资料单据标识
@param `userId` 用户Id
@param `appId` 应用Id
@return 有查询权的组织Id集合


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getMUConv
param_types_key: List
signature_text: public static DynamicObject[] getMUConv(java.util.List<java.util.Map<String, Long>> params)
comment:
描述：批量查询物料计量单位转换率
@param `params` key说明：materialId 物料ID；srcmuid 源单位ID；desmuid 目标单位ID
@return DynamicObject[] 计量单位转换率


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getMasterIdFieldName
param_types_key: String
signature_text: public static String getMasterIdFieldName(String entityName)
comment:
获取基础资料配置的主数据内码字段名 返回fmasterid，或物料业务信息设置的字段名，比如fmbdmasterid; 如果没有配置，返回默认的fmasterid;
@param `entityName` 基础资料实体ID
@return String 基础资料masterid对应属性名


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getMasterIdPropName
param_types_key: String
signature_text: public static String getMasterIdPropName(String entityName)
comment:
获取基础资料配置的主数据内码属性名 返回masterid，或物料业务信息设置的属性名，比如mbdmasterid; 如果没有配置，返回默认的masterid;
@param `entityName` 基础资料实体ID
@return String 基础资料masterid对应属性名


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getRateConversionConfig
param_types_key: Long,Long,Date
signature_text:
public static boolean getRateConversionConfig(Long originalCurrency, Long targetCurrency, java.util.Date conversionDate)

comment:
查询币种对换算配置。 没有开启，默认false；开启：按优先级获取原币->目标币是否使用间接汇率，是->返回true，否->返回false。
@param `originalCurrency` 原币
@param `targetCurrency` 目标币
@param `conversionDate` 折算日期
@return true/false 使用间接/直接汇率


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: getWorkCalendar
param_types_key: Long,Date,Date,Set
signature_text:
public static DynamicObject getWorkCalendar(Long orgId, java.util.Date startDate, java.util.Date endDate, java.util.Set<String> dateTypeSet)

comment:
描述：获取指定组织,开始日期，结束日期的工作日历，日历明细通过dateTypeSet筛选。
@param `orgId` 组织机构
@param `startDate` 开始日期
@param `endDate` 结束日期
@param `dateTypeSet` 需要筛选的日期类型列表
@return DynamicObject 工作日历


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: individualize
param_types_key: String,Long,String,Set
signature_text:
public static BaseDataResponse individualize(String entityId, Long useOrgId, String appId, java.util.Set<Long> dataIds)

comment:
基础资料个性化接口
@param `entityId` 基础资料标识
@param `useOrgId` 使用组织
@param `appId` 应用ID
@param `dataIds` 基础资料ID
@return BaseDataResponse 返回实体 success：是否成功 errorMsg：错误信息


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: isHalfWorkDay
param_types_key: Long,Date
signature_text: public static boolean isHalfWorkDay(Long orgId, java.util.Date date)
comment:
判断指定组织工作日历的某天，是否半工作日 查不到组织,工作日历,非休息日 都返回false
@param `orgId` 组织ID
@param `date` 检查日期
@return boolean 是否半工作日


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: isRestDay
param_types_key: Long,Date
signature_text: public static boolean isRestDay(Long orgId, java.util.Date date)
comment:
判断指定组织工作日历的某天，是否休息日 查不到组织,工作日历,非休息日 都返回false
@param `orgId` 组织ID
@param `date` 检查日期
@return boolean 是否休息日


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: isWeekendDay
param_types_key: Long,Date
signature_text: public static boolean isWeekendDay(Long orgId, java.util.Date date)
comment:
判断指定组织工作日历的某天，是否节假日 查不到组织,工作日历,非休息日 都返回false
@param `orgId` 组织ID
@param `date` 检查日期
@return boolean 是否节假日


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: isWorkDay
param_types_key: Long,Date
signature_text: public static boolean isWorkDay(Long orgId, java.util.Date date)
comment:
判断指定组织工作日历的某天，是否工作日 查不到组织,工作日历,非工作日 都返回false
@param `orgId` 组织ID
@param `date` 检查日期
@return boolean 是否工作日


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: presetCtrlOrgUseRangData
param_types_key: String,String,String,Map,boolean
signature_text:
public static UpgradeResult presetCtrlOrgUseRangData(String dbKey, String entity, String tableName, java.util.Map<Long, Long> dataOrgMap, boolean isTreeType)

comment:
受控基础资料预置数据自动生成相关使用范围数据
* 1、新模型生成位图值，补充位图数据
* 2、旧模型补充使用范围表的数据
@param `dbKey` 数据库路由标识
@param `entity` 受控资料实体
@param `tableName` 基础资料主表名称
@param `dataOrgMap` 需要预置的数据和组织的信息， K：数据Id，V：创建组织Id
@param `isTreeType` 是否树形基础资料，树形：true， 非树形：false
@return UpgradeResult


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: queryBaseData
param_types_key: String,Long,QFilter,String
signature_text:
public static DynamicObjectCollection queryBaseData(String entityID, Long orgID, QFilter filter, String selectFields)

comment:
获取基础资料 只是基于getBaseDataFilter再包了一层去调用QueryServiceHelper
@param `entityID` 基础资料标识ID
@param `orgID` 使用组织ID
@param `filter` 自定义过滤条件
@param `selectFields` 查询字段
@return DynamicObjectCollection 基础资料实体


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: queryBaseDataByDate
param_types_key: String,Long,QFilter,String,Date
signature_text:
public static DynamicObjectCollection queryBaseDataByDate(String entityID, Long orgID, QFilter filter, String selectFields, java.util.Date queryDate)

comment:
根据查询日期获取基础资料
@param `entityID` 实体标识
@param `orgID` 组织机构ID
@param `filter` 过滤条件
@param `selectFields` 查询字段列表
@param `queryDate` 查询日期
@return dataObj


class_name: kd.bos.servicehelper.basedata.BaseDataServiceHelper
method_name: queryBaseDataFromCache
param_types_key: String,Long,QFilter,String
signature_text:
public static java.util.Map<Object, DynamicObject> queryBaseDataFromCache(String entityID, Long orgID, QFilter filter, String selectFields)

comment:
从缓存获取基础资料 当组织为0L或者null时或者基础资料是非受控基础资料时，直接调用BusinessDataServiceHelper.loadFromCache返回查询结果； 当组织不为0L，且是受控基础资料时，调用BusinessDataServiceHelper.loadFromCache，拼上orgID的使用范围（BaseDataServiceHelper.getBaseDataFilter），返回结果；
@param `entityID` 基础资料标识
@param `orgID` 组织ID
@param `filter` 自定义过滤条件
@param `selectFields` 查询字段
@return Map 基础资料主键-基础资料DynamicObject实体


class_name: kd.bos.servicehelper.basedata.IBaseDataCtrlPlugin
method_name: afterChangeCtrlStrategy
param_types_key: String,List,String
signature_text:
default void afterChangeCtrlStrategy(String entityId, java.util.List<Long> dataIds, String ctrlStrategy)

comment:
描述：变更控制策略成功后回调接口
@param `entityId` 基础资料实体ID
@param `dataIds` 基础资料数据ID
@param `ctrlStrategy` 变更后的控制策略


class_name: kd.bos.servicehelper.basedata.IBaseDataCtrlPlugin
method_name: afterSaveIndividualizeData
param_types_key: String,Map,Long,Map
signature_text:
default void afterSaveIndividualizeData(String entityId, java.util.Map<Long, Long> data2CreateOrgMap, Long useOrgId, java.util.Map<Long, DynamicObject> individualizeMap)

comment:
描述：个性化保存之后，需要处理处理的业务逻辑，由业务实现
@param `entityId` 受控基础资料实体标识
@param `data2CreateOrgMap` 被个性化的数据id和其创建组织，K：原始数据id，V：数据对应的创建组织
@param `useOrgId` 使用组织，也就是对数据执行个性化操作的组织
@param `individualizeMap` 个性化数据（K：原始数据id，V：根据原始数据Id查询出来的DynamiceObject 进行COPY之后的对象）


class_name: kd.bos.servicehelper.basedata.IBaseDataCtrlPlugin
method_name: afterUnAssign
param_types_key: String,Map
signature_text: default void afterUnAssign(String entityId, java.util.Map<Long, java.util.Set<Long>> cancelDataMap)
comment:
描述：取消分配成功后回调接口
@param `entityId` 基础资料实体ID
@param `cancelDataMap` key:dataIds value: orgIds Long dataIds 被取消分配的基础资料数据ID Set orgIds 被取消分配的组织ID


class_name: kd.bos.servicehelper.basedata.IBaseDataCtrlPlugin
method_name: assignCheckWithDetail
param_types_key: List,List
signature_text:
public default java.util.Map<Long, java.util.Map<Long, String>> assignCheckWithDetail(java.util.List<Long> dataIDs, java.util.List<Long> orgIDs)

comment:
描述：分配检查，带详细信息。
@param `dataIDs` 待分配的基础资料ID
@param `orgIDs` 待分配的目标组织ID
@return 检查失败的待分配基础资料及组织信息map,key是基础资料ID，value是目标组织ID对应分配失败的详细信息映射表。


class_name: kd.bos.servicehelper.basedata.IBaseDataCtrlPlugin
method_name: beforeSaveIndividualizeData
param_types_key: String,Map,Long,Map
signature_text:
default void beforeSaveIndividualizeData(String entityId, java.util.Map<Long, Long> data2CreateOrgMap, Long useOrgId, java.util.Map<Long, DynamicObject> individualizeMap)

comment:
描述：个性化保存之前，需要处理处理的业务逻辑，由业务实现
@param `entityId` 受控基础资料实体标识
@param `data2CreateOrgMap` 被个性化的数据id和其创建组织，K：原始数据id，V：数据对应的创建组织
@param `useOrgId` 使用组织，也就是对数据执行个性化操作的组织
@param `individualizeMap` 个性化数据（K：原始数据id，V：根据原始数据Id查询出来的DynamiceObject 进行COPY之后的对象）


class_name: kd.bos.servicehelper.basedata.IBaseDataCtrlPlugin
method_name: checkBeforeAddSubData
param_types_key: String,List
signature_text:
default java.util.Map<Long, String> checkBeforeAddSubData(String entityType, java.util.List<Long> dataIds)

comment:
描述：增加下级基础资料前校验处理
@param `entityType` 实体类型
@param `dataIds` 基础资料ID列表
@return 校验失败的基础资料信息map,key是基础资料ID，value是失败的详细信息。


class_name: kd.bos.servicehelper.basedata.IBaseDataCtrlPlugin
method_name: checkNeedCustomData
param_types_key: String,DynamicObject
signature_text: public default boolean checkNeedCustomData(String entityType, DynamicObject dataInfo)
comment:
描述：判断是否需要创建个性化数据
@param `entityType` 实体类型
@param `dataInfo` 基础数据
@return true 需要创建个性化数据;false 不需要创建个性化数据


class_name: kd.bos.servicehelper.basedata.IBaseDataCtrlPlugin
method_name: chectDuplicate
param_types_key: String,Long,List
signature_text: public Boolean chectDuplicate(String entityType, Long orgID, java.util.List<Long> idList)
comment:
@param `entityType` 实体类型ID
@param `orgID` 使用组织ID
@param `idList` 基础数据ID列表
@return Boolean true：有重复；false：没有重复


class_name: kd.bos.servicehelper.basedata.IBaseDataCtrlPlugin
method_name: orgPermChangeCheck
param_types_key: List,DynamicObject
signature_text: default java.util.Map<Long, String> orgPermChangeCheck(java.util.List<Long> ids, DynamicObject org)
comment:
描述：业务实现基础资料管理权转让校验
@param `ids` 待转让的基础资料ID
@param `org` 待转让的目标组织
@return 转让失败的基础资料信息map,key是基础资料ID，value是失败的详细信息。


class_name: kd.bos.servicehelper.basedata.IBaseDataCtrlPlugin
method_name: unAssignCheckWitchDetail
param_types_key: List
signature_text:
public default java.util.List<Object[]> unAssignCheckWitchDetail(java.util.List<Long[]> unAssignDatas)

comment:
描述：反分配检查
@param `unAssignDatas` 待检查的取消分配数据列表， 列表里的每个元素是一个整形的二维数据，Long[0]是基础资料ID，Long[1]是使用组织ID。
@return 检查失败的待取消分配基础资料及组织信息列表, Object[0]是基础资料ID，Object[1]是使用组织ID,Object[2]是报错信息


class_name: kd.bos.servicehelper.billtype.BillTypeServiceHelper
method_name: exportBillTypeByEntityIds
param_types_key: List
comment: 根据单据实体id来导出单据类型sql @param `entityIds` ` 实体id
signature_text:
public static java.util.List<BillTypeFile> exportBillTypeByEntityIds(java.util.List<String> entityIds)


class_name: kd.bos.servicehelper.billtype.BillTypeServiceHelper
method_name: getBillLayoutByFormId
param_types_key: String,String
comment: 根据表单ID来查找该单据所有的布局方案 @param `formId` @param `domainModelType` 领域模型的种类
signature_text:
public static java.util.List<java.util.Map<String, Object>> getBillLayoutByFormId(String formId, String domainModelType)


class_name: kd.bos.servicehelper.billtype.BillTypeServiceHelper
method_name: getBillLayoutByFormId
param_types_key: String,boolean
comment: 根据表单编码来查找该单据或基础资料的所有布局方案 @param `formId` @param `baseOrBill`
signature_text:
public static java.util.List<java.util.Map<String, Object>> getBillLayoutByFormId(String formId, boolean baseOrBill)


class_name: kd.bos.servicehelper.billtype.BillTypeServiceHelper
method_name: getBillTypeObject
param_types_key: String,Long
comment: 根据表单id/单据类型id获取单据类型 @param `formId` 表单id @param `billTypeId` 单据类型id
signature_text:
public static java.util.Map<Object, DynamicObject> getBillTypeObject(String formId, Long billTypeId)


class_name: kd.bos.servicehelper.billtype.BillTypeServiceHelper
method_name: getBillTypesByAppId
param_types_key: List
comment: @param `appIds`
signature_text:
public static java.util.List<java.util.Map<String, Object>> getBillTypesByAppId(java.util.List<String> appIds)


class_name: kd.bos.servicehelper.billtype.BillTypeServiceHelper
method_name: getMobileBillLayoutByFormId
param_types_key: String
comment: 根据表单ID来查找该单据的移动布局方案 @param `formId`
signature_text:
public static java.util.List<java.util.Map<String, Object>> getMobileBillLayoutByFormId(String formId)


class_name: kd.bos.servicehelper.BillTypeDifferentialHelper
method_name: getDifferentialControlInfos
param_types_key: String,long
comment: @param `formId` ` 表单id @param `billTypeId` ` 单据类型内码 @return List
signature_text:
public static java.util.List<DifferentialControlInfo> getDifferentialControlInfos(String formId, long billTypeId)


class_name: kd.bos.servicehelper.BillTypeDifferentialHelper
method_name: getDifferentialControlInfos
param_types_key: String
comment: 实时读取指定单据下，所有单据类型的字段设置（性能非常差，请改用getDifferentialControlInfosFromCache）
signature_text:
public static java.util.Map<Object, java.util.List<BillTypeControlInfo>> getDifferentialControlInfos(String formId)


class_name: kd.bos.servicehelper.BillTypeDifferentialHelper
method_name: getDifferentialControlInfos2
param_types_key: String,Long
comment: @param `entityId` ` 实体标识 @param `billtypeId` ` 单据类型内码 @return 差量信息列表
signature_text:
public static java.util.List<DifferentialControlInfo> getDifferentialControlInfos2(String entityId, Long billtypeId)


class_name: kd.bos.servicehelper.BillTypeDifferentialHelper
method_name: getDifferentialControlInfosFromCache
param_types_key: String,Long
comment: 获取控件差量化信息（从缓存） @param `entityId` @param `billtypeId`
signature_text:
public static java.util.List<DifferentialControlInfo> getDifferentialControlInfosFromCache(String entityId, Long billtypeId)


class_name: kd.bos.servicehelper.BillTypeDifferentialHelper
method_name: getDifferentialControlInfosFromCache
param_types_key: String
comment: 读取指定单据下，所有单据类型的字段设置 @param `formId` 单据主实体编码
signature_text:
public static java.util.Map<Object, java.util.List<DifferentialControlInfo>> getDifferentialControlInfosFromCache(String formId)


class_name: kd.bos.servicehelper.BillTypeDifferentialHelper
method_name: getFullControlInfos
param_types_key: String,String
comment: @param `formId` 布局编码 @param `originalFormId` 原始布局编码
signature_text:
public static java.util.Map<String, BillTypeControlInfo> getFullControlInfos(String formId, String originalFormId)


class_name: kd.bos.servicehelper.BillTypeDifferentialHelper
method_name: getRuntimeDiffControlInfos
param_types_key: String,Long
comment: @param `entityId` ` 实体标识 @param `billtypeId` ` 单据类型内码 @return 差量信息列表
signature_text:
public static java.util.List<DifferentialControlInfo> getRuntimeDiffControlInfos(String entityId, Long billtypeId)


class_name: kd.bos.servicehelper.BillTypeDifferentialHelper
method_name: getRuntimeDiffControlInfos
param_types_key: String,Long,boolean
comment: @param `entityId` 实体标识 @param `billtypeId` 单据类型内码 @param `isMob` 是否是移动端 @return 差量信息列表
signature_text:
public static java.util.List<DifferentialControlInfo> getRuntimeDiffControlInfos(String entityId, Long billtypeId, boolean isMob)


class_name: kd.bos.servicehelper.BillTypeDifferentialHelper
method_name: getRuntimeDiffControlInfosFromCache
param_types_key: String
signature_text:
public static java.util.Map<Object, java.util.List<DifferentialControlInfo>> getRuntimeDiffControlInfosFromCache(String formId)

comment:
读取指定单据下，所有单据类型的字段设置 仅包含运行时用到的信息，与设计时相比，不填充 必录类型mustInputType ， 设计时字段类名fieldType，默认值类型defValueType，控件名getFieldName
@param `formId` 单据主实体编码


class_name: kd.bos.servicehelper.BillTypeDifferentialHelper
method_name: getRuntimeDiffControlInfosFromCache
param_types_key: String,boolean
signature_text:
public static java.util.Map<Object, java.util.List<DifferentialControlInfo>> getRuntimeDiffControlInfosFromCache(String formId, boolean isMob)

comment:
读取指定单据下，所有单据类型的字段设置 仅包含运行时用到的信息，与设计时相比，不填充 必录类型mustInputType ， 设计时字段类名fieldType，默认值类型defValueType，控件名getFieldName
@param `formId` 单据主实体编码
@param `isMob` 是否是移动端


class_name: kd.bos.servicehelper.BillTypeDifferentialHelper
method_name: storeDifferentialControlInfos
param_types_key: String,Long,List
comment: @param `entityId` ` 实体标识 @param `billtypeId` ` 单据类型id @param `difInfos` ` 控件的差量信息
signature_text:
public static void storeDifferentialControlInfos(String entityId, Long billtypeId, java.util.List<DifferentialControlInfo> difInfos)


class_name: kd.bos.servicehelper.botp.BFTrackerServiceHelper
method_name: findDirtSourceBills
param_types_key: String,Long[]
signature_text:
public static java.util.Map<Long, java.util.List<BFRow>> findDirtSourceBills(String entityNumber, Long[] billIds)

comment:
下游单上查，输出下游单据各分录行对应的直接源单分录行：仅包含直接源单，不进行跨级搜索
@param `entityNumber` 下游单据主实体编码
@param `billIds` 下游单据单据内码集合
@return 输出字典，按下游单据内码分组，包含下游单据各分录行与其直接源单分录行（可能有多条）之间的对应关系


class_name: kd.bos.servicehelper.botp.BFTrackerServiceHelper
method_name: findDirtTargetBills
param_types_key: String,Long[]
signature_text:
public static java.util.Map<Long, java.util.List<BFRow>> findDirtTargetBills(String entityNumber, Long[] billIds)

comment:
源单下查，输出源单各分录行直接下推的下游单据分录行：仅包含直接下游单据，不进行跨级搜索
@param `entityNumber` 源单主实体编码
@param `billIds` 源单单据内码集合
@return 输出字典，按上游单据内码分组，包含各源单各分录行与其直接下游单据分录行（可能有多条）之间的对应关系


class_name: kd.bos.servicehelper.botp.BFTrackerServiceHelper
method_name: findSourceBills
param_types_key: String,Long[]
signature_text:
public static java.util.Map<String, java.util.HashSet<Long>> findSourceBills(String entityNumber, Long[] billIds)

comment:
@param `entityNumber` 下游单据实体编码，如"pur_purorder"
@param `billIds` 下游单据内码
@return 按单据类型分组的上游单据内码，如 "{ sal_order : [xxx1, xxx2, xxx3] }"。 弊端：批量查询时，未输出各单据的上游单据。如需找到各单之间明确的关联关系，建议使用loadBillLinkUpNodes(entityNumber, billIds, onlyDirtSource)方法


class_name: kd.bos.servicehelper.botp.BFTrackerServiceHelper
method_name: findTargetBills
param_types_key: String,Long[]
signature_text:
public static java.util.Map<String, java.util.HashSet<Long>> findTargetBills(String entityNumber, Long[] billIds)

comment:
@param `entityNumber` 上游单据实体编码，如"sal_order"
@param `billIds` 上游单据主键
@return 按单据类型分组的下游单据内码，如 "{ pur_purorder : [xxx1, xxx2, xxx3] }"。 弊端：批量查询时，未输出各单据的下游单据。如需找到各单之间明确的关联关系，建议使用loadBillLinkDownNodes(entityNumber, billIds, onlyDirtSource)方法


