using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace FangYar.WebUI.ashx { /// /// TblCameraGroupHandler 的摘要说明 /// public class TblCameraGroupHandler : IHttpHandler { 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 "getCameraGroupList": returnstr = getCameraGroupList(context); break; // 获取分组信息 case "getCameraGroupByID": returnstr = getCameraGroupByID(context); break; // 保存分组信息 case "SaveCameraGroup": returnstr = SaveCameraGroup(context); break; // 加载所有下级单位名称分组 case "AddNexOrgGroup": returnstr = AddNexOrgGroup(context); break; // 删除分组信息 case "DeleteCameraGroup": returnstr = DeleteCameraGroup(context); break; // 获取分组内摄像头详情信息 case "getCameraGroupLinkList": returnstr = getCameraGroupLinkList(context); break; // 获取分组内摄像头详情信息 case "SaveCameraGroupLinkList": returnstr = SaveCameraGroupLinkList(context); break; } context.Response.Write(returnstr); } /// /// 获取摄像头分组信息 /// /// /// private string getCameraGroupList(HttpContext context) { string returnstr = ""; try { //组织机构ID string OrgId = context.Request.Params["OrgId"]; string sqlQuery = @" SELECT * ,(SELECT count(1) from tbl_camera_group_link WHERE camera_group_id in (SELECT id from tbl_camera_group cg2 WHERE cg2.group_route like CONCAT(cg1.group_route,'%') and cg2.ORG_ID = cg1.ORG_ID )) GROUP_SUB_COUNT ,(SELECT count(1) from tbl_camera_group_link WHERE camera_group_id = cg1.id) GROUP_CAMPERA_COUNT from tbl_camera_group cg1 WHERE ORG_ID ='" + OrgId + "' and GROUP_STATE='0' ORDER BY group_sort,GROUP_ROUTE "; var dt1 = FangYar.Common.MySqlHelper.QueryTable(sqlQuery); returnstr = "{\"code\":0,\"msg\":\"\","; returnstr += "\"count\":" + dt1.Rows.Count + ",\"data\":"; returnstr += FangYar.Common.JsonHelper.ToJson(dt1); 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; } /// /// 根据信息ID获取摄像头分组信息 /// /// /// private string getCameraGroupByID(HttpContext context) { string returnstr = ""; try { //组织机构ID string cgid = context.Request.Params["cgid"]; string sqlQuery = @" SELECT * from tbl_camera_group WHERE id ='" + cgid + "' "; var dt1 = FangYar.Common.MySqlHelper.QueryTable(sqlQuery); returnstr = "{\"code\":0,\"msg\":\"\","; returnstr += "\"count\":" + dt1.Rows.Count + ",\"data\":"; returnstr += FangYar.Common.JsonHelper.ToJson(dt1); 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 SaveCameraGroup(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { //分组信息ID string cgid = context.Request.Params["cgid"]; //组织机构ID string OrgId = context.Request.Params["OrgId"]; //分组名称 string GROUP_NAME = context.Request.Params["GROUP_NAME"]; //上级信息ID string GROPU_PID = context.Request.Params["GROPU_PID"]; //排序字段 string GROUP_SORT = context.Request.Params["GROUP_SORT"]; //备注信息 string GROUP_REMARK = context.Request.Params["GROUP_REMARK"]; //分组级别 string GROUP_LEVEL = "1"; //分组信息路由 string GROUP_ROUTE = "100"; //实例化信息ID string ID = Guid.NewGuid().ToString("N"); //判断是是否传入上级ID信息编码 if (string.IsNullOrWhiteSpace(GROPU_PID)) { //没有传入上级信息ID,则上级ID信息置为0 GROPU_PID = "0"; } else { //查询上级摄像头分组信息 var sqlQuery = " SELECT *,(SELECT group_route from tbl_camera_group WHERE gropu_pid='" + GROPU_PID + "' ORDER BY group_route DESC LIMIT 1 ) NEX_GROUP_ROUTE from tbl_camera_group WHERE id='" + GROPU_PID + "' "; var dtQuery = FangYar.Common.MySqlHelper.QueryTable(sqlQuery); // 判断是否存在上级ID信息 if (dtQuery.Rows.Count > 0) { var GROUP_LEVEL_DT = dtQuery.Rows[0]["GROUP_LEVEL"] + ""; int.TryParse(GROUP_LEVEL_DT, out int GROUP_LEVEL_Num); GROUP_LEVEL = (GROUP_LEVEL_Num + 1) + ""; //判断是否存在下级信息 string NexGroupRoute = dtQuery.Rows[0]["NEX_GROUP_ROUTE"] + ""; //判读下级路由信息查询是否为空 if (string.IsNullOrWhiteSpace(NexGroupRoute)) { GROUP_ROUTE = dtQuery.Rows[0]["GROUP_ROUTE"] + "_100"; } else { //截取最后一段数字 string str1 = NexGroupRoute.Substring(NexGroupRoute.LastIndexOf("_") > 0 ? NexGroupRoute.LastIndexOf("_") : NexGroupRoute.Length); //截取不包含最后一段数字的信息 string str2 = NexGroupRoute.Substring(0, NexGroupRoute.LastIndexOf("_") > 0 ? NexGroupRoute.LastIndexOf("_") : NexGroupRoute.Length); //字符替换 string str3 = str1.Replace("_", ""); //最后一段数字类型转换 int.TryParse(str3, out int num1); //计算新路由最后一段数字内容 num1 = num1 < 100 ? 100 : num1 + 1; //拼接新路由字符串信息 GROUP_ROUTE = str2 + "_" + num1; } } } //判断分组如果是100,则验证是否存在同级根目录分组 if (GROUP_ROUTE.Trim().Equals("100")) { //没有上级信息,判断同级信息数量 string sqlCount = " SELECT COUNT(1) from tbl_camera_group WHERE ORG_ID='" + OrgId + "' and gropu_pid='0' "; var dtCount = FangYar.Common.MySqlHelper.QueryTable(sqlCount); int.TryParse(dtCount.Rows[0][0] + "", out int countNum); GROUP_ROUTE = (100 + countNum) + ""; } // 插入摄像头分组信息 string sql = @" insert into tbl_camera_group (ID,GROUP_NAME,GROUP_STATE,CREATETIME,GROUP_LEVEL,GROPU_PID,GROUP_ROUTE,ORG_ID,GROUP_SORT,GROUP_REMARK) values ('" + ID + "','" + GROUP_NAME + "','0',now(),'" + GROUP_LEVEL + "','" + GROPU_PID + "','" + GROUP_ROUTE + "','" + OrgId + "','" + GROUP_SORT + "','" + GROUP_REMARK + "') "; //判断是否更新数据 if (!string.IsNullOrWhiteSpace(cgid)) { //拼接更新数据Sql sql = " update tbl_camera_group set GROUP_NAME='" + GROUP_NAME + "',GROUP_SORT='" + GROUP_SORT + "',GROUP_REMARK='" + GROUP_REMARK + "' where id='" + cgid + "' "; } var num = FangYar.Common.MySqlHelper.Execute(sql); if (num > 0) { msg = "保存成功!"; code = 1; } else { msg = "保存失败!"; } } catch (Exception e) { // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "摄像头分组操作请求", "保存摄像头分组信息异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "摄像头分组操作请求", "保存摄像头分组信息"); returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\"}"; return returnstr; } /// /// 加载所有下级单位名称分组 /// /// /// private string AddNexOrgGroup(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { //分组信息ID string cgid = context.Request.Params["cgid"]; //组织机构ID string OrgId = context.Request.Params["OrgId"]; dicCacheGroupLinkOrgID = new Dictionary(); dicCacheGroupLinkOrgID.Add(OrgId, cgid); //查询所有下级单位 string sqlStr = " SELECT ORG_ID,PID,ORG_NAME,EXTENDCODE4,EXTENDCODE3 from fire_org ,(select get_Org_child_list('" + OrgId + "') cids ) s WHERE find_in_set(org_id,cids) and TYPE='0' ORDER BY EXTENDCODE4 "; var dt = FangYar.Common.MySqlHelper.QueryTable(sqlStr); List lis1 = new List(); for (int i = 0; i < dt.Rows.Count; i++) { try { lis1.Add(new ItemOrgMo() { PID = dt.Rows[i]["PID"] + "", ORG_ID = dt.Rows[i]["ORG_ID"] + "", ORG_NAME = dt.Rows[i]["ORG_NAME"] + "", EXTENDCODE4 = dt.Rows[i]["EXTENDCODE4"] + "", }); } catch (Exception ex) { } } LoopAddGroup(lis1, OrgId, OrgId); msg = "保存成功!"; code = 1; } catch (Exception e) { // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "摄像头分组操作请求", "保存摄像头分组信息异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "摄像头分组操作请求", "保存摄像头分组信息"); returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\"}"; return returnstr; } /// /// 缓存机构ID和分组ID对应信息 /// private Dictionary dicCacheGroupLinkOrgID = new Dictionary(); private void LoopAddGroup(List lis, string pid, string OrgId) { var list1 = lis.Where(p => p.PID == pid).ToList(); for (int i = 0; i < list1.Count(); i++) { var orgName = string.IsNullOrWhiteSpace(list1[i].EXTENDCODE3) ? list1[i].ORG_NAME : list1[i].EXTENDCODE3; var gPid = "0"; if (dicCacheGroupLinkOrgID.ContainsKey(pid)) { gPid = dicCacheGroupLinkOrgID[pid]; } var goid = list1[i].ORG_ID; var gid = AddGroupFun(OrgId, orgName, gPid, (i + 1) + ""); if (!dicCacheGroupLinkOrgID.ContainsKey(goid)) { dicCacheGroupLinkOrgID.Add(goid, gid); } if (lis.Where(p => p.PID == goid).Any()) { LoopAddGroup(lis, goid, OrgId); } } } public class ItemOrgMo { public string ORG_ID { get; set; } public string PID { get; set; } public string ORG_NAME { get; set; } public string EXTENDCODE4 { get; set; } public string EXTENDCODE3 { get; set; } } /// /// /// /// 组织机构ID /// 分组名称 /// 上级信息ID /// 排序字段 /// private string AddGroupFun(string OrgId, string GROUP_NAME, string GROPU_PID, string GROUP_SORT) { try { //备注信息 string GROUP_REMARK = GROUP_NAME + "——自动创建"; //分组级别 string GROUP_LEVEL = "1"; //分组信息路由 string GROUP_ROUTE = "100"; //实例化信息ID string ID = Guid.NewGuid().ToString("N"); //判断是是否传入上级ID信息编码 if (string.IsNullOrWhiteSpace(GROPU_PID)) { //没有传入上级信息ID,则上级ID信息置为0 GROPU_PID = "0"; } else { //查询上级摄像头分组信息 var sqlQuery = " SELECT *,(SELECT group_route from tbl_camera_group WHERE gropu_pid='" + GROPU_PID + "' ORDER BY group_route DESC LIMIT 1 ) NEX_GROUP_ROUTE from tbl_camera_group WHERE id='" + GROPU_PID + "' "; var dtQuery = FangYar.Common.MySqlHelper.QueryTable(sqlQuery); // 判断是否存在上级ID信息 if (dtQuery.Rows.Count > 0) { var GROUP_LEVEL_DT = dtQuery.Rows[0]["GROUP_LEVEL"] + ""; int.TryParse(GROUP_LEVEL_DT, out int GROUP_LEVEL_Num); GROUP_LEVEL = (GROUP_LEVEL_Num + 1) + ""; //判断是否存在下级信息 string NexGroupRoute = dtQuery.Rows[0]["NEX_GROUP_ROUTE"] + ""; //判读下级路由信息查询是否为空 if (string.IsNullOrWhiteSpace(NexGroupRoute)) { GROUP_ROUTE = dtQuery.Rows[0]["GROUP_ROUTE"] + "_100"; } else { //截取最后一段数字 string str1 = NexGroupRoute.Substring(NexGroupRoute.LastIndexOf("_") > 0 ? NexGroupRoute.LastIndexOf("_") : NexGroupRoute.Length); //截取不包含最后一段数字的信息 string str2 = NexGroupRoute.Substring(0, NexGroupRoute.LastIndexOf("_") > 0 ? NexGroupRoute.LastIndexOf("_") : NexGroupRoute.Length); //字符替换 string str3 = str1.Replace("_", ""); //最后一段数字类型转换 int.TryParse(str3, out int num1); //计算新路由最后一段数字内容 num1 = num1 < 100 ? 100 : num1 + 1; //拼接新路由字符串信息 GROUP_ROUTE = str2 + "_" + num1; } } } //判断分组如果是100,则验证是否存在同级根目录分组 if (GROUP_ROUTE.Trim().Equals("100")) { //没有上级信息,判断同级信息数量 string sqlCount = " SELECT COUNT(1) from tbl_camera_group WHERE ORG_ID='" + OrgId + "' and gropu_pid='0' "; var dtCount = FangYar.Common.MySqlHelper.QueryTable(sqlCount); int.TryParse(dtCount.Rows[0][0] + "", out int countNum); GROUP_ROUTE = (100 + countNum) + ""; } // 插入摄像头分组信息 string sql = @" insert into tbl_camera_group (ID,GROUP_NAME,GROUP_STATE,CREATETIME,GROUP_LEVEL,GROPU_PID,GROUP_ROUTE,ORG_ID,GROUP_SORT,GROUP_REMARK) values ('" + ID + "','" + GROUP_NAME + "','0',now(),'" + GROUP_LEVEL + "','" + GROPU_PID + "','" + GROUP_ROUTE + "','" + OrgId + "','" + GROUP_SORT + "','" + GROUP_REMARK + "') "; var num = FangYar.Common.MySqlHelper.Execute(sql); return ID; } catch (Exception e) { } return ""; } /// /// 删除摄像头分组信息 /// /// /// private string DeleteCameraGroup(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { //分组信息ID string cgid = context.Request.Params["cgid"]; // 更新信息状态为删除 string sql = " update tbl_camera_group set GROUP_STATE='-1' where id='" + cgid + "' "; var num = FangYar.Common.MySqlHelper.Execute(sql); if (num > 0) { msg = "保存成功!"; code = 1; } else { msg = "保存失败!"; } } catch (Exception e) { // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "摄像头分组操作请求", "保存摄像头分组信息异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "摄像头分组操作请求", "保存摄像头分组信息"); returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\"}"; return returnstr; } /// /// 获取分组内摄像头详情信息 /// /// /// private string getCameraGroupLinkList(HttpContext context) { string returnstr = ""; try { //分组信息ID string cgid = context.Request.Params["cgid"]; //是否包含下级 string is_content = context.Request.Params["is_content"]; string sqlQuery = @" WITH t1 as( SELECT ID,C_NAME,ORG_ID,EXTEND2 from tbl_camera WHERE ORG_ID in ( SELECT ORG_ID from tbl_camera_group WHERE id='" + cgid + @"') ) ,t2 as( SELECT * from tbl_camera_group_link WHERE camera_group_id='" + cgid + @"' and CAMERA_ID not in (SELECT id from t1) ) ,t3 as( SELECT * from t1 UNION SELECT ID,CONCAT( C_NAME,'(',IFNULL(o.ORG_NAME,''),')') C_NAME,c.ORG_ID,c.EXTEND2 from tbl_camera c LEFT JOIN fire_org o on c.ORG_ID=o.ORG_ID WHERE id in (SELECT CAMERA_ID from t2) "; if (is_content == "1") { sqlQuery += @" UNION SELECT * from ( SELECT ID,CONCAT( C_NAME,'(',IFNULL(o.ORG_NAME,''),')') C_NAME,c.ORG_ID,c.EXTEND2 from tbl_camera c LEFT JOIN fire_org o on c.ORG_ID=o.ORG_ID ,(select get_Org_child_list( (SELECT ORG_ID from tbl_camera_group WHERE id='" + cgid + @"')) cids ) s WHERE find_in_set(c.org_id,cids) and id not in (SELECT id from t1) and id not in (SELECT id from t2) ORDER BY o.EXTENDCODE4,c.EXTEND2 ) t "; } sqlQuery += @" ) SELECT * from t3 "; var dt1 = FangYar.Common.MySqlHelper.QueryTable(sqlQuery); //查询已经信息集合 string sqlVal = " SELECT group_concat(CAMERA_ID) from tbl_camera_group_link WHERE camera_group_id = '" + cgid + "' "; var dt2 = FangYar.Common.MySqlHelper.QueryTable(sqlVal); string str1 = dt2.Rows[0][0] + ""; var arr = str1.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); returnstr = "{\"code\":1,\"msg\":\"\","; returnstr += "\"data1\":" + FangYar.Common.JsonHelper.ToJSON1(arr) + ",\"data\":"; returnstr += FangYar.Common.JsonHelper.ToJson(dt1); 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 SaveCameraGroupLinkList(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { //分组信息ID string cgid = context.Request.Params["cgid"]; // 摄像头信息 string arrStr = context.Request.Params["arrStr"]; var arr = arrStr.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToList(); //执行Sql集合 List listSql = new List(); // 添加删除语句 listSql.Add(" DELETE FROM tbl_camera_group_link WHERE CAMERA_GROUP_ID='" + cgid + "' ; "); if (arr.Count > 0) { for (int i = 0; i < arr.Count; i++) { listSql.Add(" INSERT into tbl_camera_group_link (ID,CAMERA_ID,CAMERA_GROUP_ID) VALUES ('" + Guid.NewGuid().ToString("N") + "','" + arr[i] + "','" + cgid + "') "); } } var bol = FangYar.Common.MySqlHelper.ExecuteSqlTran(listSql); if (bol) { msg = "保存成功!"; code = 1; } else { msg = "保存失败!"; } } catch (Exception e) { // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "摄像头分组操作请求", "保存摄像头分组信息异常:" + e); } // 记录操作日志 BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "摄像头分组操作请求", "保存摄像头分组信息"); returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\"}"; return returnstr; } public bool IsReusable { get { return false; } } } }