using AutoMapper; using com.sun.xml.@internal.bind.v2.model.core; using Elight.Entity; using Elight.Entity.APPDto.Lawyer; using Elight.Entity.AppMode.Lawyer; using Elight.Logic; using Elight.Logic.Model.Lawyer; using Elight.Logic.SystemModel; using Elight.Utility; using Elight.Utility.Code; using Elight.Utility.Extensions; using Elight.Utility.logs; using java.lang; using javax.xml.crypto; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Newtonsoft.Json; using SqlSugar; using System.Net.WebSockets; using System.Text; using static _24Hour.TwentySystemProxyClient; using static com.sun.tools.@internal.xjc.reader.xmlschema.bindinfo.BIConversion; using Exception = System.Exception; using User = Elight.Utility.User; namespace _24Hour.Controllers.Common { /// /// 律师服务 /// [Authorize] [ApiController] [Route("api/Lawyer")] public class LawyerArchivesController : Controller { #region Identity private readonly SqlSugarClient _db;//数据库 private readonly WriteSysLog _logs;//操作日志 App_Sys_UserModel _userdata = new App_Sys_UserModel();//当前用户 private readonly ILogger logger;//日志 Result result = new Result(); private readonly TwentySystemProxyClient twentyClient; private readonly IMapper mapper; public LawyerArchivesController(ILogger _logger, SqlSugarClient db, WriteSysLog logs, User user, IMapper _mapper, TwentySystemProxyClient _twentyClient) { this.logger = _logger; _db = db; _logs = logs; this.mapper = _mapper; this.twentyClient = _twentyClient; _userdata = user.Userdata(); } #endregion #region 律师阅卷 /// /// 获取当前登录人员的单位下所有的律师信息 /// /// [HttpGet("GetAllLawyerByUnitCode")] public async Task>> GetAllLawyerByUnitCode() { var res = new Result>(); var data = await _db.Queryable() .Where(x => x.unitCode == _userdata.unitCode && x.IsDeleted == 0) .Where(x => x.identity == "律师") .ToListAsync(); res.IsSucceed = true; res.result = data; return res; } /// /// 删除律师 /// /// /// [HttpPost] [Route("RemoveLawyer")] public async Task RemoveLawyer(CurrencyDelete Currency) { try { _db.BeginTran(); var Deletelist = await _db.Queryable().In(q => q.Id, Currency.id).ToListAsync(); Deletelist.ForEach(q => { q.IsDeleted = 1; }); var num = await _db.Updateable(Deletelist).ExecuteCommandAsync(); _db.CommitTran(); if (num > 0) { result.IsSucceed = true; result.result = "删除成功"; } } catch (System.Exception ex) { _db.RollbackTran(); result.IsSucceed = false; result.Message = ex.Message; logger.LogError(ex, ""); } _logs.WriteSysLogadd("律师阅卷服务", "删除律师信息", result, _db); return result; } /// /// 修改内网律师信息 /// /// /// [HttpPost] [Route("EditLawyer")] public async Task EditLawyer(App_Sys_AddLawyerInput input) { try { var data = await _db.Queryable().FirstAsync(x => x.Id == input.Id); if (data != null) { data.cardId = input.cardId; data.phone = input.phone; data.name = input.name; data.departmentName = input.departmentName; data.identitycardId = input.identitycardId; //update _db.BeginTran(); var num = await _db.Updateable(data).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); _db.CommitTran(); if (num > 0) { result.IsSucceed = true; result.result = "修改成功"; } } else { result.IsSucceed = false; result.result = "用户不存在"; } } catch (Exception ex) { result.IsSucceed = false; logger.LogError(ex, ""); } return result; } /// /// 同步外网律师人员信息(未完成) (根据律师身份证号更新或新增用户信息) /// /// /// [HttpPost] [Route("AddLawyerInfo")] public async Task AddLawyer(App_Sys_AddLawyerInput input) { try { var data = await _db.Queryable().FirstAsync(x => x.cardId == input.cardId); if (data != null) { result.IsSucceed = false; result.Message = "用户已存在"; return result; } else { var user = mapper.Map(input); //user.name = input.name; //user.phone = input.phone; //user.cardId=input.cardId; user.Id = Guid.NewGuid().ToString(); user.unitCode = _userdata.unitCode; if (user.cardId.Length == 18) { user.sex = int.Parse(user.cardId.Substring(16, 1)) % 2; } user.sex = _userdata.sex; user.usertype = 1; user.isdeactivate = 0; user.becurrent = 0; user.IsDeleted = 0; user.audit = 0; user.createuserId = _userdata.Id; user.createusername = _userdata.name; user.createtime = DateTime.Now; user.identity = "律师"; //insert _db.BeginTran(); var num = await _db.Insertable(user).ExecuteCommandAsync(); _db.CommitTran(); if (num > 0) { result.IsSucceed = true; result.Message = "添加成功"; } else { result.IsSucceed = false; result.Message = "添加失败"; } } } catch { result.IsSucceed = false; } return result; } /// /// 查询律师阅卷信息 /// /// /// [HttpGet] [Route("QueryLawyerArchives")] public async Task QueryLawyerArchives([FromQuery] LawyerArchivesInput input) { RefAsync totalNumber = 0;//总数据 var starttime = input.StartTime ?? DateTime.Now.AddDays(-100); var endtime = input.EndTime ?? DateTime.Now; //查询律师服务 var list = await _db.Queryable() .WhereIF(string.IsNullOrEmpty(input.lawyerName) == false, x => x.lawyerName.Contains(input.lawyerName)) .WhereIF(string.IsNullOrEmpty(input.party) == false, x => x.party.Contains(input.party)) .WhereIF(string.IsNullOrEmpty(input.partyCardId) == false, x => x.partycardId == input.partyCardId) .WhereIF(string.IsNullOrEmpty(input.caseName) == false, x => x.casename.Contains(input.caseName)) .WhereIF(string.IsNullOrEmpty(input.bmsah) == false, x => x.bmsah.Contains(input.bmsah)) .Where(x => x.permissibleStartTime > starttime && x.permissibleStartTime < endtime) .Where(x => x.unitcode == input.unitCode) .WhereIF(input.Isdelete != null, x => x.IsDeleted == input.Isdelete) .ToPageListAsync(input.PageIndex, input.PageSize, totalNumber); input.RowsCount = totalNumber; var data = new QueryResult(input, list.OrderByDescending(q => q.createTime).ToList()); result.IsSucceed = true; result.result = data; return result; } /// /// 新增阅卷信息 /// /// /// [HttpPost] [Route("AddLawyerArchives")] public async Task AddLawyerArchives(LawyerArchivesDto dto) { try { var entity = mapper.Map(dto); entity.Id = Guid.NewGuid().ToString(); entity.createrId = _userdata.Id; entity.createTime = DateTime.Now; entity.status = 0; entity.copyStatus = 0; entity.IsDeleted = 0; _db.BeginTran(); var num = await _db.Insertable(entity).ExecuteCommandAsync(); _db.CommitTran(); if (num > 0) { result.IsSucceed = true; result.Message = "添加成功"; result.result = mapper.Map(entity); } } catch { result.IsSucceed = false; } return result; } /// /// 删除律师阅卷信息 /// /// /// [HttpPost] [Route("DeleteLawyerArchives")] public async Task DeleteLawyerArchives(CurrencyDelete Currency) { try { _db.BeginTran(); var Deletelist = await _db.Queryable().In(q => q.Id, Currency.id).ToListAsync(); Deletelist.ForEach(q => { q.IsDeleted = 1; }); var num = await _db.Updateable(Deletelist).ExecuteCommandAsync(); _db.CommitTran(); if (num > 0) { result.IsSucceed = true; result.result = "删除成功"; } } catch (System.Exception ex) { _db.RollbackTran(); result.IsSucceed = false; result.Message = ex.Message; LogService.WriteLog(ex, "删除律师阅卷预约"); } _logs.WriteSysLogadd("律师阅卷服务", "删除律师阅卷预约", result, _db); return result; } /// /// 修改律师阅卷信息 /// /// /// [HttpPut] [Route("UpdateLawyerArchives")] public async Task UpdateLawyerArchives(LawyerArchivesDto Lawyerdata) { try { var entity = mapper.Map(Lawyerdata); _db.BeginTran(); var num = await _db.Updateable(entity) .WhereColumns(x => x.Id) .IgnoreColumns(ignoreAllNullColumns: true) .ExecuteCommandAsync(); _db.CommitTran(); if (num > 0) { result.IsSucceed = true; result.result = "修改成功"; } } catch (System.Exception ex) { _db.RollbackTran(); result.IsSucceed = false; result.Message = ex.Message; LogService.WriteLog(ex, "删除律师阅卷预约"); } _logs.WriteSysLogadd("律师阅卷服务", "删除律师阅卷预约", result, _db); return result; } /// /// 从2.0系统查询案件信息 /// /// /// /// 接口,还没有确定好这个接口返回的数据的具体格式 [HttpGet] [Route("QueryCaseFromtwenty")] public async Task>> QueryCaseFromtwenty(string? bmsah, string? dwbm, string? casename, DateTime? starttime, DateTime? endtime, int page, int size) { return await twentyClient.GetCaseList(casename, bmsah, dwbm, starttime, endtime, page, size); } /// /// 从2.0系统查询卷宗信息 /// /// /// /// 数据的返回格式已确定,内容时真实数据经过修改的 [HttpGet] [Route("QueryFileFromtwenty")] public async Task QueryFileFromtwenty(string bmsah, string dwbm) { var reponse = await twentyClient.GetArchivesInfo(bmsah, dwbm); if (reponse.IsSucceed == true) { var a = reponse.result; var data = new[] { new { id = a.jzbh, lable = a.jzmc, children = a?.jzml?.OrderBy(x=>x.mlsxh).Select(x => new { id = x.mlbh, lable = x.mlxsmc, children = x.jzwj.OrderBy(x=>x.wjsxh).Select(q => new { id = q.wjxh, lable = q.wjxsmc, filepath = q.jpgwjlj }) }) } }; result.IsSucceed = true; result.result = data; } else { result.IsSucceed = false; result.Message = reponse.Message; } return result; } /// /// PC端根据卷宗id获取卷宗信息 /// /// /// [HttpGet] [Route("QueryArchiveByIdPC")] public async Task QueryArchiveByIdPC(string jzid) { var list = await _db.Queryable() .Includes(x => x.jzml.OrderBy(x => x.mlsxh).ToList()) .Includes(x => x.jzml, x => x.jzwj.OrderBy(x => x.wjsxh).ToList()) .FirstAsync(x => x.Id == jzid); if (list!=null) { var a = mapper.Map(list); var data = new[] { new { id = a.jzbh, lable = a.jzmc, children = a?.jzml?.OrderBy(x=>x.mlsxh).Select(x => new { id = x.mlbh, lable = x.mlxsmc, children = x.jzwj.OrderBy(x=>x.wjsxh).Select(q => new { id = q.wjxh, lable = q.wjxsmc, filepath = q.jpgwjlj }) }) } }; result.IsSucceed = true; result.result = data; } else { result.IsSucceed = false; result.Message = "卷宗不存在"; } return result; } /// /// 上传已选中的第三级页码的id /// /// /// /// /// { /// "IsSucceed": false, /// "Message": null, /// "result": "9f272d7f-2b66-4314-95a3-ca4e0de2b1ec" /// } ///返回的id 用于在调用 AddLawyerArchives 传入jzlbxxId /// [HttpPost("AddArchivesInfoByChildId")] public async Task AddArchivesInfoByChildId(AddArchivesInfoInput input) { try { var reponse = await twentyClient.GetArchivesInfo(input.Bmsah, _userdata.unitCode); if (reponse.IsSucceed == true) { var dto = reponse.result; //先将没有被选中的第三级文件排除 foreach (var item in dto.jzml) { item.jzwj = item.jzwj.Where(x => input.Ids.Contains(x.wjxh)).ToList(); } //再排除没有文件的目录信息 //这样筛选后获取的数据就可以保证不会出现空子节点的父节点 dto.jzml = dto.jzml.Where(x => x.jzwj.Any()).ToList(); var insert = await AddArchivesInfo(dto); result.result = insert.result.Id; result.IsSucceed = true; } else { result.IsSucceed = false; result.Message = reponse.Message; } } catch (Exception ex) { result.IsSucceed = false; result.Message = ex.Message; logger.LogError(ex, "AddArchivesInfoByChildId"); } return result; } /// /// 一体机 根据卷宗id获取详细的卷宗信息 /// /// /// [HttpGet("QueryArchiveById")] public async Task QueryArchiveById(string jzid) { try { var list = await _db.Queryable() .Includes(x => x.jzml.OrderBy(x => x.mlsxh).ToList()) .Includes(x => x.jzml, x => x.jzwj.OrderBy(x => x.wjsxh).ToList()) .FirstAsync(x => x.Id == jzid); var data = mapper.Map(list); result.result = data; result.IsSucceed = true; } catch (Exception ex) { logger.LogError(ex, "QueryArchiveById"); } return result; } /// /// 一体机查询当前用户已有的 被同意的 预约阅卷信息 /// /// [HttpGet("QueryReservedInfo")] public async Task QueryReservedInfo() { try { logger.LogInformation("12312312312"); var list = await _db.Queryable() .Where(x => x.lawyerId == _userdata.Id) .Where(x => x.status == 0 || x.status == 1) .Where(x => x.permissibleStartTime <= DateTime.Now && x.permissibleEndTime >= DateTime.Now) .Where(x => x.IsDeleted == 0) .ToListAsync(); var data = mapper.Map>(list); result.result = data; result.IsSucceed = true; } catch (Exception ex) { logger.LogError(ex, "QueryReservedInfo"); } return result; } #endregion #region HiddenApi /// /// 添加卷宗信息 /// /// /// [HiddenApi] [HttpPost] [Route("AddArchivesInfo")] public async Task> AddArchivesInfo(JZJBXXDto dto) { Result res = new Result(); try { var data = mapper.Map(dto); var mls = dto.jzml.ToList(); var vloum = mapper.Map>(mls); var wjs = dto.jzml.SelectMany(x => x.jzwj).ToList(); var files = mapper.Map>(wjs); _db.BeginTran(); var num = await _db.Insertable(data).ExecuteCommandAsync(); var add = await _db.Insertable(vloum).ExecuteCommandAsync(); var addwj = await _db.Insertable(files).ExecuteCommandAsync(); _db.CommitTran(); res.result = dto; return res; } catch (Exception ex) { logger.LogError(ex, "AddArchivesInfo"); result.IsSucceed = false; return res; } } /// /// 同步外网预约信息(不需要调用此接口) /// /// /// [HttpPost] [HiddenApi] [Route("AddLawyerServiceInfo")] public async Task AddLawyerServiceInfo(App_LawyerServicesModel info) { var data = await _db.Queryable().FirstAsync(x => x.Id == info.Id); if (data != null) { result.IsSucceed = true; result.Message = "改数据已同步"; return result; } else { _db.BeginTran(); var num = await _db.Insertable(info).ExecuteCommandAsync(); _db.CommitTran(); if (num > 0) { result.IsSucceed = true; result.Message = "添加成功"; result.result = mapper.Map(info); return result; } else { result.IsSucceed = false; result.Message = "添加失败"; return result; } } } /// /// 加密字符串信息 /// /// /// [HttpGet] [Route("EncodeData")] public Task> EncodeData() { var str = $"{_userdata.cardId},{_userdata.name}"; Result result = new(); result.result = Convert.ToBase64String(Encoding.UTF8.GetBytes(str)); result.IsSucceed = true; return Task.FromResult(result); } public class DecodeQRDataModel { public string QRData { get; set; } } ///// ///// 加密二维码信息 ///// ///// //[HttpGet] //[HiddenApi] //[Route("EncodeData")] //public async Task EncodeData(string id) //{ // var data = 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) // { // var dto = new // { // info = mapper.Map(data.info), // user = mapper.Map(data.user) // }; // var encodingdata = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(dto))); // result.IsSucceed = true; // result.result = encodingdata; // } // return result; //} ///// ///// 解码二维码信息 ///// ///// //[HttpPost] //[HiddenApi] //[Route("DecodeQRData")] //public Task DecodeQRData(DecodeData data) //{ // try // { // var basestr = Convert.FromBase64String(data.EncodingString); // var str = Encoding.UTF8.GetString(basestr); // var model = str.ConvertToAnonymousType(new // { // info = default(QRLawyerServiceDto), // user = default(QRUserDto) // }); // result.IsSucceed = true; // result.result = model; // } // catch (System.Exception ex) // { // result.IsSucceed = false; // } // return Task.FromResult(result); //} #endregion } }