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.
225 lines
8.6 KiB
225 lines
8.6 KiB
using Dapper;
|
|
using Npgsql;
|
|
using Shentun.Peis.Enums;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data.Common;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Shentun.Peis.PlugIns
|
|
{
|
|
public class ChargeRequestPlugInsBase : ThirdPlugInsBase
|
|
{
|
|
public ChargeRequestPlugInsBase(string parmValue) : base(parmValue)
|
|
{
|
|
}
|
|
|
|
public virtual async Task<ChargeRequestPlugInsOut> SendChargeRequestAsync(ChargeRequestPlugInsInput input)
|
|
{
|
|
var result = new ChargeRequestPlugInsOut();
|
|
return result;
|
|
}
|
|
|
|
public virtual async Task<ChargeRequestPlugInsOut> CancelChargeRequestAsync(ChargeRequestPlugInsInput input)
|
|
{
|
|
var result = new ChargeRequestPlugInsOut();
|
|
return result;
|
|
}
|
|
public virtual async Task<ChargeRequestPlugInsOut> RefundRequestAsync(ChargeRequestPlugInsInput input)
|
|
{
|
|
var result = new ChargeRequestPlugInsOut();
|
|
return result;
|
|
}
|
|
|
|
public async Task<PatientRegisterForPlugIns> GetPatientRegisterAsync(Guid chargeRequestId)
|
|
{
|
|
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
|
|
{
|
|
string sql;
|
|
sql = @"SELECT DISTINCT patient.id as patient_id,
|
|
patient_register.id as patient_register_id,
|
|
patient_register.patient_register_no,
|
|
patient.patient_no ,
|
|
patient_register.his_patient_id,
|
|
patient_register.medical_center_id,
|
|
patient_register.patient_name,
|
|
patient_register.sex_id,
|
|
patient_register.marital_status_id,
|
|
patient_register.birth_date,
|
|
patient_register.age,
|
|
patient.nation_id,
|
|
patient.id_no,
|
|
patient.email,
|
|
patient.telephone,
|
|
patient.mobile_telephone,
|
|
patient.address
|
|
from patient,patient_register,charge_request
|
|
where patient.id = patient_register.patient_id and
|
|
patient_register.id = charge_request.patient_register_id and
|
|
charge_request.id =@ChargeRequestId
|
|
";
|
|
var patientRegisterForPlugIns = (await conn.QueryAsync<PatientRegisterForPlugIns>(sql,
|
|
new { ChargeRequestId = chargeRequestId })).SingleOrDefault();
|
|
return patientRegisterForPlugIns;
|
|
}
|
|
|
|
}
|
|
|
|
public async Task<ChargeRequestForPlugIns> GetChargeRequestAsync(Guid chargeRequestId)
|
|
{
|
|
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
|
|
{
|
|
string sql;
|
|
sql = @"SELECT id as charge_request_id,
|
|
charge_request_no,
|
|
his_charge_no,
|
|
charge_request_flag,
|
|
concurrency_stamp
|
|
FROM charge_request
|
|
WHERE id =@ChargeRequestId
|
|
";
|
|
var chargeRequestForPlugIns = (await conn.QueryAsync<ChargeRequestForPlugIns>(sql,
|
|
new { ChargeRequestId = chargeRequestId })).SingleOrDefault();
|
|
if (chargeRequestForPlugIns == null)
|
|
{
|
|
return null;
|
|
}
|
|
sql = @"
|
|
SELECT register_check_asbitem.asbitem_id,
|
|
asbitem.display_name as asbitem_name,
|
|
register_check_asbitem.amount * register_check_asbitem.charge_price as charges,
|
|
register_check_asbitem.concurrency_stamp
|
|
from register_check
|
|
JOIN register_check_asbitem on register_check.id = register_check_asbitem.register_check_id
|
|
JOIN charge_request on register_check_asbitem.charge_request_id = charge_request.id
|
|
JOIN asbitem on register_check_asbitem.asbitem_id = asbitem.id
|
|
where
|
|
charge_request.id=@ChargeRequestId
|
|
";
|
|
|
|
chargeRequestForPlugIns.Asbitems = (await conn.QueryAsync<ChargeRequestAsbitemForPlugIns>(sql,
|
|
new { ChargeRequestId = chargeRequestId })).ToList();
|
|
|
|
return chargeRequestForPlugIns;
|
|
}
|
|
}
|
|
|
|
public async Task<List<ChargeRequestForPlugIns>> GetRequests(int days)
|
|
{
|
|
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
|
|
{
|
|
string sql;
|
|
var startDate = DateTime.Now.Date.AddDays(-days);
|
|
sql = @"SELECT id as charge_request_id,
|
|
charge_request_no,
|
|
his_charge_no,
|
|
charge_request_flag,
|
|
concurrency_stamp
|
|
FROM charge_request
|
|
WHERE (charge_request_flag = '0' or
|
|
charge_request_flag = '2' or
|
|
charge_request_flag = '4')and
|
|
creation_time >@StartDate
|
|
";
|
|
var chargeRequestForPlugInss = (await conn.QueryAsync<ChargeRequestForPlugIns>(sql,
|
|
new { StartDate = startDate })).ToList();
|
|
|
|
return chargeRequestForPlugInss;
|
|
}
|
|
|
|
}
|
|
|
|
//public async Task CancelAppChargeRequestAsync(Guid chargeRequestId)
|
|
//{
|
|
// using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
|
|
// {
|
|
// string sql;
|
|
// sql = @" update charge_request set charge_request_flag = '2' where id = @ChargeRequestId
|
|
// ";
|
|
// conn.Execute(sql,
|
|
// new { ChargeRequestId = chargeRequestId });
|
|
|
|
// }
|
|
//}
|
|
|
|
//public async Task RefundAppChargeRequestAsync(Guid chargeRequestId)
|
|
//{
|
|
// using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
|
|
// {
|
|
// string sql;
|
|
// sql = @" update charge_request set charge_request_flag = '3' where id = @ChargeRequestId
|
|
// ";
|
|
// conn.Execute(sql,
|
|
// new { ChargeRequestId = chargeRequestId });
|
|
// }
|
|
//}
|
|
|
|
public async Task SetAppChargeRequestFlagAsync(ChargeRequestForPlugIns chargeRequestForPlugIns,
|
|
char chargeRequestFlag)
|
|
{
|
|
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
|
|
{
|
|
//加ConcurrencyStamp,以防止并发
|
|
string sql;
|
|
sql = @" update charge_request set charge_request_flag =" + chargeRequestFlag +
|
|
@" where id = @ChargeRequestId and concurrency_stamp = @ConcurrencyStamp
|
|
";
|
|
conn.Execute(sql,
|
|
new { ChargeRequestId = chargeRequestForPlugIns.ChargeRequestId,
|
|
ConcurrencyStamp = chargeRequestForPlugIns.ConcurrencyStamp
|
|
});
|
|
|
|
foreach(var chargeRequestAsbitem in chargeRequestForPlugIns.Asbitems)
|
|
{
|
|
if (chargeRequestFlag == ChargeRequestFlag.AlreadyCharge)
|
|
{
|
|
sql = @" update register_check_asbitem set is_charge = 'Y'
|
|
where charge_request_id = @ChargeRequestId and concurrency_stamp = @ConcurrencyStamp
|
|
";
|
|
conn.Execute(sql,
|
|
new { ChargeRequestId = chargeRequestForPlugIns.ChargeRequestId,
|
|
ConcurrencyStamp = chargeRequestAsbitem.ConcurrencyStamp
|
|
});
|
|
}
|
|
else if (chargeRequestFlag == ChargeRequestFlag.AlreadyRefund)
|
|
{
|
|
sql = @" update register_check_asbitem set is_charge = 'N'
|
|
where charge_request_id = @ChargeRequestId and concurrency_stamp = @ConcurrencyStamp
|
|
";
|
|
conn.Execute(sql,
|
|
new
|
|
{
|
|
ChargeRequestId = chargeRequestForPlugIns.ChargeRequestId,
|
|
ConcurrencyStamp = chargeRequestAsbitem.ConcurrencyStamp
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
public virtual async Task SyncChargeRequestFlagFromInterfaceAsync(Guid chargeRequestId)
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
public class ChargeRequestPlugInsInput
|
|
{
|
|
public Guid ChargeRequestId { get; set; }
|
|
|
|
}
|
|
//public class ChargeRequestAsbitemPlugInsInput
|
|
//{
|
|
|
|
//}
|
|
public class ChargeRequestPlugInsOut
|
|
{
|
|
public string? ThirdChargeRequestId { get; set; }
|
|
}
|
|
}
|