Browse Source

收费价格同步

master
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
49b2967752
  1. 127
      src/Shentun.ColumnReferencePlugIns/SyncAsbitemPrice/AsbitemForSyncAsbitem.cs
  2. 17
      src/Shentun.ColumnReferencePlugIns/SyncAsbitemPrice/AsbitemFromSyncAsbitemInterface.cs
  3. 84
      src/Shentun.ColumnReferencePlugIns/SyncAsbitemPrice/SyncAsbitemPricePlugInsBase.cs
  4. 56
      src/Shentun.ColumnReferencePlugIns/SyncAsbitemPrice/SyncAsbitemPricePlugInsDbBase.cs

127
src/Shentun.ColumnReferencePlugIns/SyncAsbitemPrice/AsbitemForSyncAsbitem.cs

@ -0,0 +1,127 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.Peis.PlugIns.SyncAsbitemPrice
{
public class AsbitemForSyncAsbitem
{
public Guid Id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string DisplayName { get; set; }
/// <summary>
/// 简称
/// </summary>
public string ShortName { get; set; }
/// <summary>
/// 适用性别,M-男,F-女,A-全部
/// </summary>
public char ForSexId { get; set; }
/// <summary>
/// 婚姻状况
/// </summary>
public char MaritalStatusId { get; set; }
/// <summary>
/// 项目类别
/// </summary>
public Guid ItemTypeId { get; set; }
/// <summary>
/// 价格
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 仪器类别
/// </summary>
public Guid? DeviceTypeId { get; set; }
///// <summary>
///// 发票类别
///// </summary>
//public Guid InvoiceItemTypeId { get; set; }
/// <summary>
/// 项目结果合并
/// </summary>
public char IsItemResultMerger { get; set; }
/// <summary>
/// 餐前项目
/// </summary>
public char IsBeforeEat { get; set; }
/// <summary>
/// 临床意义
/// </summary>
public string ClinicalMeaning { get; set; }
/// <summary>
/// 默认结果
/// </summary>
public string DefaultResult { get; set; }
/// <summary>
/// 候诊时间
/// </summary>
public decimal QueueTime { get; set; }
/// <summary>
/// 启用诊断函数
/// </summary>
public char IsDiagnosisFunction { get; set; }
/// <summary>
/// 诊断函数
/// </summary>
public string DiagnosisFunction { get; set; }
/// <summary>
/// 诊断函数处理完毕后继续处理
/// </summary>
public char IsContinueProcess { get; set; }
/// <summary>
/// 体检报告图片旋转90°
/// </summary>
public char IsPictureRotate { get; set; }
/// <summary>
/// 是检查项目
/// </summary>
public char IsCheck { get; set; }
/// <summary>
/// 是启用
/// </summary>
public char IsActive { get; set; }
public string SimpleCode { get; set; }
public int DisplayOrder { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

17
src/Shentun.ColumnReferencePlugIns/SyncAsbitemPrice/AsbitemFromSyncAsbitemInterface.cs

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.Peis.PlugIns.SyncAsbitemPrice
{
public class AsbitemFromSyncAsbitemInterface
{
public string AsbitemId { get; set; }
public string AsbitemName { get; set; }
public decimal? Price { get; set; }
}
}

84
src/Shentun.ColumnReferencePlugIns/SyncAsbitemPrice/SyncAsbitemPricePlugInsBase.cs

@ -0,0 +1,84 @@
using Dapper;
using Npgsql;
using Shentun.Peis.Asbitems;
using Shentun.Peis.Enums;
using Shentun.Peis.PlugIns.ChargeRequests;
using Shentun.Peis.PlugIns.LisRequests;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.Peis.PlugIns.SyncAsbitemPrice
{
public class SyncAsbitemPricePlugInsBase : ThirdPlugInsBase
{
public SyncAsbitemPricePlugInsBase(Guid thirdInterfaceId) : base(thirdInterfaceId)
{
}
public virtual async Task SyncAsbitemPriceAsync()
{
}
public async Task<List<AsbitemForSyncAsbitem>> GetAsbitemsAsync()
{
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
string sql;
sql = @" select * from asbitem
";
var asbitems = (await conn.QueryAsync<AsbitemForSyncAsbitem>(sql
)).ToList();
return asbitems;
}
}
public async Task UpdateAsbitemPriceAsync(AsbitemForSyncAsbitem asbitem)
{
using (DbConnection conn = new NpgsqlConnection(AppConnctionStr))
{
await conn.OpenAsync();
using (var trans = await conn.BeginTransactionAsync())
{
try
{
string sql;
sql = @" update asbitem set price = @Price" +
@" where id = @AsbitemId and concurrency_stamp = @ConcurrencyStamp
";
await conn.ExecuteAsync(sql,
new
{
asbitem.Price,
asbitem.Id,
asbitem.ConcurrencyStamp
}, trans);
await trans.CommitAsync();
}
catch (Exception ex)
{
await trans.RollbackAsync();
throw ex;
}
}
}
}
public override Task DoWork()
{
SyncAsbitemPriceAsync().Wait();
return Task.CompletedTask;
}
}
}

56
src/Shentun.ColumnReferencePlugIns/SyncAsbitemPrice/SyncAsbitemPricePlugInsDbBase.cs

@ -0,0 +1,56 @@
using Dapper;
using Npgsql;
using Org.BouncyCastle.Asn1.Ocsp;
using Shentun.Peis.Asbitems;
using Shentun.Peis.PlugIns.ImportLisResults;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
namespace Shentun.Peis.PlugIns.SyncAsbitemPrice
{
public class SyncAsbitemPricePlugInsDbBase : SyncAsbitemPricePlugInsBase
{
public SyncAsbitemPricePlugInsDbBase(Guid thirdInterfaceId) : base(thirdInterfaceId)
{
}
public override async Task SyncAsbitemPriceAsync()
{
if (AsbitemColumnReferenceId == null || AsbitemColumnReferenceId == Guid.Empty)
{
throw new Exception("没有设置组合项目编码对照");
}
var asbitems = await GetAsbitemsAsync();
using (DbConnection conn = CreateInterfaceDbConnect())
{
foreach (var asbItem in asbitems)
{
var interfaceAsbitemId = await GetColumnReferenceInterfaceCodeValuesAsync(AsbitemColumnReferenceId, asbItem.Id.ToString());
string sql;
sql = InterfaceSql + " where " + InterfaceSqlKeyColumn + " = '" + interfaceAsbitemId + "'";
var interfaceAsbitems = (await conn.QueryAsync<AsbitemFromSyncAsbitemInterface>(sql)).ToList();
if (interfaceAsbitems == null || !interfaceAsbitems.Any())
{
continue;
}
var interfaceAsbitem = interfaceAsbitems.First();
if(interfaceAsbitem.Price == null || interfaceAsbitem.Price < 0)
{
continue;
}
asbItem.Price = (decimal)interfaceAsbitem.Price;
await UpdateAsbitemPriceAsync(asbItem);
}
}
}
}
}
Loading…
Cancel
Save