From 12d360e4730dcabc5a6925bd6a63629f3df745d5 Mon Sep 17 00:00:00 2001 From: Tang Cheng Date: Tue, 6 Aug 2019 21:20:34 +0800 Subject: [PATCH] =?utf8?q?=E7=BB=86=E5=8C=96=E5=AF=B9=E8=B4=A6=E9=80=BB?= =?utf8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../dlpay/api/scheduler_sourcetype_chk.kt | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) 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 b7f5a142..3f895f98 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 @@ -34,45 +34,48 @@ class SourceTypeCheck { @Autowired private lateinit var sourceTypeCheckExecutor: SourceTypeCheckExecutor - private fun newSourceTypeStatus(sourceType: TSourceType): TSourceTypeCheckStatus { + private fun newSourceTypeStatus(sourceType: TSourceType, accdate: String): TSourceTypeCheckStatus { return TSourceTypeCheckStatus().also { it.sourceType = sourceType.sourceType it.tenantId = sourceType.tenantid // 没有对账文件状态时创建一条以当前系统记账日期为起始时间的对账明细 - it.startAccdate = systemUtilService.accdate + it.startAccdate = accdate it.checkAccdate = it.startAccdate it.forceRecheck = false it.checkFileDate = it.startAccdate it.checkFileOk = false + it.checkStatus = false }.let { sourceTypeService.saveOrUpdateSourceTypeCheckStatus(it) } } private fun determineSourceTypeCheck(sourcetype: TSourceType): TSourceTypeCheckStatus? { - if (!sourcetype.checkable) { + if (!sourcetype.checkable || !sourcetype.enable) { return null } + val accdate = systemUtilService.accdate val status = sourceTypeService.getSourceTypeCheckStatus(sourcetype.sourceType) - ?: newSourceTypeStatus(sourcetype) - - // 小于对账日期 - val interval = DateUtil.getIntervalDay(status.checkAccdate, systemUtilService.accdate) - // 已对账 - if (status.checkStatus) { - // 大于等于结算日期进行对账 - return if (interval >= sourcetype.tplusN) { - status.checkAccdate = DateUtil.getNewDay(status.checkAccdate, 1) - status.checkStatus = false - status.checkFileDate = DateUtil.getNewDay(status.checkFileDate, 1) - status.checkFileOk = false - sourceTypeService.saveOrUpdateSourceTypeCheckStatus(status) - } else { - // 未到对账时间,跳过 - null - } + ?: newSourceTypeStatus(sourcetype, accdate) + + val interval = DateUtil.getIntervalDay(status.checkAccdate, accdate).toInt() + return if (status.checkStatus && interval == sourcetype.tplusN) { + // 当前日期对账已完成,并且已经对账到最后一天 + null + } else if (status.checkStatus && interval > sourcetype.tplusN) { + // 当前日期对账已完成 且 后面还有对账可以进行 + status.checkAccdate = DateUtil.getNewDay(status.checkAccdate, 1) + status.checkStatus = false + status.checkFileDate = DateUtil.getNewDay(status.checkFileDate, 1) + status.checkFileOk = false + sourceTypeService.saveOrUpdateSourceTypeCheckStatus(status) + } else if (!status.checkStatus && interval >= sourcetype.tplusN) { + // 当前对账并未完成 且满足对账条件 + status + } else { + // 其它条件不对账 + null } - return status } @Scheduled(cron = "\${payapi.sourcetype.checker.scheduler:-}") @@ -130,10 +133,14 @@ class SourceTypeCheck { // async task not finished } } - checkProcessResult.removeIf { finishResult.contains(it) } - finishResult.clear() - checkProcessResult.addAll(newPrcResult) - newPrcResult.clear() + finishResult.takeIf { it.isNotEmpty() }?.also { list -> + checkProcessResult.removeIf { list.contains(it) } + list.clear() + } + newPrcResult.takeIf { it.isNotEmpty() }?.also { + checkProcessResult.addAll(it) + it.clear() + } } } } -- 2.17.1