3 Commits

Author SHA1 Message Date
wxd 7d373abd1e 长城更新前备份 2 months ago
wxd 14f91844bc 职业病 2 months ago
wxd 0ce5149366 事务冲突 3 months ago
  1. 104
      src/Shentun.Peis.Application/AIMessages/AIMessageAppService.cs
  2. 12
      src/Shentun.Peis.Application/BeiJingMZAKExportDatas/Class1.cs
  3. 121
      src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs
  4. 9
      src/Shentun.Peis.Application/InternalReports/InternalReportAppService.cs
  5. 172
      src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs
  6. 7
      src/Shentun.Peis.Application/MyUser/MyUserAppService.cs
  7. 28
      src/Shentun.Peis.Application/PeisReports/PeisReportAppService.cs
  8. 39
      src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
  9. 46
      src/Shentun.Peis.Domain/CacheService.cs
  10. 6
      src/Shentun.Peis.Domain/PatientOccupationalHistorys/PatientOccupationalHistory.cs
  11. 16377
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20250827091748_patient_occupational_history_update_length.Designer.cs
  12. 81
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20250827091748_patient_occupational_history_update_length.cs
  13. 14
      src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs
  14. 69
      src/Shentun.Peis.HttpApi.Host/Controllers/AiMessageWsController.cs
  15. 17
      src/Shentun.Peis.HttpApi.Host/appsettings.json

104
src/Shentun.Peis.Application/AIMessages/AIMessageAppService.cs

@ -133,5 +133,109 @@ namespace Shentun.Peis.AIMessages
}
return messageDto;
}
///// <summary>
///// 获取Ai回复内容 流式返回
///// </summary>
///// <param name="input"></param>
///// <returns></returns>
///// <exception cref="UserFriendlyException"></exception>
//[HttpPost("api/app/AIMessage/GetAIMessageResultStream")]
//public async Task<Stream> GetAIMessageResultStreamAsync(GetAIMessageResultInputDto input)
//{
// var messageDto = new GetAIMessageResultDto();
// if (string.IsNullOrWhiteSpace(input.Message))
// {
// throw new UserFriendlyException("请求内容不能为空");
// }
// var thirdInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(f => f.ThirdInterfaceType == ThirdInterfaceTypeFlag.WebAI);
// if (thirdInterface == null)
// {
// throw new UserFriendlyException("未配置第三方AI接口");
// }
// if (thirdInterface.IsActive != 'Y')
// {
// throw new UserFriendlyException("该接口已禁用");
// }
// var parmValue = thirdInterface.ParmValue;
// var configurationBuilder = new ConfigurationBuilder()
// .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
// var config = configurationBuilder.Build();
// var apiBaseAddress = config.GetSection("Interface").GetSection("BaseAddress").Value;
// var apiKey = config.GetSection("Interface").GetSection("ApiKey").Value;
// var aiType = config.GetSection("Interface").GetSection("AIType").Value;
// var modelValue = config.GetSection("Interface").GetSection("ModelValue").Value;
// if (aiType == AITypeFlag.DeepSeek)
// {
// using (HttpClient client = new HttpClient())
// {
// client.BaseAddress = new Uri(apiBaseAddress);
// // 设置API密钥或其他认证信息(如果有的话)
// client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
// //client.DefaultRequestHeaders.Add("Accept", "text/html");
// try
// {
// var requestBody = new
// {
// model = modelValue,
// messages = new[] { new { role = "user", content = input.Message } }
// //response_format = "html"
// };
// var response = await client.PostAsJsonAsync("chat/completions", requestBody);
// var result = await response.Content.ReadFromJsonAsync<DeepSeekResponse>();
// string data = result.Choices.First().Message.Content;
// //string dataHtml = data.Replace("### ", "").Replace("---", "").Replace("-", "");
// //var dataHtmlList = dataHtml.Split("**", StringSplitOptions.RemoveEmptyEntries).ToList();
// //StringBuilder stringBuilder = new StringBuilder();
// //foreach (var item in dataHtmlList)
// //{
// // var sindex = dataHtmlList.IndexOf(item) + 1;
// // if (sindex > 1)
// // {
// // if (sindex % 2 == 0)
// // {
// // stringBuilder.Append("<strong>" + item);
// // }
// // else
// // {
// // stringBuilder.Append("</strong>" + item);
// // }
// // }
// // else
// // {
// // stringBuilder.Append(item);
// // }
// //}
// //messageDto.Result = stringBuilder.ToString();
// string dataHtml = data.Replace("### ", "").Replace("---", "").Replace("-", "").Replace("**", "");
// messageDto.Result = dataHtml;
// }
// catch (HttpRequestException e)
// {
// throw new UserFriendlyException($"获取异常:{e.Message}");
// }
// }
// }
// else
// {
// throw new UserFriendlyException("AI接口类型不正确");
// }
// return messageDto;
//}
}
}

