using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace FangYar.WebUI.ashx { /// /// CampDayStatHandler 的摘要说明 /// public class CampDayStatHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string action = context.Request.Params["Action"]; string returnstr = ""; switch (action) { case "StatCampDayData": returnstr = StatCampDayData(context); break; case "StatCampDayData_ZD": returnstr = StatCampDayData_ZD(context); break; case "UpdEmpDeviceLog": returnstr = UpdEmpDeviceLog(context); break; } context.Response.Write(returnstr); } #region 营区、战训统计数据处理 /// /// 统计个营区数据 /// /// /// public string StatCampDayData(HttpContext context) { string returnstr = ""; try { string day = context.Request.Params["day"]; //当前时间 DateTime dtm = DateTime.Now; if (!DateTime.TryParse(day, out dtm)) { dtm = DateTime.Now.AddDays(-1); } var dtmStr = dtm.ToString("yyyy-MM-dd"); DateTime sTim = DateTime.Now; List lis = new List() { "36e8032be5f54a3cb994c4ac74ac3f77", "40a1e65991764d4dac2d826bfbbfc849", "5806465fa4e845998f31a10d023f332e", "734389c7ae364584aea9918693bba3de", "82487f0ebb6848e7ac4abc3d7cbc8504", "833b28c12b42495a99a5e41068eb6805", "9a1324ec8b244a7f9d6cbca88cd614fd", "b5b00dfb27a34e0a8bd86270930e02d6", "f4d9f25b27114172a66a9d04cc158b00" }; for (int i = 0; i < lis.Count; i++) { string sql = " CALL get_Camp_Day_Stat('" + lis[i] + "','" + dtmStr + "') "; Common.MySqlHelper.Execute(sql); } DateTime eTim = DateTime.Now; returnstr = "执行开始时间:" + sTim + " 执行结束时间:" + eTim; } catch (Exception e) { returnstr = "执行异常:" + e + "\""; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "营区数据统计", "统计当天营区数据异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "营区数据统计", "统计当天营区数据"); return returnstr; } /// /// 根据总队统计各营区数据 /// /// /// public string StatCampDayData_ZD(HttpContext context) { string returnstr = ""; try { string day = context.Request.Params["day"]; //当前时间 DateTime dtm = DateTime.Now; if (!DateTime.TryParse(day, out dtm)) { dtm = DateTime.Now.AddDays(-1); } var dtmStr = dtm.ToString("yyyy-MM-dd"); DateTime sTim = DateTime.Now; string sql = " CALL get_Camp_Day_Stat_ZD('D8DC637B8B984848A63F82A018AFAEB0','" + dtmStr + "') "; Common.MySqlHelper.Execute(sql); DateTime eTim = DateTime.Now; returnstr = "执行开始时间:" + sTim + " 执行结束时间:" + eTim; } catch (Exception e) { returnstr = "执行异常:" + e + "\""; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "营区数据统计", "统计当天营区数据异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "营区数据统计", "统计当天营区数据"); return returnstr; } #endregion #region 考勤数据处理 /// /// 考勤数据处理 /// /// /// private string UpdEmpDeviceLog(HttpContext context) { string returnstr = ""; try { int index = 0; string day = context.Request.Params["day"]; string TopDay = context.Request.Params["TopDay"]; //当前时间 DateTime dtm = DateTime.Now; if (!DateTime.TryParse(day, out dtm)) { dtm = DateTime.Now; } if (!string.IsNullOrWhiteSpace(TopDay)) { dtm = dtm.AddDays(-1); } //查询日期字符串 string dayStr = dtm.ToString("yyyy-MM-dd"); //查询所有当天记录 string sqlJl = " SELECT EMPID, `NAME`,START_TIME,ORG_ID,PICTURE_URL from tbl_personaccess WHERE date_format(START_TIME,'%Y-%m-%d') = '" + dayStr + "' and EXTEND3 in (SELECT EPUIP_ID from tbl_epuip_org WHERE EXTEND2 = '0' and IS_Attendance = '1') "; //查询记录数据 var dtJl = Common.MySqlHelper.QueryTable(sqlJl); //将出入记录加载到缓存 List listJl = new List(); for (int i = 0; i < dtJl.Rows.Count; i++) { try { listJl.Add(new AttendanceLogMo() { EMPID = dtJl.Rows[i]["EMPID"] + "", NAME = dtJl.Rows[i]["NAME"] + "", ORG_ID = dtJl.Rows[i]["ORG_ID"] + "", START_TIME = dtJl.Rows[i]["START_TIME"] + "", PICTURE_URL = dtJl.Rows[i]["PICTURE_URL"] + "", }); } catch (Exception ex) { string str = "考勤处理记录加载异常:" + ex; FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = str, msgType = FangYar.Common.EnumLogMsgTypeEnum.Error, path = "CampEmpAttendanceTackle" }); } } //查询所有需要考勤数据 string sqlKq = "WITH t1 as(SELECT id, TASK_ID, USERS_UID, USERS_NAME, ORG_ID" + ",KQ_FACE_READ_START_STATE_AM,KQ_FACE_READ_END_STATE_AM,KQ_FACE_READ_START_STATE_PM,KQ_FACE_READ_END_STATE_PM " + " from oa_attendance_record WHERE TASK_ID in ( " + "SELECT id from oa_attendance_task WHERE date_format(UP_START_DATE, '%Y-%m-%d') = '" + dayStr + "') " + " and(KQ_FACE_READ_START_STATE_AM <> '1' or KQ_FACE_READ_END_STATE_AM <> '1' or KQ_FACE_READ_START_STATE_PM <> '1' or KQ_FACE_READ_END_STATE_PM <> '1') " + ")" + "SELECT t.ATTENDANCE_DATE,t1.*,e.ID eid, p.UP_START_TIME,p.UP_END_TIME,p.DOWN_START_TIME,p.DOWN_END_TIME " + ",p.UP_START_TIME2,p.UP_END_TIME2,p.DOWN_START_TIME2,p.DOWN_END_TIME2 " + " from t1 LEFT JOIN tbl_sys_emp e on e.USERS_UID = t1.USERS_UID LEFT JOIN oa_attendance_task t on t1.TASK_ID = t.ID LEFT JOIN oa_attendance_plan p on t.PLAN_ID = p.id "; var dtKq = Common.MySqlHelper.QueryTable(sqlKq); List listKq = new List(); for (int i = 0; i < dtKq.Rows.Count; i++) { try { listKq.Add(new AttendanceEmpMo() { ID = dtKq.Rows[i]["ID"] + "", EID = dtKq.Rows[i]["EID"] + "", ORG_ID = dtKq.Rows[i]["ORG_ID"] + "", UP_END_TIME = dtKq.Rows[i]["UP_END_TIME"] + "", UP_END_TIME2 = dtKq.Rows[i]["UP_END_TIME2"] + "", UP_START_TIME = dtKq.Rows[i]["UP_START_TIME"] + "", DOWN_END_TIME = dtKq.Rows[i]["DOWN_END_TIME"] + "", DOWN_END_TIME2 = dtKq.Rows[i]["DOWN_END_TIME2"] + "", UP_START_TIME2 = dtKq.Rows[i]["UP_START_TIME2"] + "", DOWN_START_TIME = dtKq.Rows[i]["DOWN_START_TIME"] + "", ATTENDANCE_DATE = dtKq.Rows[i]["ATTENDANCE_DATE"] + "", DOWN_START_TIME2 = dtKq.Rows[i]["DOWN_START_TIME2"] + "", T1 = dtKq.Rows[i]["KQ_FACE_READ_START_STATE_AM"] + "", T2 = dtKq.Rows[i]["KQ_FACE_READ_END_STATE_AM"] + "", T3 = dtKq.Rows[i]["KQ_FACE_READ_START_STATE_PM"] + "", T4 = dtKq.Rows[i]["KQ_FACE_READ_END_STATE_PM"] + "", }); } catch (Exception ex) { string str = "考勤处理人员信息查询异常:" + ex; FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = str, msgType = FangYar.Common.EnumLogMsgTypeEnum.Error, path = "CampEmpAttendanceTackle" }); } } //循环处理信息 for (int i = 0; i < listKq.Count; i++) { try { //考勤信息 var obj = listKq[i]; if (obj.T1 != "1") { //查询是否存在记录信息 var listItem = listJl.Where(p => p.START_TIME_DTM >= obj.dt1 && p.START_TIME_DTM <= obj.dt2 && p.ORG_ID == obj.ORG_ID && p.EMPID == obj.EID); if (listItem.Count() > 0) { //记录信息 var item = listItem.First(); string sqlUpd = " update oa_attendance_record set KQ_FACE_READ_START_STATE_AM='1',KQ_FACE_READ_START_TIME_AM='" + item.START_TIME + "',KQ_FACE_READ_START_IMG_AM ='" + item.PICTURE_URL + "' where id = '" + obj.ID + "' "; var n = Common.MySqlHelper.Execute(sqlUpd); string logStr = "执行人员考勤信息更新:执行Sql:" + sqlUpd + " 返回执行结果:" + n; FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = logStr, msgType = FangYar.Common.EnumLogMsgTypeEnum.Info, path = "CampEmpAttendanceTackle" }); index++; continue; } } if (obj.T2 != "1") { //查询是否存在记录信息 var listItem = listJl.Where(p => p.START_TIME_DTM >= obj.dt3 && p.START_TIME_DTM <= obj.dt4 && p.ORG_ID == obj.ORG_ID && p.EMPID == obj.EID); if (listItem.Count() > 0) { //记录信息 var item = listItem.First(); string sqlUpd = " update oa_attendance_record set KQ_FACE_READ_END_STATE_AM='1',KQ_FACE_READ_END_TIME_AM='" + item.START_TIME + "',KQ_FACE_READ_End_IMG_AM ='" + item.PICTURE_URL + "' where id = '" + obj.ID + "' "; var n = Common.MySqlHelper.Execute(sqlUpd); string logStr = "执行人员考勤信息更新:执行Sql:" + sqlUpd + " 返回执行结果:" + n; FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = logStr, msgType = FangYar.Common.EnumLogMsgTypeEnum.Info, path = "CampEmpAttendanceTackle" }); index++; continue; } } if (obj.T3 != "1") { //查询是否存在记录信息 var listItem = listJl.Where(p => p.START_TIME_DTM >= obj.dt5 && p.START_TIME_DTM <= obj.dt6 && p.ORG_ID == obj.ORG_ID && p.EMPID == obj.EID); if (listItem.Count() > 0) { //记录信息 var item = listItem.First(); string sqlUpd = " update oa_attendance_record set KQ_FACE_READ_START_STATE_PM='1',KQ_FACE_READ_START_TIME_PM='" + item.START_TIME + "',KQ_FACE_READ_START_IMG_PM ='" + item.PICTURE_URL + "' where id = '" + obj.ID + "' "; var n = Common.MySqlHelper.Execute(sqlUpd); string logStr = "执行人员考勤信息更新:执行Sql:" + sqlUpd + " 返回执行结果:" + n; FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = logStr, msgType = FangYar.Common.EnumLogMsgTypeEnum.Info, path = "CampEmpAttendanceTackle" }); index++; continue; } } if (obj.T4 != "1") { //查询是否存在记录信息 var listItem = listJl.Where(p => p.START_TIME_DTM >= obj.dt7 && p.START_TIME_DTM <= obj.dt8 && p.ORG_ID == obj.ORG_ID && p.EMPID == obj.EID); if (listItem.Count() > 0) { //记录信息 var item = listItem.First(); string sqlUpd = " update oa_attendance_record set KQ_FACE_READ_END_STATE_PM='1',KQ_FACE_READ_END_TIME_PM='" + item.START_TIME + "',KQ_FACE_READ_End_IMG_PM ='" + item.PICTURE_URL + "' where id = '" + obj.ID + "' "; var n = Common.MySqlHelper.Execute(sqlUpd); string logStr = "执行人员考勤信息更新:执行Sql:" + sqlUpd + " 返回执行结果:" + n; FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = logStr, msgType = FangYar.Common.EnumLogMsgTypeEnum.Info, path = "CampEmpAttendanceTackle" }); index++; continue; } } } catch (Exception ex) { string str = "人员考勤数据处理异常:" + ex; FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = str, msgType = FangYar.Common.EnumLogMsgTypeEnum.Error, path = "CampEmpAttendanceTackle" }); } } returnstr = "{\"code\":0,\"msg\":\"共处理信息:" + index + "\"}"; FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = "共处理考勤数据" + index + "条", msgType = FangYar.Common.EnumLogMsgTypeEnum.Info, path = "CampEmpAttendanceTackle" }); } catch (Exception e) { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":\"" + e + "\"}"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "营区数据统计", "统计当天营区数据异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "营区数据统计", "统计当天营区数据"); return returnstr; } /// /// 考勤数据日志模型 /// public class AttendanceLogMo { /// /// 用户信息ID /// public string EMPID { get; set; } /// /// 用户名称 /// public string NAME { get; set; } /// /// 上报信息时间 /// public string START_TIME { get; set; } /// /// 机构ID /// public string ORG_ID { get; set; } /// /// 图片地址 /// public string PICTURE_URL { get; set; } /// /// 时间格式上报时间 /// public DateTime START_TIME_DTM { get { DateTime.TryParse(START_TIME, out DateTime dtm); return dtm; } } } /// /// 需要处理的用户信息ID /// public class AttendanceEmpMo { /// /// 考勤详情信息ID /// public string ID { get; set; } /// /// 日期 /// public string ATTENDANCE_DATE { get; set; } /// /// 机构ID /// public string ORG_ID { get; set; } /// /// 用户信息ID /// public string EID { get; set; } /// /// 上午上班打卡开始时间 /// public string UP_START_TIME { get; set; } /// /// 上午上班打卡结束时间 /// public string UP_END_TIME { get; set; } /// /// 上午下班打卡开始时间 /// public string DOWN_START_TIME { get; set; } /// /// 上午下班打卡结束时间 /// public string DOWN_END_TIME { get; set; } /// /// 下午上班打卡开始时间 /// public string UP_START_TIME2 { get; set; } /// /// 下午上班打卡结束时间 /// public string UP_END_TIME2 { get; set; } /// /// 下午下班打卡开始时间 /// public string DOWN_START_TIME2 { get; set; } /// /// 下午下班打卡结束时间 /// public string DOWN_END_TIME2 { get; set; } /// /// 信息状态1 /// public string T1 { get; set; } /// /// 信息状态2 /// public string T2 { get; set; } /// /// 信息状态3 /// public string T3 { get; set; } /// /// 信息状态4 /// public string T4 { get; set; } public DateTime dt1 { get { return GetDtm(UP_START_TIME); } } public DateTime dt2 { get { return GetDtm(UP_END_TIME); } } public DateTime dt3 { get { return GetDtm(DOWN_START_TIME); } } public DateTime dt4 { get { return GetDtm(DOWN_END_TIME); } } public DateTime dt5 { get { return GetDtm(UP_START_TIME2); } } public DateTime dt6 { get { return GetDtm(UP_END_TIME2); } } public DateTime dt7 { get { return GetDtm(DOWN_START_TIME2); } } public DateTime dt8 { get { return GetDtm(DOWN_END_TIME2); } } /// /// 返回时间 /// /// /// private DateTime GetDtm(string tim) { var str = ATTENDANCE_DATE + " " + tim; DateTime.TryParse(str, out DateTime retDtm); return retDtm; } } #endregion public bool IsReusable { get { return false; } } } }