Explorar o código

fix 0018667: 【医生签约】已解约的签约合同,可多次点击续约,生成多条续约记录

jeremy hai 10 meses
pai
achega
57a180d135

+ 17 - 0
src/VitalMixtureService/DBService/Service/ContractRecordDBService.cs

@@ -196,6 +196,23 @@ namespace VitalService.Service
             return await ConvertToDTO(entity, request.OperationDoctor);
         }
 
+        /// <summary>
+        /// 查询续签关联的签约记录
+        /// </summary>
+        /// <param name="request">获取请求</param>
+        /// <returns></returns>
+        public async Task<List<ContractRecordDTO>> GetRenewalContractDBAsync(GetRenewalContractDBRequest request)
+        {
+            var renewalContractCode = request.RenewalContractCode;
+            var filter = Builders<ContractRecordEntity>.Filter.Where(x => x.RenewalContractCode == renewalContractCode);
+            var entities = await _contractRecordDBRepository.FindAllAsync(filter);
+            if (entities?.Any() ?? false)
+            {
+                return await ConvertToDTOList(entities, request.OperationDoctor);
+            }
+            return null;
+        }
+
         /// <summary>
         /// 更新合约记录数据
         /// </summary>

+ 15 - 2
src/VitalMixtureService/FrontService/Service/ContractRecordService.cs

@@ -296,6 +296,16 @@ namespace VitalService.Service
             {
                 ThrowCustomerException((int)CustomerRpcCode.EndTimeFormatError, "End time format error");
             }
+            var getRenewalRecordDBRequest = new GetRenewalContractDBRequest
+            {
+                RenewalContractCode = request.Code,
+            };
+            await SetOperationDoctor(getRenewalRecordDBRequest, request.Token);
+            var renewalRecords = await _contractRecordDBService.GetRenewalContractDBAsync(getRenewalRecordDBRequest);
+            if (renewalRecords?.Any() ?? false)
+            {
+                ThrowCustomerException((int)CustomerRpcCode.RenewalRepeated, "Renewal Repeated");
+            }
             dbRequest.ServiceStartDate = request.ServiceStartDate.Value;
             dbRequest.ServiceEndDate = request.ServiceEndDate.Value;
             dbRequest.ContractState = ContractStateEnum.Signed;
@@ -305,6 +315,7 @@ namespace VitalService.Service
             dbRequest.ContractedDoctorPhone = oldContractRecord.ContractedDoctorPhone;
             dbRequest.TeamLeaderName = oldContractRecord.TeamLeaderName;
             dbRequest.PreceptorName = oldContractRecord.PreceptorName;
+            dbRequest.RenewalContractCode = oldContractRecord.RenewalContractCode;
             await SetOperationDoctor(dbRequest, request.Token);
             return await _contractRecordDBService.CreateContractRecordAsync(dbRequest);
         }
@@ -317,10 +328,12 @@ namespace VitalService.Service
         public async Task<ContractRecordDTO> GetDoctorContractRecordAsync(GetDoctorContractRecordRequest request)
         {
             var userCode = await GetClientIdByTokenAsync(request.Token);
-            return await _contractRecordDBService.GetDoctorContractRecordDBAsync(new GetDoctorContractRecordDBRequest
+            var dbRequest = new GetDoctorContractRecordDBRequest
             {
                 CreatedDoctor = userCode,
-            });
+            };
+            await SetOperationDoctor(dbRequest, request.Token);
+            return await _contractRecordDBService.GetDoctorContractRecordDBAsync(dbRequest);
         }
     }
 }