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.

228 lines
8.4 KiB

  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.Extensions.Configuration.UserSecrets;
  4. using Newtonsoft.Json;
  5. using Shentun.PeisReport.Api.Dto;
  6. using SqlSugar;
  7. using System.Data;
  8. namespace Shentun.PeisReport.Api.Controllers
  9. {
  10. [Route("api/[controller]/[action]")]
  11. [ApiController]
  12. public class PeisController : ControllerBase
  13. {
  14. private readonly SqlSugarClient _peisDb;
  15. private readonly IConfiguration _configuration;
  16. private readonly ILogger<PeisController> _logger;
  17. public PeisController(
  18. IConfiguration configuration,
  19. ILogger<PeisController> logger)
  20. {
  21. _configuration = configuration;
  22. _logger = logger;
  23. _peisDb = new SqlSugarClient(new ConnectionConfig()
  24. {
  25. ConnectionString = _configuration.GetSection("ConnectionStrings:Default").Value,
  26. DbType = SqlSugar.DbType.SqlServer,
  27. IsAutoCloseConnection = true
  28. });
  29. }
  30. /// <summary>
  31. /// 根据身份证号码获取体检列表
  32. /// </summary>
  33. /// <param name="input"></param>
  34. /// <returns></returns>
  35. [HttpPost]
  36. public async Task<PatientRegisterListDto> GetPatientRegisterListAsync(IdNoInputDto input)
  37. {
  38. var result = new PatientRegisterListDto
  39. {
  40. Code = 100,
  41. Message = "请求失败"
  42. };
  43. if (string.IsNullOrWhiteSpace(input.IdNo))
  44. {
  45. result.Message = "身份证不能为空";
  46. return result;
  47. }
  48. try
  49. {
  50. var query = await _peisDb.Ado.GetDataTableAsync($"select b.sex_name,a.patient_register_id,a.age,a.barcode_no,a.medical_times," +
  51. $"a.medical_start_date,a.mobile_telephone,a.name as patient_name" +
  52. $" from patient_register as a left join sex as b " +
  53. $" on a.sex_id=b.sex_id where id_card_no='{input.IdNo}' and audit_flag='Y' ");
  54. if (query.Rows.Count > 0)
  55. {
  56. List<PatientRegisterListResultDataDto> patientRegisterList = new List<PatientRegisterListResultDataDto>();
  57. foreach (DataRow row in query.Rows)
  58. {
  59. patientRegisterList.Add(new PatientRegisterListResultDataDto
  60. {
  61. age = row["age"].ToString(),
  62. barcode_no = row["barcode_no"].ToString(),
  63. medical_date = Convert.ToDateTime(row["medical_start_date"].ToString()).ToString("yyyy-MM-dd"),
  64. medical_time = row["medical_times"].ToString(),
  65. mobile_telephone = row["mobile_telephone"].ToString(),
  66. name = row["patient_name"].ToString(),
  67. patient_register_id = row["patient_register_id"].ToString(),
  68. sex = row["sex_name"].ToString()
  69. });
  70. }
  71. result.Message = "请求成功";
  72. result.Data = patientRegisterList;
  73. result.Code = 200;
  74. }
  75. else
  76. {
  77. result.Code = 100;
  78. result.Message = "身份证号未查到体检数据";
  79. }
  80. }
  81. catch (Exception ex)
  82. {
  83. result.Message = ex.Message;
  84. _logger.LogError($"访问GetPatientRegisterListAsync异常,异常信息:{ex.Message}");
  85. }
  86. return result;
  87. }
  88. /// <summary>
  89. /// 根据人员id获取体检报告地址
  90. /// </summary>
  91. /// <param name="input"></param>
  92. /// <returns></returns>
  93. [HttpPost]
  94. public async Task<PeisReportUrlByPatientRegisterIdDto> GetPeisReportUrlByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
  95. {
  96. var result = new PeisReportUrlByPatientRegisterIdDto
  97. {
  98. Code = 100,
  99. Message = "请求失败"
  100. };
  101. if (string.IsNullOrWhiteSpace(input.PatientRegisterId))
  102. {
  103. result.Message = "人员Id不能为空";
  104. return result;
  105. }
  106. try
  107. {
  108. var query = await _peisDb.Ado.GetDataTableAsync($"select name as patient_name from patient_register where patient_register_id='{input.PatientRegisterId}' and create_pdf_flag='1'");
  109. if (query.Rows.Count > 0)
  110. {
  111. string patientName = query.Rows[0]["patient_name"].ToString();
  112. string directoryDate = input.PatientRegisterId.Substring(0, 6);
  113. string hostAddress = _configuration.GetSection("HostAddress").Value;
  114. string reportVirtual = _configuration.GetSection("ReportVirtualPath:RequestPath").Value;
  115. string reportUrl = $"{hostAddress + reportVirtual}/{directoryDate}/{input.PatientRegisterId}({patientName}).pdf";
  116. result.Message = "请求成功";
  117. result.Data = new PeisReportUrlByPatientRegisterIdResultDataDto { peis_report_url = reportUrl };
  118. result.Code = 200;
  119. }
  120. else
  121. {
  122. result.Code = 100;
  123. result.Message = "未上传报告";
  124. }
  125. }
  126. catch (Exception ex)
  127. {
  128. result.Message = ex.Message;
  129. _logger.LogError($"访问GetPeisReportUrlByPatientRegisterIdAsync异常,异常信息:{ex.Message}");
  130. }
  131. return result;
  132. }
  133. /// <summary>
  134. /// 获取当前人员的排队情况
  135. /// </summary>
  136. /// <param name="input"></param>
  137. /// <returns></returns>
  138. [HttpPost]
  139. public async Task<QueueRegisterByBarCodeNoDto> GetQueueRegisterByBarCodeNoAsync(BarCodeNoInputDto input)
  140. {
  141. var result = new QueueRegisterByBarCodeNoDto
  142. {
  143. Code = 100,
  144. Message = "请求失败"
  145. };
  146. if (string.IsNullOrWhiteSpace(input.BarCodeNo))
  147. {
  148. result.Message = "条码不能为空";
  149. return result;
  150. }
  151. try
  152. {
  153. var query = await _peisDb.Ado.GetDataTableAsync($" select a.queue_register_id,a.room_id,c.room_name,b.name as patient_name from queue_register as a " +
  154. $" left join patient_register as b on a.patient_register_id=b.patient_register_id " +
  155. $" left join room as c on a.room_id=c.room_id " +
  156. $" where b.barcode_no='{input.BarCodeNo}' and a.complete_flag='0' and created_date >= convert(varchar(10),getdate(),121)");
  157. if (query.Rows.Count > 0)
  158. {
  159. string patientName = query.Rows[0]["patient_name"].ToString();
  160. string roomId = query.Rows[0]["room_id"].ToString();
  161. string roomName = query.Rows[0]["room_name"].ToString();
  162. string queueRegisterId = query.Rows[0]["queue_register_id"].ToString();
  163. var queueCount = _peisDb.Ado.SqlQuerySingle<int>($" select count(queue_register_id) as pdcount from queue_register " +
  164. $" where room_id='{roomId}' and complete_flag = '0' and queue_register_id<'{queueRegisterId}' and created_date >= convert(varchar(10),getdate(),121)");
  165. result.Message = "请求成功";
  166. result.Data = new QueueRegisterByBarCodeNoResultDataDto
  167. {
  168. patient_name = patientName,
  169. queue_count = queueCount,
  170. room_name = roomName
  171. };
  172. result.Code = 200;
  173. }
  174. else
  175. {
  176. result.Code = 100;
  177. result.Message = "当前无排队信息";
  178. }
  179. }
  180. catch (Exception ex)
  181. {
  182. result.Message = ex.Message;
  183. _logger.LogError($"访问GetQueueRegisterByBarCodeNoAsync异常,异常信息:{ex.Message}");
  184. }
  185. return result;
  186. }
  187. }
  188. }