先看个界面

HTML+JS

 <script type="text/javascript">$(document).ready(function () {$('#dg').datagrid({width: '100%',title: '', //标题内容loadMsg: '数据加载中请稍候...',autoRowHeight: false, //行高是否自动collapsible: true, //是否可折叠pagination: true, //分页是否显示rownumbers: true, //行号pageSize: 10, //每页多少条pageList: [10, 20],fitColumns: true, //设置为 true,则会自动扩大或缩小列的尺寸以适应网格的宽度并且防止水平滚动singleSelect: false, //设置为 true,则只允许选中一行。checkOnSelect: false, //如果设置为 true,当用户点击某一行时,则会选中/取消选中复选框。如果设置为 false 时,只有当用户点击了复选框时,才会选中/取消选中复选框idField: 'ID',url: null,toolbar: '#toolbar',columns: [[//{ title: '', field: 'ID', checkbox: true },{ title: '姓名', field: 'UserName' },{ title: '所在部门', field: 'DepName' },{title: '打卡类型', field: 'Checkin_Type',formatter: function (val, row, index) { if (val == "1") { return "上班打卡"; } else if (val == "2") { return "下班打卡"; } else if (val == "3") { return "外出打卡" } }},{ title: '打卡地点', field: 'Location_Title' },{ title: '地点详情', field: 'Location_Detail' },{ title: '异常类型', field: 'Exception_Type', styler: flagColor },{ title: '备注', field: 'Notes', width: '150px' },{ title: '打卡时间', field: 'Checkin_Time', formatter: DateTimeFormatter },{ title: '同步时间', field: 'OP_DATE', formatter: DateTimeFormatter },]],});});function flagColor(val, row, index) {if (val == '时间异常' || val == '未打卡') {return 'background:#FFCCCC';} else {return 'background:#B9F3B9';}}//查询function dosearch() {if ($("#StartTime").datebox("getValue") == "") {$.messager.alert('<%=HLY.Common.Common.GetSystemNameAndVersion()%>', "请输入开始时间", 'warning');return;}if ($("#EndTime").datebox("getValue") == "") {$.messager.alert('<%=HLY.Common.Common.GetSystemNameAndVersion()%>', "请输入结束时间", 'warning');return;}$('#dg').datagrid('clearSelections');var gridOpts = $('#dg').datagrid('options');gridOpts.url = 'OfficeApi.aspx?method=QueryAttendance';$('#dg').datagrid('load', {DepID: $("#DepID").combobox('getValue'),UserID: $("#UserID").combobox('getValue'),StartDate: $("#StartTime").datebox("getValue") + ' 00:00:00',EndDate: $("#EndTime").datebox("getValue") + ' 23:59:59'});}</script>
<%--检索栏--%><div id="saPanel" class="easyui-panel" title="" data-options="iconCls:'icon-search'"><table><tr><td style="text-align: right; width: 60px;">开始时间:</td><td><input id="StartTime" class="easyui-datebox" data-options="required:true,showSeconds:false" value="" style="width: 200px" /></td><td style="text-align: right; width: 60px;">结束时间:</td><td><input id="EndTime" class="easyui-datebox" data-options="required:true,showSeconds:false" value="" style="width: 200px" /></td><td style="text-align: right; width: 60px;">所属部门:</td><td><input id="DepID" class="easyui-combotree" data-options="url:'../SystemManager/systemManagerApi.aspx?method=QueryAllOrganize',editable:true" style="width: 200px;" /></td><td style="text-align: right; width: 60px;">姓名:</td><td><input id="UserID" class="easyui-combobox" data-options="url:'OfficeApi.aspx?method=FindUserName',valueField:'LoginName',textField:'UserName'" style="width: 200px;" /></td></tr></table></div><%-- 数据绑定 --%><table id="dg" class="easyui-datagrid"></table><%-- 工具栏 --%><div id="toolbar"><a href="#" class="easyui-linkbutton" id="btnGetAttendanceData" iconcls="icon-cog_go">&nbsp;同步考勤数据&nbsp;</a>&nbsp;<a href="#" class="easyui-linkbutton" iconcls="icon-search" plain="false" onclick="dosearch()">&nbsp;查&nbsp;询&nbsp;</a>&nbsp;<a href="#" class="easyui-linkbutton" iconcls="icon-application_put" plain="false" onclick="AttendanceExport()">&nbsp;导&nbsp;出&nbsp;</a>&nbsp;</div><form runat="server" id="fm1"><asp:Button ID="btnAttendance" runat="server" Style="display: none;" Text="导出" OnClick="btnAttendance_Click" /></form><script>//导出所选择的考勤数据function AttendanceExport() {if ($("#StartTime").datebox("getValue") == "") {$.messager.alert('<%=HLY.Common.Common.GetSystemNameAndVersion()%>', "请输入开始时间", 'warning');return;}if ($("#EndTime").datebox("getValue") == "") {$.messager.alert('<%=HLY.Common.Common.GetSystemNameAndVersion()%>', "请输入结束时间", 'warning');return;}var row = $('#dg').datagrid('getData').rows[0];if (row == null) { $.messager.alert('<%= HLY.Common.Common.GetSystemNameAndVersion()%>', '没有数据可以进行导出,请重新查询!', 'warning'); return; }var arr = new Array();arr[0] = $("#DepID").combobox('getValue');arr[1] = $("#UserID").combobox('getValue');arr[2] = $("#StartTime").datebox("getValue") + ' 00:00:00';arr[3] = $("#EndTime").datebox("getValue") + ' 23:59:59';$.ajax({url: "OfficeApi.aspx?method=AttendanceExport&arr=" + escape(arr.toString()),success: function (text) {if (text == "OK") { var obj = document.getElementById("<%=btnAttendance.ClientID %>"); obj.click(); }else { $.messager.alert('<%= HLY.Common.Common.GetSystemNameAndVersion()%>', text, 'warning'); }}})}function ChangeDateFormat(cellval) {var str = cellval;//对应的UNIX时间戳为1223559328var new_str = str.replace(/:/g, '-');new_str = new_str.replace(/ /g, '-');var arr = new_str.split("-");var datum = new Date(Date.UTC(arr[0], arr[1] - 1, arr[2], arr[3] - 8, arr[4], arr[5]));//var datum = new Date(datum.getTime());return datum.getTime()/1000;}$('#btnGetAttendanceData').click(function () {if ($("#StartTime").datebox("getValue") == "") {$.messager.alert('<%=HLY.Common.Common.GetSystemNameAndVersion()%>', "请输入开始时间", 'warning');return;}if ($("#EndTime").datebox("getValue") == "") {$.messager.alert('<%=HLY.Common.Common.GetSystemNameAndVersion()%>', "请输入结束时间", 'warning');return;}$('#btnGetAttendanceData').attr('disabled', true);$.messager.progress({ msg: '请稍后,正在同步中...' });var starttime = ChangeDateFormat($("#StartTime").datebox("getValue") + ' 00:00:00');var endtime = ChangeDateFormat($("#EndTime").datebox("getValue") + ' 23:59:59');$.ajax({url: 'OfficeApi.aspx?method=GetAttendanceData',type: 'post',dateType: 'json',data: { starttime: starttime, endtime: endtime },success: function (su) {var result = eval('(' + su + ')');if (result.Result == true) {$.messager.alert('<%=HLY.Common.Common.GetSystemNameAndVersion()%>', result.Message, 'info');$('#btnGetAttendanceData').attr('disabled', true);$.messager.progress("close");}else {$.messager.alert('<%= HLY.Common.Common.GetSystemNameAndVersion()%>', result.Message, 'warning');$('#btnGetAttendanceData').attr('disabled', false);$.messager.progress("close");}}});})</script>
public class body{public int opencheckindatatype { get; set; }public int starttime { get; set; }public int endtime { get; set; }public List<string> useridlist { get; set; }}
/// <summary>/// 获取考勤打卡数据/// </summary>public void GetAttendanceData(){OAAttendanceEntity ent = new OAAttendanceEntity();IBusinessOffice obj = (IBusinessOffice)RemoteObjectCreation.CreateBusinessFacade(typeof(IBusinessOffice));LogEntity log = new LogEntity();log.IPAddress = Common.GetUserIP(HttpContext.Current.Request);log.Moudle = "考勤管理";log.NvgPage = "同步考勤打卡记录";log.Status = "0";log.Operate = "A";log.UserID = UserInfor.LoginName.Trim();ErrMessage msg = new ErrMessage(); msg.Message = "";msg.Result = false;body rt = new body();rt.opencheckindatatype = 3;rt.starttime = Convert.ToInt32(Request["starttime"]);rt.endtime = Convert.ToInt32(Request["endtime"]);OASystemUserEntity qyuser = new OASystemUserEntity();List<OASystemUserEntity> lists = obj.FindUserName(qyuser);List<OAAttendanceEntity> relist = new List<OAAttendanceEntity>();List<string> LoginNameJson = new List<string>();for (int i = 0; i < lists.Count; i++){LoginNameJson.Add(lists[i].LoginName);}foreach (string a in LoginNameJson) {List<string> data = new List<string>() { a };rt.useridlist = data;string json = JsonConvert.SerializeObject(rt);string token = Common.GetWeixinQYToken("你的企业ID", "你的考勤数接口Script");string serviceUrl = string.Format("https://qyapi.weixin.qq.com/cgi-bin/checkin/getcheckindata?access_token={0}&body={1}", token, json);HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);//把用户传过来的数据转成“UTF-8”的字节流byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(json);myRequest.Method = "POST";myRequest.ContentLength = buf.Length;myRequest.ContentType = "application/json";myRequest.MaximumAutomaticRedirections = 1;myRequest.AllowAutoRedirect = true;//发送请求Stream stream = myRequest.GetRequestStream();stream.Write(buf, 0, buf.Length);stream.Close();//获取接口返回值//通过Web访问对象获取响应内容HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();//通过响应内容流创建StreamReader对象,因为StreamReader更高级更快StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾reader.Close();myResponse.Close();AttendanceInfo whh = JsonConvert.DeserializeObject<AttendanceInfo>(returnXml);if (whh.errmsg != "ok"||whh.errcode!="0"||whh.checkindata.Count==0) {continue;}int IndexofA = returnXml.IndexOf("[{");int IndexofB = returnXml.IndexOf("}]");string Ru = returnXml.Substring(IndexofA, IndexofB - IndexofA + 2);ArrayList rel = (ArrayList)JSON.Decode(Ru);foreach (Hashtable la in rel){if (Convert.ToString(la["userid"]) == null||Convert.ToString(la["userid"]) == ""){break;}OAAttendanceEntity entity = new OAAttendanceEntity();entity.UserID = Convert.ToString(la["userid"]);entity.Checkin_Time = Convert.ToDateTime(ChangUnixtoDateTime(Convert.ToInt32(la["checkin_time"])));if (obj.QueryAttendanceCount(entity) != 0){continue;}int checkin_type = 0;if (Convert.ToString(la["checkin_type"]) == "上班打卡"){checkin_type = 1;}else if (Convert.ToString(la["checkin_type"]) == "下班打卡"){checkin_type = 2;}else if (Convert.ToString(la["checkin_type"]) == "外出打卡"){checkin_type = 3;}relist.Add(new OAAttendanceEntity{UserID = Convert.ToString(la["userid"]),GroupName = Convert.ToString(la["groupname"]),Checkin_Type = checkin_type,Exception_Type = Convert.ToString(la["exception_type"]),Checkin_Time = Convert.ToDateTime(ChangUnixtoDateTime(Convert.ToInt32(la["checkin_time"]))),Location_Title = Convert.ToString(la["location_title"]),Location_Detail = Convert.ToString(la["location_detail"]),WifiName = Convert.ToString(la["wifiname"]),Notes = Convert.ToString(la["notes"]),Longitude = Convert.ToDecimal(la["lng"]) / 1000000,Latitude = Convert.ToDecimal(la["lat"]) / 1000000,OP_DATE = System.DateTime.Now});}}ent.AttendanceList = relist;obj.GetAttendanceData(ent, log);msg.Result = true;msg.Message = "成功获取数据!";//返回处理结果string res = JSON.Encode(msg);Response.Write(res);Response.End();}public String ChangUnixtoDateTime(long unixTimeStamp){//long unixTimeStamp = 1478162177;System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区DateTime dt = startTime.AddSeconds(unixTimeStamp);return dt.ToString("yyyy-MM-dd HH:mm:ss");}

C#获取微信打卡数据相关推荐

  1. kettle实例(获取企业微信打卡数据并将数据入库)

    ETL.kettle初学者实例(获取企业微信打卡数据并将数据入库) Kettle简介 实例流程简介 从数据库中取出人员信息 处理人员信息 获取人员打卡信息 将打卡信息入库 总结 Kettle简介 Ke ...

  2. C#获取企业微信打卡数据

    在涉及到获取第三方数据的时候都会涉及到调用接口,小编为此也是搜索了很长一段时间呢!https://www.cnblogs.com/BOSET/p/7089284.html这是小编参考的一份很完善的C# ...

  3. 利用kettle获取企业微信打卡数据

    利用kettle创建转换,把转换根据顺序执行,生成作业,通过计划任务定时执行作业,把企业微信的打卡记录插入到本地数据库中. 一.先获取打卡应用和通讯录的access_token,由于access_to ...

  4. 前端获取微信头像 base64 数据的踩坑实践

    团队招聘 正文开始前,插播一则招聘信息.欢迎感兴趣的同学投递简历. 岗位职责: 负责快狗打车产品相关前端开发工作 通过技术提高FE团队整体效率 任职要求: 本科及以上学历 3年以上前端开发经验,负责过 ...

  5. Charles 的使用(电脑 获取微信小程序数据)

    下载安装包 先从官网下载软件(可免费使用): 安装包官方链接 然后无脑点安装就OK了 安装完之后,软件不会自动在桌面创建快捷方式,需要到安装路径找到软件位置. 找到并打开软件,下面是一些基础设置: 安 ...

  6. Restsharp获取微信小程序数据,返回错误,提示没权限。手机抓包和操作都有数据,如何破--请大神支招,可私聊

    我的代码: RestClient restClient= new RestClient(BaseUrl);             restClient.Timeout = 5000;         ...

  7. python 打卡程序_python获取微信企业号打卡数据并生成windows计划任务

    由于公司的系统用的是Java版本,开通了企业号打卡之后又没有预算让供应商做数据对接,所以只能自己捣鼓这个,以下是个人设置的一些内容,仅供大家参考 安装python python的安装,这里就不详细写了 ...

  8. 利用python获取微信企业号打卡数据,并生成windows计划任务

    利用python获取微信企业号打卡数据,并生成windows计划任务 安装python 安装第三方库 写主程序 设置Windows计划任务 由于公司的系统用的是Java版本,开通了企业号打卡之后又没有 ...

  9. 微信小程序获取微信用户步数

    小程序开发代码 -js // index.js // 获取应用实例 const app = getApp()Page({data: {motto: 'Hello World',userInfo: {} ...

最新文章

  1. 绑定线程到特定CPU处理器
  2. stata面板数据gmm回归_【stata】面板GMM估计
  3. 使用Google GSON:额外的赠品:第一部分
  4. android studio 导入依赖报错——Could not find com.xxx,(# fields: 66338 > 65536)
  5. 使用git管理自己的代码--简单使用流程
  6. 实用工具类APP,海外大有可为
  7. 怎么通过当地时区计算格林尼治_时间规划局:时间能看到,标注在你的手臂上,那时的你会怎么样...
  8. windows10应用商店下安装kali子系统
  9. 台式计算机设备验收单,电脑设备验收单.doc
  10. 屏幕画图工具Pointofix
  11. java cmd 编译jar_Java程序在命令行下编译运行打Jar包
  12. matlab 另存为excel_将matlab数据保存为excel文件
  13. 论文解读:MOEA/D-TPN
  14. linux配置文件前面有分号,linux中的分号 ||
  15. python使用虚拟内存_深入浅出虚拟内存(一)
  16. 简单维修MacBook Air——更换SSD硬盘
  17. 荣耀X30 Max参数配置
  18. Vue + element-ui合并单元格后,checkbox多选单选取值问题
  19. PMP系列 - 关键链法
  20. Aspose.Slides for .NET V23 Crack

热门文章

  1. DTS北洋曳舞社网站开发手记
  2. android 分享到微博客户端,Android APP集成新浪微博分享功能
  3. Jquery 实现表格单行获取数据
  4. android编辑按钮图标,修改 Floating Action Button 图标
  5. 模型量化论文阅读#4----EWGS:Network Quantization with Element-wise Gradient Scaling
  6. 分布式系统(微服务架构)的一致性和幂等性和相关概念解析
  7. 视频教程-Prometheus+Grafana企业级监控实战(运维篇)2020年视频教程-Linux
  8. 测试排期估时多长合理?
  9. 数据结构 —— ADT(抽象数据类型)
  10. JAVA基于NIO客户端对客户端简单聊天DEMO(服务器转发消息)