YaHello 在 Java后端实战案例解决方案讨论 中发帖
背景:ERP系统中给一条合同创建回款单,回款单创建完成后更新合同的已收/未收金额字段。
业务:在审批场景下,可以给一条合同创建多条审批中的回款单(审批通过后才生效),为保证系统运行速度,用户点击审批同意后,主线程会去判断合同的未收金额是否足够,足够才能继续向下执行。但是审批会涉及到复杂的节点流转业务,所以更新合同已收/未收金额操作要通过MQ异步执行,从而提高响应速度。
问题:如果用户非常快的给同一合同的两条回款单点击同意,后同意的回款单很容易在主线程拿到先同意的回款单异步逻辑执行完成前的合同已收/未收金额,从而导致合同已收金额开超。
问了AI给出的方案不太符合现有需求,欢迎各位大佬理性讨论,各抒己见。(ps:前提一定要保证使用MQ更新合同金额)