Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManagerImpl.java =================================================================== diff -u -r28488 -r28547 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManagerImpl.java (.../ClassifyBasketManagerImpl.java) (revision 28488) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManagerImpl.java (.../ClassifyBasketManagerImpl.java) (revision 28547) @@ -334,4 +334,45 @@ } return resultSet; } + @Override + public List getUnWashedAndTousseItemUnEndBasket(Set barcodes) { + if(CollectionUtils.isEmpty(barcodes)){ + return null; + } + String sql = String.format("select distinct po from %s po left join po.classfiedItems ci " + + "where %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(), + SqlUtils.getStringFieldInLargeCollectionsPredicate("po.containerBarcode", barcodes, " 1=1 ")); + logger.debug("获取还未清洗且里面的物品未被全部终止的篮筐:"+sql); + return objectDao.findByHql(sql); + } + @Override + public List getUnWashedAndTousseItemUnEndBasketByIds( + Set classifyBasketIds) { + if(CollectionUtils.isEmpty(classifyBasketIds)){ + return new ArrayList(); + } + String sql = String.format("select distinct po from %s po left join po.classfiedItems ci " + + "where %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(), + SqlUtils.getStringFieldInLargeCollectionsPredicate("po.id", classifyBasketIds, " 1=1 ")); + logger.debug("获取还未清洗且里面的物品未被全部终止的篮筐:"+sql); + return objectDao.findByHql(sql); + } } Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r28543 -r28547 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 28543) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 28547) @@ -991,12 +991,30 @@ baskets = new ArrayList(); } Map basketMap = new HashMap(); - Map unWashedBasketMap = new HashMap(); Map basketBarcodeMap = new HashMap(); TousseIntoBasketService tousseIntoBasketService = (TousseIntoBasketService) SpringBeanManger.getBean("tousseIntoBasketService"); tousseIntoBasketService.initJsonArray(tousseIntoBasketInfo); // buildTousseDefinitionIdBasketMap(tousseJson,tousseDefinitions,containerMap); tousseIntoBasketService.initDataBaseBasketTousse(); + + Map barcodeToUnWashedClassifyBasketMap = new HashMap();//篮筐条码对应未清洗且申请单未终止的篮筐 + {//---收集要查询未清洗且关联的申请单未被全部终止的篮筐条码,一起查询获取 + Set queryUnwashBarcodes = new HashSet(); + for (int i = 0; i < tousseJson.size(); i++) { + RecyclingBasketItemVo basketItemVo = tousseJson.get(i); + Long basketId = basketItemVo.getBasketId(); + if (!DatabaseUtil.isPoIdValid(basketId)) { + queryUnwashBarcodes.add(basketItemVo.getBasketBarcode()); + } + } + List unWashedClassifyBaskets = classifyBasketManager.getUnWashedAndTousseItemUnEndBasket(queryUnwashBarcodes); + if(CollectionUtils.isNotEmpty(unWashedClassifyBaskets)){ + for (ClassifyBasket item : unWashedClassifyBaskets) { + barcodeToUnWashedClassifyBasketMap.put(item.getContainerBarcode(), item); + } + } + } + // 遍历每一个入筐的物品 for (int i = 0; i < tousseJson.size(); i++) { RecyclingBasketItemVo basketItemVo = tousseJson.get(i); @@ -1018,7 +1036,7 @@ } } }else{ - classifyBasket = getUnWashedBasketByBasketBarcode(unWashedBasketMap, basketBarcode); + classifyBasket = barcodeToUnWashedClassifyBasketMap.get(basketBarcode); } if (classifyBasket == null) { classifyBasket = new ClassifyBasket(); @@ -5436,13 +5454,29 @@ * @param customIntoBaskets */ private void getBasketUsedVolume(Map percentageMap, List customIntoBaskets, Map classifyBasketMap) { + Map barcodeToClassifyBasketMap = new HashMap();//篮筐条码对应未清洗且篮筐内的物品未被全部终止的篮筐 + {//---收集要查询篮筐条码,一起查 + Set queryBarcodes = new HashSet(); + for (CustomIntoBasket customIntoBaset : customIntoBaskets) { + String barcode = customIntoBaset.getBarcode(); + if(!classifyBasketMap.containsKey(barcode)){ + queryBarcodes.add(barcode); + } + } + List unWashedAndInvoicePlanUnEndBaskets = classifyBasketManager.getUnWashedAndTousseItemUnEndBasket(queryBarcodes); + if(CollectionUtils.isNotEmpty(unWashedAndInvoicePlanUnEndBaskets)){ + for (ClassifyBasket item : unWashedAndInvoicePlanUnEndBaskets) { + barcodeToClassifyBasketMap.put(item.getContainerBarcode(), item); + } + } + } for (CustomIntoBasket customIntoBaset : customIntoBaskets) { String barcode = customIntoBaset.getBarcode(); ClassifyBasket basket = null; if(classifyBasketMap.containsKey(barcode)){ basket = classifyBasketMap.get(barcode); }else{ - basket = classifyBasketManager.getUnWashedBasket(barcode); + basket = barcodeToClassifyBasketMap.get(barcode); classifyBasketMap.put(barcode, basket); } Double percentage = 0.00; Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java =================================================================== diff -u -r28528 -r28547 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 28528) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 28547) @@ -2695,7 +2695,21 @@ } List list = getClassifyBasketItemByBarcode(basketBarcode, pageNow, pageSize); - + //收集需要查询的ClassifyBasketid,统一查询(如果未清洗,且篮筐内的物品都已被终止,则清洗机列显示为已终止器械包) + Set queryIds = new HashSet(); + if (list != null) { + for (Object obj : list) { + Object[] objArray = (Object[]) obj; + WashAndDisinfectRecord washAndDisinfectRecord = (WashAndDisinfectRecord) objArray[1]; + if(washAndDisinfectRecord == null){ + ClassifyBasket classifyBasket = (ClassifyBasket) objArray[0]; + if(classifyBasket != null){ + queryIds.add(classifyBasket.getId()); + } + } + } + } + List classifyBaskets = classifyBasketManager.getUnWashedAndTousseItemUnEndBasketByIds(queryIds); boolean flag = true; JSONArray jSONArray = new JSONArray(); if (list != null) { @@ -2733,7 +2747,11 @@ } if (washAndDisinfectRecord == null) { //此篮筐实例没洗过 - jSONObject.put("washmachine", "已装载器械包"); + if(classifyBaskets.contains(classifyBasket)){ + jSONObject.put("washmachine", "已装载器械包"); + }else{ + jSONObject.put("washmachine", "已终止器械包"); + } jSONObject.put("program", ""); jSONObject.put("washtime", ""); } else { Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java =================================================================== diff -u -r28540 -r28547 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 28540) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 28547) @@ -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; @@ -956,7 +957,12 @@ } } if (classifyBasket == null) { - classifyBasket = classifyBasketManager.getUnWashedBasket(container.getBarcode()); + Set barcodes = new HashSet(); + barcodes.add(container.getBarcode()); + List classifyBaskets = classifyBasketManager.getUnWashedAndTousseItemUnEndBasket(barcodes); + if(CollectionUtils.isNotEmpty(classifyBaskets)){ + classifyBasket = classifyBaskets.get(0); + } } if (classifyBasket == null) { boolean autoSetIDCardBarcodeForPacking = CssdUtils.getSystemSetConfigByNameBool("autoSetIDCardBarcodeForPacking"); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManager.java =================================================================== diff -u -r28488 -r28547 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManager.java (.../ClassifyBasketManager.java) (revision 28488) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/ClassifyBasketManager.java (.../ClassifyBasketManager.java) (revision 28547) @@ -21,6 +21,17 @@ */ public ClassifyBasket getUnWashedBasket(String barcode); /** + * 获取还未清洗且里面的物品未被全部终止的篮筐 + * @param barcodes 篮筐条码 + */ + public List getUnWashedAndTousseItemUnEndBasket(Set barcodes); + + /** + * 获取还未清洗且里面的物品未被全部终止的篮筐 + * @param barcodes classifyBasketIds + */ + public List getUnWashedAndTousseItemUnEndBasketByIds(Set classifyBasketIds); + /** * 获取未清洗的篮筐集合 * @param barcodes * @return