12
src/Shentun.Peis.Application/BeiJingMZAKExportDatas/Class1.cs

@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.Peis.BeiJingMZAKExportDatas
{
internal class Class1
{
}
}

121
src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs

@ -68,73 +68,76 @@ namespace Shentun.Peis.ChargeRequests
{
throw new UserFriendlyException("input参数不能为空");
}
var chargeRequest = new ChargeRequest();
var patientRegisterEnt = await _patientRegisterRepository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId);
if (patientRegisterEnt == null)
throw new UserFriendlyException("人员不存在");
var isThirdInterface = await _thirdInterfaceRepository.CountAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ChargeRequest
&& o.MedicalCenterId == patientRegisterEnt.MedicalCenterId && o.IsActive == 'Y');
if (isThirdInterface == 0)
return null;
var list = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync()
on registerCheckAsbitem.AsbitemId equals asbitem.Id
where registerCheck.PatientRegisterId == input.PatientRegisterId &&
input.RegisterCheckAsbitems.Select(o => o.RegisterCheckAsbitemId)
.Contains(registerCheckAsbitem.Id)
select new
{
registerCheckAsbitem,
asbitem
}).ToList();
var chargeRequestSource = new ChargeRequest()
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
PatientRegisterId = input.PatientRegisterId
};
var chargeRequest = await _chargeRequestManager.CreateAsync(chargeRequestSource);
//更新登记组合项目
foreach (var item in list)
{
if (item.registerCheckAsbitem.ChargeRequestId != null)
var patientRegisterEnt = await _patientRegisterRepository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId);
if (patientRegisterEnt == null)
throw new UserFriendlyException("人员不存在");
var isThirdInterface = await _thirdInterfaceRepository.CountAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ChargeRequest
&& o.MedicalCenterId == patientRegisterEnt.MedicalCenterId && o.IsActive == 'Y');
if (isThirdInterface == 0)
return null;
var list = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync()
on registerCheckAsbitem.AsbitemId equals asbitem.Id
where registerCheck.PatientRegisterId == input.PatientRegisterId &&
input.RegisterCheckAsbitems.Select(o => o.RegisterCheckAsbitemId)
.Contains(registerCheckAsbitem.Id)
select new
{
registerCheckAsbitem,
asbitem
}).ToList();
var chargeRequestSource = new ChargeRequest()
{
var haveChargeRequest = await _chargeRequestRepository.GetAsync((Guid)item.registerCheckAsbitem.ChargeRequestId);
if (haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.ChargeRequest ||
haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.CancelChargeRequest ||
haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.RefundRequest)
PatientRegisterId = input.PatientRegisterId
};
chargeRequest = await _chargeRequestManager.CreateAsync(chargeRequestSource);
//更新登记组合项目
foreach (var item in list)
{
if (item.registerCheckAsbitem.ChargeRequestId != null)
{
throw new UserFriendlyException($"{item.asbitem.DisplayName}已经处于收费、作废、退费申请状态");
var haveChargeRequest = await _chargeRequestRepository.GetAsync((Guid)item.registerCheckAsbitem.ChargeRequestId);
if (haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.ChargeRequest ||
haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.CancelChargeRequest ||
haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.RefundRequest)
{
throw new UserFriendlyException($"{item.asbitem.DisplayName}已经处于收费、作废、退费申请状态");
}
}
item.registerCheckAsbitem.ChargeRequestId = chargeRequest.Id;
await _registerCheckAsbitemRepository.UpdateAsync(item.registerCheckAsbitem);
}
item.registerCheckAsbitem.ChargeRequestId = chargeRequest.Id;
await _registerCheckAsbitemRepository.UpdateAsync(item.registerCheckAsbitem);
}
//插入申请单信息
chargeRequest = await _chargeRequestRepository.InsertAsync(chargeRequest);
foreach (var item in list)
{
var chargeRequestAsbitemSource = new ChargeRequestAsbitem()
//插入申请单信息
chargeRequest = await _chargeRequestRepository.InsertAsync(chargeRequest);
foreach (var item in list)
{
ChargeRequestId = chargeRequest.Id,
AsbitemId = item.registerCheckAsbitem.AsbitemId,
RegisterCheckAsbitemId = item.registerCheckAsbitem.Id,
Amount = item.registerCheckAsbitem.Amount,
ChargePrice = item.registerCheckAsbitem.ChargePrice,
IsCharge = 'N'
};
var chargeRequestAsbitem = await _chargeRequestAsbitemManager.CreateAsync(chargeRequestAsbitemSource);
await _chargeRequestAsbitemRepository.InsertAsync(chargeRequestAsbitem);
var chargeRequestAsbitemSource = new ChargeRequestAsbitem()
{
ChargeRequestId = chargeRequest.Id,
AsbitemId = item.registerCheckAsbitem.AsbitemId,
RegisterCheckAsbitemId = item.registerCheckAsbitem.Id,
Amount = item.registerCheckAsbitem.Amount,
ChargePrice = item.registerCheckAsbitem.ChargePrice,
IsCharge = 'N'
};
var chargeRequestAsbitem = await _chargeRequestAsbitemManager.CreateAsync(chargeRequestAsbitemSource);
await _chargeRequestAsbitemRepository.InsertAsync(chargeRequestAsbitem);
}
//await _unitOfWorkManager.Current.SaveChangesAsync();
await uow.CompleteAsync();
//await UnitOfWorkManager.Current.SaveChangesAsync();
//await UnitOfWorkManager.Current.CompleteAsync();
}
await _unitOfWorkManager.Current.SaveChangesAsync();
await _unitOfWorkManager.Current.CompleteAsync();
//await UnitOfWorkManager.Current.SaveChangesAsync();
//await UnitOfWorkManager.Current.CompleteAsync();
using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
using (var unitOfWork = _unitOfWorkManager.Begin(requiresNew: false, isTransactional: false))
{
await _chargeRequestManager.SendThirChargeRequestAsync(chargeRequest.Id, "SendChargeRequestAsync");
await unitOfWork.CompleteAsync();

9
src/Shentun.Peis.Application/InternalReports/InternalReportAppService.cs

@ -100,8 +100,8 @@ namespace Shentun.Peis.InternalReports
from ad in dd.DefaultIfEmpty()
join b in await _userRepository.GetQueryableAsync() on ad.CheckDoctorId equals b.Id.ToString() into bb
from ab in bb.DefaultIfEmpty()
where (a.CreationTime >= Convert.ToDateTime(input.StartDate) &&
a.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)
where (ad.CheckDate >= Convert.ToDateTime(input.StartDate) &&
ad.CheckDate < Convert.ToDateTime(input.EndDate).AddDays(1)
&& ad.CompleteFlag == RegisterCheckCompleteFlag.Checked
)
select new
@ -117,10 +117,7 @@ namespace Shentun.Peis.InternalReports
query = query.Where(m => input.UserIds.Contains(m.CheckDoctorId));
}
//var ssd = query.ToQueryString();
var entlistdto = query.ToList().GroupBy(g => new { g.a.AsbitemId, g.a.CreatorId, })
var entlistdto = query.ToList().GroupBy(g => new { g.a.AsbitemId, g.CheckDoctorId, })
.Select(s => new GetDoctorPersonnelWorkLoadReportDto
{
AsbitemName = s.FirstOrDefault().AsbitemName,

172
src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs

@ -653,104 +653,104 @@ namespace Shentun.Peis.LisRequests
//生成LIS条码
var lisRequests = await _lisRequestManager.SetLisRequestAsync(patientRegisterId);
await _unitOfWorkManager.Current.SaveChangesAsync();
await _unitOfWorkManager.Current.CompleteAsync();
//await _unitOfWorkManager.Current.SaveChangesAsync();
//await _unitOfWorkManager.Current.CompleteAsync();
using (var uow = _unitOfWorkManager.Begin(
requiresNew: false, isTransactional: false
))
// using (var uow = _unitOfWorkManager.Begin(
// requiresNew: false, isTransactional: false
//))
// {
if (lisRequestNoPrintMode == "0")
{
if (lisRequestNoPrintMode == "0")
var query = (from lisRequest in await _lisRequestRepository.GetQueryableAsync()
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id
join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
where lisRequest.LisRequestNo == input.LisRequestNo
select new
{
lisRequest,
registerCheckAsbitem,
asbitem,
registerCheck,
patientRegister,
patient
}).ToList();
if (query.Count == 0)
{
var query = (from lisRequest in await _lisRequestRepository.GetQueryableAsync()
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id
join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id
join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
where lisRequest.LisRequestNo == input.LisRequestNo
select new
{
lisRequest,
registerCheckAsbitem,
asbitem,
registerCheck,
patientRegister,
patient
}).ToList();
if (query.Count == 0)
{
throw new UserFriendlyException("检验单号不存在");
}
throw new UserFriendlyException("检验单号不存在");
}
var patientRegisterGroup = query.GroupBy(g => g.patientRegister);
var patientRegisterGroup = query.GroupBy(g => g.patientRegister);
var resultDto = new LisPatientRegisterDto
var resultDto = new LisPatientRegisterDto
{
Age = patientRegisterGroup.FirstOrDefault().Key.Age,
LisRequestNo = input.LisRequestNo,
PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName,
SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result,
SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result,
AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto
{
Age = patientRegisterGroup.FirstOrDefault().Key.Age,
LisRequestNo = input.LisRequestNo,
PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName,
SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result,
SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result,
AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto
{
AsbitemId = ss.registerCheckAsbitem.AsbitemId,
AsbitemName = ss.asbitem.DisplayName,
AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount
}).ToList()
};
AsbitemId = ss.registerCheckAsbitem.AsbitemId,
AsbitemName = ss.asbitem.DisplayName,
AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount
}).ToList()
};
return resultDto;
}
else
return resultDto;
}
else
{
//人员条码模式
var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
join registerCheck in await _registerCheckRepository.GetQueryableAsync()
on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id
where patientRegister.PatientRegisterNo == input.LisRequestNo
select new
{
registerCheckAsbitem,
asbitem,
registerCheck,
patientRegister,
patient,
lisRequest
}).ToList();
if (query.Count == 0)
{
//人员条码模式
var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync()
join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id
join registerCheck in await _registerCheckRepository.GetQueryableAsync()
on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id
join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id
where patientRegister.PatientRegisterNo == input.LisRequestNo
select new
{
registerCheckAsbitem,
asbitem,
registerCheck,
patientRegister,
patient,
lisRequest
}).ToList();
if (query.Count == 0)
{
throw new UserFriendlyException("人员条码号不存在");
}
throw new UserFriendlyException("人员条码号不存在");
}
var patientRegisterGroup = query.GroupBy(g => g.patientRegister);
var patientRegisterGroup = query.GroupBy(g => g.patientRegister);
var resultDto = new LisPatientRegisterDto
var resultDto = new LisPatientRegisterDto
{
Age = patientRegisterGroup.FirstOrDefault().Key.Age,
LisRequestNo = input.LisRequestNo,
PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName,
SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result,
SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result,
AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto
{
Age = patientRegisterGroup.FirstOrDefault().Key.Age,
LisRequestNo = input.LisRequestNo,
PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName,
SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result,
SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result,
AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto
{
AsbitemId = ss.registerCheckAsbitem.AsbitemId,
AsbitemName = ss.asbitem.DisplayName,
AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount,
SamplingTime = DataHelper.ConversionDateToString(ss.lisRequest.SamplingTime)
}).ToList()
};
return resultDto;
}
AsbitemId = ss.registerCheckAsbitem.AsbitemId,
AsbitemName = ss.asbitem.DisplayName,
AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount,
SamplingTime = DataHelper.ConversionDateToString(ss.lisRequest.SamplingTime)
}).ToList()
};
return resultDto;
}
//}
}

