Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r23374 -r23375 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 23374) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 23375) @@ -1669,7 +1669,7 @@ @Override public void run() { try{ -// reviewedBasketManager.deleteEmptyBasket(); + reviewedBasketManager.deleteEmptyBasket(); //然后执行计算虚拟篮筐状态 if(CollectionUtils.isNotEmpty(virtualBasketNameList)){ //重新计算虚拟篮筐状态 Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManagerImpl.java =================================================================== diff -u -r22616 -r23375 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManagerImpl.java (.../ReviewedBasketManagerImpl.java) (revision 22616) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManagerImpl.java (.../ReviewedBasketManagerImpl.java) (revision 23375) @@ -273,22 +273,18 @@ public void deleteEmptyBasket() { objectDao.flush(); - //sql语句的性能太差,改为下面那句 - /*String containersql = "select distinct b.container_id from container c,ReviewedBasket b " - + "left join tousseInstance t on b.id = t.reviewBasket_id " - + "where c.id = b.container_id and t.id is null";*/ + String updateSql = "update Container set status='"+Container.CONTAINER_STATUS_FREE+"' " + + " where purpose='"+Container.CONTAINER_PURPOSE_DISINFECTION+"' and status <> " + + "'"+Container.CONTAINER_STATUS_FREE+"' and id not in (select rb.container_id from ReviewedBasket rb " + + " where rb.id in (select ti.reviewBasket_id from TousseInstance " + + " ti where ti.status in ('"+TousseInstance.STATUS_PACKED+"','"+TousseInstance.STATUS_REVIEWED+"'," + + "'"+TousseInstance.STATUS_STERILING+"','"+TousseInstance.STATUS_REVIEWED+"','"+TousseInstance.STATUS_DISINFECTED+"') " + + " and ti.reviewBasket_id is not null))"; + objectDao.excuteSQL(updateSql); - //将上面性能较差的语句更换为此句 - String containersql = "select distinct b.container_id from ReviewedBasket b " - + "left join tousseInstance t on b.id = t.reviewBasket_id " - + "where t.id is null"; String whereSql = "select distinct b.id from ReviewedBasket b left join tousseInstance t " + "on b.id = t.reviewBasket_id where t.id is null"; - - String udpateSql = "update container set status = '" + Container.CONTAINER_STATUS_FREE - + "' where id in ("+ containersql+")"; - objectDao.excuteSQL(udpateSql); String sql = "delete sterilization_reviewed where reviewedBasket_id in(" + whereSql + ")"; objectDao.excuteSQL(sql); // 删除代理灭菌单的关联