Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManager.java =================================================================== diff -u -r28550 -r28551 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManager.java (.../ClassifyBasketManager.java) (revision 28550) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManager.java (.../ClassifyBasketManager.java) (revision 28551) @@ -26,6 +26,14 @@ */ public List getUnWashedAndTousseItemUnEndBasket(Collection barcodes); /** + * 根据篮筐条码,装配任务类型,sourceId 获取未清洗且篮筐内的物品未被全部终止的篮筐 + * @param barcode 篮筐条码 + * @param taskType 装配任务类型(参考PackTask.taskType) + * @param sourceId sourceId(参考PackTask.sourceId) + * @return ClassifyBasket + */ + public ClassifyBasket getUnWashedAndTousseItemUnEndBasket(String barcode, Integer taskType, Long sourceId); + /** * 获取最近一条还未清洗且里面的物品未被全部终止的篮筐 * @param barcodes 篮筐条码 */ Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r28550 -r28551 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 28550) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 28551) @@ -1499,24 +1499,9 @@ } } } - //收集需要验证状态是否为清洗完成的篮筐条码 - Set checkBasketBarcodeSet = null; - if(returnObj != null){ - checkBasketBarcodeSet = collectBarcodesToBeVerified(basketBarcode, taskList, allowForeignToussePartiallyPacking); - } else { - checkBasketBarcodeSet = new HashSet(); - } - //从指定的篮筐条码中,获取清洗状态不为清洗完成的篮筐条码 - Set containerBarcodesOfnotWashed = new HashSet(); - List unAWashedClassifyBasket = classifyBasketManager.getUnWashedAndTousseItemUnEndBasket(checkBasketBarcodeSet); - if(CollectionUtils.isNotEmpty(unAWashedClassifyBasket)){ - for (ClassifyBasket classifyBasket : unAWashedClassifyBasket) { - containerBarcodesOfnotWashed.add(classifyBasket.getContainerBarcode()); - } - } + Map unWashedClassifyBasketMap = new HashMap();//未清洗已经查询过的篮筐map String notWashedInfo = "";//返回前台的关于篮筐未清洗的提示信息 for (Object[] result : taskList) { - PackingTask task = (PackingTask)result[0]; TousseDefinition td = (TousseDefinition)result[1]; if(td.hidePackingTask()){ @@ -1564,16 +1549,21 @@ itemVo.setBasketBarcode(task.getBasketBarcode()); } //如果有非清洗完成状态的篮筐,则构造未清洗完成的相关提示给前台 - if(StringUtils.isNotBlank(basketBarcode) && CollectionUtils.isNotEmpty(containerBarcodesOfnotWashed) && StringUtils.isNotBlank(itemVo.getBasketBarcode()) && !td.cleanedEntirely() && !basketBarcode.equals(itemVo.getBasketBarcode())){ + if(StringUtils.isNotBlank(basketBarcode) && StringUtils.isNotBlank(itemVo.getBasketBarcode()) && !td.cleanedEntirely() && !basketBarcode.equals(itemVo.getBasketBarcode())){ String basketBarcodesStrOfitemVo = itemVo.getBasketBarcode(); String [] basketBarcodesOfitemVo = basketBarcodesStrOfitemVo.split(";"); String msg = ""; - for (int i = 0; i < basketBarcodesOfitemVo.length; i++) { - if(containerBarcodesOfnotWashed.contains(basketBarcodesOfitemVo[i])){ + for (int i = 0; i < basketBarcodesOfitemVo.length; i++) { + if(basketBarcode.equals(basketBarcodesOfitemVo[i]) || unWashedClassifyBasketMap.containsKey(basketBarcodesOfitemVo[i])){ + continue;//不查询扫描的条码和已经查询过的条码 + } + ClassifyBasket unAWashedClassifyBasket = classifyBasketManager.getUnWashedAndTousseItemUnEndBasket(basketBarcodesOfitemVo[i], task.getTaskType(), task.getSourceId()); + if(unAWashedClassifyBasket != null){ + unWashedClassifyBasketMap.put(unAWashedClassifyBasket.getContainerBarcode(), unAWashedClassifyBasket); if(StringUtils.isNotBlank(msg)){ msg += "、"; } - msg += "清洗篮筐" + classifyBasketManager.getClassifyBasket(basketBarcodesOfitemVo[i]).getContainerName(); + msg += "清洗篮筐" + classifyBasketManager.getClassifyBasket(basketBarcodesOfitemVo[i]).getContainerName(); } } //例子:清洗篮筐测试7141;测试7142临床大镊子包所在的清洗篮筐测试7141;测试7142 还未完成清洗,需要完成清洗后才能装配! Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManagerImpl.java =================================================================== diff -u -r28550 -r28551 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManagerImpl.java (.../ClassifyBasketManagerImpl.java) (revision 28550) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManagerImpl.java (.../ClassifyBasketManagerImpl.java) (revision 28551) @@ -325,6 +325,44 @@ return objectDao.findByHql(sql); } @Override + public ClassifyBasket getUnWashedAndTousseItemUnEndBasket( + String barcode, Integer taskType, Long sourceId) { + if(StringUtils.isBlank(barcode)){ + return null; + } + String whereSqlForSourceId = ""; + if(taskType == 0){//申请单 + whereSqlForSourceId = " and rr.recyclingApplication.id=" + sourceId; + }else if(taskType == 1){//回收 + whereSqlForSourceId = " and rr.id=" + sourceId; + }else{ + return null; + } + String sql = String.format("select distinct po from %s po join po.recyclingRecords rr left join po.classfiedItems ci " + + "where po.containerBarcode='%s' %s " + + "and po.id not in (select cb.id from WashAndDisinfectRecord wr join wr.classifyBaskets cb) " + + "and po.id not in (" + + "select cb.id from RecyclingRecord rr " + + "join rr.classifyBaskets cb " + + "join rr.recyclingApplication ip " + + "join ip.applicationItems ti " + + "where ti.isTerminated=1 and ti.tousseDefinitionId=ci.tousseDefinitionID and ci.recyclingRecordId=rr.id) " + + "order by po.recyclingTime desc" + , ClassifyBasket.class.getSimpleName(), + barcode, + whereSqlForSourceId); + if(taskType == 0){ + logger.debug("获取申请单id"+ sourceId +"还未清洗且里面的物品未被全部终止的篮筐:"+sql); + }else{ + logger.debug("获取回收记录id"+ sourceId +"还未清洗且里面的物品未被全部终止的篮筐:"+sql); + } + List list = objectDao.findByHql(sql); + if(CollectionUtils.isEmpty(list)){ + return null; + } + return list.get(0); + } + @Override public List getUnWashedAndTousseItemUnEndBasketByIds( Set classifyBasketIds) { if(CollectionUtils.isEmpty(classifyBasketIds)){