/** * 获取用户数据 * - * ppExt 氚云组织架构只有全量查询接口, 且部门和用户ID, 有单独ID. 更甚接口未返回钉钉userId与手机号登信息 * 1. todo: 后续考虑新建氚云webservice进行查询 * 2. 临时方案为, H_User系统表, 字段DingTalkAccount「返回格式为 userId.corpId」, 通过氚云定时任务储存与钉钉对照关系 [详见 test/sample/CPTimer] */ //定义一个定时器类(类名格式:自定义功能名 + _Timer),且继承H3.SmartForm.Timer类 public class CPTimer: H3.SmartForm.Timer { //构造方法,跟类名保持一致,里面不必书写代码,但是必须存在 public CPTimer() { } //重写定时器引擎执行的方法,必须存在,且方法名必须为OnWork protected override void OnWork(H3.IEngine engine) { //此方法每隔4小时调用一次 Execute_1(engine); DateTime now = DateTime.Now;//获取当前时间 DateTime sTime = DateTime.Parse(now.ToString("yyyy-MM-dd 00:00:00"));//获取今天的10点 DateTime eTime = DateTime.Parse(now.ToString("yyyy-MM-dd 04:00:00"));//获取今天的14点 if(sTime <= now && eTime >= now)//判断当前时间是否处于10点-14点间 { //每天0点-4点间调用一次Execute_2方法(根据氚云定时器每隔4小时执行一次的规则,0点-4点间隔4小时,所以这个范围内必定会执行一次) Execute_2(engine); } } //此方法内书写你要定时执行的功能代码,非必须存在,只是为了封装,方法名自定义 //调试本方法:在列表后端OnLoad方法中书写:new MyTest_Timer().Execute_1(this.Engine) public void Execute_1(H3.IEngine engine) { //此处无当前表单业务对象,所以不能使用this.Request.BizObject,请另行查询出需要的业务对象 //此处无请求对象,所以请将this.Request.Engine替换为engine //此处无当前登录人,所以请将this.Request.UserContext.UserId替换为指定的人员id或系统默认用户Id(即:H3.Organization.User.SystemUserId) } /// 临时方案为, H_User系统表, 字段DingTalkAccount「返回格式为 userId.corpId」, 通过氚云定时任务储存与钉钉对照关系 public void Execute_2(H3.IEngine engine) { // 清除表单数据 engine.BizObjectManager.Clear("D1489118960387db0274aa18b9168cde213c3d3"); // 任务处理同步 System.Data.DataTable dtAccount = engine.Query.QueryTable("select * from H_User", null); if(dtAccount != null && dtAccount.Rows != null && dtAccount.Rows.Count > 0) { foreach(System.Data.DataRow row in dtAccount.Rows) { // DingTalkAccount「返回格式为 userId.corpId」 string userId = row["DingTalkAccount"] + string.Empty; string dUserId = userId.Split('.')[0]; string cUserId = row["ObjectId"] + string.Empty; string userName = row["Name"] + string.Empty; engine.Query.QueryTable(string.Format("insert into i_D1489118960387db0274aa18b9168cde213c3d3 (F0000001, F0000002, F0000003, ObjectId) values ('{0}', '{1}', '{2}', '{3}')", userName, cUserId, dUserId, cUserId), null); } } } }