Index: ssts-web/src/test/java/test/forgon/disinfectsystem/goodsstock/service/GoodsStockManagerTests.java =================================================================== diff -u -r17162 -r17432 --- ssts-web/src/test/java/test/forgon/disinfectsystem/goodsstock/service/GoodsStockManagerTests.java (.../GoodsStockManagerTests.java) (revision 17162) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/goodsstock/service/GoodsStockManagerTests.java (.../GoodsStockManagerTests.java) (revision 17432) @@ -4,6 +4,7 @@ import java.util.List; import org.hibernate.exception.GenericJDBCException; +import org.springframework.dao.CannotAcquireLockException; import org.springframework.orm.hibernate4.HibernateJdbcException; import org.springframework.orm.hibernate4.HibernateSystemException; import org.springframework.test.annotation.Rollback; @@ -109,6 +110,8 @@ success = false; }catch(HibernateSystemException e){ success = false; + }catch(CannotAcquireLockException e){ + success = false; } if(!success){ System.out.println(Thread.currentThread().getName() + "超时,重试"); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/packing/SterilizationRecordManagerTestsForCompleteSterileRecord.java =================================================================== diff -u -r17148 -r17432 --- ssts-web/src/test/java/test/forgon/disinfectsystem/packing/SterilizationRecordManagerTestsForCompleteSterileRecord.java (.../SterilizationRecordManagerTestsForCompleteSterileRecord.java) (revision 17148) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/packing/SterilizationRecordManagerTestsForCompleteSterileRecord.java (.../SterilizationRecordManagerTestsForCompleteSterileRecord.java) (revision 17432) @@ -7,7 +7,11 @@ import java.util.Date; import java.util.List; +import org.hibernate.exception.GenericJDBCException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.CannotAcquireLockException; +import org.springframework.orm.hibernate4.HibernateJdbcException; +import org.springframework.orm.hibernate4.HibernateSystemException; import org.testng.annotations.Test; import test.forgon.constant.Constants; @@ -28,6 +32,7 @@ import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.service.SterilizationRecordManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.runwithtrans.model.RunWithTransNewTask; +import com.forgon.serialnumber.model.SerialNum; /** * 灭菌记录完成灭菌的测试用例 @@ -54,10 +59,10 @@ .getOrgUnitCodingFromSupplyRoomConfig(); WareHouse wareHouse = wareHouseManager.getDefaultWareHouseByUnitCode(orgUnitCode); int count = 1000; - int barcodeStart = barcodeIndex; - SterilizationRecord sterilizationRecord = prepareTousse(orgUnitCode, 1, count); - - TousseInstance tousseInstance = tousseInstanceManager.getFirst("barcode", "01002" + String.format("%04d", barcodeStart)); + List barcodes = new ArrayList<>(); + SterilizationRecord sterilizationRecord = prepareTousse(orgUnitCode, 1, count,barcodes); + assertEquals(barcodes.size(), 1000); + TousseInstance tousseInstance = tousseInstanceManager.getFirst("barcode", barcodes.get(0)); String sql = String.format("wareHouseId=%d and tousseDefinitionId=%d", wareHouse.getId(),tousseInstance.getTousseDefinition().getAncestorID()); List goodsStocks = goodsStockManager.getByHql(sql); int beforeStocks = goodsStockManager.calculateTotalAmount(goodsStocks); @@ -72,8 +77,8 @@ System.out.println("time:" + (a - b)); assertEquals(sterilizationRecord.getStatus(), SterilizationRecord.STERILIZATION_STATUS_END); - for(int i = barcodeStart;i barcodes = new ArrayList<>(); + SterilizationRecord sterilizationRecord = prepareTousse(orgUnitCode, 1000, 1,barcodes); + assertEquals(barcodes.size(), 1000); List rids = new ArrayList(); rids.add(sterilizationRecord.getId()); long b = Calendar.getInstance().getTimeInMillis(); @@ -104,9 +110,8 @@ System.out.println("time:" + (a - b)); assertEquals(sterilizationRecord.getStatus(), SterilizationRecord.STERILIZATION_STATUS_END); - for(int i = barcodeStart;i barcodes = new ArrayList<>(); + SterilizationRecord sterilizationRecord = prepareTousse(orgUnitCode,20,50,barcodes); + assertEquals(barcodes.size(), 1000); List rids = new ArrayList(); rids.add(sterilizationRecord.getId()); long b = Calendar.getInstance().getTimeInMillis(); @@ -140,9 +145,8 @@ System.out.println("time:" + (a - b)); assertEquals(sterilizationRecord.getStatus(), SterilizationRecord.STERILIZATION_STATUS_END); - for(int i = barcodeStart;i allTousseInstanceBarcode = new ArrayList(); class ThreadRoute implements Runnable{ @Override public void run() { List rids = new ArrayList(); - runWithTransNewManager.runWith_TRANS_NEW(new RunWithTransNewTask(){ - @Override - public void runTask() { - SterilizationRecord sterilizationRecord1 = prepareTousse(orgUnitCode,2,20,1,SterilizationRecord.STERILIZATION_STATUS_INTERRUPT); - SterilizationRecord sterilizationRecord2 = prepareTousse(orgUnitCode,2,20,1,SterilizationRecord.STERILIZATION_STATUS_INTERRUPT); - SterilizationRecord sterilizationRecord3 = prepareTousse(orgUnitCode,2,20,3,SterilizationRecord.STERILIZATION_STATUS_BEGIN); - SterilizationRecord sterilizationRecord4 = prepareTousse(orgUnitCode,2,20,3,SterilizationRecord.STERILIZATION_STATUS_BEGIN); - SterilizationRecord sterilizationRecord5 = prepareTousse(orgUnitCode,2,20,3,SterilizationRecord.STERILIZATION_STATUS_BEGIN); - - rids.add(sterilizationRecord1.getId()); - rids.add(sterilizationRecord2.getId()); - rids.add(sterilizationRecord3.getId()); - rids.add(sterilizationRecord4.getId()); - rids.add(sterilizationRecord5.getId()); - }}); + boolean success = false; + List thisAddBarcodes = new ArrayList<>(); + while(!success){ + thisAddBarcodes.clear(); + success = safelyRunWithTransNew(new RunWithTransNewTask(){ + @Override + public void runTask() { + SterilizationRecord sterilizationRecord1 = prepareTousse(orgUnitCode,2,20,1,SterilizationRecord.STERILIZATION_STATUS_INTERRUPT,thisAddBarcodes); + SterilizationRecord sterilizationRecord2 = prepareTousse(orgUnitCode,2,20,1,SterilizationRecord.STERILIZATION_STATUS_INTERRUPT,thisAddBarcodes); + SterilizationRecord sterilizationRecord3 = prepareTousse(orgUnitCode,2,20,3,SterilizationRecord.STERILIZATION_STATUS_BEGIN,thisAddBarcodes); + SterilizationRecord sterilizationRecord4 = prepareTousse(orgUnitCode,2,20,3,SterilizationRecord.STERILIZATION_STATUS_BEGIN,thisAddBarcodes); + SterilizationRecord sterilizationRecord5 = prepareTousse(orgUnitCode,2,20,3,SterilizationRecord.STERILIZATION_STATUS_BEGIN,thisAddBarcodes); + + rids.add(sterilizationRecord1.getId()); + rids.add(sterilizationRecord2.getId()); + rids.add(sterilizationRecord3.getId()); + rids.add(sterilizationRecord4.getId()); + rids.add(sterilizationRecord5.getId()); + }}); + } + allTousseInstanceBarcode.addAll(thisAddBarcodes); //模拟一个新的事务 runWithTransNewManager.runWith_TRANS_NEW(new RunWithTransNewTask() { @@ -233,9 +261,9 @@ t5.join(); WareHouse wareHouse = wareHouseManager.getDefaultWareHouseByUnitCode(orgUnitCode); - - for(int i = barcodeStart;i addBarcodes){ + SterilizationRecord record = prepareTousse(orgUnitCode,toussedefCount,tousseInstanceCount,addBarcodes); record.setSterilizationType("灭菌程序" + sterilisationIndex); record.setStatus(status); sterilizationRecordManager.saveOrUpdate(record); return record; } - private SterilizationRecord prepareTousse(String orgUnitCode,int toussedefCount,int tousseInstanceCount) { + private SterilizationRecord prepareTousse(String orgUnitCode,int toussedefCount,int tousseInstanceCount,List addBarcodes) { Sterilizer s = sterilizerManager.getSterilizerByDepartCoding(orgUnitCode).get(0); SterilizationRecord sterilizationRecord = new SterilizationRecord(); @@ -326,7 +357,8 @@ tousseInstance2.setTousseName(tousseDefinition1.getName()); tousseInstance2.setStatus(TousseInstance.STATUS_STERILING); tousseInstance2.setVirtualBasketSeqNum("001"); - tousseInstance2.setBarcode("01002" + String.format("%04d", getBarcodeIndex())); + tousseInstance2.setBarcode(getBarcode()); + addBarcodes.add(tousseInstance2.getBarcode()); tousseInstanceManager.saveOrUpdate(tousseInstance2); tousseInstances.add(tousseInstance2); }