优化 agent 对账文件处理机制
diff --git a/payapi/build.gradle b/payapi/build.gradle
index 419a470..e2cdedd 100644
--- a/payapi/build.gradle
+++ b/payapi/build.gradle
@@ -58,6 +58,8 @@
     implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
     implementation 'commons-codec:commons-codec:1.12'
     implementation 'org.apache.commons:commons-lang3:3.9'
+    implementation 'net.javacrumbs.shedlock:shedlock-spring:2.5.0'
+    implementation 'net.javacrumbs.shedlock:shedlock-provider-redis-spring:2.5.0'
 
     implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery:2.1.2.RELEASE'
 
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
index b6f81aa..d0e6f9c 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
@@ -2,6 +2,8 @@
 
 import com.supwisdom.dlpay.framework.tenant.TenantCacheKeyGen
 import io.lettuce.core.ReadFrom
+import net.javacrumbs.shedlock.core.LockProvider
+import net.javacrumbs.shedlock.provider.redis.spring.RedisLockProvider
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.SpringApplication
 import org.springframework.boot.autoconfigure.SpringBootApplication
@@ -50,6 +52,11 @@
     fun createTenantCacheableKey(): KeyGenerator {
         return TenantCacheKeyGen()
     }
+
+    @Bean
+    fun lockProvider(connectionFactory: RedisConnectionFactory): LockProvider {
+        return RedisLockProvider(connectionFactory, "prod")
+    }
 }
 
 @Configuration
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt
index 096d924..7d93474 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt
@@ -13,6 +13,7 @@
 import com.supwisdom.dlpay.framework.util.ApplicationUtil
 import com.supwisdom.dlpay.framework.util.TradeDict
 import com.supwisdom.dlpay.util.ConstantUtil
+import net.javacrumbs.shedlock.core.SchedulerLock
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.context.ApplicationContext
 import org.springframework.scheduling.annotation.Scheduled
@@ -23,41 +24,17 @@
 class MySchedulerTask {
     @Autowired
     private lateinit var shopaccService: ShopaccService
-    @Autowired
-    private lateinit var systemUtilService: SystemUtilService
 
     fun doShopBlanceUpdate(dtl: TShopdtl) {
         shopaccService.recalcShopBalance(dtl.refno, true)
     }
 
     @Scheduled(cron = "\${shopbalance.updater.cron:-}")
+    @SchedulerLock(name = "dealShopUnupdatedDtl")
     fun dealShopUnupdatedDtl() {
-        var tasklock = TTaskLock()
-        try {
-            //集群控制
-            try {
-                tasklock = systemUtilService.doLockTask("SHOPBLANCEUPDATETASK", 10, "更新账户余额任务")
-                if (tasklock == null) {
-                    return
-                }
-            } catch (e: Exception) {
-                return
-            }
-
-            shopaccService.findUnupdatedShopDtl(100).forEach {
-                doShopBlanceUpdate(it)
-            }
-        } catch (ex: Exception) {
-            ex.printStackTrace()
-        } finally {
-            if (tasklock?.taskcode.isNotEmpty()) {
-                tasklock.taskstatus = 0
-                tasklock.tasktime = systemUtilService.sysdatetime.hostdatetime
-                systemUtilService.updateTaskLock(tasklock)
-            }
+        shopaccService.findUnupdatedShopDtl(100).forEach {
+            doShopBlanceUpdate(it)
         }
-
-
     }
 }
 
@@ -78,35 +55,15 @@
     private lateinit var applicationContext: ApplicationContext
 
     @Scheduled(cron = "\${query.third.transdtl.result.cron:-}")
+    @SchedulerLock(name = "DtlQueryResultSchedulerTask")
     fun queryThirdTransdtlResult() {
-        var tasklock = TTaskLock()
-        try {
-            //集群控制
+        //仅查询当天数据,查询次数在规定次数之下
+        dtlQueryResultService.getNeedQueryRecords(systemUtilService.accdate, ConstantUtil.QUERY_MAX_COUNT).forEach {
             try {
-                tasklock = systemUtilService.doLockTask("QUERYTHIRDTRANSDTLRESULTTASK", 10, "查询第三方流水状态任务")
-                if (tasklock == null) {
-                    return
-                }
-            } catch (e: Exception) {
-                return
-            }
-
-            //仅查询当天数据,查询次数在规定次数之下
-            dtlQueryResultService.getNeedQueryRecords(systemUtilService.accdate, ConstantUtil.QUERY_MAX_COUNT).forEach {
-                try {
-                    doQuery(it)
-                } catch (exp: Exception) {
-                    it.qcnt = it.qcnt + 1
-                    dtlQueryResultService.saveOrUpdateDtlQuery(it) //次数加一
-                }
-            }
-        } catch (ex: Exception) {
-            ex.printStackTrace()
-        } finally {
-            if (tasklock?.taskcode.isNotEmpty()) {
-                tasklock.taskstatus = 0
-                tasklock.tasktime = systemUtilService.sysdatetime.hostdatetime
-                systemUtilService.updateTaskLock(tasklock)
+                doQuery(it)
+            } catch (exp: Exception) {
+                it.qcnt = it.qcnt + 1
+                dtlQueryResultService.saveOrUpdateDtlQuery(it) //次数加一
             }
         }
     }