Index: ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/action/SystemWarningAction.java =================================================================== diff -u -r21812 -r23458 --- ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/action/SystemWarningAction.java (.../SystemWarningAction.java) (revision 21812) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/action/SystemWarningAction.java (.../SystemWarningAction.java) (revision 23458) @@ -1,6 +1,7 @@ package com.forgon.disinfectsystem.systemwarning.action; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -79,18 +80,21 @@ this.objectDao = objectDao; } + /** + * 加载告警数据 + * request传参为:warningTypes 值为具体的告警类形,多个值之间采用分号分隔 + */ public void getSystemWarning(){ - - StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); - - String jsonStr = systemWarningManager.getSystemWarningJsonStr(); - - try { - StrutsParamUtils.getResponse().getWriter().println(jsonStr); - } catch (IOException e) { - e.printStackTrace(); + //告警类型 + String warningTypes = StrutsParamUtils.getPraramValue("warningTypes", null); + List warningTypeList = null; + if(StringUtils.isNotBlank(warningTypes)){ + warningTypeList = new ArrayList(); + String[] warningTypeArray = warningTypes.split(";"); + warningTypeList = Arrays.asList(warningTypeArray); } - + String jsonStr = systemWarningManager.getSystemWarningJsonStr(warningTypeList); + StrutsResponseUtils.output(jsonStr); } /** Index: ssts-web/src/main/webapp/expensivegoodshomepage/portalPage.js =================================================================== diff -u -r23307 -r23458 --- ssts-web/src/main/webapp/expensivegoodshomepage/portalPage.js (.../portalPage.js) (revision 23307) +++ ssts-web/src/main/webapp/expensivegoodshomepage/portalPage.js (.../portalPage.js) (revision 23458) @@ -79,7 +79,11 @@ //如果数量为0时则移除掉提醒数字 if(document.getElementById(tipId)){ var imgElements = document.getElementById(tipId).getElementsByTagName("img"); - document.getElementById(tipId).remove(imgElements); + //谷歌兼容但不兼容ie,所以先注释掉 + //document.getElementById(tipId).remove(imgElements); + if(imgElements && imgElements.length > 0){ + imgElements[0].parentNode.removeChild(imgElements[0]); + } } } } @@ -128,7 +132,7 @@ });//console.log('time9=' + new Date().format('y-m-d H:i:s') + '.' + new Date().getMilliseconds()); //系统告警 - //initShowSystemWarningWin();//console.log('time10=' + new Date().format('y-m-d H:i:s') + '.' + new Date().getMilliseconds()); + initShowSystemWarningWin();//console.log('time10=' + new Date().format('y-m-d H:i:s') + '.' + new Date().getMilliseconds()); windowOnLoaded = true;//console.log('time20=' + new Date().format('y-m-d H:i:s') + '.' + new Date().getMilliseconds()); @@ -204,9 +208,7 @@ //$("#systemWarningTip").css("top", getepoint(systemWarningObj).y -4); } } -function showProblemReportWin(){ - -} + function createMenu(){ var menuArr = DisinfectsystemTreeData; if(typeof(menuArr)=='undefined'|| menuArr.length < 1)return ''; @@ -448,10 +450,10 @@ if (notInWhiteList2(itemId)) { return returnContent; } - //只显示高值耗材的几个图标和高级视图 + //只显示高值耗材的几个图标和高级视图(因为需要登录时提示有关的告警信息,所以系统告警图标也需要显示) if(itemId == 'expensiveGoodsApplication' || itemId == 'expensiveGodownEntryPurchase' || itemId == 'expensiveGodownEntryPrepareIn' || itemId == 'expensiveInvoicePlan' || itemId == 'expensiveInvoice' || itemId == 'expensiveBill' || itemId == 'expensiveStockTake' - || itemId == 'useRecord' || itemId == 'myUnFinishedTask' || itemId == 'myFinishedTask' || itemId == 'expensiveEnterpriseView'){ + || itemId == 'useRecord' || itemId == 'myUnFinishedTask' || itemId == 'myFinishedTask' || itemId == 'expensiveEnterpriseView' || itemId == 'systemWarning'){ returnContent += '
  • '; returnContent += '

    '; returnContent += ''+item['title']+'
  • '; @@ -881,6 +883,7 @@ async: true, dataType:"json", url: WWWROOT+"/system/systemWarningAction!getSystemWarning.do", + params : {warningTypes : allExpensiveGoodsWarningTypes.join(";")}, success: function(response) { var result = Ext4.decode(response.responseText); if(result.success && result.data && result.data.length > 0){ Index: ssts-web/src/main/webapp/expensivegoodshomepage/portalPage.jsp =================================================================== diff -u -r23300 -r23458 --- ssts-web/src/main/webapp/expensivegoodshomepage/portalPage.jsp (.../portalPage.jsp) (revision 23300) +++ ssts-web/src/main/webapp/expensivegoodshomepage/portalPage.jsp (.../portalPage.jsp) (revision 23458) @@ -182,16 +182,38 @@ var currentDate = ''; var recall = '<%=SystemWarningItemVO.WARNING_TYPE_RECALLRECORD%>'; var disabledGoods = '<%=SystemWarningItemVO.WARNING_TYPE_DISABLED_DIPOSABLEGOODS%>'; +//一次性物品告警 var diposableGoods = '<%=SystemWarningItemVO.WARNING_TYPE_DIPOSABLEGOODS%>'; +//器械包告警 var warningTousseGoods = '<%=SystemWarningItemVO.WARNING_TYPE_TOUSSE%>'; -var warningMaterialGoods = '<%=SystemWarningItemVO.WARNING_TYPE_MATERIAL_MIN_STOCK%>' +//材料最小库存预警 +var warningMaterialGoods = '<%=SystemWarningItemVO.WARNING_TYPE_MATERIAL_MIN_STOCK%>'; +//清洗机灭菌炉接口连接异常提示 +var warningTypeDeviceInterface = '<%=SystemWarningItemVO.WARNING_TYPE_DEVICE_INTERFACE%>'; +//已过期的器械包物品 var disabledTousseGoods = '<%=SystemWarningItemVO.WARNING_TYPE_DISABLED_TOUSSE%>'; +//待召回物品 +var warningTypeRecallRecord = '<%=SystemWarningItemVO.WARNING_TYPE_RECALLRECORD%>'; +//满意度调查 var satisfactionSurveyNotice = '<%=SystemWarningItemVO.NOTICE_TYPE_SATISFACTIONSURVEY_TABLE%>'; -var warningCertification = '<%=SystemWarningItemVO.WARNING_TYPE_REGISTRATIONCERTIFICATION%>'; +//即将过期注册证信息提示 +var warningCertification = '<%=SystemWarningItemVO.WARNING_TYPE_REGISTRATIONCERTIFICATION %>'; +//已过期的供应商注册证 var disabledCertification = '<%=SystemWarningItemVO.WARNING_TYPE_DISABLED_REGISTRATIONCERTIFICATION%>'; +//高值耗材库存最小提示 var warningExpensiveGoods = '<%=SystemWarningItemVO.WARNING_TYPE_EXPENSIVEGOODS_MIN_STOCK%>'; +//高值耗材库存最大提示 var warningMaxExpensiveGoods = '<%=SystemWarningItemVO.WARNING_TYPE_EXPENSIVEGOODS_MAX_STOCK%>'; +//超过发票预警天数的可结算高值耗材实例票提示 var warningExpensiveGoodsBill = '<%=SystemWarningItemVO.WARNING_TYPE_EXPENSIVEGOODSINSTANCE_BILL%>'; + +//所有高值耗材有关的告警 +var allExpensiveGoodsWarningTypes = []; +allExpensiveGoodsWarningTypes.push(warningCertification); +allExpensiveGoodsWarningTypes.push(warningExpensiveGoods); +allExpensiveGoodsWarningTypes.push(warningMaxExpensiveGoods); +allExpensiveGoodsWarningTypes.push(warningExpensiveGoodsBill); + var directOrgUnitCodesWhereUserBelong = '<%=directOrgUnitCodesWhereUserBelong%>'; var directOrgUnitNamesWhereUserBelong = '<%=userData.getDirectOrgUnitNamesWhereUserBelong()%>'; var dirOrgCode = '<%=request.getAttribute("departCoding")%>'; Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/systemwarning/SystemWarningItemVO.java =================================================================== diff -u -r22280 -r23458 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/systemwarning/SystemWarningItemVO.java (.../SystemWarningItemVO.java) (revision 22280) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/systemwarning/SystemWarningItemVO.java (.../SystemWarningItemVO.java) (revision 23458) @@ -14,6 +14,7 @@ public static final String WARNING_TYPE_MATERIAL_MIN_STOCK = "小于最小库存材料"; public static final String WARNING_TYPE_RECALLRECORD = "待召回物品"; public static final String NOTICE_TYPE_SATISFACTIONSURVEY_TABLE = "满意度调查"; + public static final String WARNING_TYPE_DEVICE_INTERFACE = "清洗机灭菌炉接口异常"; public static final String WARNING_TYPE_REGISTRATIONCERTIFICATION = "即将过期的供应商注册证"; public static final String WARNING_TYPE_DISABLED_REGISTRATIONCERTIFICATION = "已过期的供应商注册证"; public static final String WARNING_TYPE_EXPENSIVEGOODS_MIN_STOCK = "小于最小高值耗材库存"; Index: ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java =================================================================== diff -u -r22385 -r23458 --- ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java (.../SystemWarningManagerImpl.java) (revision 22385) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java (.../SystemWarningManagerImpl.java) (revision 23458) @@ -12,6 +12,8 @@ import java.util.Map; import java.util.Set; +import org.apache.commons.collections4.CollectionUtils; + import net.sf.json.JSONObject; import com.forgon.databaseadapter.service.DateQueryAdapter; @@ -39,6 +41,7 @@ import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.util.SqlUtils; + import freemarker.template.utility.DateUtil; /** @@ -234,7 +237,12 @@ return goodsAmount; } - private List getSystemWarningItems() { + /** + * 根据告警类型集合加载告警数据 + * @param warningTypeList 告警类型集合,为空时加载所有 + * @return + */ + private List getSystemWarningItems(List warningTypeList) { List warningList = new ArrayList(); // 权限过滤 String userOperationIds = operationManager @@ -245,10 +253,12 @@ String orgUnitCoding = AcegiHelper.getLoginUser() .getOrgUnitCodingFromSupplyRoomConfig(); int roomType = supplyRoomConfigManager.getSupplyRoomTypeByOrgUnitCoding(orgUnitCoding); - //获取高值耗材供应室类型 - int expensivegoodsRoomType = supplyRoomConfigManager.getExpensivegoodsRoomTypeByOrgUnitCoding(orgUnitCoding); - - if (diposablegoodsQuery) { + + //1.一次性物品告警(含即将过期与已过期) + if (diposablegoodsQuery + && (CollectionUtils.isEmpty(warningTypeList) + || CollectionUtils.isNotEmpty(warningTypeList) + && warningTypeList.contains(SystemWarningItemVO.WARNING_TYPE_DIPOSABLEGOODS))){ // 即将过期的一次性物品 int diposableGoodsAmount = getWarningDiposableGoods(roomType); if (diposableGoodsAmount > 0) { @@ -267,9 +277,13 @@ } } + //2.器械包告警(含即将过期与已过期) boolean toussegoodsQuery = operationManager.isUserHasOperation( SSTS_SYSTEMWARNING_TOUSSEGOODS, userOperationIds); - if (toussegoodsQuery) { + if (toussegoodsQuery + && (CollectionUtils.isEmpty(warningTypeList) + || CollectionUtils.isNotEmpty(warningTypeList) + && warningTypeList.contains(SystemWarningItemVO.WARNING_TYPE_TOUSSE))){ // 即将过期的器械包物品 String warningSql = getWarningTousseGoodsSQL(roomType, orgUnitCoding); @@ -311,10 +325,13 @@ } } - // 召回信息提示 + // 3.召回信息提示 boolean recallRecordQuery = operationManager.isUserHasOperation( SSTS_SYSTEMWARNING_RECALLRECORD, userOperationIds); - if (recallRecordQuery) { + if (recallRecordQuery + && (CollectionUtils.isEmpty(warningTypeList) + || CollectionUtils.isNotEmpty(warningTypeList) + && warningTypeList.contains(SystemWarningItemVO.WARNING_TYPE_RECALLRECORD))){ int recallRecordAmount = getRecallRecord(roomType, orgUnitCoding); if (recallRecordAmount > 0) { SystemWarningItemVO vo = new SystemWarningItemVO(); @@ -324,9 +341,12 @@ } } - //材料最小库存预警 + //4.材料最小库存预警 boolean hasThisOperation = operationManager.isUserHasOperation(SSTS_SYSTEMWARNING_MATERIAL_MIN_STOCK, userOperationIds); - if(hasThisOperation){ + if(hasThisOperation + && (CollectionUtils.isEmpty(warningTypeList) + || CollectionUtils.isNotEmpty(warningTypeList) + && warningTypeList.contains(SystemWarningItemVO.WARNING_TYPE_MATERIAL_MIN_STOCK))){ //材料最小库存预警 int materialGoodsAmount = getWarningMaterialGoods(orgUnitCoding); if (materialGoodsAmount > 0) { @@ -336,10 +356,13 @@ warningList.add(vo); } } - // 清洗机灭菌炉接口连接异常提示 + + // 5.清洗机灭菌炉接口连接异常提示 boolean isSupplyRoomUser = supplyRoomConfigManager.isSupplyRoomUser(AcegiHelper.getLoginUser()); - if(isSupplyRoomUser) - { + if(isSupplyRoomUser + && (CollectionUtils.isEmpty(warningTypeList) + || CollectionUtils.isNotEmpty(warningTypeList) + && warningTypeList.contains(SystemWarningItemVO.WARNING_TYPE_DEVICE_INTERFACE))){ Date lastData = appLogManager.getLastDateByOpetType("设备接口异常"); Date now = new Date(); if(lastData != null) @@ -348,17 +371,22 @@ long mins = diff / (1000 * 60); if( mins <= 5){ SystemWarningItemVO vo = new SystemWarningItemVO(); - vo.setWarningItemType("清洗机灭菌炉接口异常"); + vo.setWarningItemType(SystemWarningItemVO.WARNING_TYPE_DEVICE_INTERFACE); vo.setWarningAmount(1); warningList.add(vo); } } } - - // 即将过期注册证信息提示 + + //获取高值耗材供应室类型 + int expensivegoodsRoomType = supplyRoomConfigManager.getExpensivegoodsRoomTypeByOrgUnitCoding(orgUnitCoding); + // 6.即将过期注册证信息提示 boolean certificationQuery = operationManager.isUserHasOperation( SSTS_SYSTEMWARNING_REGISTRATIONCERTIFICATION, userOperationIds); - if (certificationQuery) { + if (certificationQuery + && (CollectionUtils.isEmpty(warningTypeList) + || CollectionUtils.isNotEmpty(warningTypeList) + && warningTypeList.contains(SystemWarningItemVO.WARNING_TYPE_REGISTRATIONCERTIFICATION))){ int certificationAmount = getWarningCertifiCatioCount(expensivegoodsRoomType); int expiredCertificationAmount = getExpiredCertificationCount(expensivegoodsRoomType); if (certificationAmount > 0) { @@ -376,10 +404,13 @@ } } - // 高值耗材库存最小提示 + // 7.高值耗材库存最小提示 boolean expensiveGoodsQuery = operationManager.isUserHasOperation( SSTS_SYSTEMWARNING_REGISTRATIONCERTIFICATION, userOperationIds); - if (expensiveGoodsQuery) { + if (expensiveGoodsQuery + && (CollectionUtils.isEmpty(warningTypeList) + || CollectionUtils.isNotEmpty(warningTypeList) + && warningTypeList.contains(SystemWarningItemVO.WARNING_TYPE_EXPENSIVEGOODS_MIN_STOCK))){ int certificationAmount = getWarningExpensiveGoodsCount(expensivegoodsRoomType); if (certificationAmount > 0) { SystemWarningItemVO vo = new SystemWarningItemVO(); @@ -389,8 +420,11 @@ } } - // 高值耗材库存最大提示 - if (expensiveGoodsQuery) { + // 8.高值耗材库存最大提示 + if (expensiveGoodsQuery + && (CollectionUtils.isEmpty(warningTypeList) + || CollectionUtils.isNotEmpty(warningTypeList) + && warningTypeList.contains(SystemWarningItemVO.WARNING_TYPE_EXPENSIVEGOODS_MAX_STOCK))){ int certificationAmount = getWarningMaxExpensiveGoodsCount(expensivegoodsRoomType); if (certificationAmount > 0) { SystemWarningItemVO vo = new SystemWarningItemVO(); @@ -399,10 +433,14 @@ warningList.add(vo); } } - //超过发票预警天数的可结算高值耗材实例票提示 + + //9.超过发票预警天数的可结算高值耗材实例票提示 boolean expensiveGoodsBillQuery = operationManager.isUserHasOperation( SSTS_SYSTEMWARNING_EXPENSIVEGOODSBILL, userOperationIds); - if(expensiveGoodsBillQuery){ + if(expensiveGoodsBillQuery + && (CollectionUtils.isEmpty(warningTypeList) + || CollectionUtils.isNotEmpty(warningTypeList) + && warningTypeList.contains(SystemWarningItemVO.WARNING_TYPE_EXPENSIVEGOODSINSTANCE_BILL))){ int expensiveGoodsInstanceAmount = getWarningExpensiveGoodsInstance(expensivegoodsRoomType); if(expensiveGoodsInstanceAmount > 0){ SystemWarningItemVO vo = new SystemWarningItemVO(); @@ -416,7 +454,7 @@ @Override - public String getSystemWarningJsonStr(){ + public String getSystemWarningJsonStr(List warningTypeList){ String jsonStr = ""; @@ -433,7 +471,7 @@ boolean isPopWin = false;//是否需要弹窗 if(UserAttribute.SUGGESTIVE_TRUE.equals(isShowWarning) || isShowWarning == null){ isPopWin = true; - list = getSystemWarningItems();//new ArrayList(); + list = getSystemWarningItems(warningTypeList);//new ArrayList(); } Map map = new HashMap(); map.put("success", true); Index: ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManager.java =================================================================== diff -u -r12331 -r23458 --- ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManager.java (.../SystemWarningManager.java) (revision 12331) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManager.java (.../SystemWarningManager.java) (revision 23458) @@ -1,12 +1,19 @@ package com.forgon.disinfectsystem.systemwarning.service; +import java.util.List; + /** * @author wangyi * 2013-03-26 上午 09:51 */ public interface SystemWarningManager { - - public String getSystemWarningJsonStr(); + /** + * 根据告警类型集合加载告警数据 + * @param warningTypeList 告警类型集合,为空时加载所有 + * @return + */ + public String getSystemWarningJsonStr(List warningTypeList); + }