服务端常用方法
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
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
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
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
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
2
3
4
5
6
7
8