文本概述:本文介绍了基于金蝶云苍穹平台开发的应用与移动APP(如云之家、企业微信、钉钉)的集成,实现数据实时互联共享。详细解析了学工系统和智慧农业两大场景下的需求、实现方案及样例开发。学工系统涉及签到、报到、故障报修等功能,智慧农业则涵盖环控设备监控、紧急通知等。样例以钉钉集成苍穹页面实现学生无纸化入学报到为例,详细说明了开发步骤及代码实现。
一、背景
基于金蝶云苍穹平台开发的应用,可以与移动APP集成,例如云之家、企业微信、钉钉等移动APP。实现多端业务数据实时互联、共享。
二、需求解析
1.常用场景
功能 | 简介 |
应用集成 | 移动端集成苍穹页面 |
扫码 | 调用移动端的扫一扫功能 |
定位 | 获取定位信息 |
选择图片/拍照 | 移动端选择图片/拍照 |
其他第三方app提供的功能调用 | 例如企业微信的分享接口 |
2.A组(学工系统)赛题解析
需求挖掘 | 实现方案 | 参考资料 |
学生课堂签到功能/入学报到等 | 利用地图控件定位报到或者现场扫码报到 | https://vip.kingdee.com/article/224205192453791744 https://vip.kingdee.com/school/liveCourse/322735457992040704
|
苍穹平台扫码登录 | 企业微信移动端扫码登录苍穹平台 | https://vip.kingdee.com/article/214021569763567360
|
校园故障报修功能 | 利用选择图片/拍照功能上传故障信息图片 | https://vip.kingdee.com/article/218099984321581312
|
宿舍申请单/延迟毕业申请等等的审批流集成到移动端审批 | 消息中心+移动端集成应用 | https://vip.kingdee.com/article/443347987486607872 https://mp.weixin.qq.com/s/g75vnElNX1u3an5hVk1n7Q
|
课程评价功能中,提供分享转发功能 | 利用第三方app提供的分享接口实现,这个要用苍穹自定义控件去调用原生的js代码 | https://developer.work.weixin·.qq.com/document/path/97583 https://vip.kingdee.com/school/238380828265371392 |
3.B组(智慧农业)赛题解析
需求挖掘 | 实现方案 | 参考资料 |
移动端显示环控设备的各个设备情况 | 可以通过轻分析发布比较酷炫的分析数据到移动端,实时显示设备运转情况。 | https://vip.kingdee.com/article/238597297720639232
|
有紧急异常信息时,通过移动端消息通知对应负责人 | 移动端消息集成 | https://mp.weixin.qq.com/s/g75vnElNX1u3an5hVk1n7Q
|
通过移动端操作设备操作 | 移动端页面集成 | https://vip.kingdee.com/article/344563134742815232 https://vip.kingdee.com/school/liveCourse/322735457992040704?productLineId=29 |
三、样例开发
1、样例背景:钉钉集成苍穹的移动页面,学生通过移动端定位当前位置并录入相关的报到信息,实现学生无纸化入学报到。
2、开发步骤:
【苍穹页面开发】->【钉钉创建快捷应用】->【钉钉单点登录苍穹配置】->【人员信息同步钉钉】
(1)首先在苍穹平台开发好移动表单页面
插件开发:主要是点图标时,获取当前定位的位置赋值给当前位置那个字段。(实际业务使用时,可以在点击报到时,再校验当前位置是否在报到城市或者报到指定的经纬度范围内)
package kdec.report; import java.util.EventObject; import java.util.HashMap; import java.util.Map; import java.math.*; import kd.bos.bill.AbstractMobBillPlugIn; import kd.bos.dataentity.utils.StringUtils; import kd.bos.ext.form.control.MapControl; import kd.bos.ext.form.control.events.MapSelectEvent; import kd.bos.ext.form.control.events.MapSelectListener; import kd.bos.ext.form.dto.MapSelectPointOption; import kd.bos.form.ClientActions; import kd.bos.form.IClientViewProxy; import kd.bos.form.control.Button; import kd.bos.form.control.Control; public class Reportmobplugin extends AbstractMobBillPlugIn implements MapSelectListener{ @Override public void registerListener(EventObject e) { super.registerListener(e); Button bt=getControl("kdec_vectorap"); bt.addClickListener(this); MapControl mapControl = getControl("kdec_mapcontrolap"); mapControl.addSelectListener(this); mapControl.setDraggable(true); mapControl.setDroppable(true); } @Override public void click(EventObject evt) { Object object= evt.getSource(); if(object instanceof Button){ Button bt=(Button)object; if(bt.getKey().equals("kdec_vectorap")){ MapControl mapControl = getControl("kdec_mapcontrolap"); // 缓存添加实时打卡标记,防止死循环 getPageCache().put("selectLocate", "ture"); // 获取地图控件点位当前标记位置。 mapControl.getAddress(); this.getView().updateView("kdec_mapcontrolap"); } } } /** * 获取地图当前位置标记点信息。 * mapControl.getAddress();回调自动触发 * @param evt 地图信息 */ @Override public void select(MapSelectEvent evt) { Map<String, Object> map = evt.getPoint(); Map point = (Map) map.get("point"); //地图控件的 selectAddress,getAddress方法都会调用这个回调,为防止死循环,需要做一个标志位判断 if ("ture".equals(getPageCache().get("selectLocate"))) { // 获取地位后。移除标记点 getPageCache().remove("selectLocate"); MapControl mapControl = getControl("kdec_mapcontrolap"); MapSelectPointOption mapSelectPointOption = new MapSelectPointOption(); // 经度 mapSelectPointOption.setLng(((BigDecimal) point.get("lng")).doubleValue()); // 维度 mapSelectPointOption.setLat(((BigDecimal) point.get("lat")).doubleValue()); mapControl.selectPoint(mapSelectPointOption); getModel().setValue("kdec_adress", String.valueOf(map.get("title"))+"{"+String.valueOf(mapSelectPointOption.getLng())+","+String.valueOf(mapSelectPointOption.getLat())+"}"); } } }
(2)进入钉钉的开放平台
https://open-dev.dingtalk.com/?spm=dd_developers.homepage.0.0.205a4a97hZvGRV#/
创建快捷应用,指定应用页面的访问地址为我们前面开发好的移动表单。url拼接格式:
【苍穹平台服务地址mobile.html?form=移动表单标识】
然后把快捷应用再转成企业应用,供所有学生使用。
转成企业应用
(3)此时,在钉钉已经集成了苍穹的移动端页面,但是此时点击入学报到页面时,还要进行苍穹页面的登录认证,为了在钉钉登录时,无须登录苍穹即可访问苍穹页面,那么需要在苍穹平台配置钉钉的应用信息。另外需要在mc中配置单点登录的配置信息。
mc公共环境配置中配置authtication.apps属性,值为kd.bos.login.thirdauth.app.dingding.DDAuthtication,在开发者大赛的在线环境中已经给大家配置了钉钉的authtication.app属性配置。(4)把苍穹的人员信息同步给钉钉,同步之前,先要开启钉钉应用的通讯录权限(可以开启所有的通讯录权限)
钉钉同步人员
(5)效果图
推荐阅读