webapi 订单执行行状态,下传各类日期实现方式

关于生产订单状态机调用的自定义接口,
详情可参见本贴 :
http://club.kingdee.com/forum.ph ... 8245&extra=page%3D1
http://club.kingdee.com/forum.ph ... 8245&extra=page%3D1对于有些小伙伴实际使用过程中,反向执行(例如反计划确认)时,可能会碰到类似{"从额外选项OperateOption中获取变量失败,变量[_BillOperationSelectedRows_]不存在!"} 的错误,这是因为传给系统行执行方法的参数缺少生产订单的单据内码。
现将兼容反向执行的自定义生产订单行状态机API接口实现示例如下:
1、封装自定义Webapi实现类示例如下:
using Kingdee.BOS.JSON;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.ServiceFacade.KDServiceFx;
using Kingdee.BOS.WebApi.ServicesStub;
using Kingdee.K3.MFG.App;
using Kingdee.K3.MFG.Contracts.PRD;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kingdee.EK.K3.MFG.WebApi.ServicesStub
{
public class MoTransfer : AbstractWebApiBusinessService
{
public MoTransfer(KDServiceContext context)
: base(context)
{
}
///
/// 执行服务
///
/// (操作码,字典(生产订单行内码,生产订单内码))
///
public JSONArray ExecuteService(KeyValuePair<string, dictionary<long, long>> parameters,DateTime inputDate)
{
JSONArray jsonArray = new JSONArray();
try
{
string operation = parameters.Key;
Dictionary<long, long> dctMoeIds = parameters.Value;
List<long> moEntryIds = dctMoeIds.Keys.ToList();
OperateOption statusOption = OperateOption.Create();
var selectedRows = new ListSelectedRowCollection();
statusOption.SetVariableValue("ExeCuteTime",inputDate)
foreach (var dctMoeId in dctMoeIds)
{
selectedRows.Add(new ListSelectedRow(dctMoeId.Value.ToString(), dctMoeId.Key.ToString(), 0, "PRD_MO"));
}
//下一句需引用Kingdee.BOS.Core.dll组件,并using Kingdee.BOS.Core.DynamicForm命名空间后可用
statusOption.SetBillOperationSelectedRows(selectedRows);
var result = AppServiceContext.GetMFGService<IMOService>().MOStateTransfer(this.KDContext.Session.AppContext, moEntryIds, operation, statusOption);
if (result.FuncResult.IsNullOrEmpty())
{
//校验不过的原因
string message = result.ValidationErrors[0].Message;
js
webapi 订单执行行状态,下传各类日期实现方式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



