WebApi实现计划订单投放原创
1人赞赏了该文章
426次浏览
编辑于2023年04月20日 13:38:28
实现方式,二开实现一个自定义webapi 接口,大致思路如下:
1,创建个工程,Class2继承于AbstractWebApiBusinessService,实现自定义接口逻辑,将生成的DLL放在服务器Website/bin目录下
using Kingdee.BOS.Core; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceFacade.KDServiceFx; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.WebApi.ServicesStub; using Newtonsoft.Json.Linq; using Kingdee.K3.Core.MFG.PLN.ParamOption; using Kingdee.K3.Core.MFG; using Kingdee.K3.Core.SCM; using System; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.BOS.Util; using Kingdee.K3.MFG.Contracts.PLN; namespace ClassLibrary1 { public class Class2 : AbstractWebApiBusinessService { public Class2(KDServiceContext context) : base(context) { } public JObject ExecuteService(string info) { var param = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(info); List<string> pkIds = new List<string>(); pkIds = param; JObject result = new JObject(); if (pkIds.IsEmpty()) { result.Add("Status", "False"); result.Add("Message", "当前计划订单数据为空,请重新选,请确认!"); return result; } FormMetadata PlanMeta = (FormMetadata)MetaDataServiceHelper.Load(this.KDContext.Session.AppContext, "PLN_PLANORDER"); IEnumerable<DynamicObject> planOrderDataObjects = Kingdee.K3.MFG.App.AppServiceContext.ViewService.Load(this.KDContext.Session.AppContext, pkIds.ToArray(), PlanMeta.BusinessInfo.GetDynamicObjectType() ).ToList(); FormMetadata paraMeta = (FormMetadata)MetaDataServiceHelper.Load(this.KDContext.Session.AppContext, "PLN_PlanOrderParam"); DynamicObject setting = UserParamterServiceHelper.Load(this.KDContext.Session.AppContext, paraMeta.BusinessInfo, this.KDContext.Session.AppContext.UserId, "PLN_PLANORDER", KeyConst.USERPARAMETER_KEY) as DynamicObject; ReleaseOption option = new ReleaseOption(); if (setting == null) { option.MOBillType = Kingdee.K3.Core.MFG.MFGBillTypeConst.PRD.PRD_MO.PRDMOPTRPT; option.EntrustBillType = MFGBillTypeConst.PRD.PRD_MO.PRDMOENTRUST; option.SubRequestBillType = MFGBillTypeConst.SUB.SUB_SUBREQORDER.SUBMOPT; option.PurchaseBillType = Kingdee.K3.Core.SCM.BillTypeConst.StandPurchaseRequisition; option.PurchaseStatus = "A"; option.MaxPurEntryCount = 500; option.MaxProEntryCount = 50; option.MaxSubEntryCount = 50; option.IsCarryReplace = false; } else { option.MOBillType = setting["MOBillTypeId_Id"].IsNullOrEmptyOrWhiteSpace() ? MFGBillTypeConst.PRD.PRD_MO.PRDMOPTRPT : setting["MOBillTypeId_Id"].ToString(); option.EntrustBillType = setting["TrustTypeId_Id"].IsNullOrEmptyOrWhiteSpace() ? MFGBillTypeConst.PRD.PRD_MO.PRDMOENTRUST : setting["TrustTypeId_Id"].ToString(); option.SubRequestBillType = setting["SubBillTypeId_Id"].IsNullOrEmptyOrWhiteSpace() ? MFGBillTypeConst.SUB.SUB_SUBREQORDER.SUBMOPT : setting["SubBillTypeId_Id"].ToString(); option.PurchaseBillType = setting["POBillTypeId_Id"].IsNullOrEmptyOrWhiteSpace() ? Kingdee.K3.Core.SCM.BillTypeConst.StandPurchaseRequisition : setting["POBillTypeId_Id"].ToString(); option.PurchaseStatus = setting["POReleaseStatus"].ToString(); option.MaxPurEntryCount = Convert.ToInt32(setting["PrMaxEntryNo"]); option.MaxProEntryCount = Convert.ToInt32(setting["ProMaxEntryNo"]); option.MaxSubEntryCount = Convert.ToInt32(setting["SubMaxEntryNo"]); option.IsCarryReplace = setting["IsCarryReplace"].IsNullOrEmpty() ? false : Convert.ToBoolean(setting["IsCarryReplace"]); } //手工投放 option.AutoRelease = false; option.ActionOption = Kingdee.BOS.Orm.OperateOption.Create(); Kingdee.BOS.Core.DynamicForm.IOperationResult operationResult = Kingdee.K3.MFG.App.AppServiceContext.GetMFGService<IReleaseService>().Release(this.KDContext.Session.AppContext, planOrderDataObjects, option); ; result.Add("Status", operationResult.IsSuccess); result.Add("Data", operationResult.IsNullOrEmpty() ? "" : Newtonsoft.Json.JsonConvert.SerializeObject(operationResult)); result.Add("Message", operationResult.IsSuccess ? "投放成功" : "投放失败"); return result; } } }
2,客户端调用示例
using ClassLibrary1; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.WebApi.Client; using Kingdee.K3.Core.MFG.ENG.ParamOption; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApp2 { class Program { static void Main(string[] args) { try { K3CloudApiClient client = new K3CloudApiClient("http://localhost:1702/k3cloud/"); // ValidateLogin 参数可以通过webapi界面登录的时候查询 var loginResult = client.ValidateLogin("60ff5edae546e1", "demo", "888888", 2052); var resultType = JObject.Parse(loginResult)["LoginResultType"].Value<int>(); if (resultType == 1) { //BomOption bomExpandParam = new BomOption() { // BomUseOrgId=1, // ValidDate = DateTime.Now, // BillMaterialIds =new List<long>() { 188524 } //}; //string serviceName = "ClassLibrary1.GetBomQueryBackwardDatas.ExecuteService,ClassLibrary1"; //var info = client.Execute<JObject>(serviceName, new object[] { JsonConvert.SerializeObject(bomExpandParam) }); //Console.ReadKey(); //传入计划订单ID List<long> plnPkIds = new List<long>() { 279525 }; string serviceName = "ClassLibrary1.Class2.ExecuteService,ClassLibrary1"; var info = client.Execute<JObject>(serviceName, new object[] { JsonConvert.SerializeObject(plnPkIds) }); Console.ReadKey(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } public class ValidModelEntity { public string Acctid { get; set; } public string userName { get; set; } public string password { get; set; } public int lcid { get; set; } } } }
3,调用结果
备注:
工程目录
赞 1
1人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *
10金币20金币30金币40金币50金币60金币
可用金币: 0