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;
public class SettlementLogController {
@Autowired
private SettlementLogService settlementLogService;
+ @Autowired
+ private SettlementAsyncTask settlementAsyncTask;
@GetMapping("/settlelog/index")
public String userdtlView() {
@ResponseBody
public JsonResult doSettlement() {
try {
- return JsonResult.error("暂不支持调用结算执行逻辑");
+ settlementAsyncTask.doHandSettleTask();
+ return JsonResult.ok("异步结算中,请查询日志查看结算结果");
} catch (Exception e) {
e.printStackTrace();
return JsonResult.error("系统处理异常").put("exception", e);
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
@Configuration
@EnableAsync
class SpringAsyncConfig : AsyncConfigurer {
- @Bean(value = ["shopAccBalanceUpdater", "queryAgentPayResult"])
+ @Bean(value = ["shopAccBalanceUpdater"])
fun threadPoolExecutor(): Executor {
return ThreadPoolTaskExecutor().apply {
corePoolSize = 5
}
}
+ @Bean(value = ["queryAgentPayResult"])
+ fun queryAgentPayResultExecutor(): Executor {
+ return ThreadPoolTaskExecutor().apply {
+ corePoolSize = 5
+ maxPoolSize = 10
+ setWaitForTasksToCompleteOnShutdown(true)
+ }
+ }
+
@Bean(name = ["sourcetypeCheckTaskExecutor"])
fun threadPoolTaskExecutor(): Executor {
return ThreadPoolTaskExecutor().apply {
}
}
+ @Bean(name = ["handSettlementAsyncTask"])
+ fun handSettlementAsyncTaskExecutor(): Executor {
+ return ThreadPoolTaskExecutor().apply {
+ corePoolSize = 5
+ maxPoolSize = 10
+ setWaitForTasksToCompleteOnShutdown(true)
+ }
+ }
+
override fun getAsyncUncaughtExceptionHandler(): AsyncUncaughtExceptionHandler? {
return MyAsyncUncaughtExceptionHandler()
}
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
fixed: 'left',
sort: true,
templet: function (e) {
- return admin.formatDate(e.endtime);
+ if(null!=e.endtime) {
+ return admin.formatDate(e.endtime);
+ }else{
+ return '';
+ }
}
},
{
});
$('#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);
+ });
});
});