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

647 lines
26 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace FangYar.WebUI.ashx
{
/// <summary>
/// TblCameraGroupHandler 的摘要说明
/// </summary>
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);
}
/// <summary>
/// 获取摄像头分组信息
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 根据信息ID获取摄像头分组信息
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 保存摄像头分组信息
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 加载所有下级单位名称分组
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
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<string, string>();
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<ItemOrgMo> lis1 = new List<ItemOrgMo>();
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;
}
/// <summary>
/// 缓存机构ID和分组ID对应信息
/// </summary>
private Dictionary<string, string> dicCacheGroupLinkOrgID = new Dictionary<string, string>();
private void LoopAddGroup(List<ItemOrgMo> 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; }
}
/// <summary>
///
/// </summary>
/// <param name="OrgId">组织机构ID</param>
/// <param name="GROUP_NAME">分组名称</param>
/// <param name="GROPU_PID">上级信息ID</param>
/// <param name="GROUP_SORT">排序字段</param>
/// <returns></returns>
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 "";
}
/// <summary>
/// 删除摄像头分组信息
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 获取分组内摄像头详情信息
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 摄像头内包含的摄像头信息
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
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<string> listSql = new List<string>();
// 添加删除语句
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;
}
}
}
}