7
src/Shentun.Peis.Application/MyUser/MyUserAppService.cs

@ -19,6 +19,7 @@ using Shentun.Utilities;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.Http;
@ -544,6 +545,8 @@ namespace Shentun.Peis.MyUser
public async Task<UserLoginDto> UserLogin(UserLoginRequestDto input)
{
Stopwatch stopwatch = Stopwatch.StartNew();
UserLoginDto msg;
@ -618,6 +621,10 @@ namespace Shentun.Peis.MyUser
throw new UserFriendlyException("用户不存在");
}
stopwatch.Stop(); // 停止Stopwatch
var gg = stopwatch.ElapsedMilliseconds;
return msg;
}

28
src/Shentun.Peis.Application/PeisReports/PeisReportAppService.cs

@ -885,12 +885,6 @@ namespace Shentun.Peis.PeisReports
join aj in await _registerCheckAsbitemRepository.GetQueryableAsync() on a.Id equals aj.PatientRegisterId
join ak in await _registerCheckRepository.GetQueryableAsync() on aj.RegisterCheckId equals ak.Id
join al in await _asbitemRepository.GetQueryableAsync() on aj.AsbitemId equals al.Id
//join j in await _registerAsbitemRepository.GetQueryableAsync() on a.Id equals j.PatientRegisterId into jj
//from aj in jj.DefaultIfEmpty()
//join k in await _registerCheckRepository.GetQueryableAsync() on aj.RegisterCheckId equals k.Id into kk
//from ak in kk.DefaultIfEmpty()
//join l in await _asbitemRepository.GetQueryableAsync() on aj.AsbitemId equals l.Id into ll
//from al in ll.DefaultIfEmpty()
select new
{
a,
@ -1006,31 +1000,25 @@ namespace Shentun.Peis.PeisReports
sumquery = sumquery.Where(m => m.a.CompleteFlag == input.CompleteFlag);
}
var sss = sumquery.ToList();
var entlist = sumquery.GroupBy(g => g.a.Id).Select(s => new GetPatientRegisterUnCheckedReportDto
var entlist = sumquery.ToList().GroupBy(g => g.a.Id).Select(s => new GetPatientRegisterUnCheckedReportDto
{
Age = s.FirstOrDefault().a.Age,
CustomerOrgGroupName = s.FirstOrDefault().ac.DisplayName,
CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().a.CustomerOrgId).Result.DisplayName,
DepartmentName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).Result,
//GiveUpAsbitems = s.Where(m => m.ak.CompleteFlag == '2').Select(gs => new GetPatientRegisterUnCheckedReport_GiveUpAsbitem
//{
// AsbitemName = gs.al.DisplayName
//}).ToList(),
CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().a.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
DepartmentName = _cacheService.GetCustomerOrgNameAsync(s.FirstOrDefault().a.CustomerOrgId).GetAwaiter().GetResult(),
GiveUpAsbitems = s.Where(m => m.ak.CompleteFlag == RegisterCheckCompleteFlag.GiveUpChecked).Select(gs => gs.al.DisplayName).ToList(),
MedicalPackageName = s.FirstOrDefault().ad.DisplayName,
MedicalPackageName = s.FirstOrDefault().ad != null ? s.FirstOrDefault().ad.DisplayName : "",
MedicalTimes = s.FirstOrDefault().a.MedicalTimes,
MobileTelephone = s.FirstOrDefault().ab.MobileTelephone,
PatientName = s.FirstOrDefault().a.PatientName,
PatientNo = s.FirstOrDefault().ab.PatientNo,
PatientRegisterNo = s.FirstOrDefault().a.PatientRegisterNo,
SexName = s.FirstOrDefault().ag.DisplayName,
SexName = s.FirstOrDefault().ag != null ? s.FirstOrDefault().ag.DisplayName : "",
Telephone = s.FirstOrDefault().ab.Telephone,
UnCheckAsbitems = s.Where(m => m.ak.CompleteFlag == RegisterCheckCompleteFlag.UnChecked).Select(gs => gs.al.DisplayName).ToList(),
//UnCheckAsbitems = s.Where(m => m.ak.CompleteFlag == '0').Select(gs => new GetPatientRegisterUnCheckedReport_UnCheckAsbitem
//{
// AsbitemName = gs.al.DisplayName
//}).ToList()
UnCheckAsbitems = s.Where(m => m.ak.CompleteFlag == RegisterCheckCompleteFlag.UnChecked).Select(gs => gs.al.DisplayName).ToList()
}).ToList();
return entlist;

