昏喽喽

vuePress-theme-reco Lio    2020 - 2025
昏喽喽

Choose mode

  • dark
  • auto
  • light
Home
Category
  • CentOS
  • Csharp
  • DataBase
  • DesignMode
  • Vue
  • FrontEnd
  • GLD
  • Kingdee
  • NetWork
Tags
TimeLine
Tools
  • Http请求
  • 日志配置
  • 加密解密
  • 验证码
  • Git命令
About
author-avatar

Lio

103

Articles

15

Tags

Home
Category
  • CentOS
  • Csharp
  • DataBase
  • DesignMode
  • Vue
  • FrontEnd
  • GLD
  • Kingdee
  • NetWork
Tags
TimeLine
Tools
  • Http请求
  • 日志配置
  • 加密解密
  • 验证码
  • Git命令
About
  • 2023年提单复盘
  • 2022年提单复盘
  • 2021年提单复盘
  • BOS常用方法类库记录
  • 单据状态
  • 常用表名
  • 插件常用方法
  • 客户端常用方法
  • 服务端常用方法
  • 生产用料清单数量计算

服务端常用方法

vuePress-theme-reco Lio    2020 - 2025

服务端常用方法

Lio 2021-02-25 学习笔记

# 1、根据单据ID获取单据的信息

//方式一
 FormMetadata bomFormMetadata = (FormMetadata)AppServiceContext.MetadataService.Load(this.Context, "ENG_BOM");
 DynamicObjectType type = bomFormMetadata.BusinessInfo.GetDynamicObjectType();
 DynamicObject bomData = AppServiceContext.ViewService.LoadSingle(this.Context, bomId, type);
1
2
3
4

# 2、加载引用属性

FormMetadata simBomEntityMetaData = (FormMetadata)AppServiceContext.MetadataService.Load(ctx, "ENG_SIMBOMENTRYLIST");
List<DynamicObject> simBomEntityDatas = new List<DynamicObject>();
AppServiceContext.DBService.LoadReferenceObject(ctx, simBomEntityDatas.ToArray(), simBomEntityMetaData.BusinessInfo.GetDynamicObjectType());
1
2
3

# 3、网控

1、开启网控

private List<long> StartNetworkCtrl(Context ctx, string operationKey, string operationName, List<long> bomIds, out List<NetworkCtrlResult> networkCtrlResults)
{
    string filter = string.Format(@" FMetaObjectID = '{0}' and FoperationID = '{1}'  and ftype={2}  and FStart = '1'  ", MFGFormIdConst.SubSys_ENG.BomBill, operationKey, (int)NetworkCtrlType.BusinessObjOperateMutex);
    NetworkCtrlObject netCtrlObj = AppServiceContext.NetworkCtrlService.GetNetCtrlList(ctx, filter).FirstOrDefault();
    List<NetWorkRunTimeParam> networkParams = new List<NetWorkRunTimeParam>();
    foreach (var bomId in bomIds)
    {
        NetWorkRunTimeParam param = new NetWorkRunTimeParam();
        param.BillName = new LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString("物料清单", "015070000014358", Kingdee.BOS.Resource.SubSystemType.MFG), 2052);
        param.InterID = bomId.ToString();
        param.OperationDesc = Kingdee.BOS.Resource.ResManager.LoadKDString("物料清单", "015070000014358", Kingdee.BOS.Resource.SubSystemType.MFG) + "-" + "BillNo" + "-" + operationName;
        param.OperationName = new LocaleValue(operationName, 2052);
        networkParams.Add(param);
    }
    networkCtrlResults = AppServiceContext.NetworkCtrlService.BatchBeginNetCtrl(ctx, netCtrlObj, networkParams);
    return (from c in networkCtrlResults
            where c.StartSuccess == true
            select Convert.ToInt64(c.InterID)).ToList();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

2、释放网控

protected virtual void CommitNetworkCtrl(Context ctx, List<NetworkCtrlResult> networkCtrlResults)
{
    AppServiceContext.NetworkCtrlService.BatchCommitNetCtrl(ctx, networkCtrlResults);
}
1
2
3
4

# 4、制造字段映射

public void BomEntityMap(Context ctx, DynamicObject bomEntity, DynamicObject bomData) 
{
    FormMetadata BillFieldLink = (FormMetadata)AppServiceContext.MetadataService.Load(ctx, "MFG_BILLFIELDLINK");
    DynamicObject bomEntityToSimBom = MFGDataManagerUtil.LoadData(ctx, BillFieldLink.BusinessInfo.GetDynamicObjectType(),
        "select fid from t_mfg_billlink where fbillno='ENG_SimBomEntry'").OfType<DynamicObject>().FirstOrDefault();
    List<FieldMapHandle> lstFieldMapHandle = MFGBillFieldLinkUtil.GetFieldMappingHandle(ctx, bomEntityToSimBom);
    MFGBillFieldLinkUtil.DoFieldMapping(lstFieldMapHandle, bomEntity, bomData);
}
1
2
3
4
5
6
7
8