@ -2,6 +2,7 @@ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  log4net.Repository.Hierarchy ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  Npgsql ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  ServiceReferenceHzcyHis ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  Shentun.Peis.Enums ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  System ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  System.Collections.Generic ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					using  System.Data.Common ;  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -20,11 +21,11 @@ namespace Shentun.Peis.PlugIns.Gem 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            _endpointAddress  =  InterfaceConfig . GetSection ( "Interface" ) . GetSection ( "EndpointAddress" ) . Value ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        public  override  async  Task < ChargeRequestPlugInsOut >  SendRequestAsync ( ChargeRequestPlugInsInput  input )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        public  override  async  Task < ChargeRequestPlugInsOut >  SendCharge RequestAsync ( ChargeRequestPlugInsInput  input )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //建立人员档案
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					           var  patientRegisterForPlugIns  =  await  GetPatientRegisterForPlugIns Async ( input . ChargeRequestId ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					           var  chargeRequestForPlugIns  =  await  GetChargeRequestForPlugIns Async ( input . ChargeRequestId ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					           var  patientRegisterForPlugIns  =  await  GetPatientRegisterAsync ( input . ChargeRequestId ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					           var  chargeRequestForPlugIns  =  await  GetChargeRequestAsync ( input . ChargeRequestId ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if ( chargeRequestForPlugIns  = =  null )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                throw  new  Exception ( "没有申请单信息" ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -131,9 +132,9 @@ namespace Shentun.Peis.PlugIns.Gem 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  new  ChargeRequestPlugInsOut ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        public  override  async  Task < ChargeRequestPlugInsOut >  CancelRequestAsync ( ChargeRequestPlugInsInput  input )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        public  override  async  Task < ChargeRequestPlugInsOut >  CancelCharge RequestAsync ( ChargeRequestPlugInsInput  input )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  chargeRequestForPlugIns  =  await  GetChargeRequestForPlugIns Async ( input . ChargeRequestId ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  chargeRequestForPlugIns  =  await  GetChargeRequestAsync ( input . ChargeRequestId ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( chargeRequestForPlugIns  = =  null )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                throw  new  Exception ( "没有申请单信息" ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -161,18 +162,82 @@ namespace Shentun.Peis.PlugIns.Gem 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                throw  new  Exception ( "作废申请单失败"  +  result . MsgHeader . Detail ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            await  CancelAppChargeRequest Async( input . ChargeRequestId ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            await  SetAppChargeRequestFlag Async( input . ChargeRequestId ,  ChargeRequestFlag . AlreadyCancelCharge ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  new  ChargeRequestPlugInsOut ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        public  override  Task  DoWorkAsync ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        public  override  async  Task  DoWorkAsync ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            throw  new  Exception ( "格尔木DoWorkAsync。。。" ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            //return base.DoWorkAsync();
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        public  override  Task  DoWork ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  queryDaysStr  =  InterfaceConfig . GetSection ( "Scheduler" ) . GetSection ( "QueryDays" ) . Value ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( string . IsNullOrWhiteSpace ( queryDaysStr ) )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                queryDaysStr  =  "1" ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if ( ! int . TryParse ( queryDaysStr , out  int  days ) )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                days  =  1 ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  chargeRequests  =  GetRequests ( days ) . Result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            foreach  ( var  chargeRequest  in  chargeRequests )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                var  hisInput  =  new  HisPayStatusInput ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    Data  =  new  HisPayStatusDataInput ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        MsgHeader  =  new  HisMsgHeaderInput ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            Sender  =  "PEIS" ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            MsgType  =  "SVR_ODS_6105" ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            MsgVersion  =  "3.1" ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        } ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        Item  =  new  HisPayStatusDataItemInput ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            Yjxh  =  chargeRequest . HisChargeNo ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                            ExamRequestNo  =  chargeRequest . ChargeRequestNo ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                } ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                var  result  =  PayStatus ( hisInput ) . Result ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                if  ( result . MsgHeader . Status  ! =  "true" )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    throw  new  Exception ( "查询支付状态失败"  +  result . MsgHeader . Detail ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                //1:已支付,2.已作废3.已退费, 其他:未支付
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                char  charRequstFlag ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                if  ( result . MsgHeader . ErrCode  = =  "1" )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    charRequstFlag  =  ChargeRequestFlag . AlreadyCharge ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    SetAppChargeRequestFlagAsync ( chargeRequest . ChargeRequestId ,  charRequstFlag ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                else  if  ( result . MsgHeader . ErrCode  = =  "2" )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    charRequstFlag  =  ChargeRequestFlag . AlreadyCancelCharge ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    SetAppChargeRequestFlagAsync ( chargeRequest . ChargeRequestId ,  charRequstFlag ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                else  if  ( result . MsgHeader . ErrCode  = =  "3" )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    charRequstFlag  =  ChargeRequestFlag . AlreadyRefund ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    SetAppChargeRequestFlagAsync ( chargeRequest . ChargeRequestId ,  charRequstFlag ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                else  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    throw  new  Exception ( "查询支付状态不支持的收费标志"  +  result . MsgHeader . ErrCode ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  base . DoWork ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        public  override  async  Task < ChargeRequestPlugInsOut >  RefundRequestAsync ( ChargeRequestPlugInsInput  input )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  chargeRequestForPlugIns  =  await  GetChargeRequestForPlugInsAsync ( input . ChargeRequestId ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            var  chargeRequestForPlugIns  =  await  GetChargeRequestAsync ( input . ChargeRequestId ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( chargeRequestForPlugIns  = =  null )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                throw  new  Exception ( "没有申请单信息" ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -201,7 +266,7 @@ namespace Shentun.Peis.PlugIns.Gem 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                throw  new  Exception ( "允许退费申请失败"  +  result . MsgHeader . Detail ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            await  RefundAppChargeRequest Async( input . ChargeRequestId ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            await  SetAppChargeRequestFlag Async( input . ChargeRequestId ,  ChargeRequestFlag . RefundRequest ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            return  new  ChargeRequestPlugInsOut ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        public  async  Task < HisPatientQueryOut >  PatientQuery ( HisPatientQueryInput  input )