39
src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs

@ -246,7 +246,7 @@ namespace Shentun.Peis.PrintReports
PatientRegisterId = a.Id,
CustomerOrgGroupName = ac.DisplayName,
CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(a.CustomerOrgId).GetAwaiter().GetResult(),
CustomerOrgShortName = _cacheService.GetTopCustomerOrgAsync(a.CustomerOrgId).GetAwaiter().GetResult().ShortName,
CustomerOrgShortName = _cacheService.GetTopCustomerOrgShortNameAsync(a.CustomerOrgId, "1").GetAwaiter().GetResult(),
DepartmentName = _cacheService.GetAllDepartmentNameAsync(a.CustomerOrgId).GetAwaiter().GetResult(),
IdNo = e.IdNo,
JobCardNo = a.JobCardNo,
@ -310,10 +310,17 @@ namespace Shentun.Peis.PrintReports
[HttpPost("api/app/PrintReport/GetLisRequestReportByPatientRegisterId")]
public async Task<List<LisRequestReportDto>> GetLisRequestReportByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
{
//生成LIS条码
var lisRequests = await _lisRequestManager.SetLisRequestAsync(input.PatientRegisterId);
await _unitOfWorkManager.Current.SaveChangesAsync();
await _unitOfWorkManager.Current.CompleteAsync();
var lisRequests = new List<LisRequest>();
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
//生成LIS条码
lisRequests = await _lisRequestManager.SetLisRequestAsync(input.PatientRegisterId);
//await _unitOfWorkManager.Current.SaveChangesAsync();
await uow.CompleteAsync();
}
var entlist = new List<LisRequestReportDto>();
@ -383,7 +390,7 @@ namespace Shentun.Peis.PrintReports
SampleContainerRemark = (o.sampleContainerHaveEmpty == null) ? "" : o.sampleContainerHaveEmpty.ContainerRemark,
SampleTypeName = (o.sampleTypeHaveEmpty == null) ? "" : o.sampleTypeHaveEmpty.DisplayName,
SexName = o.sex.DisplayName,
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(o.patientRegister.CustomerOrgId).Result,
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(o.patientRegister.CustomerOrgId, "1").Result,
DepartmentName = _cacheService.GetAllDepartmentNameAsync(o.patientRegister.CustomerOrgId).Result,
IsPrint = o.lisRequest.IsPrint,
IsSignIn = o.lisRequest.IsSignIn,
@ -487,7 +494,7 @@ namespace Shentun.Peis.PrintReports
}).ToList();
await uow.CompleteAsync();
}
@ -505,6 +512,10 @@ namespace Shentun.Peis.PrintReports
public async Task<Rpt0002Dto> GetLisRequestReportByPatientRegisterIdConvertToReportAsync(PatientRegisterIdInputDto input)
{
var oldDto = await GetLisRequestReportByPatientRegisterIdAsync(input);
if (!oldDto.Any())
{
return null;
}
var entDto = await ConvertToReport.ToLisRequestReportDataAsync(oldDto);
return entDto;
}
@ -581,7 +592,7 @@ namespace Shentun.Peis.PrintReports
ContainerColor = lisRequestInfo.sampleContainer.ContainerColor,
SampleContainerRemark = lisRequestInfo.sampleContainer.ContainerRemark,
AsbitemNames = string.Join(",", list.OrderBy(o => o.asbitem.DisplayOrder).Select(o => o.asbitem.DisplayName).Distinct()),
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(lisRequestInfo.patientRegister.CustomerOrgId).Result,
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(lisRequestInfo.patientRegister.CustomerOrgId, "1").Result,
DepartmentName = _cacheService.GetAllDepartmentNameAsync(lisRequestInfo.patientRegister.CustomerOrgId).Result,
SampleGroupName = lisRequestInfo.sampleGroupName,
MobileTelephone = lisRequestInfo.patient.MobileTelephone,
@ -899,7 +910,7 @@ namespace Shentun.Peis.PrintReports
PatientName = s.FirstOrDefault().PatientName,
PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo,
SexName = s.FirstOrDefault().SexName,
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(s.FirstOrDefault().CustomerOrgId).Result,
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(s.FirstOrDefault().CustomerOrgId, "1").Result,
DepartmentName = _cacheService.GetAllDepartmentNameAsync(s.FirstOrDefault().CustomerOrgId).Result,
MobileTelephone = s.FirstOrDefault().MobileTelephone,
DeviceCheckRequestPrintTimes = s.FirstOrDefault().DeviceCheckRequestPrintTimes
@ -916,7 +927,7 @@ namespace Shentun.Peis.PrintReports
PatientName = s.FirstOrDefault().PatientName,
PatientRegisterNo = s.FirstOrDefault().PatientRegisterNo,
SexName = s.FirstOrDefault().SexName,
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(s.FirstOrDefault().CustomerOrgId).Result,
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(s.FirstOrDefault().CustomerOrgId, "1").Result,
DepartmentName = _cacheService.GetAllDepartmentNameAsync(s.FirstOrDefault().CustomerOrgId).Result,
MobileTelephone = s.FirstOrDefault().MobileTelephone,
DeviceCheckRequestPrintTimes = s.FirstOrDefault().DeviceCheckRequestPrintTimes
@ -940,6 +951,10 @@ namespace Shentun.Peis.PrintReports
{
var oldDto = await GetPacsNoReportAsync(input);
if (!oldDto.Any())
{
return null;
}
var entDto = await ConvertToReport.ToExamRequestReportDataAsync(oldDto);
return entDto;
}
@ -997,7 +1012,7 @@ namespace Shentun.Peis.PrintReports
PatientName = queryGroup.FirstOrDefault().PatientName,
PatientRegisterNo = queryGroup.FirstOrDefault().PatientRegisterNo,
SexName = queryGroup.FirstOrDefault().SexName,
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(queryGroup.FirstOrDefault().CustomerOrgId).Result,
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(queryGroup.FirstOrDefault().CustomerOrgId, "1").Result,
DepartmentName = _cacheService.GetAllDepartmentNameAsync(queryGroup.FirstOrDefault().CustomerOrgId).Result
};
}
@ -1011,7 +1026,7 @@ namespace Shentun.Peis.PrintReports
PatientName = queryGroup.FirstOrDefault().PatientName,
PatientRegisterNo = queryGroup.FirstOrDefault().PatientRegisterNo,
SexName = queryGroup.FirstOrDefault().SexName,
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(queryGroup.FirstOrDefault().CustomerOrgId).Result,
CustomerOrgName = _cacheService.GetTopCustomerOrgShortNameAsync(queryGroup.FirstOrDefault().CustomerOrgId, "1").Result,
DepartmentName = _cacheService.GetAllDepartmentNameAsync(queryGroup.FirstOrDefault().CustomerOrgId).Result
};
}

