:feat: 新增金蝶单据锁定解锁总开关(billLock.enabled,控制推送锁单/解锁回调/补偿重锁)
This commit is contained in:
+8
@@ -372,6 +372,14 @@ public class BfiProperties {
|
||||
@Data
|
||||
public static class BillLock {
|
||||
|
||||
/**
|
||||
* 锁定/解锁总开关(thirdParty.bfi.billLock.enabled):推送后锁定 lockBusiData、
|
||||
* 金蝶解锁回调 unLockNotifyBusiData、锁定补偿重锁三处共用;
|
||||
* 默认开启保持既有锁定行为,Nacos 置 false 一键停用
|
||||
* (推送后不再锁单、解锁回调只应答不处理、补偿跳过),存量锁记录守卫(不可编辑校验)不受影响
|
||||
*/
|
||||
private boolean enabled = true;
|
||||
|
||||
/**
|
||||
* 锁定补偿开关,默认关闭(安全兜底)
|
||||
*/
|
||||
|
||||
+15
@@ -73,6 +73,11 @@ public class KingdeeBillLockServiceImpl extends ServiceImpl<KingdeeBillLockMappe
|
||||
|
||||
@Override
|
||||
public String lockAfterPush(String sourceBillType, Long sourceBillId, String sourceBillNo, String targetBillType, List<String> targetBillNos) {
|
||||
// 总开关关闭:不落锁记录、不调 lockBusiData,返回 null 不影响推送主流程
|
||||
if (!bfiProperties.getBillLock().isEnabled()) {
|
||||
log.info("金蝶单据锁定总开关关闭,跳过锁定:源单[{}:{}]", sourceBillType, sourceBillNo);
|
||||
return null;
|
||||
}
|
||||
if (Func.isEmpty(targetBillNos)) {
|
||||
return null;
|
||||
}
|
||||
@@ -145,6 +150,12 @@ public class KingdeeBillLockServiceImpl extends ServiceImpl<KingdeeBillLockMappe
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int onUnlockNotify(BfiBillLockDTO param) {
|
||||
// 总开关关闭:只应答不处理(返回 0 与「未匹配」同构,金蝶侧不会触发重试)
|
||||
if (!bfiProperties.getBillLock().isEnabled()) {
|
||||
log.warn("金蝶单据锁定总开关关闭,跳过解锁回调处理:operationType={},targetBillNo={}",
|
||||
param == null ? null : param.getOperationType(), param == null ? null : param.getTargetBillNo());
|
||||
return 0;
|
||||
}
|
||||
if (param == null || !KingdeeLockConstant.SYSTEM_XH.equals(param.getSourceSystem())
|
||||
|| !KingdeeLockConstant.SYSTEM_WLTMS.equals(param.getTargetSystem())
|
||||
|| !KingdeeLockConstant.ACTION_UNLOCK.equals(param.getLockAction())) {
|
||||
@@ -265,6 +276,10 @@ public class KingdeeBillLockServiceImpl extends ServiceImpl<KingdeeBillLockMappe
|
||||
*/
|
||||
@Override
|
||||
public String retryFailedLocks() {
|
||||
// 总开关关闭:定时任务与手动补偿一并跳过
|
||||
if (!bfiProperties.getBillLock().isEnabled()) {
|
||||
return "金蝶单据锁定总开关关闭,跳过补偿";
|
||||
}
|
||||
List<KingdeeBillLock> failedList = this.list(Wrappers.<KingdeeBillLock>lambdaQuery()
|
||||
.eq(KingdeeBillLock::getLockStatus, KingdeeLockConstant.STATUS_FAILED)
|
||||
.lt(KingdeeBillLock::getTryCount, KingdeeLockConstant.RETRY_MAX_COUNT));
|
||||
|
||||
@@ -96,6 +96,8 @@ thirdParty:
|
||||
lockLeaseSeconds: ${BFI_RECEIPT_CLAIM_PUSH_LOCK_LEASE_SECONDS:1800}
|
||||
# 金蝶单据锁定定时补偿
|
||||
billLock:
|
||||
# 锁定/解锁总开关(推送后锁定+解锁回调+补偿重锁共用),默认开启保持既有行为
|
||||
enabled: ${BFI_BILL_LOCK_ENABLED:true}
|
||||
# 锁定补偿开关,默认关闭(安全兜底)
|
||||
retryEnabled: ${BFI_BILL_LOCK_RETRY_ENABLED:false}
|
||||
# 补偿调度 cron,默认每5分钟(:02 起步,错峰避让其他金蝶任务)
|
||||
|
||||
Reference in New Issue
Block a user