1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /**
- * 获取用户数据
- * -
- * 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);
- }
- }
- }
- }
|