关于标准产品ECN(工程变更单)的webapi生效接口无效的二开处理

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

关于标准产品ECN(工程变更单)的webapi生效接口无效的二开处理

由于标准产品的ECN生效有部分代码写在了表单插件上导致接口失效了,只能稍作二开自己处理一下。

先自定义一个web api,具体参考:https://wenku.my7c.com/article/218296473741031424

在自定义的api中处理我们的逻辑,找到对应的工程变更单然后调用服务插件中的生效方法

using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceFacade.KDServiceClient.User;
using Kingdee.BOS.ServiceFacade.KDServiceFx;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.WebApi.Client;
using Kingdee.BOS.WebApi.ServicesStub;
using Kingdee.K3.MFG.ServiceHelper.ENG;
using Newtonsoft.Json.Linq;
using System;
using System.Linq;

namespace ExtraProgram
{
    public class apiClass : AbstractWebApiBusinessService
    {
        public apiClass(KDServiceContext context) : base(context)
        {
        }

        public JObject ExecuteService(string parameter)
        {
            JObject messages = new JObject();

            UserServiceProxy proxy = new UserServiceProxy();
            proxy.HostURL = @"http://172.17.2.179/k3cloud/";
            Kingdee.BOS.Context context1 = proxy.ValidateUser("", "62a0339474f6a3", "demo", "888888", null, 2052).Context;
            FormMetadata meta = null;
            try
            {
                //时间过长的话context里面的sessionid会失效导致无法load元数据
                meta = MetaDataServiceHelper.Load(context1, "ENG_ECNOrder") as FormMetadata;

            }
            catch (Exception e)
            {
                messages.Add("issuccess", "false");
                messages.Add("detail", "该接口登录时间较长session被杀了,请重新发起一次调用创建新的session");
                return messages;
            }
            if (meta == null)
            {
                messages.Add("issuccess", "false");
                messages.Add("detail", "meta为空调式代码查看原因");
                return messages;
            }
            QueryBuilderParemeter queryParam = new QueryBuilderParemeter();
            queryParam.FormId = "ENG_ECNOrder";
            //通过接口参数的FID找到对应的工程变更单
            queryParam.FilterClauseWihtKey = String.Format("FID = {0}", parameter);
            DynamicObject objOrg = BusinessDataServiceHelper.Load(context1, meta.BusinessInfo.GetDynamicObjectType(), queryParam).FirstOrDefault();
            //调用生效方法
            IOperationResult result = ECNOrderServiceHelper.EffectChange(context1, meta.BusinessInfo, objOrg);
            //自己根据生效的result设置返回值
            if (result.IsSuccess)
            {
                return messages;
            }
            return messages;

        }
}

image.webp

这是我本地工程的引用,我就不帮大家挑出来了,大家可以对着这个类的using选择的引入一下。

调用接口的result的返回值可以重新构建自定义api的返回信息

image.webp



关于标准产品ECN(工程变更单)的webapi生效接口无效的二开处理

由于标准产品的ECN生效有部分代码写在了表单插件上导致接口失效了,只能稍作二开自己处理一下。先自定义一个web api,具体参考:https://we...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息