46
src/Shentun.Peis.Domain/CacheService.cs

@ -513,14 +513,56 @@ namespace Shentun.Peis
return entity;
}
///// <summary>
///// 获取单位简称 一级单位 简称如果没有显示全称
///// </summary>
///// <param name="CustomerOrgId"></param>
///// <param name="CustomerMode">单位获取模式 0=正常取值 1=强制取第一级</param>
///// <returns></returns>
//public async Task<string> GetTopCustomerOrgShortNameAsync(Guid CustomerOrgId)
//{
// var customerOrgEnt = await GetTopCustomerOrgAsync(CustomerOrgId);
// if (string.IsNullOrWhiteSpace(customerOrgEnt.ShortName))
// return customerOrgEnt.DisplayName;
// else
// return customerOrgEnt.ShortName;
//}
/// <summary>
/// 获取单位简称 一级单位 简称如果没有显示全称
/// </summary>
/// <param name="CustomerOrgId"></param>
/// <param name="CustomerMode">单位获取模式 0=正常取值 1=强制取第一级</param>
/// <returns></returns>
public async Task<string> GetTopCustomerOrgShortNameAsync(Guid CustomerOrgId)
public async Task<string> GetTopCustomerOrgShortNameAsync(Guid CustomerOrgId, string CustomerMode = "0")
{
var customerOrgEnt = await GetTopCustomerOrgAsync(CustomerOrgId);
var customerOrgEnt = new CustomerOrg();
if (CustomerMode == "0")
{
customerOrgEnt = await GetTopCustomerOrgAsync(CustomerOrgId);
}
else
{
//强制取第一级
var entity = (CustomerOrg)_customerOrgCache.Get(CustomerOrgId);
if (entity == null)
{
entity = await _customerOrgRepository.GetAsync(o => o.Id == CustomerOrgId);
_customerOrgCache.Set(CustomerOrgId, entity);
}
if (entity.PathCode.Length > 5)
{
customerOrgEnt = await _customerOrgRepository.GetAsync(o => o.PathCode == entity.PathCode.Substring(0, 5));
}
else
{
customerOrgEnt = entity;
}
}
if (string.IsNullOrWhiteSpace(customerOrgEnt.ShortName))
return customerOrgEnt.DisplayName;
else

6
src/Shentun.Peis.Domain/PatientOccupationalHistorys/PatientOccupationalHistory.cs

@ -40,14 +40,14 @@ namespace Shentun.Peis.Models
/// 车间
/// </summary>
[Column("work_shop")]
[StringLength(10)]
[StringLength(50)]
public string? WorkShop { get; set; }
/// <summary>
/// 工种
/// </summary>
[Column("work_type")]
[StringLength(10)]
[StringLength(50)]
public string? WorkType { get; set; }
/// <summary>
@ -61,7 +61,7 @@ namespace Shentun.Peis.Models
/// 防护措施
/// </summary>
[Column("protective_measures")]
[StringLength(30)]
[StringLength(50)]
public string? ProtectiveMeasures { get; set; }
[Column("concurrency_stamp")]

16377
src/Shentun.Peis.EntityFrameworkCore/Migrations/20250827091748_patient_occupational_history_update_length.Designer.cs
File diff suppressed because it is too large
View File

81
src/Shentun.Peis.EntityFrameworkCore/Migrations/20250827091748_patient_occupational_history_update_length.cs

@ -0,0 +1,81 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Shentun.Peis.Migrations
{
public partial class patient_occupational_history_update_length : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "work_type",
table: "patient_occupational_history",
type: "character varying(50)",
maxLength: 50,
nullable: true,
oldClrType: typeof(string),
oldType: "character varying(10)",
oldMaxLength: 10,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "work_shop",
table: "patient_occupational_history",
type: "character varying(50)",
maxLength: 50,
nullable: true,
oldClrType: typeof(string),
oldType: "character varying(10)",
oldMaxLength: 10,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "protective_measures",
table: "patient_occupational_history",
type: "character varying(50)",
maxLength: 50,
nullable: true,
oldClrType: typeof(string),
oldType: "character varying(30)",
oldMaxLength: 30,
oldNullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "work_type",
table: "patient_occupational_history",
type: "character varying(10)",
maxLength: 10,
nullable: true,
oldClrType: typeof(string),
oldType: "character varying(50)",
oldMaxLength: 50,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "work_shop",
table: "patient_occupational_history",
type: "character varying(10)",
maxLength: 10,
nullable: true,
oldClrType: typeof(string),
oldType: "character varying(50)",
oldMaxLength: 50,
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "protective_measures",
table: "patient_occupational_history",
type: "character varying(30)",
maxLength: 30,
nullable: true,
oldClrType: typeof(string),
oldType: "character varying(50)",
oldMaxLength: 50,
oldNullable: true);
}
}
}

