|
|
using Microsoft.AspNetCore.Authorization;using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Mvc;using Microsoft.Extensions.Configuration;using Shentun.Peis.Enums;using Shentun.Peis.GuideTypes;using Shentun.Peis.Models;using Shentun.Peis.PatientRegisters;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Volo.Abp;using Volo.Abp.Application.Services;using Volo.Abp.Domain.Repositories;using Volo.Abp.Identity;
namespace Shentun.Peis.RegisterCheckPictures{ /// <summary>
/// 体检登记组合项目图片
/// </summary>
[ApiExplorerSettings(GroupName = "Work")] [Authorize] public class RegisterCheckPictureAppService : ApplicationService { private readonly IRepository<IdentityUser, Guid> _userRepository; private readonly IRepository<RegisterCheckPicture, Guid> _registerCheckPictureRepository; private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository; private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository; private readonly IRepository<LisRequest, Guid> _lisRequestRepository; private readonly RegisterCheckPictureManager _registerCheckPictureManager; private readonly IConfiguration _configuration;
public RegisterCheckPictureAppService( IRepository<RegisterCheckPicture, Guid> registerCheckPictureRepository, RegisterCheckPictureManager registerCheckPictureManager, IRepository<IdentityUser, Guid> userRepository, IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository, IConfiguration configuration, IRepository<RegisterCheck, Guid> registerCheckRepository, IRepository<PatientRegister, Guid> patientRegisterRepository, IRepository<LisRequest, Guid> lisRequestRepository) { _registerCheckPictureRepository = registerCheckPictureRepository; _registerCheckPictureManager = registerCheckPictureManager; _userRepository = userRepository; _registerCheckAsbitemRepository = registerCheckAsbitemRepository; _configuration = configuration; _registerCheckRepository = registerCheckRepository; _patientRegisterRepository = patientRegisterRepository; _lisRequestRepository = lisRequestRepository; }
/// <summary>
/// 根据RegisterCheckId获取列表
/// </summary>
/// <param name="RegisterCheckId">RegisterCheck表ID</param>
/// <returns></returns>
[HttpGet("api/app/registercheckpicture/getregistercheckpictureinregistercheckid")] public async Task<List<RegisterCheckPictureDto>> GetRegisterCheckPictureInRegisterCheckIdAsync(Guid RegisterCheckId) { var query = from a in await _registerCheckPictureRepository.GetQueryableAsync() join b in await _userRepository.GetQueryableAsync() on a.CreatorId equals b.Id into bb from ab in bb.DefaultIfEmpty() join c in await _userRepository.GetQueryableAsync() on a.LastModifierId equals c.Id into cc from ac in cc.DefaultIfEmpty() where a.RegisterCheckId == RegisterCheckId select new { a, CreatorName = ab != null ? ab.Surname : "", LastModifierName = ac != null ? ac.Surname : "" };
var entlistdto = query.Select(s => new RegisterCheckPictureDto { Id = s.a.Id, RegisterCheckId = s.a.RegisterCheckId, CreationTime = s.a.CreationTime, CreatorId = s.a.CreatorId, DisplayOrder = s.a.DisplayOrder, IsPrint = s.a.IsPrint, LastModificationTime = s.a.LastModificationTime, LastModifierId = s.a.LastModifierId, PictureFilename = s.a.PictureFilename, LastModifierName = s.LastModifierName, CreatorName = s.CreatorName }).OrderBy(o => o.DisplayOrder).ToList();
return entlistdto; }
/// <summary>
/// 创建以及更新 批量操作 排序值不传就默认按传过来的顺序生成
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/registercheckpicture/UpdateRegisterCheckPictureStatusMany")] public async Task UpdateRegisterCheckPictureStatusManyAsync(List<UpdateRegisterCheckPictureStatusManyDto> input) {
if (!input.Any()) { throw new UserFriendlyException("请求参数有误"); }
List<RegisterCheckPicture> entlist_insert = new List<RegisterCheckPicture>(); List<RegisterCheckPicture> entlist_update = new List<RegisterCheckPicture>();
string PicName = DateTime.Now.ToString("yyyyMMddHHmmss");
foreach (var item in input) {
var ent = await _registerCheckPictureRepository.FirstOrDefaultAsync(m => m.Id == item.RegisterCheckPictureId); if (ent != null) { ent.DisplayOrder = input.IndexOf(item) + 1; // ent.PictureFilename = item.PictureFilename;
ent.IsPrint = item.IsPrint;
entlist_update.Add(ent); }
} if (entlist_update.Any()) { await _registerCheckPictureRepository.UpdateManyAsync(entlist_update); } }
/// <summary>
/// 图片上传功能 base64 支持批量
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/registercheckpicture/uploadregistercheckpicturemany")] public async Task<List<string>> UploadRegisterCheckPictureManyAsync(UploadRegisterCheckPictureManyDto input) {
Random rd = new Random();
string AbsolutePath = _configuration.GetValue<string>("VirtualPath:RealPath"); string AbsoluteName = _configuration.GetValue<string>("VirtualPath:Alias");
List<string> msg = new List<string>();
if (!input.PictureBaseStrs.Any()) { throw new UserFriendlyException("请求参数有误"); }
string PatientRegisterId = "";
var patientRegisterCompleteFlag = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId where registerCheck.Id == input.RegisterCheckId select new { CompleteFlag = patientRegister.CompleteFlag }).ToList();
if (patientRegisterCompleteFlag.Count == 0) throw new UserFriendlyException("体检人员不存在");
if (patientRegisterCompleteFlag.FirstOrDefault().CompleteFlag == PatientRegisterCompleteFlag.PreRegistration) throw new UserFriendlyException("预登记人员不能导入图片"); if (patientRegisterCompleteFlag.FirstOrDefault().CompleteFlag == PatientRegisterCompleteFlag.SumCheck) throw new UserFriendlyException("已总检人员不能导入图片");
List<RegisterCheckPicture> entlist_insert = new List<RegisterCheckPicture>();
foreach (var item in input.PictureBaseStrs) {
//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(), AbsoluteName);
if (string.IsNullOrEmpty(PictureUrl)) { throw new UserFriendlyException("图片数据有误"); }
var ent = await _registerCheckPictureRepository.FirstOrDefaultAsync(m => m.RegisterCheckId == input.RegisterCheckId && m.PictureFilename == PictureUrl);
if (ent != null) { ent.PictureFilename = PictureUrl;
await _registerCheckPictureRepository.UpdateAsync(ent); } else { ent = new RegisterCheckPicture { DisplayOrder = input.PictureBaseStrs.IndexOf(item) + 1, IsPrint = 'Y', PictureFilename = PictureUrl, RegisterCheckId = input.RegisterCheckId, PictureFileType = input.PictureFileType };
await _registerCheckPictureRepository.InsertAsync(ent); }
msg.Add(PictureUrl);
}
return msg; }
/// <summary>
/// 图片上传功能 文件流 支持批量
/// </summary>
/// <param name="files"></param>
/// <param name="RegisterCheckId"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[RemoteService(false)] [HttpPost("api/app/registercheckpicture/uploadregistercheckpicturefilemany")] public async Task<List<string>> UploadRegisterCheckPictureFileManyAsync([FromForm(Name = "file")] List<IFormFile> files, Guid RegisterCheckId) {
Random rd = new Random();
string AbsolutePath = _configuration.GetValue<string>("VirtualPath:RealPath");
List<string> msg = new List<string>();
if (!files.Any()) { throw new UserFriendlyException("请求参数有误"); }
string PatientRegisterId = "";
var registerAsbitemEntity = await _registerCheckAsbitemRepository.FirstOrDefaultAsync(m => m.RegisterCheckId == RegisterCheckId); if (registerAsbitemEntity != null) { PatientRegisterId = registerAsbitemEntity.PatientRegisterId.ToString(); } else { throw new UserFriendlyException("体检人员不存在"); }
string PicName = DateTime.Now.ToString("yyyyMMddHHmmss") + rd.Next(1000, 9999);
List<RegisterCheckPicture> entlist_insert = new List<RegisterCheckPicture>();
foreach (var item in files) {
string PictureUrl = ImageHelper.Base64StrToImageInAbsolutePath2(AbsolutePath, item, PatientRegisterId, RegisterCheckId.ToString(), PicName + "_" + (files.IndexOf(item) + 1));
if (string.IsNullOrEmpty(PictureUrl)) { throw new UserFriendlyException("图片数据有误"); }
var ent = new RegisterCheckPicture { DisplayOrder = files.IndexOf(item) + 1, IsPrint = 'N', PictureFilename = PictureUrl, RegisterCheckId = RegisterCheckId };
entlist_insert.Add(ent);
msg.Add(PictureUrl);
}
if (entlist_insert.Any()) { await _registerCheckPictureRepository.InsertManyAsync(entlist_insert); }
return msg; }
/// <summary>
/// 删除 批量
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/registercheckpicture/deleteregistercheckpicturemany")] public async Task DeleteRegisterCheckPictureManyAsync(List<Guid> ids) { if (ids.Any()) { var patientRegisterCompleteFlag = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId join registerCheckPicture in await _registerCheckPictureRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckPicture.RegisterCheckId where ids.Contains(registerCheckPicture.Id) select new { CompleteFlag = patientRegister.CompleteFlag }).ToList();
if (patientRegisterCompleteFlag.Count == 0) throw new UserFriendlyException("Id不存在");
if (patientRegisterCompleteFlag.FirstOrDefault().CompleteFlag == PatientRegisterCompleteFlag.SumCheck) { throw new UserFriendlyException("已总检人员不能删除图片"); }
await _registerCheckPictureRepository.DeleteAsync(m => ids.Contains(m.Id)); } else { throw new UserFriendlyException("请求参数有误"); } }
/// <summary>
/// 导入检查图片 根据检查单号
/// </summary>
/// <returns></returns>
[HttpPost("api/app/RegisterCheckPicture/ImportRegisterCheckPicture")] public async Task ImportRegisterCheckPictureAsync(ImportRegisterCheckPictureInputDto input) { var registerCheckEnt = await _registerCheckRepository.FirstOrDefaultAsync(f => f.CheckRequestNo == input.CheckRequestNo); if (registerCheckEnt == null) throw new UserFriendlyException("检查条码号不正确");
if (string.IsNullOrWhiteSpace(input.PictureBase64)) throw new UserFriendlyException("图片不能为空");
var pic = new List<UploadRegisterCheckPictureManyPictureBaseStrsDto>(); pic.Add(new UploadRegisterCheckPictureManyPictureBaseStrsDto { FileName = input.PictureName, PictureBaseStr = input.PictureBase64 });
await UploadRegisterCheckPictureManyAsync(new UploadRegisterCheckPictureManyDto { PictureBaseStrs = pic, PictureFileType = '0', RegisterCheckId = registerCheckEnt.Id });
}
/// <summary>
/// 导入检查图片 根据人员条码号+项目ID
/// </summary>
/// <returns></returns>
[HttpPost("api/app/RegisterCheckPicture/ImportRegisterCheckPictureByPatientRegisterNo")] public async Task ImportRegisterCheckPictureByPatientRegisterNoAsync(ImportRegisterCheckPictureByPatientRegisterNoInputDto input) { var registerCheckList = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId where patientRegister.PatientRegisterNo == input.PatientRegisterNo && registerCheckAsbitem.AsbitemId == input.AsbitemId select registerCheck).ToList();
if (!registerCheckList.Any()) throw new UserFriendlyException("人员信息或项目信息不正确");
if (string.IsNullOrWhiteSpace(input.PictureBase64)) throw new UserFriendlyException("图片不能为空");
var pic = new List<UploadRegisterCheckPictureManyPictureBaseStrsDto>(); pic.Add(new UploadRegisterCheckPictureManyPictureBaseStrsDto { FileName = input.PictureName, PictureBaseStr = input.PictureBase64 });
foreach (var registerCheck in registerCheckList) { await UploadRegisterCheckPictureManyAsync(new UploadRegisterCheckPictureManyDto { PictureBaseStrs = pic, PictureFileType = '0', RegisterCheckId = registerCheck.Id }); }
}
/// <summary>
/// 导入检查图片 根据检验申请号
/// </summary>
/// <returns></returns>
[HttpPost("api/app/RegisterCheckPicture/ImportRegisterCheckPictureByLisRequestNo")] public async Task ImportRegisterCheckPictureByLisRequestNoAsync(ImportRegisterCheckPictureByLisRequestNoInputDto input) { var registerCheckList = (from registerCheck in await _registerCheckRepository.GetQueryableAsync() join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id where lisRequest.LisRequestNo == input.LisRequestNo && registerCheckAsbitem.AsbitemId == input.AsbitemId select registerCheck).ToList();
if (!registerCheckList.Any()) throw new UserFriendlyException("人员信息或项目信息不正确");
if (string.IsNullOrWhiteSpace(input.PictureBase64)) throw new UserFriendlyException("图片不能为空");
var pic = new List<UploadRegisterCheckPictureManyPictureBaseStrsDto>(); pic.Add(new UploadRegisterCheckPictureManyPictureBaseStrsDto { FileName = input.PictureName, PictureBaseStr = input.PictureBase64 });
foreach (var registerCheck in registerCheckList) { await UploadRegisterCheckPictureManyAsync(new UploadRegisterCheckPictureManyDto { PictureBaseStrs = pic, PictureFileType = '0', RegisterCheckId = registerCheck.Id }); }
}
/// <summary>
/// 仪器采图接口
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/RegisterCheckPicture/InstrumentMapping")] public async Task<List<string>> InstrumentMappingAsync(InstrumentMappingDto input) {
Random rd = new Random();
string AbsolutePath = _configuration.GetValue<string>("PacsVirtualPath:RealPath"); string AbsoluteName = _configuration.GetValue<string>("PacsVirtualPath:Alias");
List<string> msg = new List<string>();
if (!input.PictureBaseStrs.Any()) { throw new UserFriendlyException("请求参数有误"); }
string PatientRegisterId = "";
var patientRegisterCompleteFlag = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId where registerCheck.Id == input.RegisterCheckId select new { CompleteFlag = patientRegister.CompleteFlag }).ToList();
if (patientRegisterCompleteFlag.Count == 0) throw new UserFriendlyException("体检人员不存在");
if (patientRegisterCompleteFlag.FirstOrDefault().CompleteFlag == PatientRegisterCompleteFlag.PreRegistration) throw new UserFriendlyException("预登记人员不能导入图片"); if (patientRegisterCompleteFlag.FirstOrDefault().CompleteFlag == PatientRegisterCompleteFlag.SumCheck) throw new UserFriendlyException("已总检人员不能导入图片");
List<RegisterCheckPicture> entlist_insert = new List<RegisterCheckPicture>();
foreach (var item in input.PictureBaseStrs) {
string PictureUrl = ImageHelper.Base64StrToImageInAbsolutePath(AbsolutePath, item.FileName, item.PictureBaseStr, PatientRegisterId, input.RegisterCheckId.ToString(), AbsoluteName);
if (string.IsNullOrEmpty(PictureUrl)) { throw new UserFriendlyException("图片数据有误"); }
var ent = await _registerCheckPictureRepository.FirstOrDefaultAsync(m => m.RegisterCheckId == input.RegisterCheckId && m.PictureFilename == PictureUrl);
if (ent != null) { ent.PictureFilename = PictureUrl;
await _registerCheckPictureRepository.UpdateAsync(ent); } else { ent = new RegisterCheckPicture { DisplayOrder = input.PictureBaseStrs.IndexOf(item) + 1, IsPrint = 'Y', PictureFilename = PictureUrl, RegisterCheckId = input.RegisterCheckId, PictureFileType = input.PictureFileType, LocalPathName = item.LocalPathName };
await _registerCheckPictureRepository.InsertAsync(ent); }
msg.Add(PictureUrl);
}
return msg; } }}
|