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.
271 lines
9.2 KiB
271 lines
9.2 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.Odbc;
|
|
using System.Linq;
|
|
using System.Web;
|
|
|
|
namespace FangYar.WebUI.ashx
|
|
{
|
|
/// <summary>
|
|
/// ClickHouseDataBase 的摘要说明
|
|
/// </summary>
|
|
public class ClickHouseDataBase : IHttpHandler
|
|
{
|
|
string consqlserver = @"DSN=clickhouse.xfzn365.cn";
|
|
|
|
public void ProcessRequest(HttpContext context)
|
|
{
|
|
|
|
string action = context.Request.Params["Action"];
|
|
|
|
switch (action)
|
|
{
|
|
case "UpdExerciseData":
|
|
context.Response.Write(UpdExerciseData(context));
|
|
return;
|
|
}
|
|
|
|
|
|
string returnstr = "";
|
|
|
|
// 记录操作日志
|
|
BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "ClickHouse数据库查询", "");
|
|
|
|
try
|
|
{
|
|
|
|
string OTIME = context.Request.Params["OTIME"];
|
|
string BTIME = context.Request.Params["BTIME"];
|
|
string UUID = context.Request.Params["UUID"];
|
|
string uu = "";
|
|
if (UUID != "")
|
|
{
|
|
uu = UUID.Substring(0, UUID.Length - 1);
|
|
}
|
|
else { uu = "\'\'"; }
|
|
string sql = "SELECT alarm_time, pic_url FROM default.t_face_data WHERE pic_url<>'' and dev_serial in (" +
|
|
uu +
|
|
") and alarm_time BETWEEN '" + BTIME + "' and '" + OTIME + "'";
|
|
|
|
context.Response.ContentType = "text/plain";
|
|
|
|
OdbcConnection myConnection = new OdbcConnection(consqlserver);
|
|
OdbcCommand myCommand = new OdbcCommand(sql, myConnection);
|
|
myConnection.Open();
|
|
OdbcDataAdapter adapter = new OdbcDataAdapter();
|
|
adapter.SelectCommand = myCommand;
|
|
DataSet ds = new DataSet();
|
|
|
|
adapter.Fill(ds);
|
|
returnstr = "{\"code\":\"200\",\"msg\":\"操作成功!\",\"data\":";
|
|
returnstr += FangYar.Common.JsonHelper.ToJson(ds);
|
|
returnstr += "}";
|
|
|
|
adapter.Dispose();
|
|
myCommand.Dispose();
|
|
myConnection.Close();
|
|
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
// 记录操作日志
|
|
BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "ClickHouse数据库查询", "查询异常:" + e);
|
|
}
|
|
context.Response.Write(returnstr);
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 更新出操数据
|
|
/// </summary>
|
|
/// <param name="context"></param>
|
|
/// <returns></returns>
|
|
private string UpdExerciseData(HttpContext context)
|
|
{
|
|
string returnstr = "OK";
|
|
try
|
|
{
|
|
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");
|
|
|
|
//查询mysql数据库未出操数据
|
|
string sql1 = " WITH t1 as(SELECT id,task_id,users_uid,users_name from oa_exercise_record WHERE date_format(createtime,'%Y-%m-%d') = '" + dayStr + @"' and FACE_READ_STATE <> '1')
|
|
|
|
SELECT t1.*,tk.EXTEND2,tk.EXTEND4,tk.ORG_NAME,e.IDNUMBER from t1 LEFT JOIN oa_exercise_task tk on t1.task_id=tk.id LEFT JOIN tbl_sys_emp e on t1.users_uid=e.users_uid ";
|
|
|
|
//查询clickhouse数据库出操数据
|
|
string sql2 = " SELECT * from default.t_face_data WHERE create_time > '" + dayStr + " 06:30:00' and create_time < '" + dayStr + " 09:00:00' ";
|
|
|
|
var dt1 = FangYar.Common.MySqlHelper.QueryTable(sql1);
|
|
|
|
var dt2 = Execute(sql2);
|
|
|
|
|
|
List<ExClickHouseMo> lis2 = new List<ExClickHouseMo>();
|
|
|
|
|
|
for (int i = 0; i < dt2.Rows.Count; i++)
|
|
{
|
|
try
|
|
{
|
|
DateTime.TryParse(dt2.Rows[i]["alarm_time"] + "", out DateTime alarm_time);
|
|
DateTime.TryParse(dt2.Rows[i]["create_time"] + "", out DateTime create_time);
|
|
lis2.Add(new ExClickHouseMo()
|
|
{
|
|
alarm_time = alarm_time,
|
|
create_time = create_time,
|
|
id_card = dt2.Rows[i]["id_card"] + "",
|
|
pic_url = dt2.Rows[i]["pic_url"] + "",
|
|
global_pic_url = dt2.Rows[i]["global_pic_url"] + "",
|
|
username = dt2.Rows[i]["username"] + "",
|
|
});
|
|
}
|
|
catch (Exception e) { }
|
|
}
|
|
|
|
for (int i = 0; i < dt1.Rows.Count; i++)
|
|
{
|
|
try
|
|
{
|
|
DateTime.TryParse(dt1.Rows[i]["EXTEND2"] + "", out DateTime EXTEND2);
|
|
DateTime.TryParse(dt1.Rows[i]["EXTEND4"] + "", out DateTime EXTEND4);
|
|
var IDNUMBER = dt1.Rows[i]["IDNUMBER"] + "";
|
|
var obj1 = lis2.Where(p => p.id_card == IDNUMBER && ((p.alarm_time >= EXTEND2 && p.alarm_time <= EXTEND4) || (p.create_time >= EXTEND2 && p.create_time <= EXTEND4))).OrderBy(p => p.create_time).FirstOrDefault();
|
|
var id = dt1.Rows[i]["id"] + "";
|
|
|
|
if (obj1 != null)
|
|
{
|
|
string updSql = " UPDATE oa_exercise_record set FACE_READ_STATE='1',STATE='1',FACE_READ_SMALL_IMG='" + obj1.pic_url + "',FACE_READ_BIG_IMG='" +
|
|
obj1.global_pic_url + "',FACE_READ_START_TIME='" + obj1.alarm_time.ToString("yyyy-MM-dd hh:mm:ss") + "',FACE_READ_END_TIME=now() WHERE id = '" + id + "' ";
|
|
FangYar.Common.MySqlHelper.Execute(updSql);
|
|
}
|
|
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
return "Error:" + e;
|
|
}
|
|
return returnstr;
|
|
}
|
|
|
|
#region 执行Sql并返回数据集
|
|
|
|
/// <summary>
|
|
/// 执行Sql并返回数据集
|
|
/// </summary>
|
|
/// <param name="sqlStr"></param>
|
|
/// <returns></returns>
|
|
public DataTable Execute(string sqlStr)//Execute(string sql,)
|
|
{
|
|
try
|
|
{
|
|
OdbcConnection myConnection = new OdbcConnection(consqlserver);
|
|
OdbcCommand myCommand = new OdbcCommand(sqlStr, myConnection);
|
|
myConnection.Open();
|
|
OdbcDataAdapter adapter = new OdbcDataAdapter();
|
|
adapter.SelectCommand = myCommand;
|
|
DataSet ds = new DataSet();
|
|
|
|
adapter.Fill(ds);
|
|
|
|
adapter.Dispose();
|
|
myCommand.Dispose();
|
|
myConnection.Close();
|
|
return ds.Tables[0];
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new DataTable();
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
public bool IsReusable
|
|
{
|
|
get
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public class ExMysqlMo
|
|
{
|
|
/// <summary>
|
|
/// 出操信息ID
|
|
/// </summary>
|
|
public string id { get; set; }
|
|
/// <summary>
|
|
/// 姓名
|
|
/// </summary>
|
|
public string users_name { get; set; }
|
|
/// <summary>
|
|
/// 出操开始时间
|
|
/// </summary>
|
|
public DateTime EXTEND2 { get; set; }
|
|
/// <summary>
|
|
/// 出操结束时间
|
|
/// </summary>
|
|
public DateTime EXTEND4 { get; set; }
|
|
/// <summary>
|
|
/// 身份证号
|
|
/// </summary>
|
|
public string IDNUMBER { get; set; }
|
|
|
|
}
|
|
|
|
public class ExClickHouseMo
|
|
{
|
|
/// <summary>
|
|
/// 图片地址
|
|
/// </summary>
|
|
public string pic_url { get; set; }
|
|
/// <summary>
|
|
/// 大图地址
|
|
/// </summary>
|
|
public string global_pic_url { get; set; }
|
|
/// <summary>
|
|
/// 设备时间
|
|
/// </summary>
|
|
public DateTime alarm_time { get; set; }
|
|
/// <summary>
|
|
/// 信息创建时间
|
|
/// </summary>
|
|
public DateTime create_time { get; set; }
|
|
/// <summary>
|
|
/// 身份证号
|
|
/// </summary>
|
|
public string id_card { get; set; }
|
|
/// <summary>
|
|
/// 姓名
|
|
/// </summary>
|
|
public string username { get; set; }
|
|
|
|
}
|
|
|
|
}
|
|
}
|