You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
522 lines
22 KiB
522 lines
22 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web;
|
|
|
|
namespace FangYar.WebUI.ashx
|
|
{
|
|
/// <summary>
|
|
/// CampDayStatHandler 的摘要说明
|
|
/// </summary>
|
|
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 营区、战训统计数据处理
|
|
|
|
/// <summary>
|
|
/// 统计个营区数据
|
|
/// </summary>
|
|
/// <param name="context"></param>
|
|
/// <returns></returns>
|
|
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<string> lis = new List<string>() {
|
|
"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;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 根据总队统计各营区数据
|
|
/// </summary>
|
|
/// <param name="context"></param>
|
|
/// <returns></returns>
|
|
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 考勤数据处理
|
|
|
|
/// <summary>
|
|
/// 考勤数据处理
|
|
/// </summary>
|
|
/// <param name="context"></param>
|
|
/// <returns></returns>
|
|
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<AttendanceLogMo> listJl = new List<AttendanceLogMo>();
|
|
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<AttendanceEmpMo> listKq = new List<AttendanceEmpMo>();
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 考勤数据日志模型
|
|
/// </summary>
|
|
public class AttendanceLogMo
|
|
{
|
|
/// <summary>
|
|
/// 用户信息ID
|
|
/// </summary>
|
|
public string EMPID { get; set; }
|
|
/// <summary>
|
|
/// 用户名称
|
|
/// </summary>
|
|
public string NAME { get; set; }
|
|
/// <summary>
|
|
/// 上报信息时间
|
|
/// </summary>
|
|
public string START_TIME { get; set; }
|
|
/// <summary>
|
|
/// 机构ID
|
|
/// </summary>
|
|
public string ORG_ID { get; set; }
|
|
/// <summary>
|
|
/// 图片地址
|
|
/// </summary>
|
|
public string PICTURE_URL { get; set; }
|
|
/// <summary>
|
|
/// 时间格式上报时间
|
|
/// </summary>
|
|
public DateTime START_TIME_DTM { get { DateTime.TryParse(START_TIME, out DateTime dtm); return dtm; } }
|
|
|
|
}
|
|
/// <summary>
|
|
/// 需要处理的用户信息ID
|
|
/// </summary>
|
|
public class AttendanceEmpMo
|
|
{
|
|
/// <summary>
|
|
/// 考勤详情信息ID
|
|
/// </summary>
|
|
public string ID { get; set; }
|
|
/// <summary>
|
|
/// 日期
|
|
/// </summary>
|
|
public string ATTENDANCE_DATE { get; set; }
|
|
/// <summary>
|
|
/// 机构ID
|
|
/// </summary>
|
|
public string ORG_ID { get; set; }
|
|
|
|
/// <summary>
|
|
/// 用户信息ID
|
|
/// </summary>
|
|
public string EID { get; set; }
|
|
/// <summary>
|
|
/// 上午上班打卡开始时间
|
|
/// </summary>
|
|
public string UP_START_TIME { get; set; }
|
|
/// <summary>
|
|
/// 上午上班打卡结束时间
|
|
/// </summary>
|
|
public string UP_END_TIME { get; set; }
|
|
/// <summary>
|
|
/// 上午下班打卡开始时间
|
|
/// </summary>
|
|
public string DOWN_START_TIME { get; set; }
|
|
/// <summary>
|
|
/// 上午下班打卡结束时间
|
|
/// </summary>
|
|
public string DOWN_END_TIME { get; set; }
|
|
|
|
/// <summary>
|
|
/// 下午上班打卡开始时间
|
|
/// </summary>
|
|
public string UP_START_TIME2 { get; set; }
|
|
/// <summary>
|
|
/// 下午上班打卡结束时间
|
|
/// </summary>
|
|
public string UP_END_TIME2 { get; set; }
|
|
/// <summary>
|
|
/// 下午下班打卡开始时间
|
|
/// </summary>
|
|
public string DOWN_START_TIME2 { get; set; }
|
|
/// <summary>
|
|
/// 下午下班打卡结束时间
|
|
/// </summary>
|
|
public string DOWN_END_TIME2 { get; set; }
|
|
/// <summary>
|
|
/// 信息状态1
|
|
/// </summary>
|
|
public string T1 { get; set; }
|
|
/// <summary>
|
|
/// 信息状态2
|
|
/// </summary>
|
|
public string T2 { get; set; }
|
|
/// <summary>
|
|
/// 信息状态3
|
|
/// </summary>
|
|
public string T3 { get; set; }
|
|
/// <summary>
|
|
/// 信息状态4
|
|
/// </summary>
|
|
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); } }
|
|
|
|
|
|
/// <summary>
|
|
/// 返回时间
|
|
/// </summary>
|
|
/// <param name="tim"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|