当前位置: 首页 > news >正文

Api接口开发实例

目的:第三方系统可以调用k3cloud系统中的库存数据与表单数据、报表数据进行数据分析;
实验研究:本来打算使用金蝶协同开发平台进行测试开发api接口,测试没有成功,然后就开始使用早期开发使用 的方法进行测试,然后成功了!时间宝贵,潦草写了以下的代码步骤,大家可以作为参考!
步骤:1 vs中新建类 ,引用需要的命名空间;
2 vs中新建控制台,为了测试第三方平台调用测试成功与否;
代码如下:
新建类
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.ServiceHelper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.App.Data;
using System.ComponentModel;
using Kingdee.BOS.WebApi.ServicesStub;

namespace api
{
[Description("接口测试")]
public class Class1 : Kingdee.BOS.WebApi.ServicesStub.AbstractWebApiBusinessService
{
public Class1(Kingdee.BOS.ServiceFacade.KDServiceFx.KDServiceContext context)
: base(context)
{ }

private DynamicObjectCollection GetInven()
{
StringBuilder str = new StringBuilder();
str.Append(@" /dialect/ SELECT t6.FNUMBER,t7.fname,m.FNUMBER, ml.fname,w.fname,isnull(t14.fname,'无') ,TSL.fname,tsl1.FNUMBER ,
sum(TI.FBASEQTY) FBASEQTY,st01.FNAME
FROM (select FBASEQTY,FSTOCKID,FMATERIALID,FSTOCKSTATUSID,FSTOCKORGID from T_STK_INVENTORY where FMATERIALID>1 and FSTOCKSTATUSID=10000 and FOBJECTTYPEID= 'STK_Inventory' and FKEEPERTYPEID='BD_KeeperOrg'and FOWNERTYPEID='BD_OwnerOrg' and FISEFFECTIVED=1 and FBASEQTY<>0) TI
inner join (select FSTOCKSTATUSID,FNAME From T_BD_STOCKSTATUS_L where FSTOCKSTATUSID>1 and FLOCALEID=2052) st01 on st01.FSTOCKSTATUSID=TI.FSTOCKSTATUSID
inner JOIN (select fnumber,FMASTERID,FMATERIALID,FMATERIALGROUP from T_BD_MATERIAL where FMATERIALID>1 and FDOCUMENTSTATUS='C' and FFORBIDSTATUS='A' ) M ON M.FMATERIALID = TI.FMATERIALID
LEFT JOIN (select FMATERIALID,FLOCALEID,fname from T_BD_MATERIAL_L where FMATERIALID>1 and FLOCALEID=2052) ML ON (M.FMASTERID = ML.FMATERIALID)
LEFT JOIN (select FSTOCKID,fname,FLOCALEID From T_BD_STOCK_L where FSTOCKID>1 and FLOCALEID=2052) TSL ON (TSL.FSTOCKID = TI.FSTOCKID)
LEFT JOIN (select fstockid,FGROUP,fnumber from T_BD_STOCK where fstockid>1 and FDOCUMENTSTATUS='C' and FFORBIDSTATUS='A') tsl1 on TSL.FSTOCKID=tsl1.fstockid
LEFT join (select FID,fname from T_BD_STOCKGROUP_L where FID>1 and FLOCALEID=2052) t14 on tsl1.FGROUP=t14.fid
inner join (select FMATERIALID,FCATEGORYID From T_BD_MATERIALBASE where FCATEGORYID>1) u0 on m.FMATERIALID=u0.FMATERIALID
left join (select FCATEGORYID,fname From T_BD_MATERIALCATEGORY_L where FCATEGORYID>1 and FLOCALEID=2052) w on u0.FCATEGORYID=w.FCATEGORYID
left join (select fid,FPARENTID From T_BD_MATERIALGROUP where fid>1) t4 on m.FMATERIALGROUP=t4.fid
left join (select fid,FNUMBER From T_BD_MATERIALGROUP where fid>1 ) t6 on t4.FPARENTID=t6.fid
left join (select fid,fname From T_BD_MATERIALGROUP_L where fid>1 and FLOCALEID=2052) t7 on t4.FPARENTID=t7.fid
inner join (select FORGID,fname From T_ORG_ORGANIZATIONS_L where FORGID>1 and FLOCALEID=2052) cc on TI.FSTOCKORGID=cc.FORGID
group by t6.FNUMBER,t7.fname,ml.fname,m.FNUMBER,tsl.fname,w.fname,isnull(t14.fname,'无'),TSL.fname,tsl1.FNUMBER,st01.FNAME");
return DBUtils.ExecuteDynamicObject(this.KDContext.Session.AppContext, str.ToString());
}
public JSONArray ExecuteService()
{

        DynamicObjectCollection list = GetInven() as DynamicObjectCollection;
        JSONArray jsonArray = new JSONArray();
        foreach (DynamicObject dynamicObject in list)
        {
            jsonArray.Add(ConvertDynamicObject2Json(dynamicObject));
        }
        returnjsonArray;
    }

    private JSONObject ConvertDynamicObject2Json(DynamicObject dynamicObject)
    {
        DynamicPropertyCollection dynamicPropertyCollection = dynamicObject.DynamicObjectType.Properties;
        JSONObject obj = new JSONObject();
        foreach (DynamicProperty property in dynamicPropertyCollection)
        {
            obj.Put(property.Name, dynamicObject[property.Name]);
        }
        return obj;
    }
}

}

新建控制台:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kingdee.BOS.WebApi.Client;
using Kingdee.BOS.JSON;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{

        ApiClient client1 = new Kingdee.BOS.WebApi.Client.ApiClient("http://localhost/k3cloud/");
        bool result1 = client1.Login("数据中心id", "用户名", "密码", 2052);
        if (result1)
        {

         object   responseOut1 = client1.Execute<JSONArray>("api.Class1.ExecuteService,api",null);
        }
        Console.Write(responseOut1);
        Console.ReadLine();

    }
}

}

