Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/sterilizer/sterilizerForm.js =================================================================== diff -u -r19893 -r20040 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/sterilizer/sterilizerForm.js (.../sterilizerForm.js) (revision 19893) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/sterilizer/sterilizerForm.js (.../sterilizerForm.js) (revision 20040) @@ -624,30 +624,25 @@ id : "email", anchor : '95%' }] - },/*{ + },{ columnWidth : 0.5, layout : 'form', - labelWidth : 80, + labelWidth : 100, items:[{ - xtype : 'combo', - fieldLabel : '生物监测的结果默认显示值', - allowBlank : false, - name : 'biologicalMonitoringDisplay', - id : 'biologicalMonitoringDisplay', + xtype : 'combo', + fieldLabel : '定时完成灭菌', + allowBlank : true, + name : 'timingAutoCompleteSterilization', + id : 'timingAutoCompleteSterilization', valueField : 'value', displayField : 'value', - readOnly : true, forceSelection : true, - store : new Ext.data.SimpleStore( { - fields : [ 'value'], - data : [['无'],['合格'],['有植入物为合格否则为无']] - }), + store : isResetStore, mode : 'local', triggerAction : 'all', anchor : '95%' - }] - },*/ - { + }] + },{ layout:'form', labelWidth : 100, columnWidth: 0.5, Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r19893 -r20040 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 19893) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 20040) @@ -65,6 +65,8 @@ import com.forgon.disinfectsystem.vo.TousseSimpleVO; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; +import com.forgon.runwithtrans.model.RunWithTransNewTask; +import com.forgon.runwithtrans.service.RunWithTransNewManager; import com.forgon.serialnumber.model.SerialNum; import com.forgon.serialnumber.service.SerialNumManager; import com.forgon.tools.MathTools; @@ -73,6 +75,7 @@ import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.ForgonDateUtils; /** * @author WangYi 2012-2-24 @@ -107,6 +110,13 @@ private GoodsStockManager goodsStockManager; + protected RunWithTransNewManager runWithTransNewManager; + + public void setRunWithTransNewManager( + RunWithTransNewManager runWithTransNewManager) { + this.runWithTransNewManager = runWithTransNewManager; + } + public void setAppLogManager(LogManager appLogManager) { this.appLogManager = appLogManager; } @@ -1299,6 +1309,13 @@ Log.MODEL_STERILIZATION, "U", "id:" + sterilizationRecord.getId() + ",data:" + param.toString() + msg); } + + //定时自动完成灭菌 + Sterilisation sterilisation = sterilisationManager.getSterilisationByName(sterilizationRecord.getSterilizationType()); //灭菌程序 + if (Constants.STR_YES.equals(sterilizationRecord.getSterilizer().getTimingAutoCompleteSterilization()) + && sterilisation != null && sterilisation.getUseTime() != null && sterilisation.getUseTime() > 0) { + timingAutoCompleteSterilization(sterilisation.getUseTime(), sterilizationRecord); + } return result; } @@ -2680,5 +2697,57 @@ int nextCycleCounter = getNextCycleCounter(sterilizer, sterilizationRecord.getId()); sterilizationRecord.setCycleCounter(Long.valueOf(nextCycleCounter)); } + + /** + * 滞后一定的时间把指定的灭菌记录自动完成灭菌. + * @param useTime 滞后的时间(单位为:分) + * @param sterilizationRecord 目标灭菌记录 + */ + private void timingAutoCompleteSterilization(Integer useTime, SterilizationRecord sterilizationRecord) { + if (useTime != null && useTime > 0 + && sterilizationRecord != null && DatabaseUtil.isPoIdValid(sterilizationRecord.getId())) { + Thread thread = new Thread(){ + public void run() { + runWithTransNewManager.runWith_TRANS_NEW(new RunWithTransNewTask() { + @Override + public void runTask() { + ResultSet result = null; + try { + sleep(useTime*60*1000); + + Calendar now = Calendar.getInstance(); + now.set(Calendar.SECOND, 0); + + String sql = String.format("select sr.startDate from SterilizationRecord sr " + + "join Sterilizer s on s.id=sr.sterilizer_id " + + "where sr.id=%s and sr.status='%s' and s.timingAutoCompleteSterilization='%s'", + sterilizationRecord.getId(),SterilizationRecord.STERILIZATION_STATUS_BEGIN,Constants.STR_YES); + + result = objectDao.executeSql(sql); + if (result.next()) { + Date startDate = ForgonDateUtils.safelyParseDate(result.getString("startDate")); + + //灭菌开始时间+灭菌使用时间如果大于现在,说明此灭菌记录已经完成了,需要自动帮他完成灭菌 + Calendar endDate = Calendar.getInstance(); + endDate.setTime(startDate); + endDate.add(Calendar.MINUTE, useTime); + if (endDate.getTimeInMillis() >= now.getTimeInMillis()) { //已经结束了 + List list = new ArrayList(); + list.add(sterilizationRecord.getId()); + completeSterilization(list, sterilizationRecord.getOrgUnitCoding(), "定时器自动完成"); + } + } + } catch (Exception e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result); + } + } + }); + } + }; + thread.start(); + } + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/Sterilizer.java =================================================================== diff -u -r19893 -r20040 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/Sterilizer.java (.../Sterilizer.java) (revision 19893) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/Sterilizer.java (.../Sterilizer.java) (revision 20040) @@ -62,6 +62,11 @@ * 是否自动完成灭菌 */ private String isAutoCompleteSterilization = "是"; // + + /** + * 是否定时自动完成灭菌,与“isAutoCompleteSterilization”属性有区别,后者针对读接口的 + */ + private String timingAutoCompleteSterilization; /** * 购买日期 @@ -478,5 +483,14 @@ public void setRapidFurnace(String rapidFurnace) { this.rapidFurnace = rapidFurnace; } + + public String getTimingAutoCompleteSterilization() { + return timingAutoCompleteSterilization; + } + + public void setTimingAutoCompleteSterilization( + String timingAutoCompleteSterilization) { + this.timingAutoCompleteSterilization = timingAutoCompleteSterilization; + } }