14
src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs

@ -7314,18 +7314,18 @@ namespace Shentun.Peis.Migrations
.HasColumnName("poison");
b.Property<string>("ProtectiveMeasures")
.HasMaxLength(30)
.HasColumnType("character varying(30)")
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("protective_measures");
b.Property<string>("WorkShop")
.HasMaxLength(10)
.HasColumnType("character varying(10)")
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("work_shop");
b.Property<string>("WorkType")
.HasMaxLength(10)
.HasColumnType("character varying(10)")
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("work_type");
b.HasKey("Id");
@ -13023,7 +13023,7 @@ namespace Shentun.Peis.Migrations
.HasColumnName("method_name");
b.Property<string>("Parameters")
.HasMaxLength(50000)
.HasMaxLength(2000)
.HasColumnType("text")
.HasColumnName("parameters");

69
src/Shentun.Peis.HttpApi.Host/Controllers/AiMessageWsController.cs

@ -0,0 +1,69 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System;
using System.Threading.Tasks;
using System.Collections.Generic;
namespace Shentun.Peis.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class AiMessageWsController : ControllerBase
{
[HttpGet]
public IAsyncEnumerable<string> GetData()
{
return GenerateDataAsync();
}
private async IAsyncEnumerable<string> GenerateDataAsync()
{
for (int i = 0; i < 100; i++)
{
await Task.Delay(100); // 模拟延迟
yield return $"Data {i}";
}
}
//public async Task HandleWebSocket()
//{
// if (HttpContext.WebSockets.IsWebSocketRequest)
// {
// using var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync();
// await ProcessDeepSeekStream(webSocket);
// }
// else
// {
// HttpContext.Response.StatusCode = StatusCodes.Status400BadRequest;
// }
//}
//private async Task ProcessDeepSeekStream(WebSocket webSocket)
//{
// // 调用deepseek API
// var stream = await GetDeepSeekStream();
// foreach (var chunk in stream)
// {
// var buffer = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(chunk));
// await webSocket.SendAsync(
// new ArraySegment<byte>(buffer),
// WebSocketMessageType.Text,
// true,
// CancellationToken.None);
// }
// await webSocket.CloseAsync(
// WebSocketCloseStatus.NormalClosure,
// "Stream completed",
// CancellationToken.None);
//}
}
}

