fix(oms): 批量审核运输业务单号重复(goods_number取号三层防线)
根因: 取号为「COUNT当日单量+1+查重后移」, 非原子、无锁、无唯一索引。 批量审核并发创建运输业务单时, 多请求在同一查重窗口取到同一序号并全部 插入成功, 且将同一单号回填到出库单business_number, 页面所见单号重复。 - GoodsNumberGenerator: 取号改为当日MAX+1+存在性校验后移; 按yyMMdd分段的 JVM锁串行化"取号+插单"; 插单后自检同号自动改号自愈; 兼容唯一索引撞号重试 - BusinessDocumentOrderDomainService: 主创建入口改走原子"取号+插单", 出库/入库单号回填移至插单成功之后 - BusinessDocumentOrderImpl: 审核拆单子单路径同改 - Mapper: countByGoodsNumberPrefix改为selectGoodsNumbersByPrefix
This commit is contained in:
+2
-2
@@ -1278,8 +1278,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
select PUSH_VERIFY from NGWL_TEST_PRODUCT.SYS_ORGANIZATION where ORGANIZATION_ID = #{organizationId}
|
||||
</select>
|
||||
|
||||
<select id="countByGoodsNumberPrefix" resultType="java.lang.Integer">
|
||||
SELECT COUNT(1)
|
||||
<select id="selectGoodsNumbersByPrefix" resultType="java.lang.String">
|
||||
SELECT goods_number
|
||||
FROM business_document_order
|
||||
WHERE goods_number LIKE concat(#{prefix}, '%')
|
||||
AND LENGTH(goods_number) <= 12
|
||||
|
||||
Reference in New Issue
Block a user