Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r27243 -r27262 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 27243) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 27262) @@ -1524,11 +1524,19 @@ } } } - - Collection originalReviewedBaskets = sterilizationRecord - .getReviewedBaskets(); + //删除篮筐内器械包 + List delReviewedBasket = new ArrayList(); + Map delResult = delTousseOfBasket(delTousseJsonArr,sterilizationRecord, delReviewedBasket); + if(delResult != null){ + return delResult;//有不能删除的器械包 + } + List originalReviewedBaskets = sterilizationRecord + .getReviewedBaskets(); if (!CollectionUtils.isEmpty(originalReviewedBaskets)) { for (ReviewedBasket originalReviewedBasket : originalReviewedBaskets) { + if(delReviewedBasket.contains(originalReviewedBasket)){ + continue; + } // 原有篮筐还原状态为[灭菌装载] originalReviewedBasket.getContainer().setStatus( Container.CONTAINER_STATUS_STERILIZELOADING); @@ -1743,19 +1751,16 @@ timingAutoCompleteSterilization(sterilisation.getUseTime(), sterilizationRecord); } } - //删除篮筐内器械包 - Map delResult = delTousseOfBasket(delTousseJsonArr,sterilizationRecord); - if(delResult != null){ - return delResult;//有不能删除的器械包 - } return result; } /** * 删除篮筐内器械包 - * @param delTousseJsonArr + * @param delTousseJsonArr 删除的器械包和篮筐信息 + * @param sterilizationRecord 灭菌记录 + * @param delReviewedBasket 方法执行后从灭菌记录中删除的篮筐 * @return */ - private Map delTousseOfBasket(JSONArray delTousseJsonArr, SterilizationRecord sterilizationRecord){ + private Map delTousseOfBasket(JSONArray delTousseJsonArr, SterilizationRecord sterilizationRecord, List delReviewedBasket){ if(CollectionUtils.isEmpty(delTousseJsonArr)){ return null; } @@ -1782,7 +1787,7 @@ try { String basketBarcode = entry.getKey(); ReviewedBasket reviewedBasket = reviewedBasketManager.getReviewedBasketByBasketBarcodeAndSterilizationRecordId(basketBarcode, sterilizationRecord.getId()); - if(reviewedBasket == null){//整框器械包都删除了,用之前的代码逻辑,包状态回滚,不从框内移除。 + if(reviewedBasket == null){ continue; } reviewedBasketMap.put(basketBarcode, reviewedBasket); @@ -1817,6 +1822,27 @@ sterilizationRecord.setAmount(sterilizationRecord.getAmount() - canDelId.size()); //包实例相关灭菌信息置空 objectDao.executeUpdate(getReturnSql(canDelId)); + //篮筐状态回滚 + if (MapUtils.isEmpty(reviewedBasketMap)) { + return result; + } + String delReviewedBasketSql = "delete sterilization_reviewed where reviewedBasket_id =%s and sterilizationRecord_id = "+sterilizationRecord.getId()+" "; + for (Entry entry : reviewedBasketMap.entrySet()) { + ReviewedBasket reviewedBasket = entry.getValue(); + if(reviewedBasket.getTousseInstancesAmount(objectDao) > 0){ + continue; + } + // 篮筐还原状态为[空闲] + delReviewedBasket.add(reviewedBasket); + reviewedBasket.getContainer().setStatus( + Container.CONTAINER_STATUS_FREE); + reviewedBasket.setSterilizationRecords(null); + reviewedBasket.getContainer().setStatus(Container.CONTAINER_STATUS_FREE); + objectDao.excuteSQL(String.format(delReviewedBasketSql, reviewedBasket.getId()));//移除中间表 + objectDao.saveOrUpdate(reviewedBasket.getContainer()); + objectDao.saveOrUpdate(reviewedBasket); + delReviewedBasket.add(reviewedBasket); + } return result; } /** @@ -4862,6 +4888,12 @@ for (ReviewedBasket reviewedBasket : oldReviewedBasketList) { containerBarcodeList.add(reviewedBasket.getBarcode()); } + List delReviewedBasket = new ArrayList(); + //删除篮筐内器械包 + Map delResult = delTousseOfBasket(delTousseJsonArr,sterilizationRecord, delReviewedBasket); + if(delResult != null){ + return delResult;//有不能删除的器械包 + } ResultSet rs = null; try { //找到删除的篮筐条码 @@ -4873,6 +4905,9 @@ while(rs.next()){ List tis = objectDao.findByProperty(TousseInstance.class.getSimpleName(), "reviewBasket_id", rs.getLong("id")); ReviewedBasket rb = (ReviewedBasket) objectDao.getByProperty(ReviewedBasket.class.getSimpleName(), "id", rs.getLong("id")); + if(delReviewedBasket.contains(rb)){ + continue; + } for (TousseInstance ti : tis) { ti.setSterileEndTime(null); ti.setStatus(TousseInstance.STATUS_REVIEWED); @@ -4902,10 +4937,6 @@ // sr.setTousseInstanceList(oldTousseInstanceList); updateSterilizationRecordForUrgentLevel(sr,null); } - Map delResult = delTousseOfBasket(delTousseJsonArr,sterilizationRecord); - if(delResult != null){ - return delResult;//有不能删除的器械包 - } result.put(JSONUtil.JSON_KEY_SUCCESS, true); result.put(JSONUtil.JSON_KEY_MESSAGE, "保存成功"); return result; Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js =================================================================== diff -u -r27243 -r27262 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 27243) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 27262) @@ -2106,11 +2106,11 @@ } sterilizationColumnTreeColumnArray.push({header:'删除',width:50,dataIndex:'type', renderer:function(v,p,record){ - //只有“没有入篮筐的器械包节点”或者“篮筐节点”,并且灭菌记录的状态不为“已灭菌”和“灭菌失败” + //只有“没有入篮筐的器械包节点”或者“篮筐节点”,并且灭菌记录的状态不为“已灭菌”和“灭菌失败” 或者 灭菌记录状态为灭菌中,灭菌中断的子节点 if((record.isParentNode == true && currentStatus != statusEnd && currentStatus != statusFailure) || - (currentStatus == statusBegin && record.isParentNode == false)){ + ((currentStatus == statusBegin || currentStatus == statusInterrupt) && record.isParentNode == false)){ return "\"删除外来器械包\""; } return '';