:feat: 新增金蝶单据锁定解锁总开关(billLock.enabled,控制推送锁单/解锁回调/补偿重锁)
This commit is contained in:
+8
@@ -372,6 +372,14 @@ public class BfiProperties {
|
|||||||
@Data
|
@Data
|
||||||
public static class BillLock {
|
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
|
@Override
|
||||||
public String lockAfterPush(String sourceBillType, Long sourceBillId, String sourceBillNo, String targetBillType, List<String> targetBillNos) {
|
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)) {
|
if (Func.isEmpty(targetBillNos)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -145,6 +150,12 @@ public class KingdeeBillLockServiceImpl extends ServiceImpl<KingdeeBillLockMappe
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public int onUnlockNotify(BfiBillLockDTO param) {
|
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())
|
if (param == null || !KingdeeLockConstant.SYSTEM_XH.equals(param.getSourceSystem())
|
||||||
|| !KingdeeLockConstant.SYSTEM_WLTMS.equals(param.getTargetSystem())
|
|| !KingdeeLockConstant.SYSTEM_WLTMS.equals(param.getTargetSystem())
|
||||||
|| !KingdeeLockConstant.ACTION_UNLOCK.equals(param.getLockAction())) {
|
|| !KingdeeLockConstant.ACTION_UNLOCK.equals(param.getLockAction())) {
|
||||||
@@ -265,6 +276,10 @@ public class KingdeeBillLockServiceImpl extends ServiceImpl<KingdeeBillLockMappe
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String retryFailedLocks() {
|
public String retryFailedLocks() {
|
||||||
|
// 总开关关闭:定时任务与手动补偿一并跳过
|
||||||
|
if (!bfiProperties.getBillLock().isEnabled()) {
|
||||||
|
return "金蝶单据锁定总开关关闭,跳过补偿";
|
||||||
|
}
|
||||||
List<KingdeeBillLock> failedList = this.list(Wrappers.<KingdeeBillLock>lambdaQuery()
|
List<KingdeeBillLock> failedList = this.list(Wrappers.<KingdeeBillLock>lambdaQuery()
|
||||||
.eq(KingdeeBillLock::getLockStatus, KingdeeLockConstant.STATUS_FAILED)
|
.eq(KingdeeBillLock::getLockStatus, KingdeeLockConstant.STATUS_FAILED)
|
||||||
.lt(KingdeeBillLock::getTryCount, KingdeeLockConstant.RETRY_MAX_COUNT));
|
.lt(KingdeeBillLock::getTryCount, KingdeeLockConstant.RETRY_MAX_COUNT));
|
||||||
|
|||||||
@@ -96,6 +96,8 @@ thirdParty:
|
|||||||
lockLeaseSeconds: ${BFI_RECEIPT_CLAIM_PUSH_LOCK_LEASE_SECONDS:1800}
|
lockLeaseSeconds: ${BFI_RECEIPT_CLAIM_PUSH_LOCK_LEASE_SECONDS:1800}
|
||||||
# 金蝶单据锁定定时补偿
|
# 金蝶单据锁定定时补偿
|
||||||
billLock:
|
billLock:
|
||||||
|
# 锁定/解锁总开关(推送后锁定+解锁回调+补偿重锁共用),默认开启保持既有行为
|
||||||
|
enabled: ${BFI_BILL_LOCK_ENABLED:true}
|
||||||
# 锁定补偿开关,默认关闭(安全兜底)
|
# 锁定补偿开关,默认关闭(安全兜底)
|
||||||
retryEnabled: ${BFI_BILL_LOCK_RETRY_ENABLED:false}
|
retryEnabled: ${BFI_BILL_LOCK_RETRY_ENABLED:false}
|
||||||
# 补偿调度 cron,默认每5分钟(:02 起步,错峰避让其他金蝶任务)
|
# 补偿调度 cron,默认每5分钟(:02 起步,错峰避让其他金蝶任务)
|
||||||
|
|||||||
Reference in New Issue
Block a user