Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/model/SterilisationNotice.java
===================================================================
diff -u -r41533 -r41558
--- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/model/SterilisationNotice.java (.../SterilisationNotice.java) (revision 41533)
+++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/model/SterilisationNotice.java (.../SterilisationNotice.java) (revision 41558)
@@ -1,5 +1,6 @@
package com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.model;
+import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation;
import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.SterilizationFrequecyRemind;
import com.forgon.response.OperatorResponse;
@@ -77,9 +78,12 @@
* @param remind 提醒规则
*/
public void triggerNotice(SterilizationFrequecyRemind remind) {
+ Sterilisation sterilisation = remind.getSterilisation();
setSuccess(false);
setRemindMode(remind.getRemindMode());
- setSterilisation(remind.getSterilisation().getSterilisation());
+ if(sterilisation != null){
+ setSterilisation(sterilisation.getSterilisation());
+ }
setFrequency(remind.getFrequency());
}
Index: ssts-sterile/src/test/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilisationNoticeCheckerImplBuildMessageTest.java
===================================================================
diff -u
--- ssts-sterile/src/test/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilisationNoticeCheckerImplBuildMessageTest.java (revision 0)
+++ ssts-sterile/src/test/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilisationNoticeCheckerImplBuildMessageTest.java (revision 41558)
@@ -0,0 +1,159 @@
+package com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.service;
+
+import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation;
+import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.SterilizationFrequecyRemind;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.when;
+
+/**
+ * 单元测试:buildMessage 方法
+ */
+public class SterilisationNoticeCheckerImplBuildMessageTest {
+
+ @InjectMocks
+ private SterilisationNoticeCheckerImpl sterilisationNoticeChecker;
+
+ @Mock
+ private SterilizationFrequecyRemind remind;
+
+ @Mock
+ private Sterilisation sterilisation;
+
+ private AutoCloseable closeable;
+
+ @Before
+ public void setUp() {
+ closeable = MockitoAnnotations.openMocks(this);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ closeable.close();
+ }
+
+ /**
+ * TC1: 强制提醒 + 存在灭菌程序 + 自定义提醒信息
+ */
+ @Test
+ public void testBuildMessage_Mandatory_WithSterilisation_And_Message() {
+ String sterilizerName = "高压灭菌炉A";
+ String sterilisationName = "环氧乙烷灭菌";
+ String customMsg = "请特别注意温度控制";
+
+ when(remind.mandatoryMode()).thenReturn(true);
+ when(remind.getSterilisation()).thenReturn(sterilisation);
+ when(sterilisation.getSterilisation()).thenReturn(sterilisationName);
+ when(remind.getFrequency()).thenReturn(2);
+ when(remind.getRemindMessage()).thenReturn(customMsg);
+
+ String result = sterilisationNoticeChecker.buildMessage(sterilizerName, remind);
+
+ String expected = sterilizerName + "第2炉的灭菌程序必须是" + sterilisationName + ";" + customMsg;
+ assertEquals(expected, result);
+ }
+
+ /**
+ * TC2: 强制提醒 + 无灭菌程序 + 自定义提醒信息
+ * 这种是不应该有的配置
+ */
+ @Test
+ public void testBuildMessage_Mandatory_NoSterilisation_But_Message() {
+ String sterilizerName = "低温等离子灭菌炉B";
+ String customMsg = "请检查电源连接状态";
+
+ when(remind.mandatoryMode()).thenReturn(true);
+ when(remind.getSterilisation()).thenReturn(null); // 没有灭菌程序
+ when(remind.getFrequency()).thenReturn(1);
+ when(remind.getRemindMessage()).thenReturn(customMsg);
+
+ String result = sterilisationNoticeChecker.buildMessage(sterilizerName, remind);
+
+ String expected = sterilizerName + "第1炉的灭菌程序必须是;" + customMsg;
+ assertEquals(expected, result);
+ }
+
+ /**
+ * 强制提醒 + 有灭菌程序 + 无自定义提醒信息
+ */
+ @Test
+ public void testBuildMessage_Mandatory_Sterilisation_NoMessage() {
+ String sterilizerName = "低温等离子灭菌炉B";
+ String sterilisationName = "低温灭菌";
+
+ when(remind.mandatoryMode()).thenReturn(true);
+ when(remind.getSterilisation()).thenReturn(sterilisation);
+ when(sterilisation.getSterilisation()).thenReturn(sterilisationName);
+ when(remind.getFrequency()).thenReturn(1);
+
+ String result = sterilisationNoticeChecker.buildMessage(sterilizerName, remind);
+
+ String expected = sterilizerName + "第1炉的灭菌程序必须是" + sterilisationName;
+ assertEquals(expected, result);
+ }
+
+ /**
+ * TC3: 非强制提醒 + 无灭菌程序 + 自定义提醒信息
+ */
+ @Test
+ public void testBuildMessage_NonMandatory_NoSterilisation_But_Message() {
+ String sterilizerName = "蒸汽灭菌炉C";
+ String customMsg = "请勿放置金属物品";
+
+ when(remind.mandatoryMode()).thenReturn(false);
+ when(remind.getSterilisation()).thenReturn(null); // 无灭菌程序
+ when(remind.getRemindMessage()).thenReturn(customMsg);
+
+ String result = sterilisationNoticeChecker.buildMessage(sterilizerName, remind);
+
+ assertEquals("蒸汽灭菌炉C请勿放置金属物品,不修改灭菌程序继续操作吗?", result);
+ }
+
+ /**
+ * TC4: 非强制提醒 + 有灭菌程序 + 无自定义提醒信息
+ */
+ @Test
+ public void testBuildMessage_NonMandatory_WithSterilisation_NoMessage() {
+ String sterilizerName = "干热灭菌炉D";
+ String sterilisationName = "干热灭菌法";
+
+ when(remind.mandatoryMode()).thenReturn(false);
+ when(remind.getSterilisation()).thenReturn(sterilisation);
+ when(sterilisation.getSterilisation()).thenReturn(sterilisationName);
+ when(remind.getFrequency()).thenReturn(3);
+ when(remind.getRemindMessage()).thenReturn(""); // 空白消息
+
+ String result = sterilisationNoticeChecker.buildMessage(sterilizerName, remind);
+
+ String expected = sterilizerName + "第3炉的灭菌程序应该是" + sterilisationName + ",不修改灭菌程序继续操作吗?";
+ assertEquals(expected, result);
+ }
+
+ /**
+ * TC5: 非强制提醒 + 有灭菌程序 + 有自定义提醒信息
+ */
+ @Test
+ public void testBuildMessage_NonMandatory_WithSterilisation_And_Message() {
+ String sterilizerName = "甲醛熏蒸灭菌炉E";
+ String sterilisationName = "甲醛熏蒸";
+ String customMsg = "注意通风时间不少于30分钟";
+
+ when(remind.mandatoryMode()).thenReturn(false);
+ when(remind.getSterilisation()).thenReturn(sterilisation);
+ when(sterilisation.getSterilisation()).thenReturn(sterilisationName);
+ when(remind.getFrequency()).thenReturn(1);
+ when(remind.getRemindMessage()).thenReturn(customMsg);
+
+ String result = sterilisationNoticeChecker.buildMessage(sterilizerName, remind);
+
+ String expected = sterilizerName + "第1炉的灭菌程序应该是" + sterilisationName +
+ ";" + customMsg + ",不修改灭菌程序继续操作吗?";
+ assertEquals(expected, result);
+ }
+}
Index: ssts-basedata/src/test/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/SterilizationFrequencyRemindTest.java
===================================================================
diff -u -r41361 -r41558
--- ssts-basedata/src/test/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/SterilizationFrequencyRemindTest.java (.../SterilizationFrequencyRemindTest.java) (revision 41361)
+++ ssts-basedata/src/test/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/SterilizationFrequencyRemindTest.java (.../SterilizationFrequencyRemindTest.java) (revision 41558)
@@ -1,6 +1,7 @@
package com.forgon.disinfectsystem.entity.basedatamanager.sterilizer;
import com.forgon.disinfectsystem.basedatamanager.holiday.model.HolidayType;
+import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation;
import org.junit.Test;
import java.util.Calendar;
@@ -62,4 +63,74 @@
assertFalse(remind.dateTypeShortHoliday());
assertFalse(remind.dateTypeLongHoliday());
}
+
+ @Test
+ public void testUseful_ALL_EMPTY_False() {
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ assertFalse(remind.useful());
+ }
+
+ @Test
+ public void testUseful_ONLY_FREQUENCY__False() {
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ remind.setFrequency(1);
+ assertFalse(remind.useful());
+ }
+
+ @Test
+ public void testUseful_ONLY_STERILIZATION_False() {
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ Sterilisation s = new Sterilisation();
+ remind.setSterilisation(s);
+ assertFalse(remind.useful());
+ }
+
+ @Test
+ public void testUseful_ONLY_REMIND_MESSAGE_False() {
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ remind.setRemindMessage("必须做生物监测");
+ assertFalse(remind.useful());
+ }
+
+ @Test
+ public void testUseful_OnlySterilisationAndRemindMsg_False() {
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ remind.setSterilisation(new Sterilisation());
+ remind.setRemindMessage("必须做生物监测");
+ assertFalse(remind.useful());
+ }
+
+ @Test
+ public void testUseful_OnlyFrequencyAndRemindMsg_True() {
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ remind.setFrequency(1);
+ remind.setRemindMessage("必须做生物监测");
+ assertTrue(remind.useful());
+ }
+
+ @Test
+ public void testUseful_OnlySterilisationAndFrequency_True() {
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ remind.setSterilisation(new Sterilisation());
+ remind.setFrequency(1);
+ assertTrue(remind.useful());
+ }
+
+ @Test
+ public void testUseful_All_True() {
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ remind.setSterilisation(new Sterilisation());
+ remind.setFrequency(1);
+ remind.setRemindMessage("必须做生物监测");
+ assertTrue(remind.useful());
+ }
+
+ @Test
+ public void testUseful_FrequencyNegative_False() {
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ remind.setSterilisation(new Sterilisation());
+ remind.setFrequency(-1);
+ remind.setRemindMessage("必须做生物监测");
+ assertFalse(remind.useful());
+ }
}
Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/sterilizer/sterilizerForm.js
===================================================================
diff -u -r41444 -r41558
--- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/sterilizer/sterilizerForm.js (.../sterilizerForm.js) (revision 41444)
+++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/sterilizer/sterilizerForm.js (.../sterilizerForm.js) (revision 41558)
@@ -53,17 +53,25 @@
var msg = '';
for (var i = 0; i < store.getCount(); i++) {
var data = store.getAt(i).data;
- if (data.frequency == '' || data.sterilisation_id == '') {
- msg = '【按炉次提醒的灭菌程序】炉次号和灭菌程序都不能为空';
+ if (data.frequency == '') {
+ msg = '【按炉次提醒的灭菌程序】炉次号不能为空';
break;
- } else {
- arr[i] = {
- dateType: data.dateType,
- frequency: data.frequency,
- sterilisation_id: data.sterilisation_id,
- remindMode: data.remindMode
- }
}
+ if (!data.sterilisation_id && !data.remindMessage) {
+ msg = '【按炉次提醒的灭菌程序】灭菌程序为空时,提醒信息不能为空';
+ break;
+ }
+ if (!data.sterilisation_id && data.remindMode == '强制提醒') {
+ msg = '【按炉次提醒的灭菌程序】强制提醒时,必须选择灭菌程序';
+ break;
+ }
+ arr[i] = {
+ dateType: data.dateType,
+ frequency: data.frequency,
+ sterilisation_id: data.sterilisation_id,
+ remindMessage: data.remindMessage,
+ remindMode: data.remindMode
+ }
}
if(!msg && arr.length > 0){
var un_arr = []
@@ -226,6 +234,7 @@
{ name: 'frequency' },
{ name: 'sterilisation' },
{ name: 'sterilisation_id' },
+ { name: 'remindMessage'},
{ name: 'remindMode' }
]
});
@@ -407,7 +416,7 @@
}, {
id: 'sterilisation',
header: "灭菌程序",
- width: 160,
+ width: 120,
dataIndex: 'sterilisation',
editor: new top.Ext.form.ComboBox({
xtype: 'combo',
@@ -470,6 +479,15 @@
anchor: '97%'
})
}, {
+ header: '提醒信息',
+ width: 240,
+ dataIndex: 'remindMessage',
+ editor: new top.Ext.form.TextField({
+ name: 'remindMessage_name',
+ id: 'remindMessage_name',
+ anchor: '97%',
+ })
+ }, {
id: 'deleteItem',
header: '删除',
renderer: function (v, p, record) {
@@ -502,10 +520,12 @@
handler: function () {
var n = top.Ext.getCmp('configGrid1').getStore().getCount();// 获得总行数
var p = new sterilisationConfig({
+ dateType: '',
frequency: '',
sterilisation: '',
sterilisation_id: '',
- remindMode: '非强制提醒'
+ remindMode: '非强制提醒',
+ remindMessage: ''
});
// if (n >= 3) {
// showResult('最多允许添加三个炉次提醒的灭菌程序!');
@@ -866,7 +886,7 @@
layout: 'column',
labelAlign: 'right',
items: [{
- columnWidth: 0.6,
+ columnWidth: 0.55,
layout: 'column',
items: [{
columnWidth: 0.5,
@@ -1236,7 +1256,7 @@
}]
}, {
layout: 'form',
- labelWidth: 100,
+ labelWidth: 200,
columnWidth: 0.5,
height: 38,
items: [{
@@ -1250,7 +1270,7 @@
}]
}, {
layout: 'form',
- labelWidth: 100,
+ labelWidth: 220,
columnWidth: 0.5,
height: 38,
items: [{
@@ -1278,7 +1298,7 @@
}]
}, {
layout: 'form',
- labelWidth: 100,
+ labelWidth: 220,
columnWidth: 0.5,
height: 38,
items: [{
@@ -1525,7 +1545,7 @@
}]
}]
}, {
- columnWidth: 0.4,
+ columnWidth: 0.44,
layout: 'form',
labelWidth: 70,
items: [sterilisationEditGridPanel, sterilisationReminderEditGridPanel, monitoringPackageEditGridPanel]
@@ -1971,8 +1991,8 @@
sterilizerWin = new top.Ext.Window({
id: 'sterilizerWin',
layout: 'fit',
- title: '灭菌炉信息',
- width: 1080,
+ title: '灭菌炉信息1',
+ width: 1280,
border: false,
modal: true,
plain: true,
@@ -2117,7 +2137,8 @@
frequency: (data.frequency == 0) ? '' : data.frequency,
sterilisation: data.sterilisation ? data.sterilisation.sterilisation : '',
sterilisation_id: data.sterilisation ? data.sterilisation.id : '',
- remindMode: data.remindMode
+ remindMode: data.remindMode,
+ remindMessage: data.remindMessage
});
configStore1.add(p);
}
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/SterilizationFrequecyRemind.java
===================================================================
diff -u -r41361 -r41558
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/SterilizationFrequecyRemind.java (.../SterilizationFrequecyRemind.java) (revision 41361)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/SterilizationFrequecyRemind.java (.../SterilizationFrequecyRemind.java) (revision 41558)
@@ -2,6 +2,7 @@
import com.forgon.disinfectsystem.basedatamanager.holiday.model.HolidayType;
import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation;
+import org.apache.commons.lang.StringUtils;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.DynamicInsert;
@@ -51,6 +52,11 @@
* 灭菌程序
*/
private Sterilisation sterilisation;
+
+ /**
+ * 提醒信息 ZSYKEQ-61
+ */
+ private String remindMessage;
/**
* 提醒方式
@@ -105,6 +111,14 @@
this.sterilisation = sterilisation;
}
+ public String getRemindMessage() {
+ return remindMessage;
+ }
+
+ public void setRemindMessage(String remindMessage) {
+ this.remindMessage = remindMessage;
+ }
+
public String getRemindMode() {
return remindMode;
}
@@ -161,5 +175,23 @@
int diff = holidayTypeStart - holidayDateStart;
return holidayType.ordinal() - diff == dateTypeInt();
}
+
+ /**
+ * 判断配置是否有效。如果返回true,在灭菌前进行验证的时候,会直接过滤掉这个配置
+ * @return true-有效,false-无效
+ */
+ public boolean useful() {
+ Integer frequency = getFrequency();
+ Sterilisation s = getSterilisation();
+ String msg = getRemindMessage();
+
+ boolean ret = frequency != null && frequency >=1;
+ if(!ret){
+ // 炉次不能为空的或者小于1
+ return ret;
+ }
+ ret = s == null && StringUtils.isBlank(msg);
+ return !ret;
+ }
}
Index: ssts-sterile/src/test/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilisationNoticeCheckerImplIsHavedoneNeedNoticeSterilisationTest.java
===================================================================
diff -u -r41533 -r41558
--- ssts-sterile/src/test/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilisationNoticeCheckerImplIsHavedoneNeedNoticeSterilisationTest.java (.../SterilisationNoticeCheckerImplIsHavedoneNeedNoticeSterilisationTest.java) (revision 41533)
+++ ssts-sterile/src/test/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilisationNoticeCheckerImplIsHavedoneNeedNoticeSterilisationTest.java (.../SterilisationNoticeCheckerImplIsHavedoneNeedNoticeSterilisationTest.java) (revision 41558)
@@ -97,12 +97,12 @@
public void testMatchedButSameSterilizationType() {
// Arrange
Sterilizer sterilizer = mock(Sterilizer.class);
- SterilizationFrequecyRemind remind = mock(SterilizationFrequecyRemind.class);
- Sterilisation sterilisation = mock(Sterilisation.class);
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ Sterilisation sterilisation = new Sterilisation();
- when(remind.getFrequency()).thenReturn(1);
- when(remind.getSterilisation()).thenReturn(sterilisation);
- when(sterilisation.getSterilisation()).thenReturn("sameType");
+ remind.setFrequency(1);
+ remind.setSterilisation(sterilisation);
+ sterilisation.setSterilisation("sameType");
List reminds = new ArrayList<>();
reminds.add(remind);
@@ -125,12 +125,12 @@
public void testMatchedDifferentTypeMandatory() {
// Arrange
Sterilizer sterilizer = mock(Sterilizer.class);
- Sterilisation sterilisation = mock(Sterilisation.class);
+ Sterilisation sterilisation = new Sterilisation();
SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
remind.setFrequency(1);
remind.setSterilisation(sterilisation);
remind.setRemindMode(REMINDMODE_MANDATORY);
- when(sterilisation.getSterilisation()).thenReturn("correctType");
+ sterilisation.setSterilisation("correctType");
List reminds = new ArrayList<>();
reminds.add(remind);
@@ -153,13 +153,13 @@
public void testMatchedDifferentTypeNonMandatory() {
// Arrange
Sterilizer sterilizer = mock(Sterilizer.class);
- SterilizationFrequecyRemind remind = mock(SterilizationFrequecyRemind.class);
- Sterilisation sterilisation = mock(Sterilisation.class);
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ Sterilisation sterilisation = new Sterilisation();
- when(remind.getFrequency()).thenReturn(1);
- when(remind.getSterilisation()).thenReturn(sterilisation);
- when(sterilisation.getSterilisation()).thenReturn("correctType");
- when(remind.getRemindMode()).thenReturn(SterilizationFrequecyRemind.REMINDMODE_NONMANDATORY);
+ remind.setFrequency(1);
+ remind.setSterilisation(sterilisation);
+ sterilisation.setSterilisation("correctType");
+ remind.setRemindMode(SterilizationFrequecyRemind.REMINDMODE_NONMANDATORY);
List reminds = new ArrayList<>();
reminds.add(remind);
@@ -233,13 +233,13 @@
@Test
public void testWithReminderFrequencyNull() {
Sterilizer sterilizer = mock(Sterilizer.class);
- SterilizationFrequecyRemind remind = mock(SterilizationFrequecyRemind.class);
- Sterilisation sterilisation = mock(Sterilisation.class);
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ Sterilisation sterilisation = new Sterilisation();
- when(remind.getSterilisation()).thenReturn(sterilisation);
- when(sterilisation.getSterilisation()).thenReturn("CorrectType");
- when(remind.getRemindMode()).thenReturn(SterilizationFrequecyRemind.REMINDMODE_NONMANDATORY);
- when(remind.getFrequency()).thenReturn(null);
+ remind.setSterilisation(sterilisation);
+ sterilisation.setSterilisation("CorrectType");
+ remind.setRemindMode(SterilizationFrequecyRemind.REMINDMODE_NONMANDATORY);
+ remind.setFrequency(null);
List reminds = new ArrayList<>();
reminds.add(remind);
when(sterilizer.getSterilizationFrequecyReminds()).thenReturn(reminds);
@@ -256,13 +256,13 @@
@Test
public void testWithReminderFrequencyNegative() {
Sterilizer sterilizer = mock(Sterilizer.class);
- SterilizationFrequecyRemind remind = mock(SterilizationFrequecyRemind.class);
- Sterilisation sterilisation = mock(Sterilisation.class);
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ Sterilisation sterilisation = new Sterilisation();
- when(remind.getSterilisation()).thenReturn(sterilisation);
- when(sterilisation.getSterilisation()).thenReturn("CorrectType");
- when(remind.getRemindMode()).thenReturn(SterilizationFrequecyRemind.REMINDMODE_NONMANDATORY);
- when(remind.getFrequency()).thenReturn(-3);
+ remind.setSterilisation(sterilisation);
+ sterilisation.setSterilisation("CorrectType");
+ remind.setRemindMode(SterilizationFrequecyRemind.REMINDMODE_NONMANDATORY);
+ remind.setFrequency(-3);
List reminds = new ArrayList<>();
reminds.add(remind);
when(sterilizer.getSterilizationFrequecyReminds()).thenReturn(reminds);
@@ -282,11 +282,11 @@
@Test
public void testWithReminderSterilisationEmpty() {
Sterilizer sterilizer = mock(Sterilizer.class);
- SterilizationFrequecyRemind remind = mock(SterilizationFrequecyRemind.class);
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
- doReturn(null).when(remind).getSterilisation();
- when(remind.getRemindMode()).thenReturn(SterilizationFrequecyRemind.REMINDMODE_NONMANDATORY);
- when(remind.getFrequency()).thenReturn(-3);
+ remind.setSterilisation(null);
+ remind.setRemindMode(SterilizationFrequecyRemind.REMINDMODE_NONMANDATORY);
+ remind.setFrequency(-3);
List reminds = new ArrayList<>();
reminds.add(remind);
when(sterilizer.getSterilizationFrequecyReminds()).thenReturn(reminds);
@@ -339,6 +339,68 @@
}
}
+ @Test
+ public void testWeekMandatoryRemindMatch_TriggerOnlyOne() {
+ Sterilizer sterilizer = new Sterilizer();
+ List reminds = new ArrayList<>();
+ reminds.add(buildReminder(SterilizationFrequecyRemind.REMINDMODE_MANDATORY, DATE_TYPE_EVERYDAY, 1, "DB"));
+ reminds.add(buildReminder(SterilizationFrequecyRemind.REMINDMODE_MANDATORY, DATE_TYPE_WEEK_START+3, 1, "P1"));
+
+ sterilizer.setSterilizationFrequecyReminds(reminds);
+ when(objectDao.getByProperty(eq("Sterilizer"), eq("name"), anyString())).thenReturn(sterilizer);
+ when(holidayConfigManager.holidayTypeOfToday()).thenReturn(HolidayType.LongBefore);
+ try(MockedStatic forgonDateUtils = mockStatic(ForgonDateUtils.class)){
+ forgonDateUtils.when(ForgonDateUtils::getDayWeekOfToday).thenReturn(Calendar.WEDNESDAY);
+ SterilisationNotice notice = sterilisationNoticeChecker.isHavedoneNeedNoticeSterilisation("Sterilizer", "wrongType", "1");
+ assertFalse(notice.getSuccess());
+ validateFalse(trans2JSONObject(notice), REMINDMODE_MANDATORY, "P1", 1, "必须");
+
+ // 设置为P1
+ notice = sterilisationNoticeChecker.isHavedoneNeedNoticeSterilisation("Sterilizer", "P1", "1");
+ assertTrue(notice.getSuccess());
+ }
+ }
+
+ @Test
+ public void testEveryDayMandatoryRemindMatch_TriggerOnlyOne() {
+ Sterilizer sterilizer = new Sterilizer();
+ List reminds = new ArrayList<>();
+ reminds.add(buildReminder(SterilizationFrequecyRemind.REMINDMODE_MANDATORY, DATE_TYPE_EVERYDAY, 1, "DB"));
+
+ sterilizer.setSterilizationFrequecyReminds(reminds);
+ when(objectDao.getByProperty(eq("Sterilizer"), eq("name"), anyString())).thenReturn(sterilizer);
+
+ try(MockedStatic forgonDateUtils = mockStatic(ForgonDateUtils.class)){
+ SterilisationNotice notice = sterilisationNoticeChecker.isHavedoneNeedNoticeSterilisation("Sterilizer", "wrongType", "1");
+ assertFalse(notice.getSuccess());
+ validateFalse(trans2JSONObject(notice), REMINDMODE_MANDATORY, "DB", 1, "必须");
+
+ // 设置为DB
+ notice = sterilisationNoticeChecker.isHavedoneNeedNoticeSterilisation("Sterilizer", "DB", "1");
+ assertTrue(notice.getSuccess());
+ }
+ }
+
+ /**
+ * 非强制提醒,灭菌程序为空;必须有提醒消息
+ */
+ @Test
+ public void testSterilisationNullNonMandatory() {
+ Sterilizer sterilizer = new Sterilizer();
+ SterilizationFrequecyRemind remind = new SterilizationFrequecyRemind();
+ remind.setRemindMode(SterilizationFrequecyRemind.REMINDMODE_NONMANDATORY);
+ remind.setSterilisation(null);
+ remind.setRemindMessage("这是自定义提醒");
+ remind.setFrequency(3);
+ List reminds = new ArrayList<>();
+ reminds.add(remind);
+ sterilizer.setSterilizationFrequecyReminds(reminds);
+ when(objectDao.getByProperty(eq("Sterilizer"), eq("name"), anyString())).thenReturn(sterilizer);
+ SterilisationNotice notice = sterilisationNoticeChecker.isHavedoneNeedNoticeSterilisation("Sterilizer", "wrongType", "3");
+ assertFalse(notice.getSuccess());
+ validateFalse(trans2JSONObject(notice), REMINDMODE_NONMANDATORY, "", 3, "这是自定义提醒");
+ }
+
private SterilizationFrequecyRemind buildReminder(String remindMode, int dateType, int frequency, String sterilisation) {
Sterilisation ss = new Sterilisation();
ss.setSterilisation(sterilisation);
@@ -353,7 +415,7 @@
private static void validateFalse(JSONObject result, String remindMode, String sterilisation, int frequency, String msgKey) {
assertFalse(result.getBoolean("success"));
assertEquals(remindMode, result.getString("remindMode"));
- assertEquals(sterilisation, result.getString("sterilisation"));
+ assertEquals(sterilisation, result.optString("sterilisation"));
assertEquals(frequency, result.getInt("frequency"));
assertTrue(result.containsKey("confirmMessage"));
assertTrue(result.getString("confirmMessage").contains(msgKey));
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/param/SterilizationFrequencyRemindParam.java
===================================================================
diff -u -r41361 -r41558
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/param/SterilizationFrequencyRemindParam.java (.../SterilizationFrequencyRemindParam.java) (revision 41361)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/param/SterilizationFrequencyRemindParam.java (.../SterilizationFrequencyRemindParam.java) (revision 41558)
@@ -33,6 +33,10 @@
*/
@JsonProperty("sterilisation_id")
private Long sterilisationId;
+ /**
+ * 提醒信息 ZSYKEQ-61
+ */
+ private String remindMessage;
public Integer getDateType() {
return dateType;
@@ -66,18 +70,27 @@
this.sterilisationId = sterilisationId;
}
+ public String getRemindMessage() {
+ return remindMessage;
+ }
+
+ public void setRemindMessage(String remindMessage) {
+ this.remindMessage = remindMessage;
+ }
+
@Override
public boolean equals(Object object) {
if (this == object) return true;
if (!(object instanceof SterilizationFrequencyRemindParam)) return false;
SterilizationFrequencyRemindParam that = (SterilizationFrequencyRemindParam) object;
return Objects.equals(dateType, that.dateType) && Objects.equals(frequency, that.frequency)
- && Objects.equals(remindMode, that.remindMode) && Objects.equals(sterilisationId, that.sterilisationId);
+ && Objects.equals(remindMode, that.remindMode) && Objects.equals(sterilisationId, that.sterilisationId)
+ && Objects.equals(remindMessage, that.remindMessage);
}
@Override
public int hashCode() {
- return Objects.hash(dateType, frequency, remindMode, sterilisationId);
+ return Objects.hash(dateType, frequency, remindMode, sterilisationId, remindMessage);
}
@Override
@@ -87,6 +100,7 @@
", frequency=" + frequency +
", remindMode='" + remindMode + '\'' +
", sterilisationId=" + sterilisationId +
+ ", remindMessage='" + remindMessage + '\'' +
'}';
}
}
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManagerImpl.java
===================================================================
diff -u -r41468 -r41558
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManagerImpl.java (.../SterilizerManagerImpl.java) (revision 41468)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/sterilizer/service/SterilizerManagerImpl.java (.../SterilizerManagerImpl.java) (revision 41558)
@@ -239,7 +239,7 @@
@Override
public void saveSterilizer(Sterilizer sterilizer, String cleanMethodIDs,
String consumablesStr, String detectionItemsStr,
- List extraInfo, String sterilizationFrequecyReminds) {
+ List extraInfo, String sterilizationFrequencyReminds) {
if (sterilizer != null) {
@@ -350,9 +350,9 @@
}
// 按炉次提醒的灭菌程序
- if(StringUtils.isNotBlank(sterilizationFrequecyReminds)){
+ if(StringUtils.isNotBlank(sterilizationFrequencyReminds)){
List originalList = sterilizer.getSterilizationFrequecyReminds();
- List sterilizationFrequecyRemindList = parseSterilizationFrequencyReminds(sterilizationFrequecyReminds);
+ List sterilizationFrequecyRemindList = parseSterilizationFrequencyReminds(sterilizationFrequencyReminds);
sterilizer.setSterilizationFrequecyReminds(sterilizationFrequecyRemindList);
objectDao.deleteAll(originalList);
}
Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilisationNoticeCheckerImpl.java
===================================================================
diff -u -r41533 -r41558
--- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilisationNoticeCheckerImpl.java (.../SterilisationNoticeCheckerImpl.java) (revision 41533)
+++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilisationNoticeCheckerImpl.java (.../SterilisationNoticeCheckerImpl.java) (revision 41558)
@@ -2,6 +2,7 @@
import com.forgon.disinfectsystem.basedatamanager.holiday.model.HolidayType;
import com.forgon.disinfectsystem.basedatamanager.holiday.service.HolidayConfigManager;
+import com.forgon.disinfectsystem.entity.basedatamanager.sterilisation.Sterilisation;
import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.SterilizationFrequecyRemind;
import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer;
import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.model.SterilisationNotice;
@@ -31,8 +32,7 @@
List sterilizationFrequecyReminds = sterilizer.getSterilizationFrequecyReminds();
if(CollectionUtils.isNotEmpty(sterilizationFrequecyReminds)){
- List list = sterilizationFrequecyReminds.stream().filter(remind->remind.getSterilisation() != null
- && remind.getFrequency() != null && remind.getFrequency() >=1).collect(Collectors.toList());
+ List list = sterilizationFrequecyReminds.stream().filter(SterilizationFrequecyRemind::useful).collect(Collectors.toList());
if(CollectionUtils.isEmpty(list)){
return notice;
}
@@ -110,7 +110,7 @@
* @param sterilizerName 灭菌炉名称
* @param sterilizationType 灭菌程序
* @param frequency 当前炉次
- * @param sterilizationFrequecyReminds 相同优先级和提醒模式的规则列表
+ * @param sterilizationFrequencyReminds 相同优先级和提醒模式的规则列表
* @param notice 提醒结果
* @param maddatory 是否强制提醒。如果是强制提醒,那有一个规则匹配,后续就不能再检查了,不然可能进入死循环,两个灭菌程序互相触发。
* 比如一个规则要P1灭菌程序,另一个要P2灭菌程序,满足P1满足不了P2,满足P2满足不了P1。
@@ -119,15 +119,15 @@
*/
private boolean checkInSamePriorityAndMode(
HolidayType todayHolidayType, String sterilizerName, String sterilizationType, String frequency,
- List sterilizationFrequecyReminds, SterilisationNotice notice, boolean maddatory) {
+ List sterilizationFrequencyReminds, SterilisationNotice notice, boolean maddatory) {
int weekDay = ForgonDateUtils.getDayWeekOfToday();
boolean ret = false;
- for (SterilizationFrequecyRemind remind : sterilizationFrequecyReminds) {
- // 配置中的炉次或者灭菌程序为空时,不验证
- if(remind.getFrequency() == null || remind.getFrequency() < 1
- || remind.getSterilisation() == null){
- continue;
- }
+ for (SterilizationFrequecyRemind remind : sterilizationFrequencyReminds) {
+ // 配置中的炉次或者灭菌程序为空时,不验证。外层已经过滤掉了无效配置了
+// if(remind.getFrequency() == null || remind.getFrequency() < 1
+// || remind.getSterilisation() == null){
+// continue;
+// }
// 如果日期类型是假期,则判断当天假期是否一致
if(remind.dateTypeLongHoliday() || remind.dateTypeShortHoliday()){
@@ -143,12 +143,15 @@
}
// 都是假期匹配或者星期匹配或者是每天的,只要炉次匹配就行了
if(StringUtils.equals(frequency, remind.getFrequency().toString())){
- if(!StringUtils.equals(sterilizationType, remind.getSterilisation().getSterilisation())){
+ Sterilisation sterilisation = remind.getSterilisation();
+ if(sterilisation == null){
+ // 灭菌程序为空,则表示所有灭菌程序都提醒。这时候配置上必须是非强制的,且提醒信息不能为空(目前是前端保存的时候验证)
notice.triggerNotice(remind);
- if(StringUtils.equals(remind.getRemindMode(), SterilizationFrequecyRemind.REMINDMODE_MANDATORY)){
- notice.setConfirmMessage(sterilizerName + "第" + frequency + "炉的灭菌程序必须是" + remind.getSterilisation().getSterilisation() + "!");
- }else{
- notice.setConfirmMessage(sterilizerName + "第" + frequency + "炉的灭菌程序应该是" + remind.getSterilisation().getSterilisation() + ",不修改灭菌程序继续操作吗?");
+ notice.setConfirmMessage(buildMessage(sterilizerName, remind));
+ }else{
+ if(!StringUtils.equals(sterilizationType, sterilisation.getSterilisation())){
+ notice.triggerNotice(remind);
+ notice.setConfirmMessage(buildMessage(sterilizerName, remind));
}
}
ret = true;
@@ -159,4 +162,31 @@
}
return ret;
}
+
+ String buildMessage(String sterilizerName,SterilizationFrequecyRemind remind) {
+ Sterilisation s = remind.getSterilisation();
+ String sterilization = s == null ? "" : s.getSterilisation();
+ String remindMessage = remind.getRemindMessage();
+ Integer frequency = remind.getFrequency();
+ String msg = sterilizerName;
+ if(remind.mandatoryMode()){
+ // 强制提醒必须有灭菌程序
+ msg = msg + "第" + frequency + "炉的灭菌程序必须是" +sterilization;
+ if(StringUtils.isNotBlank(remindMessage)){
+ msg += ";" + remindMessage;
+ }
+ }else{
+ if(StringUtils.isBlank(sterilization)){
+ // 没有灭菌程序,那必然有提醒信息
+ msg = msg + remindMessage;
+ }else{
+ msg = msg + "第" + frequency + "炉的灭菌程序应该是" + sterilization;
+ if(StringUtils.isNotBlank(remindMessage)){
+ msg += ";" + remindMessage;
+ }
+ }
+ msg += ",不修改灭菌程序继续操作吗?";
+ }
+ return msg;
+ }
}