24小时一体机服务
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.

188 lines
6.6 KiB

using AutoMapper;
using com.sun.xml.@internal.bind.v2.runtime.unmarshaller;
using Elight.Entity;
using Elight.Entity.APPDto.Lawyer;
using Elight.Entity.AppMode.Lawyer;
using Elight.Logic;
using Elight.Utility.Code;
using Elight.Utility.Extensions;
using Elight.Utility.logs;
using java.util;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using System.Text;
using static _24Hour.Controllers.Common.LawyerArchivesController;
namespace _24Hour.Controllers.Common
{
/// <summary>
/// 律师服务
/// </summary>
[ApiController]
[Route("api/LawyerUnAuthorize")]
public class LawyerArchivesUnAuthorizeController : Controller
{
#region Identity
private readonly SqlSugarClient _db;//数据库
private readonly ILogger<LawyerArchivesController> logger;//日志
private readonly IMapper mapper;
public LawyerArchivesUnAuthorizeController(ILogger<LawyerArchivesController> _logger, SqlSugarClient db, IMapper _mapper)
{
this.logger = _logger;
_db = db;
this.mapper = _mapper;
}
#endregion
/// <summary>
/// 一体机查询所有的未完成的预约信息
/// </summary>
/// <returns></returns>
[HttpGet("GetAllArchivesUncompleted")]
public async Task<Result<IEnumerable<LawyerArchivesDto>>> GetAllArchivesUncompleted(string unitcode)
{
var res = new Result<IEnumerable<LawyerArchivesDto>>();
var list = await _db.Queryable<LawyerArchives>()
.Where(x => x.IsDeleted == 0)
.Where(x => x.status != 2 && x.permissibleEndTime > DateTime.Now)
.Where(x => x.unitcode == unitcode)
.Where(x => x.IsDeleted == 0)
.ToListAsync();
var data = mapper.Map<IEnumerable<LawyerArchivesDto>>(list);
res.result = data;
res.IsSucceed = true;
return res;
}
/// <summary>
/// 获取卷宗下所有的文件信息
/// </summary>
/// <param name="jzid"></param>
/// <returns></returns>
[HttpPost("GetJzFileInfo")]
public async Task<Result> GetJzFileInfo(IEnumerable<string> jzids)
{
var result = new Result();
try
{
var jzinfo = await _db.Queryable<JZJBXX>()
.Includes(x => x.jzml.OrderBy(x => x.mlsxh).ToList())
.Includes(x => x.jzml, x => x.jzwj.OrderBy(x => x.wjsxh).ToList())
.In(x => x.Id, jzids).ToListAsync();
if (jzinfo != null)
{
var a = mapper.Map<List<JZJBXXDto>>(jzinfo);
var data = a.Select(jzinfo => new
{
id = jzinfo.Id,
files = jzinfo?.jzml?.Where(x => x.fmlbh == null)
.OrderBy(x => x.mlsxh)
.Select(juan =>
{
return jzinfo.jzml.Where(ml => ml.fmlbh == juan.mlbh)
.OrderBy(sx => sx.mlsxh)
.SelectMany(x => x.jzwj.OrderBy(q => q.wjsxh).ToList())
.Select(r=>new {
order = r.wjsxh,
fileid = r.Id,
filepath = r.jpgwjlj
}).ToList();
})
});
var resultdata = data.Select(e => new
{
jzid = e.id,
files = e?.files?.SelectMany(q => q).ToList()
}).ToList();
result.result = resultdata;
result.IsSucceed = true;
return result;
}
else
{
result.IsSucceed = false;
return result;
}
;
}
catch (Exception ex)
{
logger.LogError(ex, "获取卷宗文件失败");
result.Message = ex.Message;
result.IsSucceed = false;
return result;
}
}
/// <summary>
/// 上传一体机的文件缓存状态
/// </summary>
/// <param name="dic"></param>
/// <returns></returns>
[HttpPost("UploadWJDownloadStatus")]
public async Task<Result> UploadWJDownloadStatus(IEnumerable<LawyerArchivesDto> dtos)
{
var result = new Result();
try
{
_db.BeginTran();
var updatelist = await _db.Queryable<LawyerArchives>().In(q => q.jzlbxxId, dtos.Select(x => x.jzlbxxId).ToList()).ToListAsync();
updatelist.ForEach(q =>
{
var value = dtos.FirstOrDefault(x => x.jzlbxxId == q.jzlbxxId);
q.downloadedCount = value?.downloadedCount;
});
var num = await _db.Updateable(updatelist).ExecuteCommandAsync();
_db.CommitTran();
if (num > 0)
{
result.IsSucceed = true;
result.result = "更新成功";
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
result.IsSucceed = false;
result.Message = ex.Message;
}
return result;
}
/// <summary>
/// 解密字符串信息
/// </summary>
/// <param name="basestr"></param>
/// <returns></returns>
[HttpPost]
[Route("DecodeData")]
public Task<Result<string>> DecodeData(DecodeQRDataModel data)
{
Result<string> result = new();
try
{
var qrdata = data.QRData;
var count = data.QRData.Length;
var a = count % 4;
if (a != 0)
{
for (int i = 0; i < a; i++)
{
qrdata += "=";
}
}
result.result = Encoding.UTF8.GetString(Convert.FromBase64String(qrdata));
result.IsSucceed = true;
return Task.FromResult(result);
}
catch (Exception ex)
{
logger.LogError(ex, "");
result.IsSucceed = false;
return Task.FromResult(result);
}
}
}
}