fix: 作废认领不再生成本地KDCX冲单——金蝶单号/状态保留原值,接口改无返回
This commit is contained in:
+3
-2
@@ -84,8 +84,9 @@ public class ReceiptClaimRecordController extends BladeController {
|
||||
@PostMapping("/void")
|
||||
@ApiOperationSupport(order = 4)
|
||||
@Operation(summary = "作废认领记录并生成金蝶认领冲单")
|
||||
public R<String> voidClaim(@RequestParam Long id) {
|
||||
return R.data(receiptClaimRecordService.voidClaim(id));
|
||||
public R<Void> voidClaim(@RequestParam Long id) {
|
||||
receiptClaimRecordService.voidClaim(id);
|
||||
return R.success("作废成功");
|
||||
}
|
||||
|
||||
@PostMapping("/query-kingdee-result")
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ public interface IReceiptClaimRecordService extends BaseService<ReceiptClaim> {
|
||||
|
||||
void updateAttachments(ReceiptClaimAttachmentsRequest request);
|
||||
|
||||
String voidClaim(Long id);
|
||||
void voidClaim(Long id);
|
||||
|
||||
/**
|
||||
* A301-1 收款单查询回写认领结果:按来源单据编码匹配金蝶收款单,推进金蝶单据状态
|
||||
|
||||
+4
-12
@@ -184,7 +184,7 @@ public class ReceiptClaimRecordServiceImpl extends BaseServiceImpl<ReceiptClaimM
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String voidClaim(Long id) {
|
||||
public void voidClaim(Long id) {
|
||||
ReceiptClaim claim = baseMapper.selectOne(Wrappers.<ReceiptClaim>lambdaQuery()
|
||||
.eq(ReceiptClaim::getId, id)
|
||||
.eq(ReceiptClaim::getClaimerId, AuthUtil.getUserId())
|
||||
@@ -252,10 +252,9 @@ public class ReceiptClaimRecordServiceImpl extends BaseServiceImpl<ReceiptClaimM
|
||||
flow.setClaimStatus(amountClaimStatus(flowClaimedAfter, flow.getUnclaimedAmount()));
|
||||
receiptFlowMapper.updateById(flow);
|
||||
|
||||
String kingdeeBillNo = buildKingdeeBillNo(claim.getId());
|
||||
// 作废不生成金蝶认领冲单:金蝶单号/状态保留原值(未推送为空,已推送为真实收款单信息),
|
||||
// 金蝶侧冲销/红冲由人工处置
|
||||
claim.setClaimStatus(VOIDED);
|
||||
claim.setKingdeeBillNo(kingdeeBillNo);
|
||||
claim.setKingdeeBillStatus(APPROVED);
|
||||
claim.setVoidedBy(AuthUtil.getUserId());
|
||||
claim.setVoidedByName(Func.isEmpty(AuthUtil.getUserName()) ? claim.getClaimerName()
|
||||
: AuthUtil.getUserName());
|
||||
@@ -272,9 +271,8 @@ public class ReceiptClaimRecordServiceImpl extends BaseServiceImpl<ReceiptClaimM
|
||||
operationRecord.setOperationAmount(money(claim.getClaimAmount()));
|
||||
operationRecord.setOperatorName(Func.isEmpty(AuthUtil.getUserName()) ? "system"
|
||||
: AuthUtil.getUserName());
|
||||
operationRecord.setContent("生成金蝶认领冲单:" + kingdeeBillNo + ",状态:审核通过");
|
||||
operationRecord.setContent("作废认领,回退认领金额 " + money(claim.getClaimAmount()));
|
||||
recordMapper.insert(operationRecord);
|
||||
return kingdeeBillNo;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -394,12 +392,6 @@ public class ReceiptClaimRecordServiceImpl extends BaseServiceImpl<ReceiptClaimM
|
||||
return VOIDED.equals(claimStatus) ? VOIDED : CLAIMED;
|
||||
}
|
||||
|
||||
private String buildKingdeeBillNo(Long claimId) {
|
||||
String time = DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(LocalDateTime.now());
|
||||
String suffix = String.valueOf(claimId);
|
||||
return "KDCX" + time + suffix.substring(Math.max(0, suffix.length() - 6));
|
||||
}
|
||||
|
||||
/**
|
||||
* 累计认领金额 → 流水认领状态:对照公告未认领金额判定(与收款流水侧口径一致)
|
||||
*/
|
||||
|
||||
@@ -172,7 +172,7 @@ claimed 累计有效认领 == unclaimed_amount(且 > 0) ← 「认领
|
||||
`voidClaim()` 现有逻辑保留:
|
||||
|
||||
1. **累计认领不考虑作废**:作废行 `status=0`,分摊聚合天然排除——与「累计认领不考虑作废的」要求一致,无需改代码;作废后重算流水 `claimed_amount/claim_status`(口径按 §3.2)。
|
||||
2. **作废永不触发推送**:未推送的认领作废 → 纯本地;已推送流水的认领作废 → 本地 KDCX 冲单号 + 金蝶人工处置(沿用旧文档原则 5)。作废后即使重认领使等式再次满足,`push_status=pushed` 的终态闸门也阻止二次推送。
|
||||
2. **作废永不触发推送、不生成冲单**:未推送的认领作废 → 纯本地;已推送流水的认领作废 → 不生成本地冲单号,认领记录金蝶信息保留原值,金蝶侧冲销/红冲由人工处置(沿用旧文档原则 5)。作废后即使重认领使等式再次满足,`push_status=pushed` 的终态闸门也阻止二次推送。
|
||||
|
||||
### 4.7 重新同步(A301-2 sync 补一处)
|
||||
|
||||
@@ -247,7 +247,7 @@ claimed 累计有效认领 == unclaimed_amount(且 > 0) ← 「认领
|
||||
| 推送报文 | `buildClaimPushDTO` | billid=流水.bill_id;**单条分录**:e_receivableamt=全部未推送金额(累计有效认领),seq/e_corebillno=第一张结算单id;awrp_src_code=分摊结算单号下划线拼接 |
|
||||
| 手动接口 | `ReceiptFlowController.pushKingdee`(`POST /receipt-flow/push-kingdee`) | 成功返回金蝶收款单号,失败 R.fail(原因);按钮权限 `receipt_flow_push` |
|
||||
| 回写 | `ReceiptClaimRecordServiceImpl.refreshKingdeeResult()` | 轮询对象改流水(push_status=pushed 且回写状态 pushed/approved),按流水 awrp_src_code 匹配,级联刷新认领主单冗余字段 |
|
||||
| 作废 | `ReceiptClaimRecordServiceImpl.voidClaim()` | claim_status 重算口径改对照公告未认领金额(其余不变,作废不触发推送) |
|
||||
| 作废 | `ReceiptClaimRecordServiceImpl.voidClaim()` | claim_status 重算口径改对照公告未认领金额;**不再生成本地 KDCX 冲单号**(金蝶单号/状态保留原值),作废不触发推送 |
|
||||
| 同步 | `ReceiptFlowServiceImpl.sync()` + 共享 `queryClaimAnnounces` | unclaimed_amount 刷新后按新口径重算 claim_status;公告查询方法供 sync/手动推送/定时任务共用 |
|
||||
| 常量 | `KingdeeBfiConstant` | 新增 RECEIPT_CLAIM_PUSH_NONE/PUSHED/FAILED、RECEIPT_CLAIM_BILL_NONE |
|
||||
| 实体/VO | `KingdeeReceiptFlow`(推送域6字段)、`ReceiptClaim`(删 awrpSrcCode)、`ReceiptClaimMapper.xml`(删列)、`ReceiptFlowVO/Wrapper`(pushStatusName/kingdeeBillStatusName、剩余可认领改公告口径)、`ReceiptClaimPushResult`(新增 DTO) | — |
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
2. **作废永远不会触发推送**。
|
||||
3. 按流水是否已推送区分:
|
||||
- **未推送**:纯本地生效,无金蝶影响;补认领到认领完成后仍可正常推送;
|
||||
- **已推送**:本地生成冲单号留痕,金蝶侧冲销/红冲由人工在金蝶处置,该流水不会被再次自动推送。
|
||||
- **已推送**:不生成本地冲单,金蝶侧的冲销/红冲由人工在金蝶处置,该流水不会被再次自动推送。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user