Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManagerImpl.java =================================================================== diff -u -r32659 -r32771 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManagerImpl.java (.../ReviewedBasketManagerImpl.java) (revision 32659) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManagerImpl.java (.../ReviewedBasketManagerImpl.java) (revision 32771) @@ -298,7 +298,7 @@ ((ReviewedBasket) basketObj).getTousseInstances(objectDao); if(CollectionUtils.isNotEmpty(tousseInstanceList)){ for(TousseInstance tousseInstance : tousseInstanceList){ - if(tousseInstance.isReviewed()){ + if(tousseInstance.isReviewed() || enableTheSterilizationResultJudgmentFunction && tousseInstance.isSteriling()){ return (ReviewedBasket) basketObj; } } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java =================================================================== diff -u -r32753 -r32771 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 32753) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 32771) @@ -2455,4 +2455,18 @@ StrutsResponseUtils.output(false, e.getMessage()); } } + /** + * 灭菌中断的灭菌记录如果已经有重新灭菌的灭菌记录了,就不能再点重新灭菌 继续灭菌 + */ + public void canReSterilization(){ + try { + Long sterilizationRecordId = StrutsParamUtils.getPraramLongValue("sterilizationRecordId", null); + if(objectDao.countBySql(sterilizationRecordManager.getOtherSterilizationRecordsSql(sterilizationRecordId)) > 0){ + throw new RuntimeException("该灭菌记录里有物品已经存在于新的灭菌记录中,不能操作继续灭菌和完成灭菌!"); + } + StrutsResponseUtils.output(true); + } catch (Exception e) { + StrutsResponseUtils.output(false, e.getMessage()); + } + } } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r32762 -r32771 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 32762) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 32771) @@ -17,6 +17,7 @@ import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; @@ -1709,7 +1710,7 @@ //否则该灭菌篮筐可能已经在灭菌中或灭菌完成(只能对每一个篮筐单独查询) String resultSql = null; if(enableTheSterilizationResultJudgmentFunction){ - resultSql = " or s.sterilizationResult='" + SterilizationRecord.STERILIZATIONRESULT_UNQUALIFIED + "' "; + resultSql = " or s.sterilizationResult='" + SterilizationRecord.STERILIZATIONRESULT_UNQUALIFIED + "' or s.status = '"+ SterilizationRecord.STERILIZATION_STATUS_INTERRUPT +"' "; }else{ resultSql = ""; } @@ -1813,7 +1814,24 @@ // 原有篮筐还原状态为[灭菌装载] originalReviewedBasket.getContainer().setStatus( Container.CONTAINER_STATUS_STERILIZELOADING); - originalReviewedBasket.setSterilizationRecords(null); + List sterilizationRecords = originalReviewedBasket.getSterilizationRecords(); + if(CollectionUtils.isNotEmpty(sterilizationRecords) && sterilizationRecords.size()>1){ + Iterator it = sterilizationRecords.iterator(); + if(sterilizationRecord.getId() != null){ + while(it.hasNext()){ + SterilizationRecord thisSterilizationRecord = it.next(); + if(MathTools.equals(thisSterilizationRecord.getId(), sterilizationRecord.getId())){ + it.remove(); + break; + } + } + originalReviewedBasket.setSterilizationRecords(sterilizationRecords); + }else{ + originalReviewedBasket.setSterilizationRecords(null); + } + }else{ + originalReviewedBasket.setSterilizationRecords(null); + } originalReviewedBasket.setSterilizerPosition(null); objectDao.saveOrUpdate(originalReviewedBasket); @@ -1960,6 +1978,16 @@ if (reviewedBasket == null) { continue; } + if(enableTheSterilizationResultJudgmentFunction && DatabaseUtil.isPoIdValid(originalSterilizationRecordId)){ + String sql = "select count(*) from SterilizationRecord sr " + +" join sterilization_reviewed srd on srd.sterilizationRecord_id=sr.id " + +" where sr.status='"+SterilizationRecord.STERILIZATION_STATUS_BEGIN +"' and srd.reviewedBasket_id=" + + reviewedBasket.getId() + + " and sr.id<>" + originalSterilizationRecordId; + if(objectDao.countBySql(sql) > 0){ + throw new RuntimeException(reviewedBasket.getContainerName() + "正在灭菌中!"); + } + } // 设置篮筐位置 if(barcodePositionMap != null){ String positoin = barcodePositionMap.get(barcode); @@ -2885,8 +2913,11 @@ sr.getSterilizer().getId(), SterilizationRecord.STERILIZATION_STATUS_BEGIN); if(objectDao.countBySql(sql) > 0){ - throw new RuntimeException(sr.getSterilizer().getName() + "正在灭菌中,不能继续灭菌"); + throw new RuntimeException(sr.getSterilizer().getName() + "正在灭菌中,不能继续灭菌!"); } + if(objectDao.countBySql(getOtherSterilizationRecordsSql(sr.getId())) > 0){ + throw new RuntimeException("此灭菌记录的器械包已在其他灭菌记录中灭菌,此不能继续灭菌!"); + } } // 找到相关的中断信息 记录继续灭菌时间 updateInterruptRecordFinishType(id,SterilizationInterruptRecord.ITERRUPT_FINISH_CONTIUNE); @@ -3912,6 +3943,8 @@ throw e; }catch(Exception e) { e.printStackTrace(); + obj = JSONUtil.buildJsonObject(false, e.getMessage()); + return obj; } obj = JSONUtil.buildJsonObject(true, "干预成功"); return obj; @@ -7283,4 +7316,35 @@ obj.put("success", false); return obj; } + @Override + public String getOtherSterilizationRecordsSql(Long sterilizationRecordId) { + String sql = String.format("select count(id) from (" + +" select sr1.id from %s sr1 " + +" join sterilization_tousseInstance st1 on st1.sterilizationRecord_id=sr1.id " + +" join TousseInstance ti1 on ti1.id=st1.tousseInstance_id " + +" where sr1.id<>%s and sr1.status='%s' and sr1.status<>'%s' and ti1.id in( " + +" select distinct ti.id from TousseInstance ti " + +" join sterilization_tousseInstance st on st.tousseinstance_id=ti.id " + +" join SterilizationRecord sr on sr.id=st.sterilizationRecord_id " + +" where sr.id=%s ) " + +" union all " + +" select sr1.id from TousseInstance ti1 " + +" join sterilization_reviewed srd1 on srd1.reviewedBasket_id=ti1.reviewBasket_id " + +" join SterilizationRecord sr1 on sr1.id=srd1.sterilizationRecord_id " + +" where sr1.id<>%s and sr1.status='%s' and sr1.status<>'%s' and ti1.id in( " + +" select distinct ti.id from TousseInstance ti " + +" join sterilization_reviewed srd on srd.reviewedBasket_id=ti.reviewBasket_id " + +" join SterilizationRecord sr on sr.id=srd.sterilizationRecord_id " + +" where sr.id=%s))temp" + ,SterilizationRecord.class.getSimpleName() + ,sterilizationRecordId + ,SterilizationRecord.STERILIZATION_STATUS_BEGIN + ,SterilizationRecord.STERILIZATION_STATUS_INTERRUPT + ,sterilizationRecordId + ,sterilizationRecordId + ,SterilizationRecord.STERILIZATION_STATUS_BEGIN + ,SterilizationRecord.STERILIZATION_STATUS_INTERRUPT + ,sterilizationRecordId); + return sql; + } } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java =================================================================== diff -u -r32663 -r32771 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 32663) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 32771) @@ -609,4 +609,10 @@ String monitorUser,String monitorChecker,String monitorAuditor,String remark, String cardPosition, String monitoringTubeResult, String monitoringBatchNum, String monitoringTubeExpiryDate, String cardPositionOfControlTube, String controlTubeResult, String controlBatchNum, String controlTubeExpiryDate); + /** + * 灭菌中断的灭菌记录如果已经有重新灭菌的灭菌记录了,就不能再点重新灭菌 继续灭菌 + * @param sterilizationRecordId + * @return + */ + public String getOtherSterilizationRecordsSql(Long sterilizationRecordId); }