Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js =================================================================== diff -u -r17258 -r17433 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js (.../washAndDisinfectForm.js) (revision 17258) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js (.../washAndDisinfectForm.js) (revision 17433) @@ -612,6 +612,14 @@ name : 'conCurrent', id : 'conCurrent' },{ + xtype : 'hidden', + name : 'orgWashStartTime', + id : 'orgWashStartTime' + },{ + xtype : 'hidden', + name : 'orgWashEndTime', + id : 'orgWashEndTime' + },{ id : 'serialNum', columnWidth : 0.5, layout : 'form', @@ -1126,7 +1134,8 @@ //初始化日期大小 top.Ext.getCmp('startDateStr').setValue(action.result.data.startDateStr); top.Ext.getCmp('endDateStr').setValue(action.result.data.endDateStr); - + top.Ext.getCmp('orgWashStartTime').setValue(top.Ext.getCmp('startDateStr').getRawValue()); + top.Ext.getCmp('orgWashEndTime').setValue(top.Ext.getCmp('endDateStr').getRawValue()); //当前清洗机名称 var rinserName = action.result.data.disinfectIdentification; if(rinserName == "人工清洗"){ @@ -1347,12 +1356,62 @@ top.Ext.getCmp('cycleCounter').setValue(0); } } - + // 判断装配时间是否比清洗时间晚 + DWREngine.setAsync(false); + var washEndtimeLaterThanPacktime = false; + var endT = top.Ext.getCmp('endDateStr').getRawValue(); + WashAndDisinfectRecordTableManager.isWashEndtimeLaterThanPacktime(id,endT, + function(result) { + washEndtimeLaterThanPacktime = result; + }); + DWREngine.setAsync(true); + if( true == washEndtimeLaterThanPacktime ){ + // 装配时间比清洗时间晚提示 + top.Ext.MessageBox.confirm("请确认","存在包的装配时间比清洗时间晚,确认修改?", + function(button, text) { + if ("no" == button){ + return false; + }else{ + doSubmit(); + } + }); + }else{ + doSubmit(); + } +// var conCurrent = top.Ext.getCmp("conCurrent").getValue(); +// top.Ext.getCmp("disinfectProgram").setValue(top.Ext.getCmp("disinfectProgram").getRawValue()); +// formObj.form.submit({ +// url : WWWROOT + '/disinfectSystem/washAndDisinfect/washAndDisinfectRecordAction!saveWashAndDisinfectRecord.do', +// params : {conCurrent :conCurrent}, +// method : 'POST', +// waitMsg : '正在保存数据,请稍候', +// waitTitle : '提交表单', +// success : function(form, action) { +// var validate = Ext.decode(action.result.success); +// if(validate){ +// showResult(action.result.message); +// grid.dwrReload(); +// washAndDisinfectRecordWin.close(); +// }else{ +// showResult(action.result.message); +// top.Ext.getCmp("saveBtn").enable(); +// } +// }, +// failure : function(form, action) { +// showResult(action.result.message); +// top.Ext.getCmp("saveBtn").enable(); +// } +// }); + +} +function doSubmit(){ var conCurrent = top.Ext.getCmp("conCurrent").getValue(); + var orgWashStartTime = top.Ext.getCmp('orgWashStartTime').getValue(); + var orgWashEndTime = top.Ext.getCmp('orgWashEndTime').getValue(); top.Ext.getCmp("disinfectProgram").setValue(top.Ext.getCmp("disinfectProgram").getRawValue()); formObj.form.submit({ url : WWWROOT + '/disinfectSystem/washAndDisinfect/washAndDisinfectRecordAction!saveWashAndDisinfectRecord.do', - params : {conCurrent :conCurrent}, + params : {conCurrent :conCurrent, orgWashStartTime : orgWashStartTime, orgWashEndTime : orgWashEndTime}, method : 'POST', waitMsg : '正在保存数据,请稍候', waitTitle : '提交表单', @@ -1372,7 +1431,6 @@ top.Ext.getCmp("saveBtn").enable(); } }); - } //获取篮筐和材料的数据 Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/dwr/table/WashAndDisinfectRecordTableManager.java =================================================================== diff -u -r16773 -r17433 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/dwr/table/WashAndDisinfectRecordTableManager.java (.../WashAndDisinfectRecordTableManager.java) (revision 16773) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/dwr/table/WashAndDisinfectRecordTableManager.java (.../WashAndDisinfectRecordTableManager.java) (revision 17433) @@ -85,6 +85,10 @@ public boolean isRinserCycleCounterExist(Long id,String sterilizerName,Long cycleCounter) { return washAndDisinfectRecordManager.isRinserCycleCounterExist(id,sterilizerName,cycleCounter); }; + // 如果清洗的包已经装配,判断清洗结束时间是否比装配时间更晚 + public boolean isWashEndtimeLaterThanPacktime(Long id,String washEndtime) { + return washAndDisinfectRecordManager.isWashEndtimeLaterThanPacktime(id,washEndtime); + }; public String getCleanParameter(String cleanMethod){ if(StringUtils.isNotBlank(cleanMethod)){ Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java =================================================================== diff -u -r16904 -r17433 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java (.../WashAndDisinfectRecordManager.java) (revision 16904) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java (.../WashAndDisinfectRecordManager.java) (revision 17433) @@ -94,4 +94,18 @@ * @return */ public List getClassifyBasketItemByBarcode(String basketBarcode, Integer pageNow, Integer pageSize); + /** + * 如果清洗的包已经装配,判断清洗结束时间是否比装配时间更晚 + * @param id + * @param washEndtime 设置的清洗结束时间 + * @return + */ + // washEndtime格式是:yyyy-MM-dd hh:mm:ss + public boolean isWashEndtimeLaterThanPacktime(Long id,String washEndtime); + /** + * 更新装配任务和包实例的清洗时间 + * @param washStartTime + * @param washEndTime + */ + public void updatePackingTaskAndTousseInstanceWashTime(Long washAndDisinfectRecordId,String orgStartTime,String orgEndTime,String newStartTime,String newEndTime); } Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java =================================================================== diff -u -r16904 -r17433 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java (.../WashAndDisinfectRecordAction.java) (revision 16904) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java (.../WashAndDisinfectRecordAction.java) (revision 17433) @@ -114,17 +114,22 @@ public void saveWashAndDisinfectRecord() { String message = JSONUtil.buildJsonObject(true, "保存成功!").toString(); + Long recordId = washAndDisinfectRecord.getId(); + String orgWashStartTime = StrutsParamUtils.getPraramValue("orgWashStartTime", null); + String orgWashEndTime = StrutsParamUtils.getPraramValue("orgWashEndTime", null); + String startDateStr = ""; + String endDateStr = ""; // 开始时间、结束时间 try { SimpleDateFormat sdf = Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS; - String startDateStr = washAndDisinfectRecord.getStartDateStr(); + startDateStr = washAndDisinfectRecord.getStartDateStr(); if (startDateStr.length() == 16){ startDateStr += ":00"; } washAndDisinfectRecord.setStartDate(sdf .parse(startDateStr)); - String endDateStr = washAndDisinfectRecord + endDateStr = washAndDisinfectRecord .getEndDateStr(); if (endDateStr.length() == 16){ @@ -192,12 +197,24 @@ .saveOrUpdateWashAndDisinfectRecordAndMaterials( washAndDisinfectRecord, classifyBasketInfoMap, materials); + // 更新装配和包实例清洗时间 + if(recordId != null && recordId > 0 && + (!StringUtils.equals(orgWashStartTime, startDateStr) || !StringUtils.equals(orgWashStartTime, startDateStr)) ){ + washAndDisinfectRecordManager. + updatePackingTaskAndTousseInstanceWashTime(recordId, orgWashStartTime, orgWashEndTime,startDateStr,endDateStr); + } } } else { washAndDisinfectRecordManager .saveOrUpdateWashAndDisinfectRecordAndMaterials( washAndDisinfectRecord, classifyBasketInfoMap, materials); + // 更新装配和包实例清洗时间 + if(recordId != null && recordId > 0 && + (!StringUtils.equals(orgWashStartTime, startDateStr) || !StringUtils.equals(orgWashStartTime, startDateStr))){ + washAndDisinfectRecordManager. + updatePackingTaskAndTousseInstanceWashTime(recordId, orgWashStartTime, orgWashEndTime,startDateStr,endDateStr); + } } } catch (Exception e) { message = JSONUtil.buildJsonObject(false, e.getMessage()).toString(); Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java =================================================================== diff -u -r16904 -r17433 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 16904) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 17433) @@ -62,6 +62,7 @@ import com.forgon.serialnumber.model.SerialNum; import com.forgon.serialnumber.service.SerialNumManager; import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.db.InitDbConnection; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.util.SqlUtils; @@ -100,12 +101,18 @@ private LogManager appLogManager; + private InitDbConnection dbConnection; + private PackingRecordClassifyBasketManager packingRecordClassifyBasketManager; public void setPackingRecordClassifyBasketManager( PackingRecordClassifyBasketManager packingRecordClassifyBasketManager) { this.packingRecordClassifyBasketManager = packingRecordClassifyBasketManager; } + + public void setDbConnection(InitDbConnection dbConnection) { + this.dbConnection = dbConnection; + } public void setUserManager(UserManager userManager) { this.userManager = userManager; @@ -215,7 +222,7 @@ } // 更新装配任务的清洗时间等信息 updatePackingTaskWashInfo(washRecord); - + rollbackRemoveBasketStatus(toDeleteBasketMap); // 删除旧数据,未关联的材料记录 deleteWashAndDisinfeceRecordMaterialWithoutConnection(); @@ -919,7 +926,80 @@ return false; } } + // washEndtime格式是:yyyy-MM-dd hh:mm:ss + public boolean isWashEndtimeLaterThanPacktime(Long id,String washEndtime){ + if(id == null || StringUtils.isBlank(washEndtime)){ + return false; + } + if (washEndtime.length() == 16){ + washEndtime += ":00"; + } + String timeEqualSql = " and substring(ti.washStartTime,1,19) = convert(varchar(19),wr.startDate,120) " + + " and substring(ti.washEndTime,1,19) = convert(varchar(19),wr.endDate,120) "; + if(dbConnection.isOracle()){ + timeEqualSql = " and substr(ti.washStartTime,1,19) = to_char(wr.startDate,'yyyy-mm-dd HH24:MI:SS') " + + " and substr(ti.washEndTime,1,19) = to_char(wr.endDate,'yyyy-mm-dd HH24:MI:SS')" ; + } + String sql = " select count(*) from washanddisinfectRecord wr,tousseInstance ti,packingRecord pr where pr.id = ti.packingRecord_id " + + " and ti.disinfectIdentification = wr.disinfectIdentification " + + " and ti.disinfectProgram = wr.disinfectProgram " + + timeEqualSql + + " and wr.id = " + id.toString() + + " and pr.packTime < " + dateQueryAdapter.stringFieldToDate("'" + washEndtime+ "'"); + int amount = 0; + ResultSet result = objectDao.executeSql(sql); + try { + while (result.next()) { + amount = result.getInt(1); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result); + } + if(amount > 0){ + return true; + } + return false; + } + /** + * 更新装配任务和包实例的清洗时间 + * @param washStartTime + * @param washEndTime + */ + public void updatePackingTaskAndTousseInstanceWashTime(Long washAndDisinfectRecordId,String orgStartTime,String orgEndTime,String newStartTime,String newEndTime){ + if(washAndDisinfectRecordId == null || StringUtils.isBlank(orgStartTime) || StringUtils.isBlank(orgEndTime) || StringUtils.isBlank(newStartTime) || StringUtils.isBlank(newEndTime) ){ + return ; + } + String timeEqualSql = " and substring(ti.washStartTime,1,19) = '" + orgStartTime + "'" + + " and substring(ti.washEndTime,1,19) = '" + orgEndTime + "'"; +// String sql1 = " update ti set ti.washStartTime = '" + washStartTime + "',ti.washEndTime ='"+washEndTime+ "'" +// + " from washanddisinfectRecord wr,tousseInstance ti " +// + " where ti.disinfectIdentification = wr.disinfectIdentification " +// + " and ti.disinfectProgram = wr.disinfectProgram " +// + timeEqualSql +// + " and wr.id = " + washAndDisinfectRecordId.toString(); + if(dbConnection.isOracle()){ + timeEqualSql = " and substr(ti.washStartTime,1,19) = '" + orgStartTime + "'" + + " and substr(ti.washEndTime,1,19) = '" + orgEndTime + "'"; + } + // 更新包实例清洗时间的sql + String sql1 = " update tousseInstance set washStartTime = '" + newStartTime + "',washEndTime ='"+newEndTime+ "'" + + " where id in ( select ti.id from washanddisinfectRecord wr,tousseInstance ti where " + + " ti.disinfectIdentification = wr.disinfectIdentification " + + " and ti.disinfectProgram = wr.disinfectProgram " + + timeEqualSql + + " and wr.id = " + washAndDisinfectRecordId.toString() + + " )"; + // 更新装配任务清洗时间的sql + String sql2 = " update packingTask set washTime = '"+newStartTime + "'" + + " where washRecord_id = "+ washAndDisinfectRecordId.toString(); + objectDao.excuteSQL(sql1); + objectDao.excuteSQL(sql2); + } + + @Override public int getNextCycleCounter(String rinserName) { if( rinserName == null )