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);
}