Index: ssts-web/src/test/resources/test/forgon/disinfectsystem/sterileRecord/AllTests.xml =================================================================== diff -u -r16891 -r17165 --- ssts-web/src/test/resources/test/forgon/disinfectsystem/sterileRecord/AllTests.xml (.../AllTests.xml) (revision 16891) +++ ssts-web/src/test/resources/test/forgon/disinfectsystem/sterileRecord/AllTests.xml (.../AllTests.xml) (revision 17165) @@ -4,6 +4,7 @@ + \ No newline at end of file Index: ssts-web/src/main/resources/spring/projects/dgszyy/timer.xml =================================================================== diff -u -r17059 -r17165 --- ssts-web/src/main/resources/spring/projects/dgszyy/timer.xml (.../timer.xml) (revision 17059) +++ ssts-web/src/main/resources/spring/projects/dgszyy/timer.xml (.../timer.xml) (revision 17165) @@ -2,7 +2,7 @@ - + @@ -11,6 +11,9 @@ timingUpdateBiologicalMonitoringStatus + + dgszyy + Index: ssts-web/src/main/java/com/forgon/disinfectsystem/biologymonitorwarning/service/BiologyMonitorWarningManagerImpl.java =================================================================== diff -u -r17114 -r17165 --- ssts-web/src/main/java/com/forgon/disinfectsystem/biologymonitorwarning/service/BiologyMonitorWarningManagerImpl.java (.../BiologyMonitorWarningManagerImpl.java) (revision 17114) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/biologymonitorwarning/service/BiologyMonitorWarningManagerImpl.java (.../BiologyMonitorWarningManagerImpl.java) (revision 17165) @@ -101,16 +101,12 @@ } - /** - * (定时器)每隔一分钟检查一下,有哪些灭菌记录的生物监测已经结束,并且更改其状态为“已结束”,如用户把核对员也提前填好了,那么直接修改状态为“已确认” - * - */ @Override - public void timingUpdateBiologicalMonitoringStatus() { - + public void timingUpdateBiologicalMonitoringStatus(String flag) { //config.js配置的:生物监测结束时是否需要提示 boolean biologicalMonitoringWarning = CssdUtils.getSystemSetConfigByNameBool("biologicalMonitoringWarning"); - if (biologicalMonitoringWarning) { + if (biologicalMonitoringWarning + || "testNG".equals(flag)) { String nowTimeSqlStr = dateQueryAdapter.dateAdapter(Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(new Date())); String sql = String.format("update SterilizationRecord set biologicalMonitoringStatus=case when monitorChecker is null then '%s' else '%s' end " + "where biologicalMonitoringEndDate<=%s and biologicalMonitoringStatus='%s'", @@ -119,7 +115,6 @@ objectDao.excuteSQL(sql); } - } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/sterileRecord/BiologyMonitoringWarningTest.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/sterileRecord/BiologyMonitoringWarningTest.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/sterileRecord/BiologyMonitoringWarningTest.java (revision 17165) @@ -0,0 +1,124 @@ +package test.forgon.disinfectsystem.sterileRecord; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.hibernate.Session; +import org.springframework.beans.factory.annotation.Autowired; +import org.testng.annotations.Test; + +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.vo.LoginUserData; +import com.forgon.disinfectsystem.basedatamanager.sterilizer.service.SterilizerManager; +import com.forgon.disinfectsystem.biologymonitorwarning.service.BiologyMonitorWarningManager; +import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; +import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; +import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.dwr.table.SterilizationRecordTableManager; +import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.service.SterilizationRecordManager; +import com.forgon.tools.util.ForgonDateUtils; + +import static org.testng.Assert.assertEquals; +import test.forgon.disinfectsystem.AbstractCSSDTest; +/** + * 此类测试生物监测结束的提醒功能 + * @author Chenjiaru + * + */ +public class BiologyMonitoringWarningTest extends AbstractCSSDTest { + + @Autowired + private SterilizationRecordManager sterilizationRecordManager; + @Autowired + private SterilizerManager sterilizerManager; + @Autowired + private BiologyMonitorWarningManager biologyMonitorWarningManager; + @Autowired + private SterilizationRecordTableManager sterilizationRecordTableManager; + + /** + * 测试生物监测结束的提醒功能 + * + 模拟一下四种场景,并且立即触发定时器,断言结果是否和预期的一至 + 1、生物监测“未做”(此时生物监测状态为“未做”,定时器不会修改其生物监测的状态,不需要提示) + 2、生物监测“进行中”(此时生物监测状态为“进行中”,定时器不会修改其生物监测的状态,不需要提示) + 3、生物监测“已结束”(此时定时器立即修改其生物监测的状态为“已结束”,并且需要对当前登录用户做出弹框提示一次) + 4、生物监测“完成”(此时生物监测状态为“已确认”,定时器不会修改其生物监测的状态) + * + */ + @Test + public void testBiologyMonitoringWarning() { + initCSSDData(); + Session session = objectDao.getHibernateSession(); + makeActiveUser("admin"); + LoginUserData userData = AcegiHelper.getLoginUser(); + String userName = userData.getUserName(); //登录用户的用户名 + String userFullName = userData.getUserFullName(); //登录用户的全名 + String currentOrgUnitCode = userData.getCurrentOrgUnitCode(); //登录用户的用当前科室编码 + Calendar c = Calendar.getInstance(); + JSONArray result = new JSONArray(); + + //灭菌管理 + Sterilizer s_1号高温蒸汽灭菌炉 = sterilizerManager.getSterilizerByName("1号高温蒸汽灭菌炉"); //灭菌炉 + SterilizationRecord sr1 = new SterilizationRecord(); //灭菌记录 + sr1.setStartDate(c.getTime()); + sr1.setOrgUnitCoding(currentOrgUnitCode); + sr1.setSterilizationUser(userFullName); + sr1.setSterilizerName(s_1号高温蒸汽灭菌炉.getName()); + sr1.setFrequency(2); + sr1.setStatus(""); + sterilizationRecordManager.saveOrUpdateSterilizationRecord(sr1, new ArrayList(), new ArrayList(), null); + + + /**~~~~~~~~~~~~~~~~~~~~~~~~开始测试~~~~~~~~~~~~~~~~~~~~~~~~~~~**/ + //模拟完成灭菌,生物监测“未做”的场景(此时生物监测状态为“未做”,定时器不会修改其生物监测的状态,不需要提示) + Collection srIds = Collections.singleton(sr1.getId()); + sterilizationRecordManager.completeSterilization(srIds, currentOrgUnitCode, userFullName, userFullName, false); + session.flush(); + biologyMonitorWarningManager.timingUpdateBiologicalMonitoringStatus("testNG"); + session.refresh(sr1); + assertEquals(sr1.getBiologicalMonitoringStatus(), SterilizationRecord.BIOLOGICALMONITORING_STATUS_NOTDO); + result = biologyMonitorWarningManager.getBiologyMonitorWarningByUserNameAndCurrentDepartCode(userName, currentOrgUnitCode); + assertEquals(result.size(), 0); + + //模拟生物监测“进行中”的场景(此时生物监测状态为“进行中”,定时器不会修改其生物监测的状态,不需要提示) + c.add(Calendar.MINUTE, 5); + String time = ForgonDateUtils.safelyFormatDate(c.getTime(), ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS, ""); + sterilizationRecordTableManager.saveMonitorResult(sr1.getId().toString(), SterilizationRecord.MONITOR_RESULT_QUALIFIED, SterilizationRecord.MONITOR_RESULT_QUALIFIED, + SterilizationRecord.MONITOR_RESULT_NO, 10, time, time, null, null, null, "备注"); + session.flush(); + biologyMonitorWarningManager.timingUpdateBiologicalMonitoringStatus("testNG"); + session.refresh(sr1); + assertEquals(sr1.getBiologicalMonitoringStatus(), SterilizationRecord.BIOLOGICALMONITORING_STATUS_BEGIN); + result = biologyMonitorWarningManager.getBiologyMonitorWarningByUserNameAndCurrentDepartCode(userName, currentOrgUnitCode); + assertEquals(result.size(), 0); + + //模拟生物监测“已结束”的场景(此时定时器立即修改其生物监测的状态为“已结束”,并且需要对当前登录用户做出弹框提示一次) + c.add(Calendar.MINUTE, -6); + sr1.setBiologicalMonitoringEndDate(c.getTime()); + session.flush(); + biologyMonitorWarningManager.timingUpdateBiologicalMonitoringStatus("testNG"); + session.refresh(sr1); + assertEquals(sr1.getBiologicalMonitoringStatus(), SterilizationRecord.BIOLOGICALMONITORING_STATUS_END); + result = biologyMonitorWarningManager.getBiologyMonitorWarningByUserNameAndCurrentDepartCode(userName, currentOrgUnitCode); + JSONObject obj1 = (JSONObject) result.get(0); + assertEquals(obj1.optString("name"), sr1.getSterilizerName()); + assertEquals(obj1.optString("frequency"), sr1.getFrequency().toString()); + result = biologyMonitorWarningManager.getBiologyMonitorWarningByUserNameAndCurrentDepartCode(userName, currentOrgUnitCode); //再次触发应该不提示 + assertEquals(result.size(), 0); + + //模拟生物监测“已确认”的场景(此时生物监测状态为“已确认”,定时器不会修改其生物监测的状态) + time = ForgonDateUtils.safelyFormatDate(c.getTime(), ForgonDateUtils.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS, ""); + sterilizationRecordTableManager.saveMonitorResult(sr1.getId().toString(), SterilizationRecord.MONITOR_RESULT_QUALIFIED, SterilizationRecord.MONITOR_RESULT_QUALIFIED, + SterilizationRecord.MONITOR_RESULT_QUALIFIED, 10, time, time, userName, userName, userName, "备注"); + session.flush(); + assertEquals(sr1.getBiologicalMonitoringStatus(), SterilizationRecord.BIOLOGICALMONITORING_STATUS_CHECK); + objectDao.executeUpdate(String.format("delete from BiologyMonitorWarning where userName='%s' and departCode='%s'", userName, currentOrgUnitCode)); + result = biologyMonitorWarningManager.getBiologyMonitorWarningByUserNameAndCurrentDepartCode(userName, currentOrgUnitCode); + assertEquals(result.size(), 0); + } + +} Index: ssts-web/src/main/java/com/forgon/disinfectsystem/biologymonitorwarning/service/BiologyMonitorWarningManager.java =================================================================== diff -u -r17114 -r17165 --- ssts-web/src/main/java/com/forgon/disinfectsystem/biologymonitorwarning/service/BiologyMonitorWarningManager.java (.../BiologyMonitorWarningManager.java) (revision 17114) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/biologymonitorwarning/service/BiologyMonitorWarningManager.java (.../BiologyMonitorWarningManager.java) (revision 17165) @@ -22,8 +22,8 @@ String userName, String currentDepartCode); /** - * (定时器)每隔一分钟检查一下,有哪些灭菌记录的生物监测已经结束,并且更改其状态为“已结束”,如用户把核对员也提前填好了,那么直接修改状态为“已确认” + * (定时器)每隔一分钟检查,有哪些灭菌记录的生物监测已经结束,并且更改其状态为“已结束”,如用户把核对员也提前填好了,那么直接修改状态为“已确认” * */ - public void timingUpdateBiologicalMonitoringStatus(); + public void timingUpdateBiologicalMonitoringStatus(String flag); }