金蝶二开代码片段-获取物料清单最高版本BOM子项物料信息原创
金蝶云社区-黄昏前黎明后
黄昏前黎明后
69人赞赏了该文章 548次浏览 未经作者许可,禁止转载编辑于2024年06月26日 23:07:34

一、应用场景

自定义单据录入物料实现和标准产品一样携带默认最高BOM版本的逻辑,类似生产订单、物料清单正查录入物料默认携带最高BOM版本



二、服务接口说明

1
2
3
4
5
6
7
/// <summary>       
/// 获取最高版本BOM,支持辅助属性        
/// </summary>        
/// <param name="ctx"></param>        
/// <param name="lstMasterOrgId">物料MasterId,使用组织,辅助属性的三值集合</param>        
/// <returns></returns>                
IEnumerable<DynamicObject> GetHightVersionBom(Context ctx, List<Tuple<longlonglong>> lstMasterOrgId);

参数说明:

ctx:上下文;

lstMasterOrgId:分别是物料MasterId,使用组织Id,辅助属性Id的三值集合;(若无辅助属性,可以直接给0,另外两个必录)



三、调用方式

<1>客户端调用:例如表单插件、账表插件(需要引用组件Kingdee.K3.MFG.ServiceHelper.dll

1
2
3
List<Tuple<longlonglong>> dicMasterOrgIds = new List<Tuple<longlonglong>>();
dicMasterOrgIds.Add(new Tuple<longlonglong>(msterId, useOrgId, auxPropId));
List<DynamicObject> highVersionBomDatas = BOMServiceHelper.GetHightVersionBom(this.Context, dicMasterOrgIds).ToList();


<2>服务端调用:例如操作插件(需要引用组件Kingdee.K3.MFG.App.dll

1
2
3
List<Tuple<longlonglong>> dicMasterOrgIds = new List<Tuple<longlonglong>>();
dicMasterOrgIds.Add(new Tuple<longlonglong>(msterId, useOrgId, auxPropId));
List<DynamicObject> highVersionBomDatas=AppServiceContext.GetService<IBOMService>().GetHightVersionBom(ctx, dicMasterOrgIds ).ToList();


<3>SQL查询方式

select bom.FMATERIALID as wl ,bomc.FMATERIALID as zwl,bom.FUSEORGID,bomc.FBASENUMERATOR,bomc.FBASEDENOMINATOR  

from T_ENG_BOM bom 

left join T_ENG_BOMCHILD bomc on bom.FID =bomc.FID

left join T_BD_MATERIAL tbm on bomc.FMATERIALID =tbm.FMATERIALID  

where bom.FDOCUMENTSTATUS ='C' AND bom.FFORBIDSTATUS ='A' and bom.FNUMBER in (select MAX(FNUMBER) from T_ENG_BOM group by FMATERIALID)


四、接口验证

手工在【物料清单正查】录入物料是否自动带出最高BOM版本,与接口返回内码保持一致。


五、最高BOM介绍

一个物料存在多个BOM的情况下,BOM版本携带的优先级判断规则:

按BOM版本从左到右一个字符一个字符进行比较,汉字>字母>数字,字母A-Z,Z最高;数字0-9 , 9最高;汉字拼音a-z , z最高。


六、示例代码片段

  //存储成品物料

  Dictionary<long, long> lstMasterOrgId = new Dictionary<long, long>();

  DynamicObjectCollection entryCols = TbObj["FEntity"] as DynamicObjectCollection;

  //循环成品明细

  foreach (var entryObj in entryCols)

  {

      DynamicObject material_CP = entryObj[F_QYCM_MATERIAL_CP] as DynamicObject;

      if (!material_CP.IsNullOrEmptyOrWhiteSpace())

      {

          if (!lstMasterOrgId.ContainsKey(Convert.ToInt64(material_CP["msterID"])))

          {

              lstMasterOrgId.Add(Convert.ToInt64(material_CP["msterID"]), orgid);

          }

      }

  }

  //查询物料对应物料清单BOM

  IBOMService service = MFGServiceFactory.GetService<IBOMService>(this.Context);

 //获取最高版本BOM数据

  IEnumerable<DynamicObject> bomCols = service.GetHightVersionBom(this.Context, lstMasterOrgId);




图标赞 69
69人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!