Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r36334 -r36371 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 36334) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 36371) @@ -1658,21 +1658,34 @@ } //统一查询清洗记录 Map washAndDisinfectRecordMap = new HashMap(); + Map rinserMap = new HashMap(); + Collection rinserIds = new HashSet(); if(CollectionUtils.isNotEmpty(washRecordIds)){ List washAndDisinfectRecords = objectDao.findByHql("select po from " + WashAndDisinfectRecord.class.getSimpleName() + " po where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", washRecordIds)); washAndDisinfectRecords.stream().forEach(record -> { if(record != null){ washAndDisinfectRecordMap.put(record.getId(), record); + rinserIds.add(record.getRinserId()); } }); } + if(rinserIds.size() > 0){ + @SuppressWarnings("unchecked") + List rinsers = objectDao.findByHql("select po from " + Rinser.class.getSimpleName() + " po where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", rinserIds)); + rinsers.stream().forEach(record -> { + if(record != null){ + rinserMap.put(record.getId(), record); + } + }); + } Map packingTaskIdToErrorDamageRemarkMap = getPackingTaskIdToErrorDamageRemarkMap(packingTaskIds); Map washTimeOfVerifiedMap = new HashMap();//已经验证过的日期不再验证 //批量获取外来器械申请单上的病人(鼠标悬浮在外来器械包装配任务时,器械包需要显示病人名BJ307YY-57) Map invoicePlanIDToPatient = new HashMap();//申请单对应的病人map //收集装配任务的信息,统一查询申请单 collectPackingTaskInfo(invoicePlanIDToPatient, taskList); StringBuffer sbf = new StringBuffer(); + Date newDate = new Date(); for (Object[] result : taskList) { PackingTask task = (PackingTask)result[0]; TousseDefinition td = (TousseDefinition)result[1]; @@ -1819,7 +1832,7 @@ itemVo.setDamageRemark(task.getDamageRemark()); itemVo.setRecyclingItemRemark(task.getRecyclingItemRemark()); itemVo.setUrgentLevel(task.getUrgentLevel()); - itemVo.setCleaned(task.cleaned(objectDao,washAndDisinfectRecordMap)); + itemVo.setCleaned(task.cleaned(newDate,objectDao,washAndDisinfectRecordMap,rinserMap)); UrgentLevel ul = task.getUrgentLevelObj(); itemVo.setUrgentLevelObj(ul); if(isTimeout){ @@ -1833,8 +1846,7 @@ itemVo.setWashTime(washTime); Date startDate = task.getStartTime(); if (startDate != null) { - itemVo.setDateTime(new SimpleDateFormat( - "yyyy-MM-dd HH:mm").format(startDate)); + itemVo.setDateTime(DateTools.YMDHMFORMAT.get().format(startDate)); } itemVo.setPackageType(td.getPackageType()); itemVo.setPackageSize(td.getPackageSize()); @@ -1941,7 +1953,7 @@ itemVo.getDamages().addAll(damages); } //丢失、报损未补充可装配数量 - Integer unPackingAmount = getWaitSupplementTousseAmount(itemVo.getErrorDamages(),task.getStatus(),td.getId()); + Integer unPackingAmount = getWaitSupplementTousseAmount(itemVo.getErrorDamages(),task.getStatus(),td); if(unPackingAmount > 0 && unPackingAmount < itemVo.getAmount()){ Integer canPackingAmount = itemVo.getAmount() - unPackingAmount; itemVo.setAmount(unPackingAmount); @@ -2316,10 +2328,10 @@ * @param recyclingErrors * @param damages * @param status - * @param tousseDefinitionIds + * @param td * @return */ - private Integer getWaitSupplementTousseAmount(List errorDamages,String status,Long tousseDefinitionIds){ + private Integer getWaitSupplementTousseAmount(List errorDamages,String status,TousseDefinition td){ if(PackingTask.STATUS_AWAIT_PACKING.equals(status) || PackingTask.STATUS_AWAIT_VERIFYING.equals(status)){ Map materialMap = new HashMap(); if(errorDamages != null){ @@ -2336,15 +2348,13 @@ } } if(materialMap.size() > 0){ - return getMaxUnPackingAmount(tousseDefinitionIds,materialMap); + return getMaxUnPackingAmount(td,materialMap); } } return 0; } - private Integer getMaxUnPackingAmount(Long toussedefintionId,Map map){ - - TousseDefinition td = tousseDefinitionManager.get(toussedefintionId); + private Integer getMaxUnPackingAmount(TousseDefinition td,Map map){ if(td == null){ return 0; } @@ -6293,7 +6303,7 @@ unPackingAmount = 0; }else{ List errorDamages = packingTask.findErrorDamages(objectDao); - unPackingAmount = getWaitSupplementTousseAmount(errorDamages,packingTask.getStatus(),packingTask.getTousseDefinition().getId()); + unPackingAmount = getWaitSupplementTousseAmount(errorDamages,packingTask.getStatus(),packingTask.getTousseDefinition()); } } packingTask.setWaitSupplementTousseAmount(unPackingAmount); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/packing/PackingTask.java =================================================================== diff -u -r36080 -r36371 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/packing/PackingTask.java (.../PackingTask.java) (revision 36080) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/packing/PackingTask.java (.../PackingTask.java) (revision 36371) @@ -596,16 +596,19 @@ } /** + * 需要注意此方法目前是在循环内别调用的 修改时注意效率 * 判断该装配任务是否清洗完成 * 1.if对应清洗记录的washRecord_id为空,返回false * 2.else if如果对应清洗记录的washRecord_id不为空,如果清洗记录的状态不为清洗完成则返回false * 3.else if如果对应清洗记录的清洗状态为清洗完成,科室供应室配置时,如果当前时间早于清洗完成时间,返回false * 4.else 返回true * @param objectDao + * @param washAndDisinfectRecordMap 批量查询的清洗记录 + * @param rinserMap 批量查询的清洗机 * @return */ @Transient - public boolean cleaned(ObjectDao objectDao, Map washAndDisinfectRecordMap) { + public boolean cleaned(Date newDate, ObjectDao objectDao, Map washAndDisinfectRecordMap, Map rinserMap) { boolean result = false; if(DatabaseUtil.isPoIdValid(washRecord_id)){ WashAndDisinfectRecord washAndDisinfectRecord = null; @@ -616,10 +619,13 @@ washAndDisinfectRecordMap.put(washRecord_id, washAndDisinfectRecord); } if(washAndDisinfectRecord != null && washAndDisinfectRecord.washed()){ - Rinser rinser = (Rinser) objectDao.getById(Rinser.class.getSimpleName(), washAndDisinfectRecord.getRinserId()); + Rinser rinser = null; + if(rinserMap != null && rinserMap.containsKey(washAndDisinfectRecord.getRinserId())){ + rinser = rinserMap.get(washAndDisinfectRecord.getRinserId()); + } if(rinser != null && StringUtils.equals(Constants.STR_YES, rinser.getIsPackingAfterWashTimeEnd())){ - if(washAndDisinfectRecord.getEndDate() != null && new Date().after(washAndDisinfectRecord.getEndDate())){ + if(washAndDisinfectRecord.getEndDate() != null && newDate.after(washAndDisinfectRecord.getEndDate())){ result = true; } }else{