Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectView.js =================================================================== diff -u -r17816 -r17949 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectView.js (.../washAndDisinfectView.js) (revision 17816) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectView.js (.../washAndDisinfectView.js) (revision 17949) @@ -101,6 +101,7 @@ } ids += records[i].data["id"]; } + Ext.getCmp('washSaveConfirm').setValue("0"); top.Ext.MessageBox.confirm("请确认","确定"+status+"吗?", function(button, text) { if ("yes" == button){ @@ -120,18 +121,20 @@ var success = result.success; if (true != success) { showResult("提交失败!"); + Ext.getCmp('washSaveConfirm').setValue("-1"); grid.dwrReload(); } else { showResult("提交成功!"); + Ext.getCmp('washSaveConfirm').setValue("1"); grid.dwrReload(); - if(status == washfaild){ // addQualityMonitoring(); addQualityMonitoringByResponPart("清洗消毒"); } } }, failure : function(response, options) { + Ext.getCmp('washSaveConfirm').setValue("-1"); showResult("提交失败!"); } }); @@ -315,6 +318,14 @@ } }, anchor : '95%' + },{ + id:'washSaveSubmitResult', + xtype:'hidden', + value:"0" + },{ + id:'washSaveConfirm', + xtype:'hidden', + value:"0" }]; var dwrCallParams = null; Ext.ux.ForgonPageGrid.prototype.getGridParameterMap = function() { Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js =================================================================== diff -u -r17433 -r17949 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js (.../washAndDisinfectForm.js) (revision 17433) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js (.../washAndDisinfectForm.js) (revision 17949) @@ -1046,6 +1046,7 @@ } } },{ + id : 'addMaterialId', iconCls : 'btn_ext_add', handler : function() { addMaterial(); @@ -1408,6 +1409,7 @@ var conCurrent = top.Ext.getCmp("conCurrent").getValue(); var orgWashStartTime = top.Ext.getCmp('orgWashStartTime').getValue(); var orgWashEndTime = top.Ext.getCmp('orgWashEndTime').getValue(); + Ext.getCmp('washSaveSubmitResult').setValue("0"); top.Ext.getCmp("disinfectProgram").setValue(top.Ext.getCmp("disinfectProgram").getRawValue()); formObj.form.submit({ url : WWWROOT + '/disinfectSystem/washAndDisinfect/washAndDisinfectRecordAction!saveWashAndDisinfectRecord.do', @@ -1418,16 +1420,19 @@ success : function(form, action) { var validate = Ext.decode(action.result.success); if(validate){ + Ext.getCmp('washSaveSubmitResult').setValue("1"); showResult(action.result.message); grid.dwrReload(); washAndDisinfectRecordWin.close(); }else{ showResult(action.result.message); + Ext.getCmp('washSaveSubmitResult').setValue("-1"); top.Ext.getCmp("saveBtn").enable(); } }, failure : function(form, action) { showResult(action.result.message); + Ext.getCmp('washSaveSubmitResult').setValue("-1"); top.Ext.getCmp("saveBtn").enable(); } }); Index: ssts-web/src/main/java/test/forgon/disinfectsystem/AbstractCSSDTest.java =================================================================== diff -u -r17877 -r17949 --- ssts-web/src/main/java/test/forgon/disinfectsystem/AbstractCSSDTest.java (.../AbstractCSSDTest.java) (revision 17877) +++ ssts-web/src/main/java/test/forgon/disinfectsystem/AbstractCSSDTest.java (.../AbstractCSSDTest.java) (revision 17949) @@ -50,6 +50,7 @@ import com.forgon.directory.service.OrgUnitManager; import com.forgon.directory.service.SysUserManager; import com.forgon.directory.vo.LoginUserData; +import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedatamanager.container.service.ContainerManager; import com.forgon.disinfectsystem.basedatamanager.goodsstock.service.GoodsStockManager; import com.forgon.disinfectsystem.basedatamanager.sterilizer.service.SterilizerManager; @@ -229,7 +230,8 @@ protected OperationManager operationManager; @Autowired private CSSDTestDataProcess cssdTestDataProcess; - + @Autowired + private BarcodeManager barcodeManager; /** * 组织单位OrgUnit供应室的id */ @@ -1221,4 +1223,26 @@ protected RecyclingApplication getRecyclingApplicationById(Long id){ return objectDao.getHt().get(RecyclingApplication.class, id); } + + protected void setRinserNeedConfirmByBarcode(String barcode){ + if(StringUtils.isBlank(barcode)){ + return ; + } + Rinser rinser = (Rinser)barcodeManager.getBarcodeByBarcode(barcode); + if(rinser != null){ + rinser.setIsWashConfirm(com.forgon.Constants.STR_YES); + objectDao.save(rinser); + } + } + + protected void cleanRinserNeedConfirmByBarcode(String barcode){ + if(StringUtils.isBlank(barcode)){ + return ; + } + Rinser rinser = (Rinser)barcodeManager.getBarcodeByBarcode(barcode); + if(rinser != null){ + rinser.setIsWashConfirm(com.forgon.Constants.STR_NO); + objectDao.save(rinser); + } + } } Index: ssts-selenium-test/src/test/java/test_4_1/ALL.java =================================================================== diff -u -r17934 -r17949 --- ssts-selenium-test/src/test/java/test_4_1/ALL.java (.../ALL.java) (revision 17934) +++ ssts-selenium-test/src/test/java/test_4_1/ALL.java (.../ALL.java) (revision 17949) @@ -7,6 +7,8 @@ import org.testng.annotations.AfterTest; import org.testng.annotations.Test; +import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; + import test.forgon.disinfectsystem.AbstractCSSDTest; import test_4_1.apply.applyConstants.DeskIconEnum; import test_4_1.apply.chain.ChainConsumer; @@ -130,7 +132,24 @@ Utils.DateTime(); Wash wash = new Wash(); wash.init(); + // 一级供应室清洗成功 wash.wash_oneSupplyRoom(); + // 清洗添加材料 + wash.wash_washAddMaterial(); + // 清洗删除篮筐再添加篮筐,扫描不同的责任人 + wash.wash_washChangeBasket(); + String rinserBarcode = Utils.settings.getJSONObject("一级供应室清洗机").getString("清洗机条码"); + setRinserNeedConfirmByBarcode(rinserBarcode); + // 清洗需要确认测试场景 + wash.wash_needConfirmFinish(); + // 清洗失败,重新清洗,清洗完成,清洗机需要设置为清洗确认 + wash.wash_fail_reWash_Finish(); + cleanRinserNeedConfirmByBarcode(rinserBarcode); + // 触摸屏清洗 + wash.wash_touch(); + // 二级供应室清洗成功 + wash.wash_secondSupplyRoom(); + wash.after(); Utils.driver.switchTo().defaultContent(); Utils.retryingFindAndClick(By .xpath("//span[contains(text(), '个人桌面')]")); Index: ssts-selenium-test/src/test/java/test_4_1/Wash.java =================================================================== diff -u -r17700 -r17949 --- ssts-selenium-test/src/test/java/test_4_1/Wash.java (.../Wash.java) (revision 17700) +++ ssts-selenium-test/src/test/java/test_4_1/Wash.java (.../Wash.java) (revision 17949) @@ -3,19 +3,30 @@ */ package test_4_1; +import java.util.NoSuchElementException; +import java.util.concurrent.TimeUnit; + import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; import org.testng.annotations.BeforeMethod; import org.testng.AssertJUnit; import org.openqa.selenium.By; +import org.openqa.selenium.Keys; +import org.openqa.selenium.StaleElementReferenceException; +import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.FluentWait; +import org.openqa.selenium.support.ui.Wait; + import test_4_1.tools.Utils; /** * @author cherry 2016-03-01 * */ public class Wash { + @BeforeMethod public void init() { try { @@ -44,21 +55,21 @@ /** * 清洗失败 */ - @Test - public void wash_fail() { - try { - Utils.retryingFindAndSendKeys(By.id("inputText"), - "error" + "\n"); - - Utils.retryingFindAndClick(By.id("saveBtn")); - } catch (Exception e) { - e.printStackTrace(); - AssertJUnit.fail(e.getMessage()); - } - } +// @Test +// public void wash_fail() { +// try { +// Utils.retryingFindAndSendKeys(By.id("inputText"), +// "error" + "\n"); +// +// Utils.retryingFindAndClick(By.id("saveBtn")); +// } catch (Exception e) { +// e.printStackTrace(); +// AssertJUnit.fail(e.getMessage()); +// } +// } /** - * 触摸屏清洗 + * 触摸屏清洗,清洗前,清洗机需要设置为不需要清洗确认 */ @Test public void wash_touch() { @@ -154,14 +165,295 @@ AssertJUnit.fail(e.getMessage()); } } + /** + * 清洗记录,需要确认完成,清洗机需要设置为清洗确认 + */ + @Test + public void wash_needConfirmFinish() { + try { + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗机").getString("清洗机条码") + + "\n"); + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗机") + .getString("清洗程序条码") + "\n"); + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室审核人").getString("条码") + + "\n"); + + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗篮筐1").getString("条码") + + "\n"); + Utils.retryingFindAndClick(By.id("saveBtn")); + // 定位回来 + Utils.retryingFindAndSwitchToFrame(By + .id("iframe_washAndDisinfect")); + //需要判断表单提交成功且返回正常后才能结束,否则就将不会提交到后台 + Wait wait = new FluentWait(Utils.driver) + .withTimeout(5000, TimeUnit.MILLISECONDS) + .pollingEvery(250, TimeUnit.MILLISECONDS) + .ignoring(NoSuchElementException.class) + .ignoring(StaleElementReferenceException.class); + wait.until(ExpectedConditions.attributeToBe(Utils.driver.findElement(By + .id("washSaveSubmitResult")), "value", "1")); + +// Utils.retryingFindAndClick(By.cssSelector("p[style='background-color:yellow']")); +// Thread.sleep(2000); + Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '清洗中')]")); + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '清洗完成')]")); +// Thread.sleep(2000); + Utils.driver.switchTo().defaultContent(); + String currentwindowhandle = Utils.driver.getWindowHandle(); + Utils.driver.switchTo().window(currentwindowhandle); + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '是')]")); + // 定位回来 + Utils.retryingFindAndSwitchToFrame(By + .id("iframe_washAndDisinfect")); + //需要判断表单提交成功且返回正常后才能结束,否则就将不会提交到后台 + Wait wait1 = new FluentWait(Utils.driver) + .withTimeout(5000, TimeUnit.MILLISECONDS) + .pollingEvery(250, TimeUnit.MILLISECONDS) + .ignoring(NoSuchElementException.class) + .ignoring(StaleElementReferenceException.class); + wait1.until(ExpectedConditions.attributeToBe(Utils.driver.findElement(By + .id("washSaveConfirm")), "value", "1")); + } catch (Exception e) { + e.printStackTrace(); + AssertJUnit.fail(e.getMessage()); + } + } /** + * 清洗失败,重新清洗,清洗完成,清洗机需要设置为清洗确认 + */ + @Test + public void wash_fail_reWash_Finish() { + try { + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗机").getString("清洗机条码") + + "\n"); + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗机") + .getString("清洗程序条码") + "\n"); + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室审核人").getString("条码") + + "\n"); + + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗篮筐1").getString("条码") + + "\n"); + Utils.retryingFindAndClick(By.id("saveBtn")); + // 定位回来 + Utils.retryingFindAndSwitchToFrame(By + .id("iframe_washAndDisinfect")); + //需要判断表单提交成功且返回正常后才能结束,否则就将不会提交到后台 + Wait wait = new FluentWait(Utils.driver) + .withTimeout(5000, TimeUnit.MILLISECONDS) + .pollingEvery(250, TimeUnit.MILLISECONDS) + .ignoring(NoSuchElementException.class) + .ignoring(StaleElementReferenceException.class); + wait.until(ExpectedConditions.attributeToBe(Utils.driver.findElement(By + .id("washSaveSubmitResult")), "value", "1")); + +// Utils.retryingFindAndClick(By.cssSelector("p[style='background-color:yellow']")); +// Thread.sleep(2000); + Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '清洗中')]")); + + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '清洗失败')]")); +// Thread.sleep(2000); + Utils.driver.switchTo().defaultContent(); + String currentwindowhandle = Utils.driver.getWindowHandle(); + Utils.driver.switchTo().window(currentwindowhandle); + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '是')]")); + // 定位回来 + Utils.retryingFindAndSwitchToFrame(By + .id("iframe_washAndDisinfect")); + //需要判断表单提交成功且返回正常后才能结束,否则就将不会提交到后台 + Wait wait1 = new FluentWait(Utils.driver) + .withTimeout(5000, TimeUnit.MILLISECONDS) + .pollingEvery(250, TimeUnit.MILLISECONDS) + .ignoring(NoSuchElementException.class) + .ignoring(StaleElementReferenceException.class); + wait1.until(ExpectedConditions.attributeToBe(Utils.driver.findElement(By + .id("washSaveConfirm")), "value", "1")); + + Utils.driver.switchTo().defaultContent(); + currentwindowhandle = Utils.driver.getWindowHandle(); + Utils.driver.switchTo().window(currentwindowhandle); + //扫描篮筐条码,录质量监测记录 + Utils.retryingFindAndSendKeys(By.id("scanBarcode"), + Utils.settings.getJSONObject("一级供应室清洗篮筐1").getString("条码") + + "\n"); + // 质量监测保存 + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '保存')]")); + + Utils.retryingFindAndSwitchToFrame(By + .id("iframe_washAndDisinfect")); + // 重新清洗 + Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '清洗失败')]")); + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '修改')]")); + Utils.driver.switchTo().defaultContent(); + currentwindowhandle = Utils.driver.getWindowHandle(); + Utils.driver.switchTo().window(currentwindowhandle); + + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '重新清洗')]")); + Utils.retryingFindAndSwitchToFrame(By + .id("iframe_washAndDisinfect")); + Utils.retryingFindAndClick(By.xpath("//p[contains(text(), '清洗中')]")); + // 重新清洗后完成 + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '清洗完成')]")); +// Thread.sleep(2000); + Utils.driver.switchTo().defaultContent(); + currentwindowhandle = Utils.driver.getWindowHandle(); + Utils.driver.switchTo().window(currentwindowhandle); + Utils.retryingFindAndClick(By + .xpath("//button[contains(text(), '是')]")); + // 定位回来 + Utils.retryingFindAndSwitchToFrame(By + .id("iframe_washAndDisinfect")); + //需要判断表单提交成功且返回正常后才能结束,否则就将不会提交到后台 + Wait wait2 = new FluentWait(Utils.driver) + .withTimeout(5000, TimeUnit.MILLISECONDS) + .pollingEvery(250, TimeUnit.MILLISECONDS) + .ignoring(NoSuchElementException.class) + .ignoring(StaleElementReferenceException.class); + wait2.until(ExpectedConditions.attributeToBe(Utils.driver.findElement(By + .id("washSaveConfirm")), "value", "1")); + } catch (Exception e) { + e.printStackTrace(); + AssertJUnit.fail(e.getMessage()); + } + } + /* + * 清洗添加材料 + */ + @Test + public void wash_washAddMaterial(){ + try{ + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗机").getString("清洗机条码") + + "\n"); + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗机") + .getString("清洗程序条码") + "\n"); + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室审核人").getString("条码") + + "\n"); + + Utils.retryingFindAndSendKeys( + By.id("materialName"), + Keys.DOWN); + Utils.retryingFindAndClick(By.xpath("//div[contains(text(),'" + + Utils.settings.getJSONObject("一级供应室材料").getString("名称") + "')]")); +// Utils.retryingFindAndSendKeys(By.id("materialName"), +// Utils.settings.getJSONObject("一级供应室材料").getString("名称") + "\n"); +// Utils.retryingFindAndSendKeys( +// By.id("materialAmount"), +// Keys.DOWN); + Utils.retryingFindAndSendKeys(By.id("materialAmount"), + "2\n"); + Utils.retryingFindAndClick(By.id("addMaterialId")); + +// Thread.sleep(2000); +// Utils.retryingFindAndSendKeys(By.id("inputText"), +// Utils.settings.getJSONObject("一级供应室清洗篮筐1").getString("条码") +// + "\n"); + Utils.retryingFindAndClick(By.id("saveBtn")); + // 定位回来 + Utils.retryingFindAndSwitchToFrame(By + .id("iframe_washAndDisinfect")); + //需要判断表单提交成功且返回正常后才能结束,否则就将不会提交到后台 + Wait wait = new FluentWait(Utils.driver) + .withTimeout(5000, TimeUnit.MILLISECONDS) + .pollingEvery(250, TimeUnit.MILLISECONDS) + .ignoring(NoSuchElementException.class) + .ignoring(StaleElementReferenceException.class); + wait.until(ExpectedConditions.attributeToBe(Utils.driver.findElement(By + .id("washSaveSubmitResult")), "value", "1")); + }catch(Exception e){ + e.printStackTrace(); + } + + } + /* + * 清洗删除篮筐再添加篮筐,扫描不同的责任人 + */ + @Test + public void wash_washChangeBasket(){ + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗机").getString("清洗机条码") + + "\n"); + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗机") + .getString("清洗程序条码") + "\n"); + + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗篮筐1").getString("条码") + + "\n"); + // 扫描责任人 + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室审核人").getString("条码") + + "\n"); + + // 删除篮筐 + Utils.retryingFindAndClick(By.cssSelector("img[src='/images/web/stop.png']")); + // 重新扫描篮筐 + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室清洗篮筐1").getString("条码") + + "\n"); + String basketName = Utils.settings.getJSONObject("一级供应室清洗篮筐1").getString("名称"); + + Utils.retryingFindAndClick(By.xpath("//span[contains(text(), '" + basketName + "')]")); + // 一级供应室配包人 + Utils.retryingFindAndSendKeys(By.id("inputText"), + Utils.settings.getJSONObject("一级供应室配包人").getString("条码") + + "\n"); + + Utils.retryingFindAndClick(By.id("saveBtn")); + // 定位回来 + Utils.retryingFindAndSwitchToFrame(By + .id("iframe_washAndDisinfect")); + //需要判断表单提交成功且返回正常后才能结束,否则就将不会提交到后台 + Wait wait = new FluentWait(Utils.driver) + .withTimeout(5000, TimeUnit.MILLISECONDS) + .pollingEvery(250, TimeUnit.MILLISECONDS) + .ignoring(NoSuchElementException.class) + .ignoring(StaleElementReferenceException.class); + wait.until(ExpectedConditions.attributeToBe(Utils.driver.findElement(By + .id("washSaveSubmitResult")), "value", "1")); + } + /** * 二级供应室清洗成功 */ @Test public void wash_secondSupplyRoom() { try { + // 二级供应室用户登录 oruser1 + Utils.init(); + Login login = new Login(); + login.login_secondSupplyRoom(); + Utils.retryingFindAndClick(By.id("washAndDisinfect")); + for (String winHandle : Utils.driver.getWindowHandles()) { + Utils.driver.switchTo().window(winHandle); + } + WebElement frame = Utils.retryingFindAndSwitchToFrame(By + .id("iframe_washAndDisinfect")); + Utils.retryingFindAndClick( + By.xpath("//button[contains(text(), '添加')]")); + + Utils.driver.switchTo().defaultContent(); + String currentwindowhandle = Utils.driver.getWindowHandle(); + Utils.driver.switchTo().window(currentwindowhandle); + Utils.retryingFindAndSendKeys(By.id("inputText"), Utils.settings.getJSONObject("二级供应室清洗机").getString("清洗机条码") + "\n"); @@ -178,13 +470,23 @@ // Utils.retryingFindAndSendKeys(By.id("cycleCounter"),x+"\n"); Utils.retryingFindAndClick(By.id("saveBtn")); + // 定位回来 + Utils.retryingFindAndSwitchToFrame(By + .id("iframe_washAndDisinfect")); + //需要判断表单提交成功且返回正常后才能结束,否则就将不会提交到后台 + Wait wait = new FluentWait(Utils.driver) + .withTimeout(5000, TimeUnit.MILLISECONDS) + .pollingEvery(250, TimeUnit.MILLISECONDS) + .ignoring(NoSuchElementException.class) + .ignoring(StaleElementReferenceException.class); + wait.until(ExpectedConditions.attributeToBe(Utils.driver.findElement(By + .id("washSaveSubmitResult")), "value", "1")); } catch (Exception e) { e.printStackTrace(); AssertJUnit.fail(e.getMessage()); } } - @AfterMethod public void after() { Utils.driver.quit();