Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ContainerManager.java =================================================================== diff -u -r22974 -r26910 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ContainerManager.java (.../ContainerManager.java) (revision 22974) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ContainerManager.java (.../ContainerManager.java) (revision 26910) @@ -1,5 +1,6 @@ package com.forgon.disinfectsystem.basedatamanager.container.service; +import java.util.Collection; import java.util.List; import com.forgon.disinfectsystem.basedatamanager.container.ContainerWaitPackingTaskVo; @@ -101,5 +102,11 @@ * @return 装配任务的 */ public List getPackingTask(String basketBarcode); - + /** + * 过滤相应状态的容器条码 + * @param barcodes 条码 + * @param status 过滤的状态 + * @return 条码 + */ + public Collection filterStatusContainer(Collection barcodes, String status); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ContainerManagerImpl.java =================================================================== diff -u -r23839 -r26910 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ContainerManagerImpl.java (.../ContainerManagerImpl.java) (revision 23839) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ContainerManagerImpl.java (.../ContainerManagerImpl.java) (revision 26910) @@ -3,6 +3,8 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; import java.util.List; import net.sf.json.JSONObject; @@ -22,6 +24,7 @@ import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.db.InitDbConnection; import com.forgon.tools.hibernate.BasePoManagerImpl; +import com.forgon.tools.util.SqlUtils; /** * @author WangYi @@ -651,5 +654,31 @@ } return list; } - + @Override + public Collection filterStatusContainer(Collection barcodes, String status) { + ResultSet rs = null; + Collection result = new HashSet(); + try { + String sql = new StringBuffer(140) + .append(" select bd.barcode from ") + .append(Container.class.getSimpleName()) + .append(" c inner join ") + .append(BarcodeDevice.class.getSimpleName()) + .append(" bd on c.id=bd.id where ") + .append(SqlUtils.getStringFieldInLargeCollectionsPredicate("bd.barcode", barcodes)) + .append(" and status<>'") + .append(status) + .append("'").toString(); + rs = objectDao.executeSql(sql); + while(rs.next()){ + String barcode = rs.getString("barcode"); + result.add(barcode); + } + } catch (Exception e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return result; + } } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r26825 -r26910 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 26825) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 26910) @@ -4998,10 +4998,17 @@ int count = objectDao.countObjectBySql(PackingTask.class.getSimpleName(), sql); if(count == 0){ Container container = containerManager.getContainerByBarcode(basketBarcode); - if(container != null && container.washed()){ + if(container == null){ + continue; + } + if(container.washed()){ container.setStatus(Container.CONTAINER_STATUS_PACKED); - containerManager.saveOrUpdate(container); + }else if(container.washloading()){ + container.setStatus(Container.CONTAINER_STATUS_FREE); + }else{ + continue; } + containerManager.saveOrUpdate(container); } } } Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java =================================================================== diff -u -r26789 -r26910 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 26789) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 26910) @@ -11,6 +11,7 @@ import java.util.Comparator; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -866,7 +867,12 @@ } } if (classifyBasket == null) { - classifyBasket = classifyBasketManager.getUnWashedBasket(container.getBarcode()); + Collection barcodes = new HashSet(); + barcodes.add(container.getBarcode()); + barcodes = containerManager.filterStatusContainer(barcodes, Container.CONTAINER_STATUS_FREE); + if(barcodes.size() > 0){ + classifyBasket = classifyBasketManager.getUnWashedBasket(container.getBarcode()); + } } if (classifyBasket == null) { boolean autoSetIDCardBarcodeForPacking = CssdUtils.getSystemSetConfigByNameBool("autoSetIDCardBarcodeForPacking"); Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/TousseIntoBasketService.java =================================================================== diff -u -r25601 -r26910 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/TousseIntoBasketService.java (.../TousseIntoBasketService.java) (revision 25601) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/TousseIntoBasketService.java (.../TousseIntoBasketService.java) (revision 26910) @@ -15,7 +15,9 @@ import org.apache.log4j.Logger; import com.forgon.disinfectsystem.basedata.becleanitem.service.ClassifyBasketManager; +import com.forgon.disinfectsystem.basedatamanager.container.service.ContainerManager; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; import com.forgon.disinfectsystem.idpredicate.IDOperators; @@ -123,7 +125,10 @@ } private ClassifyBasketManager classifyBasketManager; private TousseDefinitionManager tousseDefinitionManager; - + private ContainerManager containerManager; + public void setContainerManager(ContainerManager containerManager) { + this.containerManager = containerManager; + } public void setClassifyBasketManager(ClassifyBasketManager classifyBasketManager) { this.classifyBasketManager = classifyBasketManager; } @@ -244,6 +249,10 @@ //如果可以入多套外来器械,就不需要管当前篮筐里面已经装载的包了,只需要本次入筐的物品进行验证就可行了 return; } + barcodes = containerManager.filterStatusContainer(barcodes,Container.CONTAINER_STATUS_FREE); + if(barcodes == null || barcodes.size() ==0){ + return; + } List baskets = classifyBasketManager.getUnWashedBaskets(barcodes); if(CollectionUtils.isNotEmpty(baskets)){ List tdIds = new ArrayList(); Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r26881 -r26910 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 26881) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 26910) @@ -976,7 +976,7 @@ } } } - }else{ + }else if(!Container.CONTAINER_STATUS_FREE.equals(container.getStatus())){ classifyBasket = getUnWashedBasketByBasketBarcode(unWashedBasketMap, basketBarcode); } if (classifyBasket == null) { @@ -5073,9 +5073,17 @@ */ private Map getBasketUsedVolume(Map percentageMap, List customIntoBaskets) { Map map = new HashMap(); + Collection barcodeSet = new HashSet(); for (CustomIntoBasket customIntoBaset : customIntoBaskets) { + barcodeSet.add(customIntoBaset.getBarcode()); + } + barcodeSet = containerManager.filterStatusContainer(barcodeSet, Container.CONTAINER_STATUS_FREE); + for (CustomIntoBasket customIntoBaset : customIntoBaskets) { String barcode = customIntoBaset.getBarcode(); - ClassifyBasket basket = classifyBasketManager.getUnWashedBasket(barcode); + ClassifyBasket basket = null; + if(barcodeSet.contains(barcode)){ + basket = classifyBasketManager.getUnWashedBasket(barcode); + } Double percentage = 0.00; //持久化到数据库中的篮筐内物品 if(basket != null){