using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Shentun.PeisReport.Api.Dto; using Shentun.PeisReport.Api.Dto.ReportBusiness; using Shentun.PeisReport.Api.Jwt; using SqlSugar; using System.Data; using System.Security.Claims; namespace Shentun.PeisReport.Api.Controllers { /// /// 监利医院 /// [Route("api/[controller]/[action]")] [ApiController] [ApiExplorerSettings(GroupName ="JianLiApi")] //[Authorize] public class ReportBusinessController : ControllerBase { private readonly SqlSugarClient _peisDb; private readonly SqlSugarClient _lisDb; private readonly IConfiguration _configuration; private readonly ILogger _logger; /// /// /// public ReportBusinessController( ILogger logger, IConfiguration configuration ) { _logger = logger; _configuration = configuration; _peisDb = new SqlSugarClient(new ConnectionConfig() { ConnectionString = _configuration.GetSection("ConnectionStrings:Default").Value, DbType = SqlSugar.DbType.SqlServer, IsAutoCloseConnection = true }); _lisDb = new SqlSugarClient(new ConnectionConfig() { ConnectionString = _configuration.GetSection("ConnectionStrings:Lis").Value, DbType = SqlSugar.DbType.SqlServer, IsAutoCloseConnection = true }); } /// /// 根据身份证号码获取体检报告 /// /// /// [HttpPost] public async Task GetPeisReportByIdNoAsync(GetPeisReportByIdNoInputDto input) { var result = new GetPeisReportByIdNoDto { Code = 100, Message = "请求失败" }; if (string.IsNullOrWhiteSpace(input.IdNo)) { result.Message = "身份证不能为空"; return result; } try { var query = await _peisDb.Ado.GetDataTableAsync($"select top {input.ReportCount} patient_register_id,barcode_no,medical_times,id_card_no," + $"medical_start_date,mobile_telephone,name as patient_name" + $" from patient_register " + $" where id_card_no='{input.IdNo}' and create_pdf_flag='1' order by patient_register_id desc "); if (query.Rows.Count > 0) { List patientRegisterList = new List(); foreach (DataRow row in query.Rows) { var patientRegister = new GetPeisReportByIdNoResultDataDto { BarcodeNo = row["barcode_no"].ToString(), MedicalDate = Convert.ToDateTime(row["medical_start_date"].ToString()).ToString("yyyy-MM-dd"), MedicalTimes = row["medical_times"].ToString(), MobileTelephone = row["mobile_telephone"].ToString(), PatientName = row["patient_name"].ToString(), IdNo = row["id_card_no"].ToString() }; var patientRegisterId = row["patient_register_id"].ToString(); string directoryDate = patientRegisterId.Substring(0, 6); string hostAddress = _configuration.GetSection("HostAddress").Value; string reportVirtual = _configuration.GetSection("ReportVirtualPath:RequestPath").Value; string reportUrl = $"{hostAddress + reportVirtual}/{directoryDate}/{patientRegisterId}({patientRegister.PatientName}).pdf"; patientRegister.ReportUrl = reportUrl; patientRegisterList.Add(patientRegister); } result.Message = "请求成功"; result.Data = patientRegisterList; result.Code = 200; } else { result.Code = 100; result.Message = "身份证号未查到体检数据"; } } catch (Exception ex) { result.Message = ex.Message; _logger.LogError($"访问GetPeisReportByIdNoAsync异常,异常信息:{ex.Message}"); } return result; } /// /// 根据身份证号码获取检验报告 /// /// /// [HttpPost] public async Task GetLisReportByIdNoAsync(GetLisReportByIdNoInputDto input) { var result = new GetLisReportByIdNoDto { Code = 100, Message = "请求失败" }; if (string.IsNullOrWhiteSpace(input.IdNo)) { result.Message = "身份证不能为空"; return result; } try { var query = await _lisDb.Ado.GetDataTableAsync($" select patient_register_id,patient_name,inspection_purpose,telephone,send_datetime from patient_register" + $" where upload_web_flag='Y' and inspection_datetime>= DATEADD(DAY,-{input.ReportDay},GETDATE()) " + $" and recieve_source_primarykey in " + $" (select recieve_source_primarykey from patient_request where id_card_no='{input.IdNo}' ) order by patient_register_id desc "); if (query.Rows.Count > 0) { List patientRegisterList = new List(); foreach (DataRow row in query.Rows) { var patientRegister = new GetLisReportByIdNoResultDataDto { InspectionPurpose = row["inspection_purpose"].ToString(), SendDateTime = Convert.ToDateTime(row["send_datetime"].ToString()).ToString("yyyy-MM-dd"), MobileTelephone = row["telephone"].ToString(), PatientName = row["patient_name"].ToString(), IdNo = input.IdNo }; var patientRegisterId = row["patient_register_id"].ToString(); string hostAddress = _configuration.GetSection("HostAddress").Value; string reportVirtual = _configuration.GetSection("LisReportVirtualPath:RequestPath").Value; string reportUrl = $"{hostAddress + reportVirtual}/{patientRegisterId}.pdf"; patientRegister.ReportUrl = reportUrl; patientRegisterList.Add(patientRegister); } result.Message = "请求成功"; result.Data = patientRegisterList; result.Code = 200; } else { result.Code = 100; result.Message = "身份证号未查到检验报告数据"; } } catch (Exception ex) { result.Message = ex.Message; _logger.LogError($"访问GetLisReportByIdNoAsync异常,异常信息:{ex.Message}"); } return result; } #region 身份验证 ///// ///// 登陆 ///// ///// //[HttpPost] //[AllowAnonymous] //public ActionResult Logon() //{ // var userId = "001"; // var userName = "wenxiande"; // var roleName = "Bus"; // var claims = new List() // { // new Claim("UserId",userId), // new Claim(ClaimTypes.Sid,userId), // new Claim("UserName",userName), // new Claim(ClaimTypes.Name,userName) // }; // claims.Add(new Claim(ClaimTypes.Role, roleName)); // JwtHelper jwtHelper = new JwtHelper(); // return jwtHelper.GetJwt(claims); //} ///// ///// 查询测试 ///// ///// //[HttpPost] //[Authorize(Roles = "Bus")] //public PublicResultDto TestSqlAsync() //{ // var result = new PublicResultDto // { // Code = 200, // Message = "请求成功" // }; // return result; //} #endregion } }