Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r32804 -r32956 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 32804) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 32956) @@ -1183,5 +1183,12 @@ * @return */ public String findIdNumberByTousseInstanceId(Long tousseInstanceId); + + /** + * GYEY-759 器械包信息里勾选物品后自动计算并显示预计灭菌完成时间 + * @param tousseInstanceId + * @return + */ + public int displayEstimatedSterilizationCompletionTime(Long tousseInstanceId); } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java =================================================================== diff -u -r32866 -r32956 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 32866) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 32956) @@ -1870,4 +1870,28 @@ StrutsResponseUtils.output(false, e.getMessage()); } } + + /** + * 自动计算并显示预计灭菌完成时间GYEY-759 + */ + public void displayEstimatedSterilizationCompletionTime(){ + JSONObject json = new JSONObject(); + try { + Long tousseInstanceId = StrutsParamUtils.getPraramLongValue("tousseInstanceId", null); + int estimatedSterilizationCompletionTime = + tousseInstanceManager.displayEstimatedSterilizationCompletionTime(tousseInstanceId); + JSONUtil.addSuccess(json, true); + JSONUtil.addMessage(json, "【预计" + estimatedSterilizationCompletionTime + "分钟后灭菌完成】"); + } catch (SystemException e) { + e.printStackTrace(); + JSONUtil.addSuccess(json, true); + JSONUtil.addMessage(json, e.getMessage()); + } catch (Exception e) { + e.printStackTrace(); + JSONUtil.addSuccess(json, true); + JSONUtil.addMessage(json, "查询失败:" + e.getMessage()); + } + StrutsResponseUtils.output(json); + } + } \ No newline at end of file Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r32804 -r32956 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 32804) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 32956) @@ -9440,4 +9440,102 @@ } return idNumber; } + + @Override + public int displayEstimatedSterilizationCompletionTime(Long tousseInstanceId) { + TousseInstance tousseInstance = (TousseInstance) objectDao.getById(TousseInstance.class.getSimpleName(), tousseInstanceId); + if(tousseInstance == null){ + return 0; + } + if(!tousseInstance.isPacked() && !tousseInstance.isReviewed() && !tousseInstance.isSteriling()){ + return 0; + } + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj(); + //装配到审核的预计时间(分钟) + Integer packingReviewTime = supplyRoomConfig.getPackingReviewTime(); + if(packingReviewTime == null){ + packingReviewTime = 0; + } + //审核到灭菌的预计时间(分钟) + Integer reviewSterilizationTime = supplyRoomConfig.getReviewSterilizationTime(); + if(reviewSterilizationTime == null){ + reviewSterilizationTime = 0; + } + //器械包实例的灭菌使用时间(分钟) + Integer sterilingUseTime = 0; + String sterilingType = tousseInstance.getSterilingType(); + if(StringUtils.isNoneEmpty(sterilingType)){ + Sterilisation sterilisation = sterilisationManager.getSterilisationByName(sterilingType); + if(sterilisation != null && sterilisation.getUseTime() != null){ + sterilingUseTime = sterilisation.getUseTime(); + } + } + if(sterilingUseTime == null){ + sterilingUseTime = 0; + } + + Date now = new Date(); + //获取预计灭菌完成时间 + Date sterilizationEndTime = getSterilizationEndTime(tousseInstance, packingReviewTime, reviewSterilizationTime, sterilingUseTime); + if(sterilizationEndTime == null){ + return 0; + } + if(now.before(sterilizationEndTime)){ + //还没到预计灭菌完成时间 + long startTime = now.getTime(); + long endTime = sterilizationEndTime.getTime(); + long duration = endTime - startTime; + int min = (int) (duration / (1000L * 60L)); + return min; + }else if(now.after(sterilizationEndTime)){ + //超过了预计灭菌完成时间还没灭菌 + throw new SystemException("已超时,预计于" + DateTools.getFormatDateStr(sterilizationEndTime, DateTools.COMMON_DATE_HM) + "完成灭菌"); + } + return 0; + } + + /** + * 获取预计灭菌完成时间GYEY-759 + * @param tousseInstance + * @param packingReviewTime 【已装配】到【已审核】预计用时(分钟) + * @param reviewSterilizationTime 【已审核】到【开始灭菌】预计用时(分钟) + * @param sterilingUseTime 预计灭菌完成时间 + * @return + */ + private Date getSterilizationEndTime(TousseInstance tousseInstance, + Integer packingReviewTime, Integer reviewSterilizationTime, + Integer sterilingUseTime) { + if(!tousseInstance.isPacked() && !tousseInstance.isReviewed() && !tousseInstance.isSteriling()){ + return null; + } + if(tousseInstance.isSteriling()){ + //灭菌中的器械包,预计灭菌完成时间只考虑灭菌使用时间 + if(StringUtils.isBlank(tousseInstance.getSterileStartTime())){ + return null; + } + Date sterileStartTime = DateTools.coverStrToDate(tousseInstance.getSterileStartTime(), DateTools.COMMON_DATE_HMS); + long time = sterileStartTime.getTime(); + time += (sterilingUseTime) * 60L * 1000L; + return new Date(time); + } + if(tousseInstance.isReviewed()){ + //已审核的器械包,预计灭菌完成时间只考虑“灭菌使用时间”+“【已审核】到【开始灭菌】预计用时” + if(tousseInstance.getReviewTime() == null){ + return null; + } + long time = tousseInstance.getReviewTime().getTime(); + time += (reviewSterilizationTime + sterilingUseTime) * 60L * 1000L; + return new Date(time); + } + if(tousseInstance.isPacked()){ + //已装配的器械包,预计灭菌完成时间考虑“灭菌使用时间”+“【已审核】到【开始灭菌】预计用时”+“【已装配】到【已审核】预计用时” + if(tousseInstance.getOperationTime() == null){ + return null; + } + long time = tousseInstance.getOperationTime().getTime(); + time += (packingReviewTime + reviewSterilizationTime + sterilingUseTime) * 60L * 1000L; + return new Date(time); + } + return null; + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplyroomconfig/SupplyRoomConfig.java =================================================================== diff -u -r31865 -r32956 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplyroomconfig/SupplyRoomConfig.java (.../SupplyRoomConfig.java) (revision 31865) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplyroomconfig/SupplyRoomConfig.java (.../SupplyRoomConfig.java) (revision 32956) @@ -438,6 +438,16 @@ private UrgentLevel urgentLevel; /** + * 【已装配】到【已审核】预计用时(分钟)GYEY-759 + */ + private Integer packingReviewTime; + + /** + * 【已审核】到【开始灭菌】预计用时(分钟)GYEY-759 + */ + private Integer reviewSterilizationTime; + + /** * 自动签收人名字默认值为“系统签收”(GYEY-744) */ public static final String DEFAULT_RECEIPTOR = "系统签收"; @@ -1208,4 +1218,20 @@ this.urgentLevel = urgentLevel; } + public Integer getPackingReviewTime() { + return packingReviewTime; + } + + public void setPackingReviewTime(Integer packingReviewTime) { + this.packingReviewTime = packingReviewTime; + } + + public Integer getReviewSterilizationTime() { + return reviewSterilizationTime; + } + + public void setReviewSterilizationTime(Integer reviewSterilizationTime) { + this.reviewSterilizationTime = reviewSterilizationTime; + } + } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java =================================================================== diff -u -r31865 -r32956 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java (.../SupplyRoomConfigAction.java) (revision 31865) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java (.../SupplyRoomConfigAction.java) (revision 32956) @@ -1030,6 +1030,16 @@ supplyRoomConfig.setUrgentLevel(urgentLevel); } } + //【已装配】到【已审核】预计用时(分钟)GYEY-759 + String packingReviewTime = StrutsParamUtils.getPraramValue("packingReviewTime", null); + if(DatabaseUtil.isPoIdValid(packingReviewTime)){ + supplyRoomConfig.setPackingReviewTime(Integer.valueOf(packingReviewTime)); + } + //【已审核】到【开始灭菌】预计用时(分钟)GYEY-759 + String reviewSterilizationTime = StrutsParamUtils.getPraramValue("reviewSterilizationTime", null); + if(DatabaseUtil.isPoIdValid(reviewSterilizationTime)){ + supplyRoomConfig.setReviewSterilizationTime(Integer.valueOf(reviewSterilizationTime)); + } supplyRoomConfigManager.save(supplyRoomConfig); StrutsResponseUtils.output(true, "保存成功!");