diff --git a/24Hour/Controllers/Common/LawyerArchivesController.cs b/24Hour/Controllers/Common/LawyerArchivesController.cs index 21979ca..8c2bfd7 100644 --- a/24Hour/Controllers/Common/LawyerArchivesController.cs +++ b/24Hour/Controllers/Common/LawyerArchivesController.cs @@ -1,4 +1,5 @@ using AutoMapper; +using AutoMapper.Internal; using com.sun.xml.@internal.bind.v2.model.core; using Elight.Entity; using Elight.Entity.APPDto.Lawyer; @@ -11,12 +12,15 @@ using Elight.Utility.Code; using Elight.Utility.Extensions; using Elight.Utility.logs; using java.lang; +using java.time; using javax.xml.crypto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Newtonsoft.Json; using SqlSugar; +using SqlSugar.Extensions; +using System.Linq; using System.Net.WebSockets; using System.Text; using static _24Hour.TwentySystemProxyClient; @@ -121,9 +125,29 @@ namespace _24Hour.Controllers.Common { try { - var data = await _db.Queryable().FirstAsync(x => x.cardId == input.cardId && x.IsDeleted == 0); + var data = await _db.Queryable().FirstAsync(x => x.cardId == input.cardId && x.IsDeleted == 0 && x.isdeactivate == 0); if (data != null) { + #region 为了避免律师先在一体机刷卡自动创建账号后无法添加律师身份的问题 + if (data.identity != "律师") + { + data.identity = "律师"; + } + try + { + _db.BeginTran(); + var num = await _db.Updateable(data) + .WhereColumns(x => x.Id) + .IgnoreColumns(ignoreAllNullColumns: true) + .ExecuteCommandAsync(); + _db.CommitTran(); + } + catch (Exception ex) + { + logger.LogError(ex, "AddLawyer"); + } + #endregion + result.IsSucceed = false; result.Message = "用户已存在"; return result; @@ -670,6 +694,181 @@ namespace _24Hour.Controllers.Common }; return result; } + + + /// + /// 统计阅卷信息 + /// + /// 开始时间 + /// 结束时间 + /// 分类类型 有效值:year,month,day + /// + [HttpGet] + [Route("CountReadStatusByTime")] + public async Task CountReadStatusByTime(DateTime? stime, DateTime? etime, string groupby) + { + #region 入参校验 + DateTime starttime = stime == null ? DateHelper.GetStartDateOfDay(DateTime.Now.AddDays(-30)) : stime.Value; + DateTime endtime = etime == null ? DateHelper.GetEndDateOfDay(DateTime.Now) : etime.Value; + if (string.IsNullOrEmpty(groupby) || (groupby.ToLower() != "year" && groupby.ToLower() != "month" && groupby.ToLower() != "day")) + { + groupby = "day"; + } + #endregion + try + { + #region 根据入参获取查询区间 + var dates = new List(); + DateTime start, end; + switch (groupby) + { + case "year": + dates = DateHelper.GetArrayByYear(starttime, endtime); + start = DateHelper.GetStartDateOfYear(starttime); + end = DateHelper.GetEndDateOfYear(endtime); + break; + case "month": + dates = DateHelper.GetArrayByMonth(starttime, endtime); + start = DateHelper.GetStartDateOfMonth(starttime); + end = DateHelper.GetEndDateOfMonth(endtime); + break; + default: + dates = DateHelper.GetArrayByDay(starttime, endtime); + start = DateHelper.GetStartDateOfDay(starttime); + end = DateHelper.GetEndDateOfDay(endtime); + break; + } + #endregion + #region 查询已经阅卷的统计信息 + + var readedlist = await Task.Run(async () => + { + var registerCount = await _db.Queryable() + .Where(x => x.status != 0) + .Where(x => x.actualStartTime != null && x.actualStartTime >= start) + .Where(x => x.actualStartTime != null && x.actualStartTime <= end) + .Where(x => x.unitcode == _userdata.unitCode) + .Where(x => x.IsDeleted == 0) + .ToListAsync(); + var groupedlist = groupby switch + { + "year" => registerCount.GroupBy(x => DateHelper.GetStartDateOfYear(x.actualStartTime.Value)) + .ToDictionary(x => x.Key, x => x.Count()), + "month" => registerCount.GroupBy(x => DateHelper.GetStartDateOfMonth(x.actualStartTime.Value)) + .ToDictionary(x => x.Key, x => x.Count()), + _ => registerCount.GroupBy(x => x.actualStartTime.Value.Date) + .ToDictionary(x => x.Key, x => x.Count()) + }; + foreach (var item in dates) + { + if (groupedlist.ContainsKey(item) == false) + { + groupedlist.Add(item, 0); + } + } + var res = groupedlist.OrderBy(x => x.Key).Select(x => new + { + name = groupby switch + { + "year" => x.Key.ToString("yyyy"), + "month" => x.Key.ToString("yyyy-MM"), + _ => x.Key.ToString("yyyy-MM-dd") + }, + value = x.Value + }).ToList(); + return res; + }); + #endregion + #region 根据查阅状态进行分组 + var groupbystatus = await Task.Run(async () => + { + var registerCount = await _db.Queryable() + .Where(x => x.createTime != null && x.createTime >= start) + .Where(x => x.createTime != null && x.createTime <= end) + .Where(x => x.unitcode == _userdata.unitCode) + .Where(x => x.IsDeleted == 0) + .Where(x => x.status != null) + .ToListAsync(); + + var a = registerCount.GroupBy(x => x.status) + .ToDictionary(x => x.Key, x => x.Count()); + + var res = a.Select(x => new + { + name = x.Key switch + { + 0 => "待查阅", + 1 => "查阅中", + 2 => "已查阅", + _ => "待查阅" + }, + value = x.Value + }).ToList(); + return res; + }); + #endregion + #region 根据案件类型进行分组 + + var groupbycasetype = await Task.Run(async () => + { + var registerCount = await _db.Queryable() + .Where(x => x.createTime != null && x.createTime >= start) + .Where(x => x.createTime != null && x.createTime <= end) + .Where(x => x.unitcode == _userdata.unitCode) + .Where(x => x.IsDeleted == 0) + .Where(x => x.status != null) + .LeftJoin((x, e) => x.jzlbxxId == e.Id) + .GroupBy((x, e) => new { e.ajlbmc }) + .Select((x, e) => new + { + name = e.ajlbmc, + value = SqlFunc.AggregateCount(e.ajlbmc) + }) + .Take(10) + .ToListAsync(); + + if (registerCount.Count >= 10) + { + var excount = registerCount.Sum(x => x.value); + var allCount = await _db.Queryable() + .Where(x => x.createTime != null && x.createTime >= start) + .Where(x => x.createTime != null && x.createTime <= end) + .Where(x => x.unitcode == _userdata.unitCode) + .Where(x => x.IsDeleted == 0) + .Where(x => x.status != null) + .CountAsync(); + if (allCount > excount) + { + var list = new[] + { + new + { + name = "其他", + value = allCount-excount, + } + }; + registerCount.AddRange(list); + } + } + return registerCount; + }); + #endregion + + result.IsSucceed = true; + result.result = new + { + GroupByReadStatus = readedlist, + GroupByStatus = groupbystatus, + GroupByType = groupbycasetype + }; + } + catch + { + result.IsSucceed = false; + }; + return result; + } + /// /// 按律师分类 /// @@ -795,19 +994,19 @@ namespace _24Hour.Controllers.Common //[Route("EncodeData")] //public async Task EncodeData(string id) //{ - // var data = await _db.Queryable().LeftJoin((lawyer, user) => lawyer.createuserId == user.Id) + // var groupedlist = await _db.Queryable().LeftJoin((lawyer, user) => lawyer.createuserId == user.Id) // .Where(lawyer => lawyer.Id == id) // .Select((lawyer, user) => new // { // info = lawyer, // user // }).FirstAsync(); - // if (data != null) + // if (groupedlist != null) // { // var dto = new // { - // info = mapper.Map(data.info), - // user = mapper.Map(data.user) + // info = mapper.Map(groupedlist.info), + // user = mapper.Map(groupedlist.user) // }; // var encodingdata = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(dto))); // result.IsSucceed = true; @@ -823,11 +1022,11 @@ namespace _24Hour.Controllers.Common //[HttpPost] //[HiddenApi] //[Route("DecodeQRData")] - //public Task DecodeQRData(DecodeData data) + //public Task DecodeQRData(DecodeData groupedlist) //{ // try // { - // var basestr = Convert.FromBase64String(data.EncodingString); + // var basestr = Convert.FromBase64String(groupedlist.EncodingString); // var str = Encoding.UTF8.GetString(basestr); // var model = str.ConvertToAnonymousType(new