Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

77 lines
3.4KB

  1. using HealthMonitor.Model.Config;
  2. using HealthMonitor.Service.Biz.db;
  3. using HealthMonitor.WebApi.Configs;
  4. using HealthMonitor.WebApi.Controllers.Api;
  5. using HealthMonitor.WebApi.Model.Request;
  6. using Microsoft.AspNetCore.Http;
  7. using Microsoft.AspNetCore.Mvc;
  8. using Microsoft.Extensions.Options;
  9. using TelpoDataService.Util.Entities.GpsCard;
  10. using TelpoDataService.Util.Entities.GpsLocationHistory;
  11. namespace HealthMonitor.WebApi.Controllers.HealthMonitor
  12. {
  13. [ApiExplorerSettings(GroupName = AppConsts.SWAGGER_DOC_HealthMonitor)]
  14. [Produces("application/json")]
  15. [Route("api/HealthMonitor/[controller]/[action]")]
  16. [ApiController]
  17. public class HmBloodPressController : ControllerBase
  18. {
  19. private readonly ILogger<HmBloodPressController> _logger;
  20. private readonly TDengineService _serviceTDengine;
  21. private readonly TDengineServiceConfig _configTDengineService;
  22. public HmBloodPressController(TDengineService serviceDengine, IOptions<TDengineServiceConfig> configTDengineService, ILogger<HmBloodPressController> logger)
  23. {
  24. _serviceTDengine = serviceDengine;
  25. _logger = logger;
  26. _configTDengineService = configTDengineService.Value;
  27. }
  28. [HttpPost]
  29. public async Task<ApiResponse<object>> Add([FromBody] HmBloodPress reqModel, [FromHeader] string requestId)
  30. {
  31. try
  32. {
  33. HisGpsBloodPress model = new HisGpsBloodPress()
  34. {
  35. BloodPressId = reqModel.BloodPressId,
  36. DiastolicValue = reqModel.DiastolicValue,
  37. IsDisplay = reqModel.IsDisplay,
  38. MessageId = reqModel.MessageId,
  39. Method = reqModel.Method,
  40. Serialno = reqModel.Serialno,
  41. SystolicValue = reqModel.SystolicValue,
  42. CreateTime = DateTime.Parse(reqModel.CreateTime.ToString()),
  43. LastUpdate = DateTime.Parse(reqModel.LastUpdate.ToString()),
  44. };
  45. var serial_tail_no = model.Serialno.Substring(model.Serialno.Length - 2);
  46. var sql = $"INSERT INTO {_configTDengineService.DB}.hm_bp_{serial_tail_no} USING {_configTDengineService.DB}.stb_hm_bloodpress TAGS ('{serial_tail_no}') VALUES(" +
  47. $"'{model.LastUpdate:yyyy-MM-dd HH:mm:ss.fff}'," +
  48. $"'{model.BloodPressId}'," +
  49. $"'{model.MessageId}'," +
  50. $"'{model.Serialno}'," +
  51. $"{model.SystolicValue}," +
  52. $"{model.DiastolicValue}," +
  53. $"'{model.CreateTime:yyyy-MM-dd HH:mm:ss.fff}'," +
  54. $"'{model.LastUpdate:yyyy-MM-dd HH:mm:ss.fff}'," +
  55. $"{model.Method}," +
  56. $"{model.IsDisplay == 1})";
  57. var flag= await _serviceTDengine.GernalRestSql(sql);
  58. if (flag) return ApiResponse<object>.Success(model);
  59. }
  60. catch (Exception ex)
  61. {
  62. _logger.LogInformation($"{reqModel.Serialno} -- {reqModel.MessageId} -- 血压数据插入失败; {ex.Message}\n {ex.InnerException} \n{ex.StackTrace}");
  63. }
  64. return ApiResponse<object>.Fail(500, $"{reqModel.Serialno} -- {reqModel.MessageId} -- 血压数据插入失败");
  65. }
  66. }
  67. }