Index: ssts-web/src/test/java/test/forgon/disinfectsystem/equipmentinspection/definition/service/EquipmentInspectionDefManagerTest.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/equipmentinspection/definition/service/EquipmentInspectionDefManagerTest.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/equipmentinspection/definition/service/EquipmentInspectionDefManagerTest.java (revision 41041) @@ -0,0 +1,252 @@ +package test.forgon.disinfectsystem.equipmentinspection.definition.service; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang.StringUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.testng.AssertJUnit; + +import com.forgon.Constants; +import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; +import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; +import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinition; +import com.forgon.disinfectsystem.entity.equipmentinspection.definition.ApplicableEquipment; +import com.forgon.disinfectsystem.entity.equipmentinspection.definition.EquipmentInspectionDef; +import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; +import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; +import com.forgon.disinfectsystem.equipmentinspection.definition.service.EquipmentInspectionDefManager; +import com.forgon.tools.date.DateTools; +import com.forgon.tools.db.DatabaseUtil; + +import test.forgon.disinfectsystem.AbstractCSSDTest; + +/** + * 设备巡检定义的测试用例 + */ +public class EquipmentInspectionDefManagerTest extends AbstractCSSDTest { + + @Autowired + private EquipmentInspectionDefManager equipmentInspectionDefManager; + + private Rinser rinser; + + private Sterilizer sterilizer; + + @Before + public void initTestData(){ + rinser = new Rinser(); + rinser.setBarcode("r001"); + rinser.setName("测试清洗机"); + rinser.setUseStatus(Rinser.USESTATUS_IN_USE); + objectDao.saveOrUpdate(rinser); + + sterilizer = new Sterilizer(); + sterilizer.setBarcode("s001"); + sterilizer.setName("测试灭菌炉"); + sterilizer.setUseStatus(Sterilizer.USESTATUS_IN_USE); + objectDao.saveOrUpdate(sterilizer); + } + + @After + public void clearTestData(){ + if(rinser != null){ + objectDao.delete(rinser); + } + if(sterilizer != null){ + objectDao.delete(sterilizer); + } + } + + /** + * 设备巡检提醒的测试用例-“每天固定时间提醒” + */ + @Test + public void testEquipmentInspectionRemindFixedTimeEveryDayMode(){ + + //1、测试“每天固定时间提醒” + EquipmentInspectionDef equipmentInspectionDef = new EquipmentInspectionDef(); + equipmentInspectionDef.setFormName("每天固定时间提醒"); + equipmentInspectionDef.setFormType(EquipmentInspectionDef.FOMRTYPE_EQUIPMENTINSPECTION); + equipmentInspectionDef.setEquipmentInspectionRemind(Constants.STR_YES); + equipmentInspectionDef.setRemindMode(EquipmentInspectionDef.REMIND_MODE_FIXED_TIME_EVERY_DAY); + equipmentInspectionDef.setRemindAllUsers(Constants.STR_YES); + //equipmentInspectionDef.setAllEquipment(Constants.STR_YES); + equipmentInspectionDef.setIsDeploy(EquipmentInspectionDef.ACTION_DEPLOY); + equipmentInspectionDef.setVersion(getFormDefinitionMaxVersion(equipmentInspectionDef)); + equipmentInspectionDef.setRemindDuration(30); + + equipmentInspectionDef.setRemindStartTime("00:00"); + equipmentInspectionDef.setRemindEndTime("23:59"); + objectDao.saveOrUpdate(equipmentInspectionDef); + + //适用设备=测试清洗机器 + ApplicableEquipment applicableEquipment = new ApplicableEquipment(); + applicableEquipment.setEquipmentId(rinser.getId()); + applicableEquipment.setType(ApplicableEquipment.TYPE_RINSER); + applicableEquipment.setEquipmentInspectionDefId(equipmentInspectionDef.getId()); + objectDao.saveOrUpdate(applicableEquipment); + + Map> userNameEquipmentMap = equipmentInspectionDefManager.equipmentInspectionRemind(); + AssertJUnit.assertNotNull(userNameEquipmentMap); + List equipmentList = userNameEquipmentMap.get(EquipmentInspectionDef.REMIND_ALL_USERS); + AssertJUnit.assertEquals(equipmentList.size(), 1); + AssertJUnit.assertEquals(equipmentList.get(0), String.format("设备“%s”需要进行设备巡检登记,请进行登记操作", rinser.getName())); + + //间隔时长30分钟 + Map> userNameEquipmentMap30Min = equipmentInspectionDefManager.equipmentInspectionRemind(); + if(userNameEquipmentMap30Min != null){ + AssertJUnit.assertEquals(MapUtils.isEmpty(userNameEquipmentMap30Min), true); + } + + if(equipmentInspectionDef != null){ + equipmentInspectionDefManager.deleteFormDefinitionById(equipmentInspectionDef.getId().toString()); + } + } + + /** + * 设备巡检提醒的测试用例-“设备运行时提醒” + */ + @Test + public void testEquipmentInspectionRemindDeviceRunningMode(){ + //设备运行时提醒 + EquipmentInspectionDef equipmentInspectionDef = new EquipmentInspectionDef(); + equipmentInspectionDef.setFormName("设备运行时提醒"); + equipmentInspectionDef.setFormType(EquipmentInspectionDef.FOMRTYPE_EQUIPMENTINSPECTION); + equipmentInspectionDef.setEquipmentInspectionRemind(Constants.STR_YES); + equipmentInspectionDef.setRemindMode(EquipmentInspectionDef.REMIND_MODE_DEVICE_RUNNING); + equipmentInspectionDef.setRemindAllUsers(Constants.STR_YES); + //equipmentInspectionDef.setAllEquipment(Constants.STR_YES); + equipmentInspectionDef.setIsDeploy(EquipmentInspectionDef.ACTION_DEPLOY); + equipmentInspectionDef.setVersion(getFormDefinitionMaxVersion(equipmentInspectionDef)); + equipmentInspectionDef.setRemindDuration(30); + + objectDao.saveOrUpdate(equipmentInspectionDef); + + //适用设备-测试清洗机器 + ApplicableEquipment applicableEquipmentRinser = new ApplicableEquipment(); + applicableEquipmentRinser.setEquipmentId(rinser.getId()); + applicableEquipmentRinser.setType(ApplicableEquipment.TYPE_RINSER); + applicableEquipmentRinser.setEquipmentInspectionDefId(equipmentInspectionDef.getId()); + objectDao.saveOrUpdate(applicableEquipmentRinser); + + //适用设备-测试灭菌炉 + ApplicableEquipment applicableEquipmentSterilizer = new ApplicableEquipment(); + applicableEquipmentSterilizer.setEquipmentId(sterilizer.getId()); + applicableEquipmentSterilizer.setType(ApplicableEquipment.TYPE_STERILIZER); + applicableEquipmentSterilizer.setEquipmentInspectionDefId(equipmentInspectionDef.getId()); + objectDao.saveOrUpdate(applicableEquipmentSterilizer); + + Map> userNameEquipmentMap = equipmentInspectionDefManager.equipmentInspectionRemind(); + if(userNameEquipmentMap != null){ + AssertJUnit.assertEquals(MapUtils.isEmpty(userNameEquipmentMap), true); + } + + //清洗机运行中(清洗记录的状态为清洗中),需要提醒 + //清洗中 + WashAndDisinfectRecord washRecord = new WashAndDisinfectRecord(); + //washRecord.setStartDate(DateTools.addMinutes(new Date(), -5L)); + washRecord.setWashStatus(WashAndDisinfectRecord.STATUS_WASHING); + washRecord.setRinserId(rinser.getId()); + objectDao.saveOrUpdate(washRecord); + equipmentInspectionDef.setLastRemindDate(null); + objectDao.saveOrUpdate(equipmentInspectionDef); + userNameEquipmentMap = equipmentInspectionDefManager.equipmentInspectionRemind(); + AssertJUnit.assertNotNull(userNameEquipmentMap); + List equipmentList = userNameEquipmentMap.get(EquipmentInspectionDef.REMIND_ALL_USERS); + AssertJUnit.assertEquals(equipmentList.get(0), String.format("设备“%s”需要进行设备巡检登记,请进行登记操作", rinser.getName())); + + //间隔时长30分钟 + Map> userNameEquipmentMap30Min = equipmentInspectionDefManager.equipmentInspectionRemind(); + if(userNameEquipmentMap30Min != null){ + AssertJUnit.assertEquals(MapUtils.isEmpty(userNameEquipmentMap30Min), true); + } + + //清洗完成 + //washRecord.setEndDate(DateTools.addMinutes(new Date(), -1L)); + washRecord.setWashStatus(WashAndDisinfectRecord.STATUS_WASHED); + objectDao.saveOrUpdate(washRecord); + washRecord = (WashAndDisinfectRecord) objectDao.getById(WashAndDisinfectRecord.class.getSimpleName(), washRecord.getId()); + equipmentInspectionDef.setLastRemindDate(null); + objectDao.saveOrUpdate(equipmentInspectionDef); + userNameEquipmentMap = equipmentInspectionDefManager.equipmentInspectionRemind(); + if(userNameEquipmentMap != null){ + AssertJUnit.assertEquals(MapUtils.isEmpty(userNameEquipmentMap), true); + } + + objectDao.delete(washRecord); + + //灭菌炉运行时(灭菌记录的状态为灭菌中),需要提醒 + //灭菌中 + SterilizationRecord sterilizationRecord = new SterilizationRecord(); + sterilizationRecord.setSterilizer(sterilizer); + sterilizationRecord.setStatus(SterilizationRecord.STERILIZATION_STATUS_BEGIN); + objectDao.saveOrUpdate(sterilizationRecord); + equipmentInspectionDef.setLastRemindDate(null); + objectDao.saveOrUpdate(equipmentInspectionDef); + userNameEquipmentMap = equipmentInspectionDefManager.equipmentInspectionRemind(); + AssertJUnit.assertNotNull(userNameEquipmentMap); + equipmentList = userNameEquipmentMap.get(EquipmentInspectionDef.REMIND_ALL_USERS); + AssertJUnit.assertEquals(equipmentList.get(0), String.format("设备“%s”需要进行设备巡检登记,请进行登记操作", sterilizer.getName())); + + //完成灭菌 + sterilizationRecord.setStatus(SterilizationRecord.STERILIZATION_STATUS_END); + objectDao.saveOrUpdate(sterilizationRecord); + sterilizationRecord = (SterilizationRecord) objectDao.getById(SterilizationRecord.class.getSimpleName(), sterilizationRecord.getId()); + equipmentInspectionDef.setLastRemindDate(null); + objectDao.saveOrUpdate(equipmentInspectionDef); + userNameEquipmentMap = equipmentInspectionDefManager.equipmentInspectionRemind(); + if(userNameEquipmentMap != null){ + AssertJUnit.assertEquals(MapUtils.isEmpty(userNameEquipmentMap), true); + } + + objectDao.delete(sterilizationRecord); + + if(equipmentInspectionDef != null){ + equipmentInspectionDefManager.deleteFormDefinitionById(equipmentInspectionDef.getId().toString()); + } + } + + /** + * 获取最大的版本号 + * @param formName + * @param formType + * @return + */ + private int getFormDefinitionMaxVersion(FormDefinition formDefinition){ + int maxVersion = 1; + if(formDefinition == null){ + throw new RuntimeException("表单定义不能为空!"); + } + String formName = formDefinition.getFormName(); + String formType = formDefinition.getFormType(); + if (StringUtils.isBlank(formName)) { + throw new RuntimeException("表单名称不能为空!"); + } + if (StringUtils.isBlank(formType)) { + throw new RuntimeException("表单类型不能为空!"); + } + String sql = String + .format("select max(version) from %s where formName = '%s' and formType = '%s'", + FormDefinition.class.getSimpleName(), formName,formType); + ResultSet rs = objectDao.executeSql(sql); + try { + while (rs.next()) { + maxVersion = (rs.getInt(1) + 1); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return maxVersion; + } + +} Index: ssts-web/src/main/webapp/disinfectsystem/config/zsdxfsdeyy/spring/timer.xml =================================================================== diff -u -r35800 -r41041 --- ssts-web/src/main/webapp/disinfectsystem/config/zsdxfsdeyy/spring/timer.xml (.../timer.xml) (revision 35800) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsdxfsdeyy/spring/timer.xml (.../timer.xml) (revision 41041) @@ -2,11 +2,32 @@ + + + + + + + + timingRemind + + + + + + + + + 0 0/5 * * * ? + + + Index: ssts-web/src/test/java/test/forgon/disinfectsystem/equipmentinspection/AllTests.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/equipmentinspection/AllTests.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/equipmentinspection/AllTests.java (revision 41041) @@ -0,0 +1,16 @@ +package test.forgon.disinfectsystem.equipmentinspection; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +import test.forgon.disinfectsystem.equipmentinspection.definition.service.EquipmentInspectionDefManagerTest; + +/** + * 设备巡检的测试用例 + */ +@RunWith(Suite.class) +@SuiteClasses({ EquipmentInspectionDefManagerTest.class }) +public class AllTests { + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/equipmentinspection/definition/EquipmentInspectionDef.java =================================================================== diff -u -r39250 -r41041 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/equipmentinspection/definition/EquipmentInspectionDef.java (.../EquipmentInspectionDef.java) (revision 39250) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/equipmentinspection/definition/EquipmentInspectionDef.java (.../EquipmentInspectionDef.java) (revision 41041) @@ -63,6 +63,11 @@ private String remindAllUsers; /** + * 提醒全部用户的标识 + */ + public final static String REMIND_ALL_USERS = "all"; + + /** * 提醒人员Id * 不保存到数据库 */ Index: ssts-web/src/main/java/com/forgon/disinfectsystem/equipmentinspection/definition/service/EquipmentInspectionDefManagerImpl.java =================================================================== diff -u -r38091 -r41041 --- ssts-web/src/main/java/com/forgon/disinfectsystem/equipmentinspection/definition/service/EquipmentInspectionDefManagerImpl.java (.../EquipmentInspectionDefManagerImpl.java) (revision 38091) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/equipmentinspection/definition/service/EquipmentInspectionDefManagerImpl.java (.../EquipmentInspectionDefManagerImpl.java) (revision 41041) @@ -29,11 +29,13 @@ import com.forgon.disinfectsystem.entity.equipmentinspection.definition.ApplicableEquipment; import com.forgon.disinfectsystem.entity.equipmentinspection.definition.EquipInspectionRemindUser; import com.forgon.disinfectsystem.entity.equipmentinspection.definition.EquipmentInspectionDef; +import com.forgon.disinfectsystem.entity.equipmentinspection.instance.EquipmentInspectionInstance; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; import com.forgon.disinfectsystem.sterilizationmanager.bioreader.service.BioreaderManager; import com.forgon.disinfectsystem.vo.ApplicableEquipmentVo; import com.forgon.exception.SystemException; +import com.forgon.java_websocket.service.PushRecordManager; import com.forgon.security.model.User; import com.forgon.security.service.UserManager; import com.forgon.tools.date.DateTools; @@ -56,6 +58,12 @@ private UserManager userManager; + private PushRecordManager pushRecordManager; + + public void setPushRecordManager(PushRecordManager pushRecordManager) { + this.pushRecordManager = pushRecordManager; + } + public void setUserManager(UserManager userManager) { this.userManager = userManager; } @@ -425,6 +433,9 @@ if(equipmentInspectionDef.getRemindDuration() <= 0){ throw new SystemException("间隔时长(分)必须大于0"); } + if(equipmentInspectionDef.getRemindDuration() < 5){ + throw new SystemException("间隔时长(分)必须大于等于5分钟"); + } //“提醒模式”设置为“每天固定时间提醒时” if(StringUtils.equals(equipmentInspectionDef.getRemindMode(), EquipmentInspectionDef.REMIND_MODE_FIXED_TIME_EVERY_DAY)){ @@ -717,14 +728,14 @@ if(MapUtils.isNotEmpty(userNameWarningEquipmentMap)){ Map> newUserNameWarningEquipmentMap = new HashMap>(); for (Entry> entry : userNameWarningEquipmentMap.entrySet()) { - String key = entry.getKey(); + String userName = entry.getKey(); List equipmentList = entry.getValue(); if(CollectionUtils.isNotEmpty(equipmentList)){ List newRemindMessageList = new ArrayList(); for (String warningEquipment : equipmentList) { newRemindMessageList.add(String.format("设备“%s”需要进行设备巡检登记,请进行登记操作", warningEquipment)); } - newUserNameWarningEquipmentMap.put(key, newRemindMessageList); + newUserNameWarningEquipmentMap.put(userName, newRemindMessageList); } } return newUserNameWarningEquipmentMap; @@ -734,7 +745,7 @@ /** * 加载需要提醒的设备巡检定义 - * @return + * @return 用户名和设备名称的map */ @SuppressWarnings("unchecked") private Map> loadLastDeployWarningInspectionUserNameEquipmentList() { @@ -754,7 +765,6 @@ Map> defEquipmentMap = new HashMap>(); Date nowDateTime = new Date(); String nowDateStr = DateTools.getFormatDateStr(nowDateTime, DateTools.COMMON_DATE_ONLY); - List allWarnEquipment = new ArrayList(); for (EquipmentInspectionDef def : lastDeployEquipmentInspectionDefList) { //上次提醒时间距离当前时间不超过间隔时长(分) @@ -800,15 +810,13 @@ if(CollectionUtils.isEmpty(allDefEquipment)){ continue; } - allWarnEquipment.addAll(allDefEquipment); defEquipmentMap.put(def, allDefEquipment); }else if(StringUtils.equals(def.getRemindMode(), EquipmentInspectionDef.REMIND_MODE_DEVICE_RUNNING)){ //提醒模式为“设备运行时提醒”时,根据设备类型的运行状态判断是否提醒; List runningEquipment = getEquipmentInspectionDefRuningEquipment(def); if(CollectionUtils.isEmpty(runningEquipment)){ continue; } - allWarnEquipment.addAll(runningEquipment); defEquipmentMap.put(def, runningEquipment); }else{ throw new SystemException("提醒模式异常!"); @@ -819,8 +827,7 @@ objectDao.saveOrUpdate(def); } - Map> userNameWarningEquipmentMap = returnUserNameWarningEquipmentMap(defEquipmentMap); - return userNameWarningEquipmentMap; + return returnUserNameWarningEquipmentMap(defEquipmentMap); } /** @@ -852,7 +859,7 @@ continue; } if(StringUtils.equals(def.getRemindAllUsers(), Constants.STR_YES)){ - userNameWarningEquipmentMap.put("全部", equipmentList); + userNameWarningEquipmentMap.put(EquipmentInspectionDef.REMIND_ALL_USERS, equipmentList); continue; } List userList = remindUserMap.get(def.getId()); @@ -885,7 +892,7 @@ List rinserIdList = getApplicableEquipmentId(def, ApplicableEquipment.TYPE_RINSER); if(CollectionUtils.isNotEmpty(rinserIdList)){ StringBuffer sqlBuffer = new StringBuffer(); - sqlBuffer.append("select r.name from "); + sqlBuffer.append("select r.name, r.useStatus from "); sqlBuffer.append(Rinser.class.getSimpleName()); sqlBuffer.append(" r where "); sqlBuffer.append(SqlUtils.getNonStringFieldInLargeCollectionsPredicate("r.id", rinserIdList)); @@ -894,7 +901,10 @@ rs = objectDao.executeSql(sqlBuffer.toString()); while(rs.next()){ String name = rs.getString("name"); - rinserNames.add(name); + String useStatus = rs.getString("useStatus"); + if(StringUtils.isBlank(useStatus) || StringUtils.equals(useStatus, Rinser.USESTATUS_IN_USE)){ + rinserNames.add(name); + } } } catch (Exception e) { e.printStackTrace(); @@ -906,7 +916,7 @@ Set sterilizerNames = new HashSet(); if(CollectionUtils.isNotEmpty(sterilizerIdList)){ StringBuffer sqlBuffer = new StringBuffer(); - sqlBuffer.append("select s.name from "); + sqlBuffer.append("select s.name, s.useStatus from "); sqlBuffer.append(Sterilizer.class.getSimpleName()); sqlBuffer.append(" s where "); sqlBuffer.append(SqlUtils.getNonStringFieldInLargeCollectionsPredicate("s.id", sterilizerIdList)); @@ -915,6 +925,10 @@ rs = objectDao.executeSql(sqlBuffer.toString()); while(rs.next()){ String name = rs.getString("name"); + String useStatus = rs.getString("useStatus"); + if(StringUtils.isBlank(useStatus) || StringUtils.equals(useStatus, Sterilizer.USESTATUS_IN_USE)){ + rinserNames.add(name); + } sterilizerNames.add(name); } } catch (Exception e) { @@ -923,13 +937,41 @@ DatabaseUtil.closeResultSetAndStatement(rs); } } + boolean enableBioreaderInterface = ConfigUtils.getSystemSetConfigByNameBool("enableBioreaderInterface"); + Set bioReaderNames = new HashSet(); + if(enableBioreaderInterface){ + List bioReaderIds = this.getApplicableEquipmentId(def, ApplicableEquipment.TYPE_BIOREADER); + if(CollectionUtils.isNotEmpty(bioReaderIds)){ + StringBuffer sqlBuffer = new StringBuffer(); + sqlBuffer.append("select b.name, b.isUse from "); + sqlBuffer.append(Bioreader.class.getSimpleName()); + sqlBuffer.append(" b where "); + sqlBuffer.append(SqlUtils.getNonStringFieldInLargeCollectionsPredicate("b.id", bioReaderIds)); + ResultSet rs = null; + try { + rs = objectDao.executeSql(sqlBuffer.toString()); + while(rs.next()){ + String name = rs.getString("name"); + int isUse = rs.getInt("isUse"); + if(isUse == 1){ + bioReaderNames.add(name); + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + } runningEquipment.addAll(rinserNames); runningEquipment.addAll(sterilizerNames); + runningEquipment.addAll(bioReaderNames); return runningEquipment; } /** - * 查询设备巡检定义正在运行中的适用设备 + * 查询设备巡检定义正在运行中的适用设备(只查询清洗机和灭菌炉,生物阅读器的运行状态需要从第三方系统获取,暂不支持查询) * @param def * @return */ @@ -939,7 +981,7 @@ Set rinserNameSet = new HashSet(); if(CollectionUtils.isNotEmpty(rinserIdList)){ StringBuffer sqlBuffer = new StringBuffer(); - sqlBuffer.append("select r.name from "); + sqlBuffer.append("select r.name, r.useStatus from "); sqlBuffer.append(WashAndDisinfectRecord.class.getSimpleName()); sqlBuffer.append(" po join "); sqlBuffer.append(Rinser.class.getSimpleName()); @@ -952,7 +994,10 @@ rs = objectDao.executeSql(sqlBuffer.toString()); while(rs.next()){ String name = rs.getString("name"); - rinserNameSet.add(name); + String useStatus = rs.getString("useStatus"); + if(StringUtils.isBlank(useStatus) || StringUtils.equals(useStatus, Sterilizer.USESTATUS_IN_USE)){ + rinserNameSet.add(name); + } } } catch (Exception e) { e.printStackTrace(); @@ -964,7 +1009,7 @@ Set sterilizerNameSet = new HashSet(); if(CollectionUtils.isNotEmpty(sterilizerIdList)){ StringBuffer sqlBuffer = new StringBuffer(); - sqlBuffer.append("select s.name from "); + sqlBuffer.append("select s.name, s.useStatus from "); sqlBuffer.append(SterilizationRecord.class.getSimpleName()); sqlBuffer.append(" po join "); sqlBuffer.append(Sterilizer.class.getSimpleName()); @@ -980,7 +1025,10 @@ rs = objectDao.executeSql(sqlBuffer.toString()); while(rs.next()){ String name = rs.getString("name"); - sterilizerNameSet.add(name); + String useStatus = rs.getString("useStatus"); + if(StringUtils.isBlank(useStatus) || StringUtils.equals(useStatus, Sterilizer.USESTATUS_IN_USE)){ + sterilizerNameSet.add(name); + } } } catch (Exception e) { e.printStackTrace(); @@ -1211,4 +1259,52 @@ return data; } + @Override + public void timingRemind() { + try { + logger.debug("timingRemind开始时间:" + DateTools.getCurrentDayByFormat(DateTools.COMMON_DATE_HMS)); + timingRemind_internal(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + logger.debug("timingRemind结束时间:" + DateTools.getCurrentDayByFormat(DateTools.COMMON_DATE_HMS)); + } + } + + /** + * 设备巡检提醒功能 + */ + private void timingRemind_internal() { + Map> userNameRemindEquipmentMap = this.equipmentInspectionRemind(); + if(MapUtils.isEmpty(userNameRemindEquipmentMap)){ + return; + } + Map> messageUserNameMap = new HashMap>(); + for (Entry> entry : userNameRemindEquipmentMap.entrySet()) { + String userName = entry.getKey(); + List equipmentWarningMsgList = entry.getValue(); + if(StringUtils.isNotBlank(userName) && CollectionUtils.isNotEmpty(equipmentWarningMsgList)){ + for (String msg : equipmentWarningMsgList) { + List userNameList = messageUserNameMap.get(msg); + if(userNameList == null){ + userNameList = new ArrayList(); + } + if(!userNameList.contains(userName)){ + userNameList.add(userName); + } + messageUserNameMap.put(msg, userNameList); + } + } + } + if(MapUtils.isEmpty(messageUserNameMap)){ + return; + } + for (Entry> entry : messageUserNameMap.entrySet()) { + String remindMessage = entry.getKey(); + List userNameList = entry.getValue(); + Map> userNameToNoticeTypeListMap = new HashMap>(); + pushRecordManager.save(EquipmentInspectionInstance.class.getSimpleName(), null, userNameList, remindMessage, userNameToNoticeTypeListMap ); + } + } + } Index: ssts-web/src/test/java/test/forgon/disinfectsystem/AllTests.java =================================================================== diff -u -r40973 -r41041 --- ssts-web/src/test/java/test/forgon/disinfectsystem/AllTests.java (.../AllTests.java) (revision 40973) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/AllTests.java (.../AllTests.java) (revision 41041) @@ -52,7 +52,8 @@ test.forgon.disinfectsystem.application.AllTests.class, test.forgon.disinfectsystem.signrecord.AllTests.class, - test.forgon.disinfectsystem.qualitymonitoring.AllTests.class + test.forgon.disinfectsystem.qualitymonitoring.AllTests.class, + test.forgon.disinfectsystem.equipmentinspection.AllTests.class }) public class AllTests { Index: ssts-web/src/main/java/com/forgon/disinfectsystem/equipmentinspection/definition/service/EquipmentInspectionDefManager.java =================================================================== diff -u -r38091 -r41041 --- ssts-web/src/main/java/com/forgon/disinfectsystem/equipmentinspection/definition/service/EquipmentInspectionDefManager.java (.../EquipmentInspectionDefManager.java) (revision 38091) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/equipmentinspection/definition/service/EquipmentInspectionDefManager.java (.../EquipmentInspectionDefManager.java) (revision 41041) @@ -83,4 +83,9 @@ * @return */ public JSONArray loadEquipmentInspectionDefDeviceInfo(); + + /** + * 定时推送设备巡检提示信息 + */ + public void timingRemind(); }