## 接口的使用
kd.bos.entity.datamodel.IDataModel

- 使用IDataModel的程序包
  程序包 | 说明
  --- | ---
  kd.bos.entity.datamodel |
  kd.bos.entity.filter |
  kd.bos.entity.formula |
  kd.bos.entity.property |
  kd.bos.entity.rule |
  kd.bos.form |
  kd.bos.form.control |
  kd.bos.form.field |
  kd.bos.form.flex |
  kd.bos.form.operate.webapi |
  kd.bos.form.plugin |
  kd.bos.form.rule |
  kd.bos.servicehelper |

- - ### kd.bos.entity.datamodel中IDataModel的使用

    kd.bos.entity.datamodel中IDataModel的子接口
    限定符和类型 | 接口和说明
    --- | ---
    `interface` | `IBaseModel`
    `interface` | `IBillModel`

    实现IDataModel的kd.bos.entity.datamodel中的类
    限定符和类型 | 类和说明
    --- | ---
    `class` | `AbstractFormDataModel`
    `class` | `DynamicFormModelProxy`

    参数类型为IDataModel的kd.bos.entity.datamodel中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `java.util.List<java.util.Map<java.lang.String,java.lang.Object>>` | IAttachmentModel.`getData(IDataModel model, java.lang.String attachKey)` 获取附件数据
    `java.util.List<java.util.Map<java.lang.String,java.lang.Object>>` | IAttachmentModel.`getData(IDataModel model, java.lang.String attachKey, java.lang.String entityId)`
    `java.util.List<java.util.Map<java.lang.String,java.lang.Object>>` | IAttachmentModel.`getTempData(IDataModel model, java.lang.String attachKey, java.lang.String pageId)` 已过时。
    `java.util.List<java.util.Map<java.lang.String,java.lang.Object>>` | IAttachmentModel.`getTempData(IDataModel model, java.lang.String attachKey, java.lang.String pageId, java.lang.String entityId)`
    `java.lang.Object` | DefaultValueCalculator.`getValue2(IDataModel model, kd.bos.dataentity.entity.DynamicObject dataEntity, kd.bos.dataentity.metadata.IDataEntityProperty property, FieldDefValue defValue2)` 计算默认值，升级版，可以获取常量、变量、函数、公式等
    `void` | IAttachmentModel.`remove(IDataModel model, java.util.Map<java.lang.String,java.lang.Object> attach)` 删除附件数据
    `void` | IAttachmentModel.`remove(IDataModel model, java.util.Map<java.lang.String,java.lang.Object> attach, java.lang.String entityId)`
    `void` | IAttachmentModel.`removeTemp(IDataModel model, java.lang.String pageId, java.util.Map<java.lang.String,java.lang.Object> attach)` 删除临时附件数据
    `void` | IAttachmentModel.`removeTemp(IDataModel model, java.lang.String pageId, java.util.Map<java.lang.String,java.lang.Object> attach, java.lang.String entityId)`
    `java.util.List<kd.bos.dataentity.entity.DynamicObject>` | IAttachmentFieldModel.`saveAttachments(IDataModel model, java.lang.String pageId, java.lang.String entityId, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> attachs)` 临时保存附件数据
    `void` | IAttachmentModel.`upload(IDataModel model, java.lang.String attachKey, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> attachs)` 保存附件数据
    `void` | IAttachmentModel.`upload(IDataModel model, java.lang.String attachKey, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> attachs, java.lang.String entityId)`
    `void` | IAttachmentModel.`uploadTemp(IDataModel model, java.lang.String attachKey, java.lang.String pageId, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> attachs)` （单据未保存时）临时保存附件数据
    `void` | IAttachmentModel.`uploadTemp(IDataModel model, java.lang.String attachKey, java.lang.String pageId, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> attachs, java.lang.String entityId)`

  - ### kd.bos.entity.filter中IDataModel的使用

    返回IDataModel的kd.bos.entity.filter中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `IDataModel` | ModelTypeFilterValueSetter.`getModel()`

    参数类型为IDataModel的kd.bos.entity.filter中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `static java.util.List<kd.bos.orm.query.QFilter>` | FilterUtil.`buildBaseDataF7QFilters(kd.bos.dataentity.metadata.IDataEntityProperty basedataProp, IDataModel model, java.lang.String appId, java.lang.String baseEntityId, java.util.List<kd.bos.orm.query.QFilter> userQFilters, java.lang.String permissionItem)`
    `static java.util.List<kd.bos.orm.query.QFilter>` | FilterUtil.`buildBaseDataPropertyQFilters(IDataModel model, java.lang.String baseEntityTypeId, kd.bos.dataentity.metadata.IDataEntityProperty property, java.lang.String appId, java.lang.String permissionItem)`
    `void` | ModelTypeFilterValueSetter.`setModel(IDataModel model)`

    参数类型为IDataModel的kd.bos.entity.filter中的构造器
    构造器和说明
    `FilterBuilder(MainEntityType dataType, FilterCondition filterCondition, IDataModel model)` 构造函数
    `ModelTypeFilterValueSetter(IDataModel model)`

  - ### kd.bos.entity.formula中IDataModel的使用

    返回IDataModel的kd.bos.entity.formula中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `IDataModel` | RowDataModel.`getModel()`

    参数类型为IDataModel的kd.bos.entity.formula中的构造器
    构造器和说明
    `RowDataModel(java.lang.String entityKey, IDataModel model)` 构造函数之一：基于model获取字段值

  - ### kd.bos.entity.property中IDataModel的使用

    参数类型为IDataModel的kd.bos.entity.property中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `void` | PeriodProp.`applyDefaultValue(IDataModel model, kd.bos.dataentity.entity.DynamicObject dataEntity, int rowIndex)`
    `void` | MulBasedataProp.`applyDefaultValue(IDataModel model, kd.bos.dataentity.entity.DynamicObject dataEntity, int rowIndex)`
    `void` | MainOrgProp.`applyDefaultValue(IDataModel model, kd.bos.dataentity.entity.DynamicObject dataEntity, int rowIndex)`
    `void` | IFieldHandle.`applyDefaultValue(IDataModel model, kd.bos.dataentity.entity.DynamicObject dataEntity, int rowIndex)` 设置该属性对应缺省值
    `void` | FieldProp.`applyDefaultValue(IDataModel model, kd.bos.dataentity.entity.DynamicObject dataEntity, int rowIndex)` 获取字段默认值，将默认值填充到字段中 如果没有注入单据类型的默认值，取DefaultValue2得到的默认值 否则（有单据类型）取DefaultValue1（强制DefaultValue2有默认值也返回NULL，这里的处理有点绕。）
    `void` | CreaterProp.`applyDefaultValue(IDataModel model, kd.bos.dataentity.entity.DynamicObject dataEntity, int rowIndex)`
    `void` | CreateDateProp.`applyDefaultValue(IDataModel model, kd.bos.dataentity.entity.DynamicObject dataEntity, int rowIndex)`
    `void` | BillTypeProp.`applyDefaultValue(IDataModel model, kd.bos.dataentity.entity.DynamicObject dataEntity, int rowIndex)`
    `void` | BasedataProp.`applyDefaultValue(IDataModel model, kd.bos.dataentity.entity.DynamicObject dataEntity, int rowIndex)`
    `FilterBuilder` | MulBasedataProp.`buildCoreFilter(IDataModel model)` 将基础资料上配置的过滤条件解析为QFilter
    `FilterBuilder` | MasterBasedataProp.`buildCoreFilter(IDataModel model)` 基于字段配置，构建过滤条件
    `FilterBuilder` | BasedataProp.`buildCoreFilter(IDataModel model)` 将基础资料上配置的过滤条件解析为QFilter
    `java.util.List<kd.bos.orm.query.QFilter>` | OrgProp.`buildCoreFilterByString(IDataModel model)` 主业务组织的过滤条件设置
    `java.util.List<kd.bos.orm.query.QFilter>` | MulBasedataProp.`buildCoreFilterByString(IDataModel model)`
    `java.util.List<kd.bos.orm.query.QFilter>` | MainOrgProp.`buildCoreFilterByString(IDataModel model)` 主业务组织的过滤条件设置
    `java.util.List<kd.bos.orm.query.QFilter>` | BasedataProp.`buildCoreFilterByString(IDataModel model)` 将基础资料上配置的过滤条件解析为QFilter
    `java.lang.Long` | MainOrgProp.`calcDefaultValue(IDataModel model)` 计算当前场景下，主组织字段默认值；如果取不到，返回null
    `static java.lang.Object` | IFieldHandle.`getFieldDefaultValue2(IDataModel model, kd.bos.dataentity.entity.DynamicObject dataEntity, DefaultValueCalculator defaultValueCalculator, kd.bos.dataentity.metadata.dynamicobject.DynamicProperty fieldProp)` 输出字段的默认值，高级版，可以进行函数、公式计算
    `kd.bos.dataentity.entity.DynamicObject` | FlexProp.`getFlexDataDynamicObject(IDataModel model, java.lang.Object pk)`
    `void` | PeriodProp.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object Value)`
    `void` | MulBasedataProp.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | ItemClassTypeProp.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | IntegerProp.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object Value)`
    `void` | IFieldHandle.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object Value)`
    `void` | FlexProp.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | FieldProp.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | DecimalProp.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object Value)`
    `void` | DateTimeProp.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | BillTypeProp.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | BasedataProp.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | AttachmentProp.`setFieldValue(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | MulBasedataProp.`setFieldValueForWebApi(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | ItemClassProp.`setFieldValueForWebApi(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | IntegerProp.`setFieldValueForWebApi(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | IFieldHandle.`setFieldValueForWebApi(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)` WebApi上传数据时设置字段的值，特殊的字段需要值转换进行重载，缺省实现和 setFieldValue一致
    `void` | FlexProp.`setFieldValueForWebApi(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | FieldProp.`setFieldValueForWebApi(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)` WebApi上传数据时设置字段的值，特殊的字段需要值转换进行重载，缺省实现和 setFieldValue一致
    `void` | DecimalProp.`setFieldValueForWebApi(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`
    `void` | BasedataProp.`setFieldValueForWebApi(IDataModel model, java.lang.Object dataEntity, java.lang.Object value)`

  - ### kd.bos.entity.rule中IDataModel的使用

    返回IDataModel的kd.bos.entity.rule中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `IDataModel` | BRExecuteContext.`getModel()`

    参数类型为IDataModel的kd.bos.entity.rule中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `static java.util.List<kd.bos.entity.rule.RuleDataEntities>` | RuleUtils.`mapingRulesDataEntites(IDataModel model, RaiseEventType raiseEventType, java.util.List<AbstractRule> rules, kd.bos.dataentity.metadata.IDataEntityType eventTable, java.util.List<RowDataEntity> eventDataEntities)` 根据事件源信息，推导出哪些规则以及对应的目标数据集需要执行。

    参数类型为IDataModel的kd.bos.entity.rule中的构造器
    构造器和说明
    `BRExecuteContext(IDataModel model)`

  - ### kd.bos.form中IDataModel的使用

    返回IDataModel的kd.bos.form中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `IDataModel` | IFormView.`createFlexModel(IDataModel flexModel, MainEntityType met)`
    `IDataModel` | IFormView.`getModel()`
    `IDataModel` | AbstractFormView.`getModel()` 获取数据模型

    参数类型为IDataModel的kd.bos.form中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `IDataModel` | IFormView.`createFlexModel(IDataModel flexModel, MainEntityType met)`

  - ### kd.bos.form.control中IDataModel的使用

    返回IDataModel的kd.bos.form.control中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `IDataModel` | Control.`getModel()` 获取表单模型

    参数类型为IDataModel的kd.bos.form.control中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `void` | Control.`setModel(IDataModel model)` 设置表单模型

  - ### kd.bos.form.field中IDataModel的使用

    返回IDataModel的kd.bos.form.field中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `IDataModel` | FlexEdit.`getFlexModel()` flexmodel需要初始化侦听事件，创建时可能没有选基础资料，EntityType为空。

  - ### kd.bos.form.flex中IDataModel的使用

    返回IDataModel的kd.bos.form.flex中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `IDataModel` | IFlexEdit.`getFlexModel()`

    参数类型为IDataModel的kd.bos.form.flex中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `void` | IFlexFormPlugin.`setFlexParameter(IDataModel flexDataModel, FieldEdit parentFieldEdit)`

  - ### kd.bos.form.operate.webapi中IDataModel的使用

    参数类型为IDataModel的kd.bos.form.operate.webapi中的构造器
    构造器和说明
    `OperateDataConverter(IDataModel model)`

  - ### kd.bos.form.plugin中IDataModel的使用

    返回IDataModel的kd.bos.form.plugin中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `IDataModel` | KDFormPlugin.`getModel()`

  - ### kd.bos.form.rule中IDataModel的使用

    参数类型为IDataModel的kd.bos.form.rule中的构造器
    构造器和说明
    `ClientRuleExecuteContext(IDataModel model)`
    `ClientRuleExecuteContext(IDataModel model, java.lang.String preCondition, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> clientRules)`
    `ReportClientRuleExecuteContext(IDataModel model)`
    `ReportClientRuleExecuteContext(IReportListModel reportListModel, IDataModel dataModel, java.lang.String preCondition, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> clientRules)`

  - ### kd.bos.servicehelper中IDataModel的使用

    参数类型为IDataModel的kd.bos.servicehelper中的方法
    限定符和类型 | 方法和说明
    --- | ---
    `static boolean` | UnitConvertHelper.`convertQty(QtyProp srcQtyProp, QtyProp distQtyProp, IDataModel dataModel, java.lang.StringBuilder errMsg)` 根据 源数量 目标数量 进行换算
    `static boolean` | UnitConvertHelper.`convertQtyByNewUnit(IDataModel dataModel, QtyProp srcQtyProp, QtyProp distQtyProp, int rowIndex, java.lang.StringBuilder errMsg)`
    `static boolean` | UnitConvertHelper.`convertQtyByNewUnit(IDataModel dataModel, QtyProp srcQtyProp, QtyProp distQtyProp, java.lang.Long srcUnitId, java.lang.Long distUnitId, int rowIndex, java.lang.StringBuilder errMsg)`
    `static void` | UnitConvertHelper.`convertQtyByNewUnit(IDataModel dataModel, QtyProp srcQtyProp, QtyProp distQtyProp, java.lang.StringBuilder errMsg)`
    `static void` | UnitConvertHelper.`convertQtyByNewUnit(IDataModel dataModel, UnitProp unitProp, long newUnitId, long oldUnitId, int rowIndex, java.lang.StringBuilder errMsg)`
    `static java.lang.Long` | UnitConvertHelper.`getMaterialDataId(QtyProp prop, IDataModel dataModel, int index)`
    `static java.lang.Long` | UnitConvertHelper.`getRelatedUnitId(QtyProp qtyProp, IDataModel dataModel, int index)`