From 40cc4560a4ae09ba0e6539d9bc1b9e90dd9d2c87 Mon Sep 17 00:00:00 2001 From: liujiaqiang <1448951783@qq.com> Date: Mon, 3 Jul 2023 17:23:14 +0800 Subject: [PATCH] =?UTF-8?q?websockt=E5=8F=91=E9=80=81=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4=EF=BC=8C=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E4=B8=BE=E6=8A=A5=E6=8E=A7=E5=88=B6=E5=99=A8=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=EF=BC=8C=E6=B7=BB=E5=8A=A0=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 24Hour/Controllers/Common/CommonController.cs | 410 +++++++++++++++++- 24Hour/Controllers/Common/VideoController.cs | 4 +- .../Controllers/Common/WebSocketController.cs | 23 +- 3 files changed, 428 insertions(+), 9 deletions(-) diff --git a/24Hour/Controllers/Common/CommonController.cs b/24Hour/Controllers/Common/CommonController.cs index 849e811..b6944ce 100644 --- a/24Hour/Controllers/Common/CommonController.cs +++ b/24Hour/Controllers/Common/CommonController.cs @@ -2009,11 +2009,11 @@ namespace _24Hour.Controllers.Common }); }); list = list - .WhereIF(Commondata.StartTime != null && Commondata.EndTime != null, q => q.sttime >= Commondata.StartTime && q.sttime < Commondata.EndTime.Value.AddDays(1)).OrderByDescending(q => q.creationtime).ToList(); + .WhereIF(Commondata.StartTime != null && Commondata.EndTime != null, q => q.sttime >= Commondata.StartTime && q.sttime < Commondata.EndTime.Value.AddDays(1)).OrderByDescending(q => q.sttime).ToList(); //预约类型分组统计 var GroupBy = list.ToList().GroupBy(q => new { q.daId, q.title }).Select(x => new { name = x.Key.title, value = x.ToList().Count() }); //日期分组统计 - var datetme = list.ToList().GroupBy(q => DateTime.Parse($"{q.creationtime}").ToString("yyyy-MM-dd")).Select(x => new { time = x.Key, value = x.ToList().Count() }); + var datetme = list.ToList().GroupBy(q => DateTime.Parse($"{q.sttime}").ToString("yyyy-MM-dd")).Select(x => new { time = x.Key, value = x.ToList().Count() }); //预约状态分组 var satselist = list.ToList().GroupBy(q => $"{q.statetype}").Select(x => new { statetype = x.Key, value = x.ToList().Count() }).ToList(); var satseGroupBy = new List(); @@ -2044,6 +2044,412 @@ namespace _24Hour.Controllers.Common _logs.WriteSysLogadd("数据统计", "统计信息", result, _db); return result; } + + + /// + /// 人员任务量统计 + /// + [HttpPost] + [Route("querypersonneltask")] + public async Task querypersonneltask(Commonpage Commondata) + { + try + { + var list = new List(); + //获取工作台信息 + var Stagingdata = await _db.Queryable().Where(q => q.IsDelete == 0).ToArrayAsync(); + var Userdata = await _db.Queryable().Where(q => q.usertype == 0).ToArrayAsync(); + //获取律师服务预约记录 + var Lawyerdata = await _db.Queryable() + .Where(q => q.IsDeleted == 0 && q.unitCode == _userdata.unitCode && q.acceptancetime != null && q.operatorId != null).ToArrayAsync(); + Lawyerdata.ToList().ForEach(q => + { + var da = Stagingdata.Where(x => x.Id == q.reservationId).FirstOrDefault(); + var userda = Userdata.Where(x => x.Id == q.operatorId).FirstOrDefault(); + list.Add(new + { + type = 0, + Id = q.Id, + operatorId=q.operatorId, + operatorName = userda?.name, + daId = da?.Id, + title = da?.title, + color = da?.color, + icon = da?.icon, + name = q.name, + phone = q.phone, + matter = q.matter,//事由 + objectstr = "",//访问对象(案件名称) + statetype = $"{q.state}", + reason = q.reason, + sttime = q.receptiontime, + ettime = "", + creationtime = q.creationtime, + receptionuser = q.receptionuser, + username = q.receptionusername, + notes = q.notes + }); + }); + //获取远程会见预约记录 + var Remotedata = await _db.Queryable() + .Where(q => q.IsDeleted == 0 && q.unitCode == _userdata.unitCode && q.acceptancetime != null && q.operatorId != null).ToArrayAsync(); + Remotedata.ToList().ForEach(q => + { + var da = Stagingdata.Where(x => x.Id == q.reservationId).FirstOrDefault(); + var userda = Userdata.Where(x => x.Id == q.operatorId).FirstOrDefault(); + list.Add(new + { + type = 1, + Id = q.Id, + operatorId = q.operatorId, + operatorName = userda?.name, + daId = da?.Id, + title = da?.title, + color = da?.color, + icon = da?.icon, + name = q.name, + phone = q.phone, + matter = "",//事由 + objectstr = "",//访问对象(案件名称) + Code = q.Code, + statetype = $"{q.state}",//状态 + reason = q.reason,//原因 + sttime = q.sttime, + ettime = q.ettime, + creationtime = q.creationtime, + receptionuser = q.meetwitId, + username = q.meetwitname, + notes = q.notes, + appurl = q.appurl + }); + }); + //获取远程接待预约记录 + var Receptiondata = await _db.Queryable() + .Where(q => q.IsDeleted == 0 && q.unitCode == _userdata.unitCode && q.acceptancetime != null && q.operatorId != null).ToArrayAsync(); + Receptiondata.ToList().ForEach(q => + { + var da = Stagingdata.Where(x => x.Id == q.reservationId).FirstOrDefault(); + var userda = Userdata.Where(x => x.Id == q.operatorId).FirstOrDefault(); + list.Add(new + { + type = 2, + Id = q.Id, + daId = da?.Id, + operatorId = q.operatorId, + operatorName = userda?.name, + title = da?.title, + color = da?.color, + icon = da?.icon, + name = "", + phone = q.phone, + matter = q.matter,//事由 + objectstr = "",//访问对象(案件名称) + Code = "", + statetype = $"{q.state}",//状态 + reason = q.reason,//原因 + sttime = q.sttime, + ettime = q.ettime, + creationtime = q.creationtime, + receptionuser = q.meetwitId, + username = q.meetwitname, + notes = q.notes, + appurl = "" + }); + }); + //获取认罪认罚预约记录 + var Confessiondata = await _db.Queryable() + .Where(q => q.IsDeleted == 0 && q.unitCode == _userdata.unitCode && q.acceptancetime != null && q.operatorId != null).ToArrayAsync(); + Confessiondata.ToList().ForEach(q => + { + var da = Stagingdata.Where(x => x.Id == q.reservationId).FirstOrDefault(); + var userda = Userdata.Where(x => x.Id == q.operatorId).FirstOrDefault(); + list.Add(new + { + type = 3, + Id = q.Id, + daId = da?.Id, + operatorId = q.operatorId, + operatorName = userda?.name, + title = da?.title, + color = da?.color, + icon = da?.icon, + name = "", + phone = q.phone, + matter = q.matter,//事由 + objectstr = "",//访问对象(案件名称) + Code = "", + statetype = $"{q.state}",//状态 + reason = q.reason,//原因 + sttime = q.sttime, + ettime = "", + creationtime = q.creationtime, + receptionuser = q.meetwitId, + username = q.meetwitname, + notes = q.notes, + appurl = "" + }); + }); + //获取听证预约记录 + var Hearingdata = await _db.Queryable() + .Where(q => q.IsDeleted == 0 && q.unitCode == _userdata.unitCode&&q.acceptancetime!=null && q.operatorId != null).ToArrayAsync(); + Hearingdata.ToList().ForEach(q => + { + var da = Stagingdata.Where(x => x.Id == q.reservationId).FirstOrDefault(); + var userda = Userdata.Where(x => x.Id == q.operatorId).FirstOrDefault(); + list.Add(new + { + type = 4, + Id = q.Id, + daId = da?.Id, + operatorId = q.operatorId, + operatorName = userda?.name, + title = da?.title, + color = da?.color, + icon = da?.icon, + name = "", + phone = q.contact, + matter = q.witnessrequest,//事由 + objectstr = "",//访问对象(案件名称) + Code = "", + statetype = $"{q.state}",//状态 + reason = q.reason,//原因 + sttime = q.reservationtime, + ettime = "", + creationtime = q.creationtime, + receptionuser = q.receptionuser, + username = q.receptionusername, + notes = q.notes, + appurl = "" + }); + }); + list = list + .WhereIF(Commondata.StartTime != null && Commondata.EndTime != null, q => q.sttime >= Commondata.StartTime && q.sttime < Commondata.EndTime.Value.AddDays(1)).OrderByDescending(q => q.sttime).ToList(); + //人员分组统计 + var GroupBy = list.ToList().GroupBy(q => new { q.operatorId, q.operatorName }).Select(x => new { name = x.Key.operatorName, value = x.ToList().Count() }); + result.IsSucceed = true; + result.result = GroupBy; + + } + catch (System.Exception ex) + { + _db.RollbackTran(); + result.IsSucceed = false; + result.Message = ex.Message; + } + _logs.WriteSysLogadd("数据统计", "统计信息", result, _db); + return result; + } + + /// + /// 单个人员任务统计 + /// + [HttpPost] + [Route("queryusertask")] + public async Task queryusertask(Commonpage Commondata) + { + try + { + var list = new List(); + //获取工作台信息 + var Stagingdata = await _db.Queryable().Where(q => q.IsDelete == 0).ToArrayAsync(); + var Userdata = await _db.Queryable().Where(q => q.usertype == 0).ToArrayAsync(); + //获取律师服务预约记录 + var Lawyerdata = await _db.Queryable() + .Where(q => q.IsDeleted == 0 && q.unitCode == _userdata.unitCode && q.acceptancetime != null &&q.operatorId== Commondata.Id).ToArrayAsync(); + Lawyerdata.ToList().ForEach(q => + { + var da = Stagingdata.Where(x => x.Id == q.reservationId).FirstOrDefault(); + var userda = Userdata.Where(x => x.Id == q.operatorId).FirstOrDefault(); + list.Add(new + { + type = 0, + Id = q.Id, + operatorId = q.operatorId, + operatorName = userda?.name, + daId = da?.Id, + title = da?.title, + color = da?.color, + icon = da?.icon, + name = q.name, + phone = q.phone, + matter = q.matter,//事由 + objectstr = "",//访问对象(案件名称) + statetype = $"{q.state}", + reason = q.reason, + sttime = q.receptiontime, + ettime = "", + creationtime = q.creationtime, + receptionuser = q.receptionuser, + username = q.receptionusername, + notes = q.notes + }); + }); + //获取远程会见预约记录 + var Remotedata = await _db.Queryable() + .Where(q => q.IsDeleted == 0 && q.unitCode == _userdata.unitCode && q.acceptancetime != null && q.operatorId == Commondata.Id).ToArrayAsync(); + Remotedata.ToList().ForEach(q => + { + var da = Stagingdata.Where(x => x.Id == q.reservationId).FirstOrDefault(); + var userda = Userdata.Where(x => x.Id == q.operatorId).FirstOrDefault(); + list.Add(new + { + type = 1, + Id = q.Id, + operatorId = q.operatorId, + operatorName = userda?.name, + daId = da?.Id, + title = da?.title, + color = da?.color, + icon = da?.icon, + name = q.name, + phone = q.phone, + matter = "",//事由 + objectstr = "",//访问对象(案件名称) + Code = q.Code, + statetype = $"{q.state}",//状态 + reason = q.reason,//原因 + sttime = q.sttime, + ettime = q.ettime, + creationtime = q.creationtime, + receptionuser = q.meetwitId, + username = q.meetwitname, + notes = q.notes, + appurl = q.appurl + }); + }); + //获取远程接待预约记录 + var Receptiondata = await _db.Queryable() + .Where(q => q.IsDeleted == 0 && q.unitCode == _userdata.unitCode && q.acceptancetime != null && q.operatorId == Commondata.Id).ToArrayAsync(); + Receptiondata.ToList().ForEach(q => + { + var da = Stagingdata.Where(x => x.Id == q.reservationId).FirstOrDefault(); + var userda = Userdata.Where(x => x.Id == q.operatorId).FirstOrDefault(); + list.Add(new + { + type = 2, + Id = q.Id, + daId = da?.Id, + operatorId = q.operatorId, + operatorName = userda?.name, + title = da?.title, + color = da?.color, + icon = da?.icon, + name = "", + phone = q.phone, + matter = q.matter,//事由 + objectstr = "",//访问对象(案件名称) + Code = "", + statetype = $"{q.state}",//状态 + reason = q.reason,//原因 + sttime = q.sttime, + ettime = q.ettime, + creationtime = q.creationtime, + receptionuser = q.meetwitId, + username = q.meetwitname, + notes = q.notes, + appurl = "" + }); + }); + //获取认罪认罚预约记录 + var Confessiondata = await _db.Queryable() + .Where(q => q.IsDeleted == 0 && q.unitCode == _userdata.unitCode && q.acceptancetime != null && q.operatorId == Commondata.Id).ToArrayAsync(); + Confessiondata.ToList().ForEach(q => + { + var da = Stagingdata.Where(x => x.Id == q.reservationId).FirstOrDefault(); + var userda = Userdata.Where(x => x.Id == q.operatorId).FirstOrDefault(); + list.Add(new + { + type = 3, + Id = q.Id, + daId = da?.Id, + operatorId = q.operatorId, + operatorName = userda?.name, + title = da?.title, + color = da?.color, + icon = da?.icon, + name = "", + phone = q.phone, + matter = q.matter,//事由 + objectstr = "",//访问对象(案件名称) + Code = "", + statetype = $"{q.state}",//状态 + reason = q.reason,//原因 + sttime = q.sttime, + ettime = "", + creationtime = q.creationtime, + receptionuser = q.meetwitId, + username = q.meetwitname, + notes = q.notes, + appurl = "" + }); + }); + //获取听证预约记录 + var Hearingdata = await _db.Queryable() + .Where(q => q.IsDeleted == 0 && q.unitCode == _userdata.unitCode && q.acceptancetime != null && q.operatorId == Commondata.Id).ToArrayAsync(); + Hearingdata.ToList().ForEach(q => + { + var da = Stagingdata.Where(x => x.Id == q.reservationId).FirstOrDefault(); + var userda = Userdata.Where(x => x.Id == q.operatorId).FirstOrDefault(); + list.Add(new + { + type = 4, + Id = q.Id, + daId = da?.Id, + operatorId = q.operatorId, + operatorName = userda?.name, + title = da?.title, + color = da?.color, + icon = da?.icon, + name = "", + phone = q.contact, + matter = q.witnessrequest,//事由 + objectstr = "",//访问对象(案件名称) + Code = "", + statetype = $"{q.state}",//状态 + reason = q.reason,//原因 + sttime = q.reservationtime, + ettime = "", + creationtime = q.creationtime, + receptionuser = q.receptionuser, + username = q.receptionusername, + notes = q.notes, + appurl = "" + }); + }); + list = list + .WhereIF(Commondata.StartTime != null && Commondata.EndTime != null, q => q.sttime >= Commondata.StartTime && q.sttime < Commondata.EndTime.Value.AddDays(1)).OrderByDescending(q => q.sttime).ToList(); + //任务分组统计 + var GroupBy = list.ToList().GroupBy(q => new { q.daId, q.title }).Select(x => new { name = x.Key.title, value = x.ToList().Count() }); + //预约状态分组 + var satselist = list.ToList().GroupBy(q => $"{q.statetype}").Select(x => new { statetype = x.Key, value = x.ToList().Count() }).ToList(); + var satseGroupBy = new List(); + string[] strnum = new string[] { "0", "1", "2", "3" }; + string[] str = new string[] { "待办理", "已受理", "拒绝", "结束" }; + for (int i = 0; i < strnum.Length; i++) + { + var da = satselist.Where(q => q.statetype == strnum[i]).FirstOrDefault(); + if (da != null) + { + satseGroupBy.Add(new { name = str[i], value = da.value }); + } + else + { + satseGroupBy.Add(new { name = str[i], value = 0 }); + } + } + result.IsSucceed = true; + result.result =new { GroupBy,satseGroupBy}; + + } + catch (System.Exception ex) + { + _db.RollbackTran(); + result.IsSucceed = false; + result.Message = ex.Message; + } + _logs.WriteSysLogadd("数据统计", "统计信息", result, _db); + return result; + } #endregion #region 文件上传 diff --git a/24Hour/Controllers/Common/VideoController.cs b/24Hour/Controllers/Common/VideoController.cs index 81bad1b..19f255e 100644 --- a/24Hour/Controllers/Common/VideoController.cs +++ b/24Hour/Controllers/Common/VideoController.cs @@ -14,7 +14,7 @@ namespace _24Hour.Controllers.Common /// /// 视频举报 /// - //[Authorize] + [Authorize] [ApiController] [Route("api/Video")] public class VideoController : Controller @@ -256,8 +256,6 @@ namespace _24Hour.Controllers.Common /// [HttpGet] [Route("Download")] - [AllowAnonymous] - public FileResult Download(string path) { var dic = Path.Combine(Environment.CurrentDirectory, "wwwroot"); diff --git a/24Hour/Controllers/Common/WebSocketController.cs b/24Hour/Controllers/Common/WebSocketController.cs index e9fbc5b..46196f7 100644 --- a/24Hour/Controllers/Common/WebSocketController.cs +++ b/24Hour/Controllers/Common/WebSocketController.cs @@ -117,7 +117,7 @@ namespace _24Hour.Controllers.Common /// [HttpPost] [Route("WebSocketSend")] - public async Task WebSocketSend(WebSocketSending Sendingdata) + public async Task WebSocketSend(WebSocketSending Sendingdata) { try { @@ -128,7 +128,7 @@ namespace _24Hour.Controllers.Common if (socket.State == WebSocketState.Open) { ArraySegment buffer = new ArraySegment(new byte[2048]); - WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None); + //WebSocketReceiveResult ret = await socket.ReceiveAsync(buffer, CancellationToken.None); #region 消息处理(消息转发) try @@ -150,14 +150,22 @@ namespace _24Hour.Controllers.Common { WebSocket destSocket = CONNECT_POOL[Sendingdata.recipient];//目的客户端 if (destSocket != null && destSocket.State == WebSocketState.Open) + { + result.IsSucceed = true; + result.result = "已发送"; + await destSocket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None); + } else { - //添加未读 + result.IsSucceed = false; + result.result = "用户未上线!"; } } else { + result.IsSucceed = false; + result.result = "用户未上线!"; //添加未读 //添加一条未读消息 //Task.Run(() => @@ -171,20 +179,27 @@ namespace _24Hour.Controllers.Common } catch (Exception exs) { + result.IsSucceed = false; + result.result = "异常:"+ exs.Message+ ""; //消息转发异常处理,本次消息忽略 继续监听接下来的消息 } #endregion } else { + result.IsSucceed = false; + result.result = " 重新连接!"; } }//while end } - catch (Exception) + catch (Exception ex) { //整体异常处理 if (CONNECT_POOL.ContainsKey(_userdata.Id)) CONNECT_POOL.Remove(_userdata.Id); + result.IsSucceed = false; + result.result = "异常:" + ex.Message + ""; } + return result; }