using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Text; using System.Collections; using System.Reflection; using System.Web.Script.Serialization; using FangYar.Model; using FangYar.BLL; using Newtonsoft.Json; using Spire.Doc; using Spire.Doc.Documents; using System.Drawing; using System.IO; using Spire.Doc.Fields; using FangYar.Common; using System.Data.Odbc; using System.Text.RegularExpressions; namespace FangYar.WebUI.ashx { /// /// OaLeaveHandler 的摘要说明 /// public class VisitorHandler : IHttpHandler { private FangYar.BLL.TBL_VISITOR bll = new FangYar.BLL.TBL_VISITOR(); public void ProcessRequest(HttpContext context) { // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Other, "访客操作请求", ""); context.Response.ContentType = "text/plain"; string action = context.Request.Params["Action"]; string returnstr = ""; switch (action) { case "List": returnstr = visList(context); break; case "List2": returnstr = visList2(context); break; case "editWait": returnstr = editWait(context); break; case "GetVisitorWeek": returnstr = GetVisitorWeek(context); break; case "GetInfo": returnstr = GetInfo(context); break; case "expList": expList(context); break; case "visitorReportDetail"://统计报表 returnstr = VisitorReportDetail(context); break; case "visitorReportBar"://柱状图 returnstr = VisitorReportBar(context); break; case "htmlToWord": returnstr = HtmlToWord(context); break; case "getVisitorList":// returnstr = getVisitorList(context); break; case "getVisitorTrajectoryList":// returnstr = getVisitorTrajectoryList(context); break; case "getStatisticsCarPerVisCamByTime": returnstr = getStatisticsCarPerVisCamByTime(context); break; } context.Response.Write(returnstr); } //查询 private string visList(HttpContext context) { string returnstr = ""; try { //searchTime searchIDCard searchName searchVedName string OrgId = context.Request.Params["OrgId"]; //判断是否APP或者小程序访问 if (Common.WebCommonUtil.IsPhoneRequest(context)) { //增加上级转换机关机构数据转换 OrgId = Common.WebCommonUtil.GetOrgIdUpLevelToDownLevel(OrgId); } string startTime = context.Request.Params["startTime"]; string endTime = context.Request.Params["endTime"]; string searchIDCard = context.Request.Params["searchIDCard"]; string searchName = context.Request.Params["searchName"]; string searchVedName = context.Request.Params["searchVedName"]; string treeID = context.Request.Params["treeID"]; string page = context.Request.Params["page"]; string limit = context.Request.Params["limit"]; string selDeptId = context.Request.Params["selDeptId"]; //登录账号所属部门 string DeptID = context.Request.Params["DeptID"] + ""; //是否管理员账号 string IsAdmin = context.Request.Params["IsAdmin"] + ""; string is_content = context.Request.Params["is_content"]; int pageIndex = 1; int pageSize = 10; if (!string.IsNullOrEmpty(page)) { pageIndex = int.Parse(page); } if (!string.IsNullOrEmpty(limit)) { pageSize = int.Parse(limit); } string where = " 1=1 "; if (!string.IsNullOrEmpty(treeID) && treeID != OrgId) { OrgId = treeID; } //where = " ORG_ID = '" + OrgId + "'"; if (is_content == "1") { where += " and ( find_in_set(org_id, cids) ) "; } else { where += " and ( ORG_ID = '" + OrgId + "' )"; } if (!string.IsNullOrWhiteSpace(selDeptId)) { where += " and VED_ID in ( SELECT users_uid from tbl_sys_emp WHERE ORG_ID='" + OrgId + "' and DEPT_ID='" + selDeptId + "' ) "; } //判断是否管理员账号,如果不是管理员则只查询本部门数据 if (IsAdmin != "1") { if (!string.IsNullOrWhiteSpace(DeptID)) { where += " and VED_ID in ( SELECT users_uid from tbl_sys_emp WHERE ORG_ID='" + OrgId + "' and DEPT_ID='" + DeptID + "' ) "; } } if (!string.IsNullOrEmpty(startTime)) { where += " and date_format(INTIME,'%Y-%m-%d') >=date_format('" + startTime + "','%Y-%m-%d')"; where += " and date_format(INTIME,'%Y-%m-%d') <=date_format('" + endTime + "','%Y-%m-%d')"; } if (!string.IsNullOrEmpty(searchIDCard)) { where += " and EXTEND2 like '%" + searchIDCard + "%'"; } if (!string.IsNullOrEmpty(searchName)) { where += " and NAME like '%" + searchName + "%'"; } if (!string.IsNullOrEmpty(searchVedName)) { where += " and VED_MAN like '%" + searchVedName + "%'"; } returnstr = "{\"code\":0,\"msg\":\"\","; int count = bll.GetRecordCount(where, OrgId); returnstr += "\"count\":" + count + ",\"data\":"; if (count == 0) { returnstr += "[]"; } else { //访客出入记录表 string data = "["; List list = bll.QueryList(pageIndex, pageSize, where, " intime desc ", OrgId); for (int i = 0; i < list.Count; i++) { string pic2 = ""; if (list[i].V_PIC != null && list[i].V_PIC.ToString() != "") { pic2 = Convert.ToBase64String((byte[])list[i].V_PIC); } data += "{\"ID\":\"" + list[i].ID + "\",\"NAME\":\"" + list[i].NAME + "\",\"SEX\":\"" + list[i].SEX + "\",\"AGE\":\"" + list[i].AGE + "\",\"UNIT\":\"" + list[i].UNIT + "\",\"NATION\":\"" + list[i].NATION + "\",\"ADDR\":\"" + list[i].ADDR + "\",\"H_REG\":\"" + list[i].H_REG + "\","; data += "\"ID_NUM\":\"" + list[i].ID_NUM + "\",\"ORG_ID\":\"" + list[i].ORG_ID + "\",\"M_ID\":\"" + list[i].M_ID + "\",\"M_ADDR\":\"" + list[i].M_ADDR + "\",\"VED_MAN\":\"" + list[i].VED_MAN + "\","; data += "\"VED_ID\":\"" + list[i].VED_ID + "\",\"REASON\":\"" + list[i].REASON + "\",\"GOODS\":\"" + list[i].GOODS + "\","; data += "\"DRICAR\":\"" + list[i].DRICAR + "\",\"TRAVELNUM\":\"" + list[i].TRAVELNUM + "\",\"ABOUTTIME\":\"" + list[i].ABOUTTIME + "\",\"REGISTERTIME\":\"" + list[i].REGISTERTIME + "\","; data += "\"INTIME\":\"" + list[i].INTIME + "\",\"OUTTIME\":\"" + list[i].OUTTIME + "\",\"ACTUALTIME\":\"" + list[i].ACTUALTIME + "\",\"STATE\":\"" + list[i].STATE + "\","; data += "\"APPROVALTIME\":\"" + list[i].APPROVALTIME + "\",\"QRINFO\":\"" + list[i].QRINFO + "\",\"INMACHINEID\":\"" + list[i].INMACHINEID + "\",\"INADDR\":\"" + list[i].INADDR + "\","; data += "\"OUTMACHINEID\":\"" + list[i].OUTMACHINEID + "\",\"OUTADDR\":\"" + list[i].OUTADDR + "\","; data += "\"EXTEND1\":\"" + list[i].EXTEND1 + "\",\"EXTEND2\":\"" + list[i].EXTEND2 + "\",\"EXTEND3\":\"" + list[i].EXTEND3 + "\",\"EXTEND4\":\"" + list[i].EXTEND4 + "\","; data += "\"VED_DEPT\":\"" + list[i].VED_DEPT + "\",\"VIS_START_DATA\":\"" + list[i].VIS_START_DATA + "\",\"VIS_START_TIME\":\"" + list[i].VIS_START_TIME + "\",\"PHONE\":\"" + list[i].PHONE + "\",\"FEEDBACK\":\"" + list[i].FEEDBACK + "\",\"VIS_END_DATA\":\"" + list[i].VIS_END_DATA + "\","; data += "\"VIS_END_TIME\":\"" + list[i].VIS_END_TIME + "\",\"BIRTHDAY\":\"" + list[i].BIRTHDAY + "\",\"VIS_START_TIME\":\"" + list[i].VIS_START_TIME + "\",\"SIGNOFFICE\":\"" + list[i].SIGNOFFICE + "\",\"LEGALDATE\":\"" + list[i].LEGALDATE + "\","; data += "\"V_PIC\":\"" + pic2 + "\",\"INPIC_URL\":\"" + list[i].INPIC_URL + "\"}"; if (i != list.Count - 1) { data += ","; } } returnstr += data + "]"; } returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]}"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "访客操作请求", "查询异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "访客操作请求", "查询"); return returnstr; } //查询(时间段) private string visList2(HttpContext context) { string returnstr = ""; try { //searchTime searchIDCard searchName searchVedName string OrgId = context.Request.Params["OrgId"]; string searchTime = context.Request.Params["searchTime"]; string searchIDCard = context.Request.Params["searchIDCard"]; string searchName = context.Request.Params["searchName"]; string searchVedName = context.Request.Params["searchVedName"]; string treeID = context.Request.Params["treeID"]; string page = context.Request.Params["page"]; string limit = context.Request.Params["limit"]; string selDeptId = context.Request.Params["selDeptId"]; //登录账号所属部门 string DeptID = context.Request.Params["DeptID"] + ""; //是否管理员账号 string IsAdmin = context.Request.Params["IsAdmin"] + ""; int pageIndex = 1; int pageSize = 10; if (!string.IsNullOrEmpty(page)) { pageIndex = int.Parse(page); } if (!string.IsNullOrEmpty(limit)) { pageSize = int.Parse(limit); } string where = " 1=1 "; if (!string.IsNullOrEmpty(treeID) && treeID != OrgId) { where = " ORG_ID ='" + treeID + "'"; } else { where = " ORG_ID ='" + OrgId + "'"; } if (!string.IsNullOrWhiteSpace(selDeptId)) { where += " and VED_ID in ( SELECT users_uid from tbl_sys_emp WHERE ORG_ID='" + OrgId + "' and DEPT_ID='" + selDeptId + "' ) "; } //判断是否管理员账号,如果不是管理员则只查询本部门数据 if (IsAdmin != "1") { if (!string.IsNullOrWhiteSpace(DeptID)) { where += " and VED_ID in ( SELECT users_uid from tbl_sys_emp WHERE ORG_ID='" + OrgId + "' and DEPT_ID='" + DeptID + "' ) "; } } if (!string.IsNullOrEmpty(searchTime)) { string startTime = "", endTime = ""; if (searchTime.IndexOf(" - ") != -1) { startTime = Regex.Split(searchTime, " - ", RegexOptions.IgnoreCase)[0]; endTime = Regex.Split(searchTime, " - ", RegexOptions.IgnoreCase)[1]; } where += " and date_format(INTIME,'%Y-%m-%d') between date_format('" + startTime + "','%Y-%m-%d') and date_format('" + endTime + "','%Y-%m-%d')"; } if (!string.IsNullOrEmpty(searchIDCard)) { where += " and EXTEND2 like '%" + searchIDCard + "%'"; } if (!string.IsNullOrEmpty(searchName)) { where += " and NAME like '%" + searchName + "%'"; } if (!string.IsNullOrEmpty(searchVedName)) { where += " and VED_MAN like '%" + searchVedName + "%'"; } returnstr = "{\"code\":0,\"msg\":\"\","; int count = bll.GetRecordCount(where); returnstr += "\"count\":" + count + ",\"data\":"; if (count == 0) { returnstr += "[]"; } else { //访客出入记录表 string data = "["; List list = bll.QueryList(pageIndex, pageSize, where, " intime desc "); for (int i = 0; i < list.Count; i++) { string pic2 = ""; if (list[i].V_PIC != null && list[i].V_PIC.ToString() != "") { pic2 = Convert.ToBase64String((byte[])list[i].V_PIC); } data += "{\"ID\":\"" + list[i].ID + "\",\"NAME\":\"" + list[i].NAME + "\",\"SEX\":\"" + list[i].SEX + "\",\"AGE\":\"" + list[i].AGE + "\",\"UNIT\":\"" + list[i].UNIT + "\",\"NATION\":\"" + list[i].NATION + "\",\"ADDR\":\"" + list[i].ADDR + "\",\"H_REG\":\"" + list[i].H_REG + "\","; data += "\"ID_NUM\":\"" + list[i].ID_NUM + "\",\"ORG_ID\":\"" + list[i].ORG_ID + "\",\"M_ID\":\"" + list[i].M_ID + "\",\"M_ADDR\":\"" + list[i].M_ADDR + "\",\"VED_MAN\":\"" + list[i].VED_MAN + "\","; data += "\"VED_ID\":\"" + list[i].VED_ID + "\",\"REASON\":\"" + list[i].REASON + "\",\"GOODS\":\"" + list[i].GOODS + "\","; data += "\"DRICAR\":\"" + list[i].DRICAR + "\",\"TRAVELNUM\":\"" + list[i].TRAVELNUM + "\",\"ABOUTTIME\":\"" + list[i].ABOUTTIME + "\",\"REGISTERTIME\":\"" + list[i].REGISTERTIME + "\","; data += "\"INTIME\":\"" + list[i].INTIME + "\",\"OUTTIME\":\"" + list[i].OUTTIME + "\",\"ACTUALTIME\":\"" + list[i].ACTUALTIME + "\",\"STATE\":\"" + list[i].STATE + "\","; data += "\"APPROVALTIME\":\"" + list[i].APPROVALTIME + "\",\"QRINFO\":\"" + list[i].QRINFO + "\",\"INMACHINEID\":\"" + list[i].INMACHINEID + "\",\"INADDR\":\"" + list[i].INADDR + "\","; data += "\"OUTMACHINEID\":\"" + list[i].OUTMACHINEID + "\",\"OUTADDR\":\"" + list[i].OUTADDR + "\","; data += "\"EXTEND1\":\"" + list[i].EXTEND1 + "\",\"EXTEND2\":\"" + list[i].EXTEND2 + "\",\"EXTEND3\":\"" + list[i].EXTEND3 + "\",\"EXTEND4\":\"" + list[i].EXTEND4 + "\","; data += "\"VED_DEPT\":\"" + list[i].VED_DEPT + "\",\"VIS_START_DATA\":\"" + list[i].VIS_START_DATA + "\",\"VIS_START_TIME\":\"" + list[i].VIS_START_TIME + "\",\"PHONE\":\"" + list[i].PHONE + "\",\"FEEDBACK\":\"" + list[i].FEEDBACK + "\",\"VIS_END_DATA\":\"" + list[i].VIS_END_DATA + "\","; data += "\"VIS_END_TIME\":\"" + list[i].VIS_END_TIME + "\",\"BIRTHDAY\":\"" + list[i].BIRTHDAY + "\",\"VIS_START_TIME\":\"" + list[i].VIS_START_TIME + "\",\"SIGNOFFICE\":\"" + list[i].SIGNOFFICE + "\",\"LEGALDATE\":\"" + list[i].LEGALDATE + "\","; data += "\"V_PIC\":\"" + pic2 + "\",\"INPIC_URL\":\"" + list[i].INPIC_URL + "\"}"; if (i != list.Count - 1) { data += ","; } } returnstr += data + "]"; } returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]}"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "访客操作请求", "查询异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "访客操作请求", "查询"); return returnstr; } //访客审批 private string editWait(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string taskId = context.Request.Params["taskId"]; string waitId = context.Request.Params["waitId"]; string state = context.Request.Params["state"]; string sort = context.Request.Params["sort"]; string aOpinion = context.Request.Params["a_opinion"]; string isOver = context.Request.Params["isOver"]; FangYar.Model.OA_WAITPROCESSED model = new Model.OA_WAITPROCESSED(); model.ID = waitId; model.TASK_ID = taskId; model.STATE = state; model.SORT = Convert.ToInt32(sort); model.A_OPINION = aOpinion; if (bll.editWait(model, isOver)) { msg = "审批成功!"; code = 1; } else { msg = "审批失败!"; } } catch (Exception e) { msg = "审批失败!"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "访客操作请求", "访客审批异常:" + e); } returnstr = "{\"msg\":\"" + msg + "\",\"code\":" + code + "}"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Update, "访客操作请求", "访客审批"); return returnstr; } //获取访客数量趋势 private string GetVisitorWeek(HttpContext context) { string returnstr = ""; try { returnstr = "{\"code\":1,\"msg\":\"\","; returnstr += "\"data\":"; string ORG_ID = context.Request.Params["ORG_ID"]; string where = "1=1"; where += " and (ORG_ID ='" + ORG_ID + "' or ORG_ID in (select o.org_id from fire_org o where o.pid = '" + ORG_ID + "') )"; returnstr += JsonConvert.SerializeObject(bll.TotalDaysAlarm(7, where)); returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":-1,\"msg\":\"\"}"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "访客操作请求", "获取访客数量趋势异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "访客操作请求", "获取访客数量趋势"); return returnstr; } private string GetInfo(HttpContext context) { string returnstr = ""; try { //searchTime searchIDCard searchName searchVedName string taskId = context.Request.Params["taskId"]; if (!string.IsNullOrEmpty(taskId)) { } returnstr = "{\"code\":0,\"msg\":\"\","; FangYar.Model.TBL_VISITOR visModel = bll.QueryList(1, 1, " ID = '" + taskId + "'", " intime desc ")[0]; returnstr += "\"count\":1,\"data\":"; //访客出入记录表 string data = "["; string pic2 = ""; if (visModel.V_PIC != null && visModel.V_PIC.ToString() != "") { pic2 = Convert.ToBase64String((byte[])visModel.V_PIC); } data += "{\"ID\":\"" + visModel.ID + "\",\"NAME\":\"" + visModel.NAME + "\",\"SEX\":\"" + visModel.SEX + "\",\"AGE\":\"" + visModel.AGE + "\",\"UNIT\":\"" + visModel.UNIT + "\",\"NATION\":\"" + visModel.NATION + "\",\"ADDR\":\"" + visModel.ADDR + "\",\"H_REG\":\"" + visModel.H_REG + "\","; data += "\"ID_NUM\":\"" + visModel.ID_NUM + "\",\"ORG_ID\":\"" + visModel.ORG_ID + "\",\"M_ID\":\"" + visModel.M_ID + "\",\"M_ADDR\":\"" + visModel.M_ADDR + "\",\"VED_MAN\":\"" + visModel.VED_MAN + "\","; data += "\"VED_ID\":\"" + visModel.VED_ID + "\",\"REASON\":\"" + visModel.REASON + "\",\"GOODS\":\"" + visModel.GOODS + "\","; data += "\"DRICAR\":\"" + visModel.DRICAR + "\",\"TRAVELNUM\":\"" + visModel.TRAVELNUM + "\",\"ABOUTTIME\":\"" + visModel.ABOUTTIME + "\",\"REGISTERTIME\":\"" + visModel.REGISTERTIME + "\","; data += "\"INTIME\":\"" + visModel.INTIME + "\",\"OUTTIME\":\"" + visModel.OUTTIME + "\",\"ACTUALTIME\":\"" + visModel.ACTUALTIME + "\",\"STATE\":\"" + visModel.STATE + "\","; data += "\"APPROVALTIME\":\"" + visModel.APPROVALTIME + "\",\"QRINFO\":\"" + visModel.QRINFO + "\",\"INMACHINEID\":\"" + visModel.INMACHINEID + "\",\"INADDR\":\"" + visModel.INADDR + "\","; data += "\"OUTMACHINEID\":\"" + visModel.OUTMACHINEID + "\",\"OUTADDR\":\"" + visModel.OUTADDR + "\","; data += "\"EXTEND1\":\"" + visModel.EXTEND1 + "\",\"EXTEND2\":\"" + visModel.EXTEND2 + "\",\"EXTEND3\":\"" + visModel.EXTEND3 + "\",\"EXTEND4\":\"" + visModel.EXTEND4 + "\","; data += "\"VED_DEPT\":\"" + visModel.VED_DEPT + "\",\"VIS_START_DATA\":\"" + visModel.VIS_START_DATA + "\",\"VIS_START_TIME\":\"" + visModel.VIS_START_TIME + "\",\"PHONE\":\"" + visModel.PHONE + "\",\"FEEDBACK\":\"" + visModel.FEEDBACK + "\",\"VIS_END_DATA\":\"" + visModel.VIS_END_DATA + "\","; data += "\"VIS_END_TIME\":\"" + visModel.VIS_END_TIME + "\",\"BIRTHDAY\":\"" + visModel.BIRTHDAY + "\",\"VIS_START_TIME\":\"" + visModel.VIS_START_TIME + "\",\"SIGNOFFICE\":\"" + visModel.SIGNOFFICE + "\",\"LEGALDATE\":\"" + visModel.LEGALDATE + "\","; data += "\"V_PIC\":\"" + pic2 + "\",\"INPIC_URL\":\"" + visModel.INPIC_URL + "\",\"DEP_NAME\":\"" + visModel.DEP_NAME + "\"}"; returnstr += data + "]"; returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]}"; // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "访客操作请求", "查询异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "访客操作请求", "查询"); return returnstr; } //导出 private void expList(HttpContext context) { try { string OrgId = context.Request.Params["OrgId"]; string startTime = context.Request.Params["startTime"]; string endTime = context.Request.Params["endTime"]; string searchName = context.Request.Params["searchName"]; string treeId = context.Request.Params["treeId"]; string DeptID = context.Request.Params["DeptID"]; string IsAdmin = context.Request.Params["IsAdmin"]; string selDeptId = context.Request.Params["selDeptId"]; string is_content = context.Request.Params["is_content"]; string where = " 1=1 "; if (!string.IsNullOrEmpty(treeId) && treeId != OrgId) { OrgId = treeId; } //where = " ORG_ID = '" + OrgId + "'"; if (is_content == "1") { where += " and ( find_in_set(org_id, cids) ) "; } else { where += " and ( ORG_ID = '" + OrgId + "' )"; } if (!string.IsNullOrWhiteSpace(selDeptId)) { where += " and VED_ID in ( SELECT users_uid from tbl_sys_emp WHERE ORG_ID='" + OrgId + "' and DEPT_ID='" + selDeptId + "' ) "; } //判断是否管理员账号,如果不是管理员则只查询本部门数据 if (IsAdmin != "1") { if (!string.IsNullOrWhiteSpace(DeptID)) { where += " and VED_ID in ( SELECT users_uid from tbl_sys_emp WHERE ORG_ID='" + OrgId + "' and DEPT_ID='" + DeptID + "' ) "; } } if (!string.IsNullOrEmpty(startTime)) { where += " and date_format(INTIME,'%Y-%m-%d') >=date_format('" + startTime + "','%Y-%m-%d')"; where += " and date_format(INTIME,'%Y-%m-%d') <=date_format('" + endTime + "','%Y-%m-%d')"; } if (!string.IsNullOrEmpty(searchName)) { where += " and NAME like '%" + searchName + "%'"; } int count = bll.GetRecordCount(where, OrgId); if (count == 0) { } else { //访客出入记录表 DataTable dt = bll.expList(1, count, where, " intime desc ", OrgId); System.Collections.Generic.Dictionary cellHeaders = new System.Collections.Generic.Dictionary(); cellHeaders.Add("NAME", "姓名"); cellHeaders.Add("SEX", "性别"); cellHeaders.Add("AGE", "年龄"); cellHeaders.Add("UNIT", "单位"); cellHeaders.Add("NATION", "民族"); cellHeaders.Add("ADDR", "住址"); cellHeaders.Add("H_REG", "户籍"); cellHeaders.Add("ID_NUM", "身份证号"); cellHeaders.Add("ORG_NAME", "机构"); cellHeaders.Add("M_ADDR", "设备地址"); cellHeaders.Add("VED_MAN", "被访问人员姓名"); cellHeaders.Add("REASON", "访问事由"); cellHeaders.Add("GOODS", "携带重要物品"); cellHeaders.Add("DRICAR", "驾驶车辆牌照"); cellHeaders.Add("TRAVELNUM", "访客人数"); cellHeaders.Add("ABOUTTIME", "大约访问时长"); cellHeaders.Add("REGISTERTIME", "登记时间"); cellHeaders.Add("INTIME", "通过时间"); //cellHeaders.Add("OUTTIME", "离开时间"); cellHeaders.Add("ACTUALTIME", "实际访问时间"); cellHeaders.Add("STATE", "访客状态"); cellHeaders.Add("APPROVALTIME", "审批时间"); cellHeaders.Add("INADDR", "进入门禁卡机位置"); cellHeaders.Add("OUTMACHINEID", "离开门禁卡机"); cellHeaders.Add("OUTADDR", "离开门禁卡机位置"); cellHeaders.Add("EXTEND2", "身份证号"); cellHeaders.Add("VISIN_NAME", "来访人姓名"); cellHeaders.Add("VED_DEPT", "被访问部门"); cellHeaders.Add("VIS_START_TIME", "来访时间"); cellHeaders.Add("PHONE", "电话"); cellHeaders.Add("FEEDBACK", "反馈信息"); cellHeaders.Add("VIS_END_TIME", "结束时间"); cellHeaders.Add("BIRTHDAY", "出生日期"); cellHeaders.Add("SIGNOFFICE", "签发机关"); cellHeaders.Add("LEGALDATE", "有效期限"); FangYar.Common.NPOIExcelHelper.ExportByWeb(dt, null, cellHeaders, DateTime.Now.ToString("yyyyMMddHHmmss") + "访客出入表.xls"); } } catch (Exception e) { // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "访客操作请求", "导出异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "访客操作请求", "导出"); } public bool IsReusable { get { return false; } } #region 统计报表详情 /// /// 统计报表详情 /// /// /// public string VisitorReportDetail(HttpContext context) { string returnstr = ""; try { string orgId = context.Request.Params["orgId"]; string startDate = context.Request.Params["startDate"]; string endDate = context.Request.Params["endDate"]; string isContainBelow = context.Request.Params["iscontain"]; string page = context.Request.Params["page"]; string limit = context.Request.Params["limit"]; int pageIndex = 1; int pageSize = 10; if (!string.IsNullOrEmpty(page)) { pageIndex = int.Parse(page); } if (!string.IsNullOrEmpty(limit)) { pageSize = int.Parse(limit); } StringBuilder strSql = new StringBuilder(); if (isContainBelow == "1") { strSql.AppendFormatWithSafe("org_id in (select o.org_id from fire_org o,(select get_Org_child_list('" + orgId + "') cids ) s where o.type = '0' and find_in_set(org_id,cids) )", orgId, strSql); } else { strSql.AppendFormatWithSafe("org_id = '{0}'", orgId, strSql); } if (!string.IsNullOrEmpty(startDate)) { strSql.AppendFormatWithSafe(" and date_format(INTIME, '%Y-%m-%d') >= date_format('{0}-01', '%Y-%m-%d') ", startDate, strSql); } if (!string.IsNullOrEmpty(endDate)) { strSql.AppendFormatWithSafe(" and date_format(INTIME, '%Y-%m-%d') < date_format('{0}-01', '%Y-%m-%d') ", endDate, strSql); } returnstr = "{\"code\":0,\"msg\":\"\","; strSql.Append(" order by INTIME desc "); int count = bll.GetRecordCount(strSql.ToString()); returnstr += "\"count\":" + count + ",\"data\":"; if (count == 0) { returnstr += "[]"; } else { List list = bll.QueryList(pageIndex, pageSize, strSql.ToString(), ""); returnstr += JsonHelper.ToJson(list); } returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]}"; } return returnstr; } #endregion #region 柱状图 /// /// 柱状图 /// /// /// public string VisitorReportBar(HttpContext context) { string returnstr = string.Empty; try { string orgId = context.Request.Params["orgId"]; string year = context.Request.Params["year"]; string isContainBelow = context.Request.Params["isContain"]; DataTable dt = bll.VisitorReportBar(orgId, year, isContainBelow); returnstr = JsonHelper.ToJson(dt); } catch (Exception e) { returnstr = null; } return returnstr; } #endregion #region HtmlToWord /// /// HtmlToWord /// /// /// private string HtmlToWord(HttpContext context) { string returnstr = ""; try { string by1 = context.Request.Params["by1"]; //实例化一个Document对象 Document doc = new Document(); doc.Watermark = null; //添加section和段落 Section section = doc.AddSection(); Paragraph para = section.AddParagraph(); //加载图片到System.Drawing.Image对象, 使用AppendPicture方法将图片插入到段落 if (by1 != null && by1 != "") { by1 = HttpUtility.UrlDecode(by1); Image image1 = GetImage(by1.Replace("data:image/png;base64,", "")); Spire.Doc.Fields.DocPicture picture1 = doc.Sections[0].Paragraphs[0].AppendPicture(image1); //设置图片大小 picture1.Width = 595; } String[] headerQiandi = { "姓名", "身份证号", "来访时间", "来访原因", "审批领导", "岗哨值班人员" }; //表头字段 #region 获取table数据 string orgId = context.Request.Params["orgId"]; string startDate = context.Request.Params["startDate"]; string endDate = context.Request.Params["endDate"]; string is_content = context.Request.Params["iscontain"]; int pageIndex = 1; int pageSize = 99999; string where = null; if (is_content == "1") { where = " org_id in (select o.org_id from fire_org o,(select get_Org_child_list('" + orgId + "') cids ) s where o.type = '0' and find_in_set(org_id,cids) ) "; } else { where = " org_id = '" + orgId + "' "; } if (!string.IsNullOrEmpty(startDate)) { where += " and date_format(INTIME, '%Y-%m-%d') >= date_format('" + startDate + "-01', '%Y-%m-%d') "; } if (!string.IsNullOrEmpty(endDate)) { where += " and date_format(INTIME, '%Y-%m-%d') < date_format('" + endDate + "-01', '%Y-%m-%d') "; } where += " order by INTIME desc"; List list = bll.QueryList(pageIndex, pageSize, where, ""); #endregion 获取table数据 if (list.Count > 0) { string[][] arrQiandiData = new string[list.Count][]; for (int i = 0; i < list.Count; i++) { arrQiandiData[i] = new string[] { list[i].NAME, list[i].EXTEND2, list[i].INTIME.ToString(), list[i].REASON, list[i].VED_MAN, list[i].FIRESHIFTMAN }; } #region 创建Word表格 Table tableQiandi = section.AddTable(); //新建表格 tableQiandi.ResetCells(list.Count + 1, headerQiandi.Length); tableQiandi.TableFormat.Borders.BorderType = BorderStyle.Single; TableRow rowQiandi = tableQiandi.Rows[0]; //添加行 rowQiandi.IsHeader = true; //设为表头 rowQiandi.Height = 30; rowQiandi.HeightType = TableRowHeightType.Auto; for (int i = 0; i < headerQiandi.Length; i++) //生成表头 { rowQiandi.Cells[i].Width = 145; rowQiandi.Height = 30; rowQiandi.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle; rowQiandi.HeightType = TableRowHeightType.Auto; Paragraph p = rowQiandi.Cells[i].AddParagraph(); AddTextRange(section, p, headerQiandi[i], 14, true, "黑体", HorizontalAlignment.Center); } for (int r = 0; r < arrQiandiData.Length; r++) //生成表体 { TableRow dataRow = tableQiandi.Rows[r + 1]; dataRow.RowFormat.BackColor = Color.Empty; for (int c = 0; c < arrQiandiData[r].Length; c++) { dataRow.Cells[c].Width = 145; dataRow.Height = 20; dataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle; TextRange tr = dataRow.Cells[c].AddParagraph().AppendText(arrQiandiData[r][c]); tr.CharacterFormat.FontSize = 12; } } #endregion 创建Word表格 } //保存到文档 string path = AppDomain.CurrentDomain.BaseDirectory + "\\OA\\VisitorReport\\"; string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".doc"; if (Directory.Exists(path) == false)//如果不存在就创建文件夹 { Directory.CreateDirectory(path); } doc.SaveToFile(path + fileName, FileFormat.Doc); returnstr = "{\"code\":0,\"msg\":\"\",\"url\":\"/OA/VisitorReport/" + fileName + "\"}"; } catch (Exception e) { returnstr = "{\"code\":-1,\"msg\":\"" + e.Message + "\"}"; } return returnstr; } private Image GetImage(string fileName) { byte[] bytes = Convert.FromBase64String(fileName); using (MemoryStream ms = new MemoryStream(bytes)) { return Image.FromStream(ms); } } private void AddTextRange(Section section, Paragraph pragraph, string word, float fontSize, bool isBold, string fontName, Spire.Doc.Documents.HorizontalAlignment alignType) { TextRange textRange = pragraph.AppendText(word); textRange.CharacterFormat.FontSize = fontSize; textRange.CharacterFormat.Bold = isBold; textRange.CharacterFormat.FontName = fontName; pragraph.Format.HorizontalAlignment = alignType; } #endregion //查询 private string getVisitorList(HttpContext context) { string returnstr = ""; try { string OrgId = context.Request.Params["OrgId"]; string name = context.Request.Params["name"]; string startDate = context.Request.Params["startDate"]; string endDate = context.Request.Params["endDate"]; string page = context.Request.Params["page"]; string limit = context.Request.Params["limit"]; int pageIndex = 1; int pageSize = 10; if (!string.IsNullOrEmpty(page)) { pageIndex = int.Parse(page); } if (!string.IsNullOrEmpty(limit)) { pageSize = int.Parse(limit); } string where = " 1=1 ", regwhere = " 1=1 "; if (!string.IsNullOrEmpty(OrgId)) { where += " and ORG_ID ='" + OrgId + "'"; regwhere += " and ORG_ID ='" + OrgId + "'"; } if (!string.IsNullOrEmpty(name)) { where += " and name ='" + name + "'"; regwhere += " and name ='" + name + "'"; } if (!string.IsNullOrEmpty(startDate)) { where += " and date_format(intime,'%Y-%m-%d %H:%i:%s') >= date_format('" + startDate + "', '%Y-%m-%d %H:%i:%s') "; regwhere += " and date_format(registertime, '%Y-%m-%d %H:%i:%s') >= date_format('" + startDate + "', '%Y-%m-%d %H:%i:%s') "; } if (!string.IsNullOrEmpty(endDate)) { where += " and date_format(intime,'%Y-%m-%d %H:%i:%s') <= date_format('" + endDate + "', '%Y-%m-%d %H:%i:%s') "; regwhere += " and date_format(registertime, '%Y-%m-%d %H:%i:%s') <= date_format('" + endDate + "', '%Y-%m-%d %H:%i:%s') "; } returnstr = "{\"code\":0,\"msg\":\"\","; int count = bll.GetQueryVisitorListCount(where, regwhere); returnstr += "\"count\":" + count + ",\"data\":"; if (count == 0) { returnstr += "[]"; } else { //访客出入记录表 DataTable dt = bll.QueryVisitorList(pageIndex, pageSize, where, regwhere); returnstr += FangYar.Common.JsonHelper.ToJson(dt); } returnstr += "}"; } catch { returnstr = "{\"code\":-1,\"msg\":\"error\",\"count\":0,\"data\":[]}"; } return returnstr; } //查询 private string getVisitorTrajectoryList(HttpContext context) { string returnstr = ""; try { string OrgId = context.Request.Params["OrgId"]; string name = context.Request.Params["name"]; string visitorTime = context.Request.Params["visitorTime"]; returnstr = "{\"code\":0,\"msg\":\"\","; //访客出入记录表 DataTable dt = bll.QueryVisitorInfoList(OrgId, name, visitorTime); returnstr += "\"count\":" + dt.Rows.Count + ",\"data\":"; returnstr += FangYar.Common.JsonHelper.ToJson(dt); returnstr += "}"; } catch { returnstr = "{\"code\":0,\"msg\":\"error\",\"count\":0,\"data\":[]}"; } return returnstr; } /// /// 根据时间统计各个营区:车辆出入次数、人员出入次数、访客出入次数、摄像头抓拍次数 /// /// private string getStatisticsCarPerVisCamByTime(HttpContext context) { string returnstr = ""; try { string startTime = context.Request.Params["startTime"]; string endTime = context.Request.Params["endTime"]; string sql = "with t1 as (" + "select f.org_id,f.org_name,(select fo.org_name from fire_org fo where fo.org_id = f.pid) p_name from fire_org f " + ",(select get_Org_child_list('D8DC637B8B984848A63F82A018AFAEB0') cids ) s where find_in_set(f.org_id,cids) and type = '0' " + ") , t2 as ( " + "select t1.org_name,count(c.id) carNum from t1 left join tbl_caraccess c on t1.org_id = c.org_id where START_TIME between '" + startTime + "' and '" + endTime + "' group by t1.org_name " + ") , t3 as ( " + "select t1.org_name,count(p.id) perNum from t1 left join tbl_personaccess p on t1.org_id = p.org_id where START_TIME between '" + startTime + "' and '" + endTime + "' group by t1.org_name " + ") , t4 as ( " + "select t1.org_name,count(v.id) visNum from t1 left join tbl_visitor v on t1.org_id = v.org_id where INTIME between '" + startTime + "' and '" + endTime + "' group by t1.org_name " + ") select t1.p_name,t1.org_id,t1.org_name,ifnull(t2.carNum,0) carNum,ifnull(t3.perNum,0) perNum,ifnull(t4.visNum,0) visNum, 0 as camNum from " + "t1 left join t2 on t1.org_name = t2.org_name " + "left join t3 on t2.org_name = t3.org_name " + "left join t4 on t2.org_name = t4.org_name " + "order by (ifnull(t2.carNum,0) + ifnull(t3.perNum,0) + ifnull(t4.visNum,0)) desc"; DataTable dt = FangYar.Common.MySqlHelper.QueryTable(sql); string orgSql = "SELECT org_id,EXTEND3,0 as count FROM `tbl_camera` where LENGTH(EXTEND3)>0 group by org_id,EXTEND3"; DataTable orgDt = FangYar.Common.MySqlHelper.QueryTable(orgSql); string faceSql = "SELECT dev_serial,count(1) as c_num FROM default.t_face_data WHERE pic_url<>'' and alarm_time BETWEEN '" + startTime + "' and '" + endTime + "' group by dev_serial"; DataTable camDt = FangYar.Common.ClickHouseHelper.Execute(faceSql); List camList = new List(); for (int i = 0; i < camDt.Rows.Count; i++) { camList.Add(new devSerialMo() { devSerial = camDt.Rows[i]["dev_serial"] + "", count = Convert.ToInt32(camDt.Rows[i]["c_num"]) }); } List orgCamList = new List(); for (int i = 0; i < orgDt.Rows.Count; i++) { string EXTEND3 = orgDt.Rows[i]["EXTEND3"].ToString(); int count = 0; devSerialMo camMo = camList.Where(p => p.devSerial == EXTEND3).FirstOrDefault(); if (camMo != null) { count = camMo.count; } orgCamList.Add(new devSerialMo() { orgId = orgDt.Rows[i]["ORG_ID"].ToString(), devSerial = EXTEND3, count = count }); } var orgCamList2 = orgCamList.GroupBy(p => p.orgId).Select(p => new { orgid = p.Key, num = p.Sum(s => s.count) }); List dtList = new List(); for (int i = 0; i < dt.Rows.Count; i++) { string ORG_ID = dt.Rows[i]["ORG_ID"].ToString(); int camNum = 0; var orgMo = orgCamList2.Where(p => p.orgid == ORG_ID).FirstOrDefault(); if (orgMo != null) { camNum = orgMo.num; } dtList.Add(new StatisticsCarPerVisCamMo() { orgId = ORG_ID, orgName = dt.Rows[i]["ORG_NAME"].ToString(), pName = dt.Rows[i]["P_NAME"].ToString(), carNum = Convert.ToInt32(dt.Rows[i]["CARNUM"]), perNum = Convert.ToInt32(dt.Rows[i]["PERNUM"]), visNum = Convert.ToInt32(dt.Rows[i]["VISNUM"]), camNum = camNum }); } dtList.OrderByDescending(p => (p.carNum + p.perNum + p.visNum + p.camNum)); returnstr = "{\"code\":0,\"msg\":\"操作成功!\",\"data\":"; returnstr += FangYar.Common.JsonHelper.ToJson(dtList); returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":0,\"msg\":\"error\",\"data\":[]}"; } return returnstr; } public class devSerialMo { /// /// 组织机构ID /// public string orgId { get; set; } /// /// 摄像头编号 /// public string devSerial { get; set; } /// /// 数量 /// public int count { get; set; } } public class StatisticsCarPerVisCamMo { /// /// 组织机构ID /// public string orgId { get; set; } /// /// 组织机构名称 /// public string orgName { get; set; } /// /// 上级组织机构名称 /// public string pName { get; set; } /// /// 车辆出入数 /// public int carNum { get; set; } /// /// 人员出入数 /// public int perNum { get; set; } /// /// 访客数 /// public int visNum { get; set; } /// /// 摄像头抓拍数 /// public int camNum { get; set; } } } }