当我发现明道云对每一个应用开放了完整API后

        公司引入了明道云零代码平台,业务部门的各种应用如雨后春笋般在明道云平台茁壮生长,而当明道云引入了企业组织数据后,所有的数据操作和员工深度锁定,在很多业务场景,都快速上线创新了各种方便的应用,线上办公一发而不可收啊。

        博主配合黄老师在ERP团队创新自己的项目管理应用,担任开发人员角色,逐渐深入明道云的开发,为满足功能需求,实现了从A表更新到B表的数据更新,在工作流中写了第一段JS代码来统计数据等等高级功能,都能游刃有余的解决掉。但有一个工时收集的场景,实现起来难度就比较大了。如果用C#来处理,那就是砍瓜切菜,那么,研究方向是需要和明道云有接口要打通。

        功能描述为从5个工时子表中,要汇集到一张大的工时收集表,作为报表展现的底层数据。雷布斯在发布会上说,当你有一个问题,其实别人早有了解决方案,主要是你要找到那个曾经解决过类似问题的人。博主找到了云川,果然他提供了关键的信息。当博主打开应用API的在线说明,发现私有化的明道云内置了全套标准的API,可以存取应用表,而且对于每一张表的数据描述帮助都很详细。

        那接下来的事情就很简单了,用C# WINFORM程序调用明道云的API,把数据拿到本地,用强大而无脑的LINQ + Lambda加工处理,再传到明道云上。当然第一次吃螃蟹难免会花点时间,但很快,我就拥有了这个能力,能够在明道云平台上处理只要用户想得到的需求,我就做的到得能力。

获取表代码:

 //取任务表
 public async Task get_task()
 {
     TaskList.Clear();



     var url = "https://innoshare/api/v2/open/worksheet/getFilterRows";
     var objData = new
     {
         appKey = "4699f3706483a1db",
         sign = "Y2UyZTcwN2FkNDRmMDQwM2JkNGE5ZWEwZWU5ZDIxOTdlNGUyM2QzZjI3YWYxZTA1ZTkzZjgzMzY1MjMzNDE1Mw==",
         worksheetId = "67aea8e847238f53f5ece811",
         pageSize = "1000"
     };

     txt = await url.PostJsonAsync(objData).ReceiveString();

    //  textBox1.Text = await url.PostJsonAsync(objData).ReceiveString(); //取全部行

     var obj = JsonConvert.DeserializeObject<dynamic>(txt); // 从JSON中拉出来动态对象

     
     foreach (var item in obj.data.rows) //每一行数据
     {
         

         Ztask one = new Ztask();
         one.lxxmmc = item.lxxmmc;


        // var mc = JsonConvert.DeserializeObject<dynamic>((string)item.lcbrwmc);
      //   if (mc != null ) one.lcbrwmc = mc[0].name;

    //     textBox1.Text = (string)item.lcbrwmc;
         
         one.rowid = item.rowid;
         one.lcbrwmc = item.lcbmc;
         one.rwlb = item.rwlb;
         one.rwmc = item.rwmc;
         one.wcjd = item.wcjd;
         one.jhwcsj = item.jhwcsj;
         one.fkfgszb = item.fkfgszb; //非开发工时子表,一堆ID
         one.fafzrgszb = item.fafzrgszb; //方案工时子表,一堆ID

         one.fsbxrgszb = item.fsbxrgszb;     //fs工时子表,一堆ID
         one.kfrygszb = item.kfrygszb;      //kf工时子表,一堆ID
         one.nbcsrygszb = item.nbcsrygszb;    //cs工时子表,一堆ID
         one.uatgszb = item.uatgszb;       //uat工时子表,一堆ID


         textBox1.Text = textBox1.Text + item.ftzt + "\r\n";
         one.ftzt = item.ftzt;

         var line = JsonConvert.DeserializeObject<dynamic>((string)item.rwfzr); //处理“任务负责人”子表

         foreach (var l in line)
         {
             Zrwfzr tmp = new Zrwfzr();
             tmp.accountId = l.accountId;
             tmp.fullname = l.fullname;

             one.rwfzr.Add(tmp);
         }


         TaskList.Add(one);
     }

 }

上面代码中,注意明道云的字段类型,一般字段可以直接取文本的,注意看“rwfzr”任务负责人字段,它里面还有子字段,所以需要动态json拉出来,再取子字段中的一个文本名字。

上传数据到明道云:

 var up_list = new List<List<RowItem>>();

 foreach (var gs in gsEndList)
 {
     var row = new List<RowItem>
         {
             new RowItem { ControlId = "cpmc", Value = gs.cpmc },
             new RowItem { ControlId = "xmmc", Value = gs.lxxmmc }, // 替换为实际字段
             new RowItem { ControlId = "rwmc", Value = gs.rwmc },
             new RowItem { ControlId = "lcbmc", Value = gs.lcbrwmc },
             new RowItem { ControlId = "leibei", Value = gs.leibei },
             new RowItem { ControlId = "rq", Value = gs.rq },
             new RowItem { ControlId = "gs", Value = gs.gs }, // 数值格式化
             new RowItem { ControlId = "renyuan", Value = gs.chengyuan[0].fullname },
             new RowItem { ControlId = "gslx", Value = gs.gstype }
         };

     up_list.Add(row);
 }


 var url = "https://innoshare/api/v2/open/worksheet/addRows";
 var objData = new
 {
     appKey = "4699f3706483a1db",
     sign = "Y2UyZTcwN2FkNDRmMDQwM2JkNGE5ZWEwZWU5ZDIxOTdlNGUyM2QzZjI3YWYxZTA1ZTkzZjgzMzY1MjMzNDE1Mw==",
     worksheetId = "gssjb",
     // rows = new List<List<RowItem>>()
     rows = up_list
 };


 ps(listBox1, await url.PostJsonAsync(objData).ReceiveString());

上面代码中,关键在要建一个行的集合,“new List<List<RowItem>>()”,然后往里面放字段数据就行,字段只需要给个“名称”和“值”就可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值