Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManagerImpl.java =================================================================== diff -u -r18455 -r18469 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManagerImpl.java (.../GoodsStockManagerImpl.java) (revision 18455) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/goodsstock/service/GoodsStockManagerImpl.java (.../GoodsStockManagerImpl.java) (revision 18469) @@ -837,6 +837,7 @@ List newIds = new ArrayList(); //在执行插入之前,锁住包定义,对此包定义的库存做插入操作 Set tousseDefinitionIds = gsToInsert.stream().map(p->p.getTousseDefinitionId()).collect(Collectors.toSet()); + //下面这一行不能去掉。只有锁住包定义的情况下才能避免多个线程同时插入相同包定义的库存记录。 List newTds = objectDao.getCollection_ForUpdate(TousseDefinition.class.getSimpleName(), "id", tousseDefinitionIds); //重新获取库存对象,看是否已经存在,如果不存在,则创建 for(GoodsStock gs : gsToInsert){