配置步骤
该能⼒还在灰度测试期间,想要体验需要在灰度申请进⾏申请
# ⼀ . 签到签退完成校验
# 1. 配置⽅式
在外勤类型 - 全局设置中进⾏开启,选择已经开发好的或者新建⼀个 APL 类使⽤,并且需要钩 上具体在哪个节点使⽤。不钩上即使函数⾥⾯实现了该节点的⽅案也不会执⾏!!!。

备注:如果上述⽅式均配置了 还是没有执⾏函数,到后台查看函数执⾏⽇志,看是否函数执⾏ 报错,如果函数本⾝写的有问题报错,默认不在拦截!!!!
# 2. APL 类说明
直接在类型中新建或者在 APL 后台管理中新建 APL 类,选择外勤类型函数校验的命名空间即 可,将必填字段补充完整

⽬前没有新建模版,可以直接使⽤空模版⾥⾯也有详细说明,或者选择这个企业历史创建的都 可以
整个类中有三个⽅法,对应签到(beforeCheckin)、签退(beforeCheckout)、完成 (beforeCheckFinish)三个节点的处理,每个⽅法⼊参数和出参完全⼀致,通过实现每个⽅ 法进⾏不同的判断,返回是否阻拦检验。
⼊参:( ⽬前定位这些字段内容均不可靠 只供参考,不建议直接使⽤!!! 经纬度⽐较可信 )
class Arg implements Serializable {
private String checkId;//外勤记录id
private String mainObjApiName;//外勤关联主对象apiNam
private String mainObjDataId;//外勤关联主对象id
private String checkTypeId;//外勤类型id
private String userId;//⽤⼾ID
private Map<String, Object> checkinMap;//外勤相关字段. -- 终端版本需要更新到最新,详情见下边
}
/**
* checkinmap中所有的字段
*/
class CheckinMap {
private String locationInfo;//当前终端定位信息 --定位这些均在895之后版本才有
private String checkinsLon;//经度
private String checkinsLat;//纬度
private String checkinsAddressCountry;// 国家 --以下信息均可能为空,终端定位信息弱等等情况
// ⽬前定位这些字段内容均不可靠 只供参考,不建议直接使⽤!!!
private String checkinsAddressProvince;// 省
private String checkinsAddressCity;//城市
private String checkinsAddressStreetNum;//街道
private String checkinsAddressStreet;//街道号
private String checkinsAddressDesc;//详细地址
private List<Object> referenceObject;//⼦对象信息 --终端版本905之后
}
出参(返回值)
class Result implements Serializable {
private boolean success;//是否校验通过
private boolean block;//校验不通过 是否阻拦
private String title;//不通过时弹窗标题
private String message;//不通过时弹窗文案
}
# 3. 简单案例
空模版可以直接保存使⽤,就是没有逻辑判断,直接默认签到时直接校验通过、签退时校验不 通过不强制阻拦,完成校验不通过且强制阻拦。
checkTypeId主要针对不同类型配置⽤⼀个函数的情况,可以⾛不同的逻辑,如果⼀个类型创建⼀个函 数类,则可以不⽤这个做判断
详见groovy代码示例