Browse Source

小动物接口

fly 8 months ago
parent
commit
9b368d1ec2
2 changed files with 141 additions and 4 deletions
  1. 42 0
      src/Service/DatabaseService.cs
  2. 99 4
      src/Service/ResearchProjectDBService.cs

+ 42 - 0
src/Service/DatabaseService.cs

@@ -171,6 +171,8 @@ namespace WingMongoDBModule.Service
         private ChargeResourcePackageDBRepository _chargeResourcePackageDBRepository;
         private MultiPartUploadInfoDBRepository _multiPartUploadInfoDBRepository;
         private UserUrmConfigDBRepository _userUrmConfigDBRepository;
+        private bool isContainURMAuth = false;
+        private bool isContainVETAuth = false;
 
         public DatabaseService()
         {
@@ -277,6 +279,7 @@ namespace WingMongoDBModule.Service
             DOShare.ForceHttps = EnvironmentConfigManager.GetParammeter<BoolParameter>("Storage", "ForceHttps").Value;
             _isCarotidOn = GetIsCarotidOn();
             RegisterRepository();
+            ResearchEditionServiceAuth().Wait();
             var databaseExist = MongoRepertoryCenter.Instance.DatabaseExist();
             if (!databaseExist)
             {
@@ -3146,5 +3149,44 @@ namespace WingMongoDBModule.Service
                 }
             }
         }
+
+        private async Task ResearchEditionServiceAuth()
+        {
+            var currentSoftwareLicenseInfoJson = EnvironmentConfigManager.GetParammeter<StringParameter>("Services", "CurrentSoftwareLicenseInfo").Value;
+            LicenseInfoDTO licenseInfoDTO = new LicenseInfoDTO();
+            if (!string.IsNullOrEmpty(currentSoftwareLicenseInfoJson))
+            {
+                licenseInfoDTO = JsonConvert.DeserializeObject<LicenseInfoDTO>(currentSoftwareLicenseInfoJson);
+            }
+            if (!string.IsNullOrEmpty(licenseInfoDTO?.AuthorityInfos?.Trim()))
+            {
+                var dongleAuth = licenseInfoDTO.AuthorityInfos.Split('丨')?.ToList();
+                if (dongleAuth.Count > 0)
+                {
+                    isContainURMAuth = dongleAuth.Exists(c => c == "URMAuthority");
+                    isContainVETAuth = dongleAuth.Exists(c => c == "VETAuthority");
+                }
+            }
+            if (isContainVETAuth)
+            {
+                var builder = Builders<ResearchProjectEntity>.Filter;
+                var filter = builder.Where(c => c.IsDelete == false && c.Code == "BaseVetProject");
+                var existEntity = await _researchProjectDBRepository.Exists(filter);
+                if (!existEntity)
+                {
+                    var entity = new ResearchProjectEntity();
+                    entity.Code = "BaseVetProject";
+                    entity.CreateTime = DateTime.UtcNow;
+                    entity.UpdateTime = DateTime.UtcNow;
+                    entity.OperateTime = DateTime.UtcNow;
+                    entity.OperatorName = "系统默认";
+                    entity.CreatorName = "系统默认";
+                    entity.PatientType = OrganizationPatientTypeEnum.Animals;
+                    entity.Introduction = "系统默认";
+                    await _researchProjectDBRepository.InsertOneAsync(entity);
+
+                }
+            }
+        }
     }
 }

+ 99 - 4
src/Service/ResearchProjectDBService.cs

@@ -62,6 +62,10 @@ namespace WingMongoDBModule.Service
                 {
                     filter = filter & builder.Where(x => x.BelongUserCode == request.UserCode || x.UserCodes.Contains(request.UserCode));
                 }
+                else if (request.SearchType == ResearchProjectSearchTypeEnum.Default)
+                {
+                    filter = filter & builder.Where(x => x.Code == "BaseVetProject");
+                }
                 var dataList = await _researchProjectDBRepository.FindAllAsync(filter);
                 return dataList.MappingTo<List<ResearchProjectBaseDTO>>();
             }
