金蝶云星空 二开得到来源单单据体2数据包

csharp 复制代码
/// <summary>
/// 得到来源单单据体2数据包
/// </summary>
/// <param name="lstSrcPkValues"></param>
/// <param name="srcBInfo"></param>
/// <param name="srcEntity2"></param>
/// <returns></returns>
private DynamicObjectCollection GetEntity2DynamicObjs(List<long> lstSrcPkValues, BusinessInfo srcBInfo, Entity srcEntity2)
{
    QueryBuilderParemeter queryParam = new QueryBuilderParemeter();
    queryParam.FormId = srcBoFormId;// "SAL_PriceList";  // 源单据的FormId
    List<SelectorItemInfo> lstItems = new List<SelectorItemInfo>();
    lstItems.Add(new SelectorItemInfo("FID")); 
    lstItems.Add(new SelectorItemInfo("FNUMBER")); 
    lstItems.Add(new SelectorItemInfo("F_BHR_VIEWUSERS"));
    queryParam.SelectItems = lstItems; //需要选择的字段列表集合
    var tupleFilterInfo = this.GetFilter(srcBInfo.GetForm().PkFieldName, lstSrcPkValues);
    queryParam.FilterClauseWihtKey = string.Format(" {0} and {1} != 0", tupleFilterInfo.Item1, srcEntity2.EntryPkFieldName);
    queryParam.SqlParams.AddRange(tupleFilterInfo.Item2);
    var dynObjs = QueryServiceHelper.GetDynamicObjectCollection(this.Context, queryParam);
    return dynObjs;
}
/// <summary>
/// 得到过滤条件和参数
/// </summary>
/// <param name="pkFieldName"></param>
/// <param name="entryPkName"></param>
/// <param name="lstSrcPkValues"></param>
/// <returns></returns>
private Tuple<string, List<SqlParam>> GetFilter(string pkFieldName, List<long> lstSrcPkValues)
{
    string filter = string.Empty;
    List<SqlParam> lstParams = new List<SqlParam>();
    var arrPkValues = lstSrcPkValues.Distinct().ToArray();
    if (arrPkValues.Length == 1)
    {
        filter = string.Format("{0} = {1} ", pkFieldName, arrPkValues[0]);
    }
    else if (arrPkValues.Length <= 50)
    {
        filter = string.Format("{0} in ({1}) ", pkFieldName, string.Join(",", arrPkValues));
    }
    else
    {
        var cardSql = StringUtils.GetSqlWithCardinality(arrPkValues.Length, "@PKValue", 1, false);
        filter = string.Format("  EXISTS ( {0} where b.FID = {1})  ", cardSql, pkFieldName);
        lstParams.Add(new SqlParam("@PKValue", KDDbType.udt_inttable, arrPkValues));
    }
    return Tuple.Create<string, List<SqlParam>>(filter, lstParams);
}

设置 多选基础资料字段值

csharp 复制代码
  private void FieldSetValue(Context ctx, MulBaseDataField field, DynamicObject entityObj, object[] pkValues)
  {
      // 获取多选基础资料字段的数据包集合
      var mulBaseDataEntitySet = field.GetFieldValue(entityObj) as DynamicObjectCollection;
      //var mulBaseDataEntitySet = entityObj[field.PropertyName] as DynamicObjectCollection;
      if (mulBaseDataEntitySet == null)
      {
          mulBaseDataEntitySet = new DynamicObjectCollection(field.RefEntityDynamicObjectType, entityObj);
          field.RefEntityDynamicProperty.SetValue(entityObj, mulBaseDataEntitySet);
      }
      mulBaseDataEntitySet.Clear();
      // 从数据库读取指定的基础资料的数据包,并填充到当前多选基础资料字段的数据包集合中
      var baseDataObjects = BusinessDataServiceHelper.LoadFromCache(ctx, pkValues, field.RefFormDynamicObjectType);
      foreach (var baseDataObject in baseDataObjects)
      {
          var mulBaseDataEntity = new DynamicObject(field.RefEntityDynamicObjectType);
          mulBaseDataEntitySet.Add(mulBaseDataEntity);
          field.RefEntityDynamicObjectType.PrimaryKey.SetValue(mulBaseDataEntity, new SequenceReader(ctx).GetSequence<long>(field.TableName, 1).First());
          field.RefIDDynamicProperty.SetValue(mulBaseDataEntity, baseDataObject[0]);
          field.DynamicProperty.SetValue(mulBaseDataEntity, baseDataObject);
      }
  }
相关推荐
zwm2698888157 小时前
hd 3#负一西送风,能远程启不能远程停
c#
Ai-_Man7 小时前
Meta Muse还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·c#·1024程序员节
Sakura_j_h_8 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
隔窗听雨眠11 小时前
PostgreSQL单表从Windows迁移到Linux:差异剖析、方案对比与全流程实战
linux·windows·postgresql
Helix25014 小时前
Ansible混合环境自动化:Windows与Linux统一配置管理实战
windows·自动化·ansible·playbook·配置管理·winrm·混合环境
Java开发追求者15 小时前
windows快速安装docker
windows·docker·安装·1024程序员节
2401_8858850416 小时前
国际语音C#接口怎么写?.NET环境下实现国际语音验证码批量下发
开发语言·c#·.net
Helix25018 小时前
Windows ETW与KQL实战:终端性能诊断与遥测数据分析指南
windows·性能诊断·kql·etw·azure monitor·遥测数据·tracert
陈葛杰20 小时前
Adobe Premiere Pro2025安装教程
windows·adobe·开源软件·1024程序员节
承渊政道21 小时前
iOS远程控制电脑用什么好?iPhoneiPad远程控制Windows电脑最佳方案2026横评
windows·ios·远程控制·1024程序员节·iphone ipad