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.

247 lines
9.4 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using Dapper;
  2. using Npgsql;
  3. using Shentun.Peis.Enums;
  4. using Shentun.Peis.PlugIns.PatientRegisters;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data.Common;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace Shentun.Peis.PlugIns.ChargeRequests
  12. {
  13. public class ChargeRequestPlugInsBase : ThirdPlugInsBase
  14. {
  15. public ChargeRequestPlugInsBase(Guid thirdInterfaceId) : base(thirdInterfaceId)
  16. {
  17. }
  18. public ChargeRequestPlugInsBase(string parmValue) : base(parmValue)
  19. {
  20. }
  21. public virtual async Task<ChargeRequestPlugInsOut> SendChargeRequestAsync(ChargeRequestPlugInsInput input)
  22. {
  23. var result = new ChargeRequestPlugInsOut();
  24. return result;
  25. }
  26. public virtual async Task<ChargeRequestPlugInsOut> CancelChargeRequestAsync(ChargeRequestPlugInsInput input)
  27. {
  28. var result = new ChargeRequestPlugInsOut();
  29. return result;
  30. }
  31. public virtual async Task<ChargeRequestPlugInsOut> RefundRequestAsync(ChargeRequestPlugInsInput input)
  32. {
  33. var result = new ChargeRequestPlugInsOut();
  34. return result;
  35. }
  36. public async Task<PatientRegisterForPlugIns> GetPatientRegisterAsync(Guid chargeRequestId)
  37. {
  38. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  39. {
  40. string sql;
  41. sql = @"SELECT DISTINCT patient.id as patient_id,
  42. patient_register.id as patient_register_id,
  43. patient_register.patient_register_no,
  44. patient.patient_no ,
  45. patient_register.his_patient_id,
  46. patient_register.medical_center_id,
  47. patient_register.patient_name,
  48. patient_register.sex_id,
  49. patient_register.marital_status_id,
  50. patient_register.birth_date,
  51. patient_register.age,
  52. patient.nation_id,
  53. patient.id_no,
  54. patient.email,
  55. patient.telephone,
  56. patient.mobile_telephone,
  57. patient.address
  58. from patient,patient_register,charge_request
  59. where patient.id = patient_register.patient_id and
  60. patient_register.id = charge_request.patient_register_id and
  61. charge_request.id =@ChargeRequestId
  62. ";
  63. var patientRegisterForPlugIns = (await conn.QueryAsync<PatientRegisterForPlugIns>(sql,
  64. new { ChargeRequestId = chargeRequestId })).SingleOrDefault();
  65. return patientRegisterForPlugIns;
  66. }
  67. }
  68. public async Task<ChargeRequestForPlugIns> GetChargeRequestAsync(Guid chargeRequestId)
  69. {
  70. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  71. {
  72. string sql;
  73. sql = @"SELECT id as charge_request_id,
  74. charge_request_no,
  75. his_charge_no,
  76. charge_request_flag,
  77. concurrency_stamp
  78. FROM charge_request
  79. WHERE id =@ChargeRequestId
  80. ";
  81. var chargeRequestForPlugIns = (await conn.QueryAsync<ChargeRequestForPlugIns>(sql,
  82. new { ChargeRequestId = chargeRequestId })).SingleOrDefault();
  83. if (chargeRequestForPlugIns == null)
  84. {
  85. return null;
  86. }
  87. sql = @"
  88. SELECT register_check_asbitem.asbitem_id,
  89. asbitem.display_name as asbitem_name,
  90. register_check_asbitem.amount * register_check_asbitem.charge_price as charges,
  91. register_check_asbitem.concurrency_stamp
  92. from register_check
  93. JOIN register_check_asbitem on register_check.id = register_check_asbitem.register_check_id
  94. JOIN charge_request on register_check_asbitem.charge_request_id = charge_request.id
  95. JOIN asbitem on register_check_asbitem.asbitem_id = asbitem.id
  96. where
  97. charge_request.id=@ChargeRequestId
  98. ";
  99. chargeRequestForPlugIns.Asbitems = (await conn.QueryAsync<ChargeRequestAsbitemForPlugIns>(sql,
  100. new { ChargeRequestId = chargeRequestId })).ToList();
  101. return chargeRequestForPlugIns;
  102. }
  103. }
  104. public async Task<List<ChargeRequestForPlugIns>> GetRequestsAsync(int days)
  105. {
  106. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  107. {
  108. string sql;
  109. var startDate = DateTime.Now.Date.AddDays(-days);
  110. sql = @"SELECT id as charge_request_id,
  111. charge_request_no,
  112. his_charge_no,
  113. charge_request_flag,
  114. concurrency_stamp
  115. FROM charge_request
  116. WHERE (charge_request_flag = '0' or
  117. charge_request_flag = '2' or
  118. charge_request_flag = '4')and
  119. creation_time >@StartDate
  120. ";
  121. var chargeRequestForPlugInss = (await conn.QueryAsync<ChargeRequestForPlugIns>(sql,
  122. new { StartDate = startDate })).ToList();
  123. return chargeRequestForPlugInss;
  124. }
  125. }
  126. //public async Task CancelAppChargeRequestAsync(Guid chargeRequestId)
  127. //{
  128. // using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  129. // {
  130. // string sql;
  131. // sql = @" update charge_request set charge_request_flag = '2' where id = @ChargeRequestId
  132. // ";
  133. // conn.Execute(sql,
  134. // new { ChargeRequestId = chargeRequestId });
  135. // }
  136. //}
  137. //public async Task RefundAppChargeRequestAsync(Guid chargeRequestId)
  138. //{
  139. // using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  140. // {
  141. // string sql;
  142. // sql = @" update charge_request set charge_request_flag = '3' where id = @ChargeRequestId
  143. // ";
  144. // conn.Execute(sql,
  145. // new { ChargeRequestId = chargeRequestId });
  146. // }
  147. //}
  148. public async Task SetAppChargeRequestFlagAsync(ChargeRequestForPlugIns chargeRequestForPlugIns,
  149. char chargeRequestFlag)
  150. {
  151. using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
  152. {
  153. await conn.OpenAsync();
  154. using (var trans = await conn.BeginTransactionAsync())
  155. {
  156. try
  157. {
  158. string sql;
  159. sql = @" update charge_request set charge_request_flag =" + chargeRequestFlag +
  160. @" where id = @ChargeRequestId and concurrency_stamp = @ConcurrencyStamp
  161. ";
  162. await conn.ExecuteAsync(sql,
  163. new
  164. {
  165. chargeRequestForPlugIns.ChargeRequestId,
  166. chargeRequestForPlugIns.ConcurrencyStamp
  167. }, trans);
  168. foreach (var chargeRequestAsbitem in chargeRequestForPlugIns.Asbitems)
  169. {
  170. if (chargeRequestFlag == ChargeRequestFlag.AlreadyCharge)
  171. {
  172. sql = @" update register_check_asbitem set is_charge = 'Y',pay_type_flag='0'
  173. where charge_request_id = @ChargeRequestId and concurrency_stamp = @ConcurrencyStamp
  174. ";
  175. await conn.ExecuteAsync(sql,
  176. new
  177. {
  178. chargeRequestForPlugIns.ChargeRequestId,
  179. chargeRequestAsbitem.ConcurrencyStamp
  180. }, trans);
  181. }
  182. else if (chargeRequestFlag == ChargeRequestFlag.AlreadyRefund)
  183. {
  184. sql = @" update register_check_asbitem set is_charge = 'N'
  185. where charge_request_id = @ChargeRequestId and concurrency_stamp = @ConcurrencyStamp
  186. ";
  187. await conn.ExecuteAsync(sql,
  188. new
  189. {
  190. chargeRequestForPlugIns.ChargeRequestId,
  191. chargeRequestAsbitem.ConcurrencyStamp
  192. }, trans);
  193. }
  194. }
  195. await trans.CommitAsync();
  196. }
  197. catch (Exception ex)
  198. {
  199. await trans.RollbackAsync();
  200. throw ex;
  201. }
  202. }
  203. }
  204. }
  205. public virtual async Task SyncChargeRequestFlagFromInterfaceAsync(ChargeRequestPlugInsInput input)
  206. {
  207. }
  208. }
  209. public class ChargeRequestPlugInsInput
  210. {
  211. public Guid ChargeRequestId { get; set; }
  212. }
  213. //public class ChargeRequestAsbitemPlugInsInput
  214. //{
  215. //}
  216. public class ChargeRequestPlugInsOut
  217. {
  218. public string? ThirdChargeRequestId { get; set; }
  219. }
  220. }