diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_sourcetype_chk.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_sourcetype_chk.kt
index 2bee46c..b7f5a14 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_sourcetype_chk.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_sourcetype_chk.kt
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.api
 
 import com.supwisdom.dlpay.agent.AgentCode
+import com.supwisdom.dlpay.agent.AgentResponse
 import com.supwisdom.dlpay.agent.CheckFileProvider
 import com.supwisdom.dlpay.api.domain.TSourceType
 import com.supwisdom.dlpay.api.domain.TSourceTypeCheckStatus
@@ -165,8 +166,8 @@
     private fun downloadFile(provider: CheckFileProvider, checkStatus: TSourceTypeCheckStatus): ExecutorResult {
         return provider.downloadCheckFile(checkStatus.checkFileDate).let { resp ->
             when {
-                resp.code == AgentCode.SUCCESS -> ExecutorResult(checkStatus, SUCCESS, "成功")
-                resp.code == AgentCode.REQUIRE_QUERY -> ExecutorResult(checkStatus, WAIT, "等待查询对账文件")
+                resp.code == AgentCode.SUCCESS -> ExecutorResult(resp.payload, SUCCESS, "成功")
+                resp.code == AgentCode.REQUIRE_QUERY -> ExecutorResult(resp.payload, WAIT, "等待查询对账文件")
                 else -> ExecutorResult(checkStatus, FAIL, resp.agentMsg)
             }
         }
@@ -178,20 +179,23 @@
         val result = getProvider(checkStatus.sourceType)?.let { provider ->
             val acResp = provider.acquireCheckFile(checkStatus.checkFileDate)
             if (acResp.code == AgentCode.REQUIRE_QUERY) {
-                var success = false
+                var success: AgentResponse<TSourceTypeCheckStatus> =
+                        AgentResponse<TSourceTypeCheckStatus>().apply {
+                            code = AgentCode.FAIL
+                        }
                 repeat(10) {
-                    if (!success) {
+                    if (success.code != AgentCode.SUCCESS) {
                         Thread.sleep(3000)
-                        success = provider.queryCheckFile(checkStatus.checkFileDate).code == AgentCode.SUCCESS
+                        success = provider.queryCheckFile(checkStatus.checkFileDate)
                     }
                 }
-                if (success) {
-                    downloadFile(provider, checkStatus)
+                if (success.code == AgentCode.SUCCESS) {
+                    downloadFile(provider, success.payload)
                 } else {
                     ExecutorResult(checkStatus, FAIL, "下载失败,未能查到对账文件")
                 }
             } else if (acResp.code == AgentCode.SUCCESS) {
-                downloadFile(provider, checkStatus)
+                downloadFile(provider, acResp.payload)
             } else {
                 ExecutorResult(checkStatus, FAIL, acResp.agentMsg)
             }
