二开案例.工序计划保存时自动排程

【应用场景】
在工序计划保存时,自动进行工序排程,计算各道序的开工、完工时间。
【实现步骤】
<1>编写操作服务插件,代码如下。
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.K3.MFG.App;
using Kingdee.K3.MFG.Contracts.SFC;
using System;
using System.Collections.Generic;
using System.Linq;
namespace MyTest
{
public class ProcessScheduling : AbstractOperationServicePlugIn
{
public override void AfterExecuteOperationTransaction(BOS.Core.DynamicForm.PlugIn.Args.AfterExecuteOperationTransaction e)
{
base.AfterExecuteOperationTransaction(e);
//构造排程参数对象
FormMetadata paramMetaData = (FormMetadata)AppServiceContext.MetadataService.Load(this.Context, "SFC_ProcessScheduling");
DynamicObject param = new DynamicObject(paramMetaData.BusinessInfo.GetDynamicObjectType());
Entity entity = paramMetaData.BusinessInfo.GetEntity("FBillHead");
IDynamicFormModel model = AppServiceContext.CreateDynamicFormModel(this.Context, paramMetaData.BusinessInfo, param, null);
IDefaultValueCalculator calculator = model.GetService<IDefaultValueCalculator>();
calculator.Initialize(model);
calculator.ApplyDefaultValue(entity, param, 0);
param["SchedulingModeSetting"] = "P";
//进行标准排程
param["StandardScheduling"] = true;
//网络控制
param["IsNetCtrl"] = false;
//指定工序排程
param["SpecifiedScheduling"] = true;
//忽略审核状态
param["IgnoreAudit"] = true;
//自动排程
param["IsAutoScheduling"] = true;
// 构建工序排程(指定工序)[序列-工序]内码字典
List<Dictionary<long, long>> lstDicSeqOperIds = new List<Dictionary<long, long>>();
DynamicObjectCollection seqCol;
DynamicObjectCollection operCol;
IEnumerable<DynamicObject> operColOrdered;
foreach(var dataEntity in e.DataEntitys)
二开案例.工序计划保存时自动排程
【应用场景】在工序计划保存时,自动进行工序排程,计算各道序的开工、完工时间。【实现步骤】<1>编写操作服务插件,代码如下。using Kingd...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



