页面调起结算
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);
+ });
});
});