页面调起结算
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/SettlementLogController.java b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/SettlementLogController.java
index 296af29..e94a27f 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/SettlementLogController.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/SettlementLogController.java
@@ -1,8 +1,8 @@
 package com.supwisdom.dlpay.system.controller;
 
+import com.supwisdom.dlpay.api.SettlementAsyncTask;
 import com.supwisdom.dlpay.api.bean.JsonResult;
 import com.supwisdom.dlpay.framework.domain.TSettleLog;
-import com.supwisdom.dlpay.framework.domain.TSyspara;
 import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.framework.util.WebConstant;
 import com.supwisdom.dlpay.system.bean.SettleLogSearchBean;
@@ -19,6 +19,8 @@
 public class SettlementLogController {
   @Autowired
   private SettlementLogService settlementLogService;
+  @Autowired
+  private SettlementAsyncTask settlementAsyncTask;
 
   @GetMapping("/settlelog/index")
   public String userdtlView() {
@@ -46,7 +48,8 @@
   @ResponseBody
   public JsonResult doSettlement() {
     try {
-      return JsonResult.error("暂不支持调用结算执行逻辑");
+      settlementAsyncTask.doHandSettleTask();
+      return JsonResult.ok("异步结算中,请查询日志查看结算结果");
     } catch (Exception e) {
       e.printStackTrace();
       return JsonResult.error("系统处理异常").put("exception", e);
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/async_tasks.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/async_tasks.kt
index a9fbfa0..e771add 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/async_tasks.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/async_tasks.kt
@@ -9,10 +9,13 @@
 import com.supwisdom.dlpay.api.repositories.ShopaccService
 import com.supwisdom.dlpay.api.service.DtlQueryResultService
 import com.supwisdom.dlpay.api.service.TransactionServiceProxy
+import com.supwisdom.dlpay.exception.TransactionException
+import com.supwisdom.dlpay.framework.service.DayendSettleService
 import com.supwisdom.dlpay.framework.service.SystemUtilService
 import com.supwisdom.dlpay.framework.tenant.TenantContext
 import com.supwisdom.dlpay.framework.util.ApplicationUtil
 import com.supwisdom.dlpay.framework.util.Constants
+import com.supwisdom.dlpay.framework.util.StringUtil
 import com.supwisdom.dlpay.framework.util.TradeDict
 import com.supwisdom.dlpay.util.ConstantUtil
 import mu.KotlinLogging
@@ -32,7 +35,7 @@
 @Configuration
 @EnableAsync
 class SpringAsyncConfig : AsyncConfigurer {
-    @Bean(value = ["shopAccBalanceUpdater", "queryAgentPayResult"])
+    @Bean(value = ["shopAccBalanceUpdater"])
     fun threadPoolExecutor(): Executor {
         return ThreadPoolTaskExecutor().apply {
             corePoolSize = 5
@@ -41,6 +44,15 @@
         }
     }
 
+    @Bean(value = ["queryAgentPayResult"])
+    fun queryAgentPayResultExecutor(): Executor {
+        return ThreadPoolTaskExecutor().apply {
+            corePoolSize = 5
+            maxPoolSize = 10
+            setWaitForTasksToCompleteOnShutdown(true)
+        }
+    }
+
     @Bean(name = ["sourcetypeCheckTaskExecutor"])
     fun threadPoolTaskExecutor(): Executor {
         return ThreadPoolTaskExecutor().apply {
@@ -50,6 +62,15 @@
         }
     }
 
+    @Bean(name = ["handSettlementAsyncTask"])
+    fun handSettlementAsyncTaskExecutor(): Executor {
+        return ThreadPoolTaskExecutor().apply {
+            corePoolSize = 5
+            maxPoolSize = 10
+            setWaitForTasksToCompleteOnShutdown(true)
+        }
+    }
+
     override fun getAsyncUncaughtExceptionHandler(): AsyncUncaughtExceptionHandler? {
         return MyAsyncUncaughtExceptionHandler()
     }
@@ -155,5 +176,42 @@
             ex.printStackTrace()
         }
     }
+}
+
+/**
+ * 异步调用结算任务
+ * */
+@Component
+class SettlementAsyncTask {
+    @Autowired
+    private lateinit var dayendSettleService: DayendSettleService
+
+    private val logger = KotlinLogging.logger { }
+
+    @Async("handSettlementAsyncTask")
+    fun doHandSettleTask() {
+        logger.info("进入手动发起的异步结算:")
+        if (null == TenantContext.getTenantSchema()) TenantContext.setTenantSchema(Constants.DEFAULT_TENANTID)
+        val settleLog = dayendSettleService.doCreateSettleLog() //记录日志
+        try {
+            val ret = dayendSettleService.doDayendSettle()
+            if (ret) {
+                logger.info("异步结算完成,结算成功")
+                dayendSettleService.doUpdateSettleLog(settleLog.update("0", "成功结算"))
+            }
+        } catch (ex: TransactionException) {
+            logger.error("异步结算报错!${ex.message}")
+            dayendSettleService.doUpdateSettleLog(settleLog.update("" + ex.code(), ex.message))
+        } catch (e: Exception) {
+            if (!StringUtil.isEmpty(e.message)) {
+                logger.error("异步结算报错!${e.message}")
+                dayendSettleService.doUpdateSettleLog(settleLog.update("-9", e.message))
+            } else {
+                logger.error("异步结算报错!${e.javaClass.name}")
+                e.printStackTrace()
+                dayendSettleService.doUpdateSettleLog(settleLog.update("-8", e.javaClass.name))
+            }
+        }
+    }
 
 }
\ No newline at end of file
diff --git a/payapi/src/main/resources/templates/system/settlelog/index.html b/payapi/src/main/resources/templates/system/settlelog/index.html
index 3ba86e1..2e381f2 100644
--- a/payapi/src/main/resources/templates/system/settlelog/index.html
+++ b/payapi/src/main/resources/templates/system/settlelog/index.html
@@ -68,7 +68,11 @@
                         fixed: 'left',
                         sort: true,
                         templet: function (e) {
-                            return admin.formatDate(e.endtime);
+                            if(null!=e.endtime) {
+                                return admin.formatDate(e.endtime);
+                            }else{
+                                return '';
+                            }
                         }
                     },
                     {
@@ -123,23 +127,25 @@
         });
 
         $('#search-settlelog-deal').click(function () {
-            var token = $("meta[name='_csrf_token']").attr("value");
-            admin.go('[[@{/settlelog/dosettle}]]', {
-                _csrf: token
-            }, function (data) {
-                if (data.code === 200) {
-                    layer.msg(data.msg, {icon: 1, time: 1000});
-                    table.reload('settlementLogTable');
-                } else if (data.code === 401) {
-                    layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('[[@{/login}]]');
-                    }, 1000);
-                } else {
-                    layer.msg(data.msg, {icon: 2});
-                    return;
-                }
-            }, function (err) {
-                admin.errorBack(err);
+            layer.confirm("确定要调起结算吗?", function () {
+                var token = $("meta[name='_csrf_token']").attr("value");
+                admin.go('[[@{/settlelog/dosettle}]]', {
+                    _csrf: token
+                }, function (data) {
+                    if (data.code === 200) {
+                        layer.msg(data.msg, {icon: 1, time: 1000});
+                        table.reload('settlementLogTable');
+                    } else if (data.code === 401) {
+                        layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+                            location.replace('[[@{/login}]]');
+                        }, 1000);
+                    } else {
+                        layer.msg(data.msg, {icon: 2});
+                        return;
+                    }
+                }, function (err) {
+                    admin.errorBack(err);
+                });
             });
         });