生成解决方案后,打断点进行测试结果如下:
Api接口开发实例

转载于:https://blog.51cto.com/yataigp/2115046

相关文章:

  • 填坑app:compileDebugJavaWithJavac
  • [洛谷1156]垃圾陷阱(DP)
  • 微信小程序扫码接口,wx.scanCode(OBJECT)
  • zabbix安装后提示:Zabbix server is not running
  • Batch Normalization层
  • enter键触发事件的清除
  • 由“量子通信”想到“马蓉劈叉”
  • 中台架构的新一代业务支撑体系是如何实现
  • Redis二探
  • BZOJ5334:[TJOI2018]数学计算——题解
  • LVS/NAT + keepalived负载均衡实现
  • 学号 2017-2018-20172309 《程序设计与数据结构》第10周学习总结
  • laravel 视模板情况加载视图
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • 浏览器里的文件管理小系统filedir.php,返回上级目录时有个“浏览”链接总掉了...
  • $translatePartialLoader加载失败及解决方式
  • (三)从jvm层面了解线程的启动和停止
  • C++类的相互关联
  • JavaScript HTML DOM
  • JAVA并发编程--1.基础概念
  • java小心机(3)| 浅析finalize()
  • mysql 5.6 原生Online DDL解析
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • vue.js框架原理浅析
  • windows下mongoDB的环境配置
  • 程序员该如何有效的找工作?
  • 聚类分析——Kmeans
  • 力扣(LeetCode)21
  • 什么是Javascript函数节流?
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 由插件封装引出的一丢丢思考
  • Hibernate主键生成策略及选择
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #单片机(TB6600驱动42步进电机)
  • (52)只出现一次的数字III
  • (翻译)terry crowley: 写给程序员
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (六)c52学习之旅-独立按键
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (区间dp) (经典例题) 石子合并
  • (十八)SpringBoot之发送QQ邮件
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (译)2019年前端性能优化清单 — 下篇
  • (转)大型网站的系统架构
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • ./configure、make、make install 命令
  • .form文件_一篇文章学会文件上传
  • .NET 事件模型教程(二)
  • .net(C#)中String.Format如何使用
  • .NET的微型Web框架 Nancy
  • .NET实现之(自动更新)
  • .NET中 MVC 工厂模式浅析