17
src/Shentun.Peis.HttpApi.Host/appsettings.json

@ -5,16 +5,17 @@
"CorsOrigins": "https://*.Peis.com,http://localhost:4200,http://localhost:9530,http://192.168.1.108:9530,http://localhost:8080,http://localhost:8081",
"RedirectAllowedUrls": "http://localhost:9530",
"SelfUser": "admin",
"SelfPassword": "Shentun!@#qwe123",
//"SelfPassword": "666666",
//"SelfPassword": "Shentun!@#qwe123",
"SelfPassword": "666666",
"LisUser": "admin",
"LisPassword": "Shentun!@#qwe123"
//"LisPassword": "666666"
//"LisPassword": "Shentun!@#qwe123"
"LisPassword": "666666"
},
"ConnectionStrings": {
//"Default": "Host=10.1.12.140;Port=5432;Database=ShentunPeis0508;User ID=postgres;Password=st123;"
"Default": "Host=140.143.162.39;Port=5432;Database=ShentunPeis240701;User ID=postgres;Password=shentun123;"
//"Default": "Host=192.168.2.67;Port=5432;Database=ShentunPeis;User ID=postgres;Password=st123;"
//"Default": "Host=140.143.162.39;Port=5432;Database=ShentunPeis240701;User ID=postgres;Password=shentun123;"
//"Default": "Host=192.168.2.67;Port=5432;Database=ShentunPeis;User ID=postgres;Password=st123;",
"Default": "Host=192.168.0.188;Port=5432;Database=ShentunPeis;User ID=postgres;Password=St123456;"
},
"AuthServer": {
"Authority": "http://localhost:9530",
@ -30,7 +31,7 @@
"Abp.Identity.Password.RequireLowercase": false,
"Abp.Identity.Password.RequireUppercase": false,
"Abp.Identity.Password.RequireNonAlphanumeric": false,
"Abp.Identity.Password.RequiredLength": 6,
"Abp.Identity.Password.RequiredLength": 1,
"Abp.Localization.DefaultLanguage": "zh-Hans"
},
"HostUrl": {
@ -61,7 +62,7 @@
"Hangfire": {
"IsEnabled": true,
"IsEnabledDashboard": true,
"ConnectionStrings": "127.0.0.1:6379,password=wxd123",
"ConnectionStrings": "192.168.0.188:6379,password=shentun123",
"Db": 3
},
"Pacs": {

Loading…
Cancel
Save