Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r37863 -r37864 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 37863) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 37864) @@ -3843,6 +3843,27 @@ return urgentAdditionalInfoMap; } /** + * 批量获取装配任务 + * @param recyclingRecord + * @param itemJsonList + * @return + */ + private List getPackingTasks(RecyclingRecord recyclingRecord, List itemJsonList){ + List packingTasks = null; + if(recyclingRecord != null && DatabaseUtil.isPoIdValid(recyclingRecord.getId())){ + Set tdIds = new HashSet(); + for (RecyclingBasketItemVo json : itemJsonList) { + tdIds.add(json.getTousseDefinitionID()); + } + if(CollectionUtils.isNotEmpty(tdIds)){ + packingTasks = packingManager.getByHql(" po.taskType= "+ PackingTask.TASK_RECYCLINGRECORD + +" and po.sourceId="+ recyclingRecord.getId() + + SqlUtils.getInLongListSql("po.tousseDefinition.id", tdIds)); + } + } + return packingTasks; + } + /** * 说明:清洗完成后篮筐追加的包生成的装配任务清洗记录信息冗余字段并没有赋值 * @param recyclingRecord * @param itemJsonList @@ -3899,17 +3920,7 @@ List logArr = new ArrayList(); Date newDate = new Date(); List packingTasks = null; - if(recyclingRecord != null && DatabaseUtil.isPoIdValid(recyclingRecord.getId())){ - Set tdIds = new HashSet(); - for (RecyclingBasketItemVo json : itemJsonList) { - tdIds.add(json.getTousseDefinitionID()); - } - if(CollectionUtils.isNotEmpty(tdIds)){ - packingTasks = packingManager.getByHql(" po.taskType= "+ PackingTask.TASK_RECYCLINGRECORD - +" and po.sourceId="+ recyclingRecord.getId() - + SqlUtils.getInLongListSql("po.tousseDefinition.id", tdIds)); - } - } + boolean queriedOfPackingTasks = false;//是否已经查询了装配任务 只查一次 Set noPassIDCardInstances = new HashSet();//不同回收的标识牌 for (RecyclingBasketItemVo json : itemJsonList) { String tousseName = json.getTousseName(); @@ -3985,6 +3996,10 @@ // 非敷料包的,回收都会产生装配任务(消毒物品不追溯时,也不生产装配任务) if (!tousseDefinition.isDressing()&& !tousseDefinition.isHomeMadeTousse() &&tousseDefinition.needPacking()) { + if(!queriedOfPackingTasks){ + packingTasks = getPackingTasks(recyclingRecord, itemJsonList); + queriedOfPackingTasks = true; + } PackingTask task = findPackingTask(packingTasks, basketBarcode, tousseDefinitionID, idCardBarcode); //已装配 if (task == null && amount < 0) {