From a99220c955d9e4c6a39af40d29b9e5721f8a67d8 Mon Sep 17 00:00:00 2001
From: wxd <123@qq.com>
Date: Thu, 2 May 2024 15:19:43 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B90502?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Asbitems/SimpleAsbitemWithDetailsDto.cs | 19 ++++
.../UploadRegisterCheckPictureManyDto.cs | 9 +-
.../RegisterCheckWithAsbitemsDto.cs | 57 +++++++++++
.../Asbitems/AsbitemAppService.cs | 35 ++++++-
.../Diagnosises/DiagnosisAppService.cs | 10 +-
.../PatientRegisterAppService.cs | 2 +-
.../RegisterCheckPictureAppService.cs | 11 ++-
.../RegisterChecks/RegisterCheckAppService.cs | 99 ++++++++++++++++---
src/Shentun.Peis.Domain/ImageHelper.cs | 25 ++---
9 files changed, 228 insertions(+), 39 deletions(-)
create mode 100644 src/Shentun.Peis.Application.Contracts/Asbitems/SimpleAsbitemWithDetailsDto.cs
create mode 100644 src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs
diff --git a/src/Shentun.Peis.Application.Contracts/Asbitems/SimpleAsbitemWithDetailsDto.cs b/src/Shentun.Peis.Application.Contracts/Asbitems/SimpleAsbitemWithDetailsDto.cs
new file mode 100644
index 00000000..4307194d
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/Asbitems/SimpleAsbitemWithDetailsDto.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.Peis.Asbitems
+{
+ public class SimpleAsbitemWithDetailsDto
+ {
+ ///
+ /// 组合项目ID
+ ///
+ public Guid AsbitemId { get; set; }
+
+ ///
+ /// 项目名称
+ ///
+ public string ItemName { get; set; }
+ }
+}
diff --git a/src/Shentun.Peis.Application.Contracts/RegisterCheckPictures/UploadRegisterCheckPictureManyDto.cs b/src/Shentun.Peis.Application.Contracts/RegisterCheckPictures/UploadRegisterCheckPictureManyDto.cs
index b20d1fe3..ceb1363f 100644
--- a/src/Shentun.Peis.Application.Contracts/RegisterCheckPictures/UploadRegisterCheckPictureManyDto.cs
+++ b/src/Shentun.Peis.Application.Contracts/RegisterCheckPictures/UploadRegisterCheckPictureManyDto.cs
@@ -24,7 +24,7 @@ namespace Shentun.Peis.RegisterCheckPictures
///
/// 图片base64
///
- public List PictureBaseStrs { get; set; }
+ public List PictureBaseStrs { get; set; } = new List() { };
/////
@@ -33,4 +33,11 @@ namespace Shentun.Peis.RegisterCheckPictures
//public List PictureBaseStrs2 { get; set; }
}
+
+ public class UploadRegisterCheckPictureManyPictureBaseStrsDto
+ {
+ public string FileName { get; set; }
+
+ public string PictureBaseStr { get; set; }
+ }
}
diff --git a/src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs b/src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs
new file mode 100644
index 00000000..17404db8
--- /dev/null
+++ b/src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckWithAsbitemsDto.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shentun.Peis.RegisterChecks
+{
+ public class RegisterCheckWithAsbitemsDto
+ {
+ public Guid Id { get; set; }
+
+ ///
+ /// 组合项目名称
+ ///
+ public string AsbitemName { get; set; }
+
+ ///
+ /// 是否收费
+ ///
+ public char? IsCharge { get; set; }
+
+ ///
+ /// 检查单号
+ ///
+ public string? CheckRequestNo { get; set; }
+
+ ///
+ /// 是否锁住
+ ///
+ public char IsLock { get; set; }
+ ///
+ /// 完成标志 0(为未检), 1(已检), 2(弃检)
+ ///
+ public char CompleteFlag { get; set; }
+
+
+ ///
+ /// 检查医生ID
+ ///
+ public string? CheckDoctorId { get; set; }
+ ///
+ /// 检查日期
+ ///
+ public string? CheckDate { get; set; }
+ ///
+ /// 是审核
+ ///
+ public char IsAudit { get; set; }
+ ///
+ /// 审核医生ID
+ ///
+ public Guid? AuditorUserId { get; set; }
+ ///
+ /// 审核时间
+ ///
+ public DateTime? AuditTime { get; set; }
+ }
+}
diff --git a/src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs b/src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs
index 7b809231..61309df7 100644
--- a/src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs
+++ b/src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs
@@ -32,16 +32,22 @@ namespace Shentun.Peis.Asbitems
private readonly IRepository _userRepository;
private readonly IDistributedCache _asbitemCache;
private readonly AsbitemManager _manager;
+ private readonly IRepository- _itemRepository;
+ private readonly IRepository _asbitemDetailRepository;
public AsbitemAppService(
IRepository repository,
IRepository userRepository,
AsbitemManager manager,
- IDistributedCache asbitemCache)
+ IDistributedCache asbitemCache,
+ IRepository
- itemRepository,
+ IRepository asbitemDetailRepository)
: base(repository)
{
_userRepository = userRepository;
_manager = manager;
_asbitemCache = asbitemCache;
+ _itemRepository = itemRepository;
+ _asbitemDetailRepository = asbitemDetailRepository;
}
///
/// 获取通过主键
@@ -68,7 +74,7 @@ namespace Shentun.Peis.Asbitems
return await base.GetListAsync(input);
}
-
+
///
/// 获取列表 整合多条件查询 项目类别、名字、拼音简码、是否只显示启用的数据(默认显示全部)
@@ -245,5 +251,30 @@ namespace Shentun.Peis.Asbitems
+ ///
+ /// 查询组合项目的子项目名称列表 登记页面用
+ ///
+ ///
+ [HttpPost("api/app/Asbitem/GetSimpleAsbitemWithDetails")]
+ public async Task
> GetSimpleAsbitemWithDetailsAsync()
+ {
+ var query = from asbtiem in await Repository.GetQueryableAsync()
+ join asbitemDetail in await _asbitemDetailRepository.GetQueryableAsync() on asbtiem.Id equals asbitemDetail.AsbitemId
+ join item in await _itemRepository.GetQueryableAsync() on asbitemDetail.ItemId equals item.Id
+ orderby asbtiem.DisplayOrder, item.DisplayOrder ascending
+ select new
+ {
+ AsbitemId = asbtiem.Id,
+ ItemName = item.DisplayName
+ };
+
+ var result = query.Select(s => new SimpleAsbitemWithDetailsDto
+ {
+ AsbitemId = s.AsbitemId,
+ ItemName = s.ItemName
+ }).ToList();
+
+ return result;
+ }
}
}
diff --git a/src/Shentun.Peis.Application/Diagnosises/DiagnosisAppService.cs b/src/Shentun.Peis.Application/Diagnosises/DiagnosisAppService.cs
index 24577338..b98ed3d8 100644
--- a/src/Shentun.Peis.Application/Diagnosises/DiagnosisAppService.cs
+++ b/src/Shentun.Peis.Application/Diagnosises/DiagnosisAppService.cs
@@ -217,14 +217,8 @@ namespace Shentun.Peis.Diagnosises
a.IsSummaryTemplate,
a.DisplayOrder
},
- ab = new
- {
- ab.SuggestionType,
- ab.DisplayOrder,
- ab.DiagnosisId,
- ab.SuggestionContent
- },
- };
+ ab
+ };
var entlist = query.GroupBy(g => g.a.Id).Select(s => new SimpleDiagnosisWithSuggestionsDto
{
diff --git a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
index ed29e619..35282014 100644
--- a/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
+++ b/src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
@@ -1273,7 +1273,7 @@ namespace Shentun.Peis.PatientRegisters
{
//_logger.LogInformation(input.Photo);
- string imgurl = $"UpLoad/{DateTime.Now.Year}/{DateTime.Now.Month}/{DateTime.Now.Day}/{input.PatientRegisterId}";
+ string imgurl = $"photo/{DateTime.Now.Year}/{DateTime.Now.Month}/{DateTime.Now.Day}/{input.PatientRegisterId}";
var isupload = ImageHelper.Base64StrToImage(input.Photo, imgurl);
if (!string.IsNullOrEmpty(isupload))
return isupload;
diff --git a/src/Shentun.Peis.Application/RegisterCheckPictures/RegisterCheckPictureAppService.cs b/src/Shentun.Peis.Application/RegisterCheckPictures/RegisterCheckPictureAppService.cs
index 2dba5d25..84fd7c58 100644
--- a/src/Shentun.Peis.Application/RegisterCheckPictures/RegisterCheckPictureAppService.cs
+++ b/src/Shentun.Peis.Application/RegisterCheckPictures/RegisterCheckPictureAppService.cs
@@ -161,7 +161,7 @@ namespace Shentun.Peis.RegisterCheckPictures
throw new UserFriendlyException("体检人员不存在");
}
- string PicName = DateTime.Now.ToString("yyyyMMddHHmmss") + rd.Next(1000, 9999);
+ // string PicName = DateTime.Now.ToString("yyyyMMddHHmmss") + rd.Next(1000, 9999);
List entlist_insert = new List();
@@ -170,10 +170,13 @@ namespace Shentun.Peis.RegisterCheckPictures
foreach (var item in input.PictureBaseStrs)
{
- string PictureUrl = ImageHelper.Base64StrToImageInAbsolutePath(AbsolutePath, item,
+ //string PictureUrl = ImageHelper.Base64StrToImageInAbsolutePath(AbsolutePath, item,
+ // PatientRegisterId,
+ // input.RegisterCheckId.ToString(),
+ // PicName + "_" + (input.PictureBaseStrs.IndexOf(item) + 1));
+ string PictureUrl = ImageHelper.Base64StrToImageInAbsolutePath(AbsolutePath, item.FileName, item.PictureBaseStr,
PatientRegisterId,
- input.RegisterCheckId.ToString(),
- PicName + "_" + (input.PictureBaseStrs.IndexOf(item) + 1));
+ input.RegisterCheckId.ToString());
if (string.IsNullOrEmpty(PictureUrl))
{
diff --git a/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs b/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs
index e53b6e6b..b947d804 100644
--- a/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs
+++ b/src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs
@@ -1,7 +1,9 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Configuration;
using Shentun.Peis.Enums;
+using Shentun.Peis.MenuInfos;
using Shentun.Peis.Models;
using Shentun.Peis.PatientRegisters;
using Shentun.Peis.RegisterCheckItems;
@@ -9,6 +11,7 @@ using Shentun.Peis.RegisterCheckSummarys;
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Linq.Dynamic.Core;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
@@ -42,6 +45,10 @@ namespace Shentun.Peis.RegisterChecks
private readonly RegisterCheckItemManager _registerCheckItemManager;
private readonly CacheService _cacheService;
private readonly IGuidGenerator _guidGenerator;
+ private readonly IConfiguration _configuration;
+ private readonly ICurrentUser _currentUser;
+ private readonly IRepository _userItemTypeRepository;
+ private readonly IRepository _asbitemRepository;
public RegisterCheckAppService(IRepository registerCheckRepository,
IRepository registerCheckItemRepository,
@@ -53,19 +60,27 @@ namespace Shentun.Peis.RegisterChecks
RegisterCheckManager registerCheckManager,
RegisterCheckItemManager registerCheckItemManager,
CacheService cacheService,
- IGuidGenerator guidGenerator)
+ IGuidGenerator guidGenerator,
+ IConfiguration configuration,
+ ICurrentUser currentUser,
+ IRepository userItemTypeRepository,
+ IRepository asbitemRepository)
{
- this._registerCheckRepository = registerCheckRepository;
- this._userRepository = userRepository;
- this._registerCheckManager = registerCheckManager;
- this._patientRegisterRepository = patientRegisterRepository;
- this._referenceRangeRepository = referenceRangeRepository;
+ _registerCheckRepository = registerCheckRepository;
+ _userRepository = userRepository;
+ _registerCheckManager = registerCheckManager;
+ _patientRegisterRepository = patientRegisterRepository;
+ _referenceRangeRepository = referenceRangeRepository;
_registerCheckItemRepository = registerCheckItemRepository;
_registerCheckSummaryRepository = registerCheckSummaryRepository;
_registerCheckSuggestionRepository = registerCheckSuggestionRepository;
- this._registerCheckItemManager = registerCheckItemManager;
+ _registerCheckItemManager = registerCheckItemManager;
_cacheService = cacheService;
_guidGenerator = guidGenerator;
+ _configuration = configuration;
+ _currentUser = currentUser;
+ _userItemTypeRepository = userItemTypeRepository;
+ _asbitemRepository = asbitemRepository;
}
///
@@ -122,11 +137,11 @@ namespace Shentun.Peis.RegisterChecks
var entlist = (await _registerCheckRepository.GetDbSetAsync())
.Include(x => x.RegisterCheckAsbitems)
- .ThenInclude(x => x.Asbitem).ThenInclude(x=>x.ItemType)
+ .ThenInclude(x => x.Asbitem).ThenInclude(x => x.ItemType)
.Where(m => m.RegisterCheckAsbitems.Select(s => s.PatientRegisterId).Contains(PatientRegisterId)).ToList();
//排序
- entlist = entlist.OrderBy(o=>o.RegisterCheckAsbitems.Max(o=>o.Asbitem.ItemType.DisplayOrder)).ToList()
- .OrderBy(o=>o.RegisterCheckAsbitems.Max(o=>o.Asbitem.DisplayOrder)).ToList();
+ entlist = entlist.OrderBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.ItemType.DisplayOrder)).ToList()
+ .OrderBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.DisplayOrder)).ToList();
var userList = await _userRepository.GetListAsync();
var entdto = entlist.Select(s => new RegisterCheckOrAsbitemNameOrIsChargeDto
@@ -163,6 +178,68 @@ namespace Shentun.Peis.RegisterChecks
return entdto;
}
+
+ ///
+ /// 获取登记check表数据(附带组合项目名称跟是否收费) 医生诊台左边列表 只有一个收费就显示收费 增加项目类别权限控制
+ ///
+ ///
+ ///
+ [HttpPost("api/app/RegisterCheck/GetRegisterCheckWithAsbitems")]
+ public async Task> GetRegisterCheckWithAsbitemsAsync(PatientRegisterIdInputDto input)
+ {
+
+ var entlist = (await _registerCheckRepository.GetQueryableAsync())
+ .Include(x => x.RegisterCheckAsbitems)
+ .ThenInclude(x => x.Asbitem).ThenInclude(x => x.ItemType)
+ .Where(m => m.RegisterCheckAsbitems.Select(s => s.PatientRegisterId).Contains(input.PatientRegisterId));
+
+ #region 增加项目类别权限
+
+ string AdminId = _configuration.GetValue("AdminId");
+ if (_currentUser.Id.Value != Guid.Parse(AdminId))
+ {
+ var asbitemIds = (from userItemType in await _userItemTypeRepository.GetQueryableAsync()
+ join asbitem in await _asbitemRepository.GetQueryableAsync() on userItemType.ItemTypeId equals asbitem.ItemTypeId
+ where userItemType.UserId == _currentUser.Id.Value
+ select asbitem.Id).ToList();
+
+ if (asbitemIds.Any())
+ {
+ entlist = entlist.Where(m => asbitemIds.Contains(m.RegisterCheckAsbitems.FirstOrDefault().Id));
+ }
+ else
+ {
+ return new List();
+ }
+
+ }
+
+ #endregion
+
+
+ //排序
+ entlist = entlist.OrderBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.ItemType.DisplayOrder))
+ .ThenBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.DisplayOrder));
+
+
+ var entdto = entlist.ToList().Select(s => new RegisterCheckWithAsbitemsDto
+ {
+ AsbitemName = string.Join(",", s.RegisterCheckAsbitems.Select(rs => rs.Asbitem.DisplayName).ToList()),
+ AuditorUserId = s.AuditorUserId,
+ AuditTime = s.AuditTime,
+ CheckDate = DataHelper.ConversionDateToString(s.CheckDate),
+ CheckDoctorId = s.CheckDoctorId,
+ CheckRequestNo = s.CheckRequestNo,
+ CompleteFlag = s.CompleteFlag,
+ Id = s.Id,
+ IsAudit = s.IsAudit,
+ IsCharge = s.RegisterCheckAsbitems.Where(m => m.IsCharge == 'Y').Count() > 0 ? 'Y' : 'N',
+ IsLock = s.IsLock,
+ }).ToList();
+
+ return entdto;
+ }
+
[HttpPost("api/app/registercheck/UpdateCheckResult")]
public async Task UpdateCheckResult(UpdateCheckResultDto input)
{
@@ -200,7 +277,7 @@ namespace Shentun.Peis.RegisterChecks
//修改小结
var deleteRegisterCheckSummarys = await _registerCheckSummaryRepository.GetListAsync(o => o.RegisterCheckId == input.RegisterCheckId);
await _registerCheckSummaryRepository.DeleteManyAsync(deleteRegisterCheckSummarys);
- for(var i = 0; i < input.Summarys.Count; i++)
+ for (var i = 0; i < input.Summarys.Count; i++)
{
var registerCheckSummary = new RegisterCheckSummary(_guidGenerator.Create())
{
diff --git a/src/Shentun.Peis.Domain/ImageHelper.cs b/src/Shentun.Peis.Domain/ImageHelper.cs
index 640416ab..30bd310b 100644
--- a/src/Shentun.Peis.Domain/ImageHelper.cs
+++ b/src/Shentun.Peis.Domain/ImageHelper.cs
@@ -114,8 +114,8 @@ namespace Shentun.Peis
MemoryStream ms = new MemoryStream(photo);
Bitmap bitmap = new Bitmap(ms);
ms.Close();
-
-
+
+
if (bitmap != null)
{
string ImageSuffix = "";
@@ -184,17 +184,18 @@ namespace Shentun.Peis
/// 将Base64字符串转换为图片并保存到服务器
///
/// 物理路径
+ /// 图片名
///
/// 登记ID 作为目录
/// 检查ID 作为目录
- /// 图片名
///
- public static string Base64StrToImageInAbsolutePath(string AbsolutePath, string base64Str, string PatientRegisterId, string RegisterCheckId, string ImageName)
+ public static string Base64StrToImageInAbsolutePath(string AbsolutePath, string fileName, string base64Str, string PatientRegisterId, string RegisterCheckId)
{
var ret = "";
try
{
+
base64Str = base64Str.Substring(base64Str.IndexOf(",") + 1);
string savePath = "";
@@ -221,20 +222,19 @@ namespace Shentun.Peis
ImageSuffix = ".jpg";
}
- savePath = AbsolutePath + "\\" + PatientRegisterId + "\\" + RegisterCheckId + "\\" + ImageName + ImageSuffix;
- hostPath = "/CheckPictureImg/" + PatientRegisterId + "/" + RegisterCheckId + "/" + ImageName + ImageSuffix;
+ string savaDirectory = $"{AbsolutePath}\\pacs\\{DateTime.Now.Year}\\{DateTime.Now.Month}\\{DateTime.Now.Day}\\{PatientRegisterId}\\{RegisterCheckId}";
+ savePath = $"{savaDirectory}\\{fileName + ImageSuffix}";
+ hostPath = $"/CheckPictureImg/pacs/{DateTime.Now.Year}/{DateTime.Now.Month}/{DateTime.Now.Day}/{PatientRegisterId}/{RegisterCheckId}/{fileName + ImageSuffix}";
- if (!Directory.Exists(AbsolutePath + "\\" + PatientRegisterId))
- {
- Directory.CreateDirectory(AbsolutePath + "\\" + PatientRegisterId);
- }
- if (!Directory.Exists(AbsolutePath + "\\" + PatientRegisterId + "\\" + RegisterCheckId))
+ if (!Directory.Exists(savaDirectory))
{
- Directory.CreateDirectory(AbsolutePath + "\\" + PatientRegisterId + "\\" + RegisterCheckId);
+ Directory.CreateDirectory(savaDirectory);
}
+
+
//图片后缀格式
var suffix = savePath.Substring(savePath.LastIndexOf('.') + 1, savePath.Length - savePath.LastIndexOf('.') - 1).ToLower();
var suffixName = suffix == "png" ? ImageFormat.Png :
@@ -273,6 +273,7 @@ namespace Shentun.Peis
}
+
///