软测单独项目
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

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;
}
}
}
}