@@ -198,6 +202,10 @@ namespace WingMongoDBModule.Service
             using (new Performance(_performanceThreshold, "{0} UpdateResearchProjectDBAsync execute", "DatabaseService"))
             {
                 var res = false;
+                if (request.Code == "BaseVetProject")
+                {
+                    return res;
+                }
                 var sameNameBuilder = Builders<ResearchProjectEntity>.Filter;
                 var sameNameFilter = sameNameBuilder.Where(c => c.IsDelete == false && c.Name == request.Name);
                 var sameNameDataInfo = await _researchProjectDBRepository.FindOneAsync(sameNameFilter);
@@ -253,6 +261,10 @@ namespace WingMongoDBModule.Service
         {
             using (new Performance(_performanceThreshold, "{0} DeleteResearchProjectDBAsync execute", "DatabaseService"))
             {
+                if (request.Code == "BaseVetProject")
+                {
+                    return false;
+                }
                 var projectCode = request.Code;
                 var result = await _researchProjectDBRepository.DeleteOneAsync("Code", projectCode);
                 //删除文件
@@ -352,6 +364,10 @@ namespace WingMongoDBModule.Service
             using (new Performance(_performanceThreshold, "{0} InviteResearchProjectMembersDBAsync execute", "DatabaseService"))
             {
                 var res = false;
+                if (request.Code == "BaseVetProject")
+                {
+                    return res;
+                }
                 var builder = Builders<ResearchProjectEntity>.Filter;
                 var filter = builder.Where(c => c.IsDelete == false && c.Code == request.Code);
                 var dataInfo = await _researchProjectDBRepository.FindOneAsync(filter);
@@ -404,6 +420,10 @@ namespace WingMongoDBModule.Service
             using (new Performance(_performanceThreshold, "{0} RemoveResearchProjectMembersRequest execute", "DatabaseService"))
             {
                 var res = false;
+                if (request.Code == "BaseVetProject")
+                {
+                    return res;
+                }
                 var builder = Builders<ResearchProjectEntity>.Filter;
                 var filter = builder.Where(c => c.IsDelete == false && c.Code == request.Code);
                 var dataInfo = await _researchProjectDBRepository.FindOneAsync(filter);
@@ -769,6 +789,7 @@ namespace WingMongoDBModule.Service
                         dbPage.DataCount = patients.DataCount;
                         var records = await FindRecordInfosByProjectCodeAsync(request.ProjectCode);
                         var remedicals = await GetRemedicalsByProjectCodeAsync(request.ProjectCode);
+                        var devices = await FindDeviceInfoListByCodeListAsync(patients.PageData.Select(x => x.DeviceCode).ToList());
                         dbPage.PageData = new List<ResearchProjectDataDTO>();
                         foreach (var item in patients.PageData)
                         {
@@ -791,6 +812,8 @@ namespace WingMongoDBModule.Service
                             researchProjectDataDTO.PatientCode = item.PatientCode;
                             researchProjectDataDTO.IsUrm = item.IsUrm;
                             researchProjectDataDTO.PatientName = item.Name;
+                            var device = devices.FirstOrDefault(x => x.DeviceCode == item.DeviceCode);
+                            researchProjectDataDTO.DeviceShortCode = device?.ShortCode;
                             dbPage.PageData.Add(researchProjectDataDTO);
                         }
                     }
@@ -969,6 +992,78 @@ namespace WingMongoDBModule.Service
             return sampleDetailList;
         }
 
+
+        /// <summary>
+        /// 转入数据接口
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        public async Task<bool> TransferDataDBAsync(TransferDataDBRequest request)
+        {
+            var patientCodes = request.PatientCodes;
+            var projectCode = request.ProjectCode;
+            var userCode = request.UserCode;
+            var userName = request.UserName;
+            //转项目,小动物科研的只会有小动物类型不会有人用类型,todo在创建项目的时候就要注意
+            var patients = await FindPatientInfoListByCodeListAsync(patientCodes);
+            var records = await FindRecordInfosByPatientCodesAsync(patientCodes, DateTime.MinValue, DateTime.MinValue);
+            var remedicalDatas = await GetRecordRemedicalsByRecordsAsync(records.Select(x => x.RecordCode).ToList(), DateTime.MinValue, DateTime.MinValue);
+            foreach (var patient in patients)
+            {
+                patient.ProjectCode = projectCode;
+                await UpdatePatientsAsync(patient.PatientCode, patient, null);
+            }
+            foreach (var record in records)
+            {
+                record.ProjectCode = projectCode;
+                await UpdateRecordInfoByCodeAsync(record.RecordCode, record, null);
+            }
+            foreach (var remedical in remedicalDatas)
+            {
+                remedical.ProjectCode = projectCode;
+                await ModifyRemedicalInfoAsync(remedical.RemedicalCode, remedical, null);
+            }
+            //转出时间轴
+            var task = new TaskEntity()
+            {
+                BusinessId = "",
+                TaskName = "",
+                MainTaskCode = "",
+                Description = "",
+                CreatorName = request.UserName,
+                OperatorCode = request.UserCode,
+                OperatorName = request.UserName,
+                OperateTime = DateTime.UtcNow,
+                Status = VTaskStatus.Completed,
+                TaskType = VTaskType.TransferOut,
+                CreateTime = DateTime.UtcNow,
+                UpdateTime = DateTime.UtcNow,
+                BusinessCode = "BaseVetProject",
+                JsonData = string.Join(",", patients.Select(x => x.Name))
+            };
+            await _taskDBRepository.InsertOneAsync(task);
+            //转入时间轴
+            var taskIn = new TaskEntity()
+            {
+                BusinessId = "",
+                TaskName = "",
+                MainTaskCode = "",
+                Description = "",
+                CreatorName = request.UserName,
+                OperatorCode = request.UserCode,
+                OperatorName = request.UserName,
+                OperateTime = DateTime.UtcNow,
+                Status = VTaskStatus.Completed,
+                TaskType = VTaskType.TransferIn,
+                CreateTime = DateTime.UtcNow,
+                UpdateTime = DateTime.UtcNow,
+                BusinessCode = projectCode,
+                JsonData = string.Join(",", patients.Select(x => x.Name))
+            };
+            await _taskDBRepository.InsertOneAsync(taskIn);
+            return true;
+        }
+
         private SampleRemedicalInfoDTO ConvertToSampleRemedical(RemedicalInfoDTO remedicalData)
         {
             var sampleRemedicalInfoDTO = new SampleRemedicalInfoDTO();
@@ -1287,7 +1382,7 @@ namespace WingMongoDBModule.Service
                                         sampleRemedicalInfoDTO.ImgList = remedicalItem.ImgList;
                                         if (sampleRemedicalInfoDTO.ImgList?.Count > 0)
                                         {
-                                            foreach(var item in sampleRemedicalInfoDTO.ImgList)
+                                            foreach (var item in sampleRemedicalInfoDTO.ImgList)
                                             {
                                                 item.CoverImgUrl = item.CoverImgUrl.ToLocalUrl();
                                                 item.FileToken = item.FileToken.ToLocalUrl();
@@ -1338,9 +1433,9 @@ namespace WingMongoDBModule.Service
                                                 imgSampleRemedicalInfoDTO.CreateTime = remedicalItem.CreateTime;
                                                 imgSampleRemedicalInfoDTO.FileDataType = GetSampleRemedicalFileDataTypeEnumByImgType(img.ImgType);
                                                 imgSampleRemedicalInfoDTO.ImageSize = img.FileSize;
-                                                imgSampleRemedicalInfoDTO.ImageUrl = img.FileToken.ToLocalUrl();;
-                                                imgSampleRemedicalInfoDTO.PreviewUrl = img.PreviewFileUrl.ToLocalUrl();;
-                                                imgSampleRemedicalInfoDTO.CoverImgUrl = img.CoverImgUrl.ToLocalUrl();;
+                                                imgSampleRemedicalInfoDTO.ImageUrl = img.FileToken.ToLocalUrl(); ;
+                                                imgSampleRemedicalInfoDTO.PreviewUrl = img.PreviewFileUrl.ToLocalUrl(); ;
+                                                imgSampleRemedicalInfoDTO.CoverImgUrl = img.CoverImgUrl.ToLocalUrl(); ;
                                                 sampleRemedicalBasicInfo.SampleRemedicalInfoList.Add(imgSampleRemedicalInfoDTO);
                                             }
                                         }