Index: ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/action/SystemWarningAction.java =================================================================== diff -u -r32178 -r32182 --- ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/action/SystemWarningAction.java (.../SystemWarningAction.java) (revision 32178) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/action/SystemWarningAction.java (.../SystemWarningAction.java) (revision 32182) @@ -355,10 +355,12 @@ try { //告警类型 String orgUnitCode = StrutsParamUtils.getPraramValue("orgUnitCode", null); + //使用记录类型(科室使用记录,值为1/病人使用记录) + String dataType = StrutsParamUtils.getPraramValue("dataType", null); if(StringUtils.isBlank(orgUnitCode)){ orgUnitCode = AcegiHelper.getCurrentOrgUnitCode(); } - String message = systemWarningManager.getUnRecycleUseRecordAlarmWarning(orgUnitCode); + String message = systemWarningManager.getUnRecycleUseRecordAlarmWarning(orgUnitCode, dataType); StrutsResponseUtils.output(true, message); } catch (Exception e) { e.printStackTrace(); Index: ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManager.java =================================================================== diff -u -r32178 -r32182 --- ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManager.java (.../SystemWarningManager.java) (revision 32178) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManager.java (.../SystemWarningManager.java) (revision 32182) @@ -36,6 +36,6 @@ * @param orgUnitCode * @return */ - public String getUnRecycleUseRecordAlarmWarning(String orgUnitCode); + public String getUnRecycleUseRecordAlarmWarning(String orgUnitCode, String dataType); } Index: ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java =================================================================== diff -u -r32178 -r32182 --- ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java (.../SystemWarningManagerImpl.java) (revision 32178) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/systemwarning/service/SystemWarningManagerImpl.java (.../SystemWarningManagerImpl.java) (revision 32182) @@ -1159,13 +1159,13 @@ } @Override - public String getUnRecycleUseRecordAlarmWarning(String orgUnitCode) { + public String getUnRecycleUseRecordAlarmWarning(String orgUnitCode, String dataType) { String message = ""; OrgUnit currentOrgUnit = (OrgUnit) objectDao.getByProperty(OrgUnit.class.getSimpleName(), "orgUnitCoding", orgUnitCode); //待回收使用记录超时提醒 if(currentOrgUnit != null && currentOrgUnit.isUseToRecycleWarnOrgUnit()){ - SystemWarningItemVO waiteRecycleWarningVO = getWaiteRecycleUseRecordWarningVO(currentOrgUnit); + SystemWarningItemVO waiteRecycleWarningVO = getWaiteRecycleUseRecordWarningVO(currentOrgUnit, dataType); if(waiteRecycleWarningVO != null){ message = "有" + waiteRecycleWarningVO.getWarningAmount() + "条超时未生成申请单的使用记录,请及时处理红色标注的使用记录。"; } @@ -1179,7 +1179,7 @@ * @param currentOrgUnit * @return */ - private SystemWarningItemVO getWaiteRecycleUseRecordWarningVO(OrgUnit currentOrgUnit) { + private SystemWarningItemVO getWaiteRecycleUseRecordWarningVO(OrgUnit currentOrgUnit, String dataType) { Date warningDate = new Date(); if(currentOrgUnit == null){ return null; @@ -1191,17 +1191,77 @@ if((hour == 0 && minute == 0) || showMessageBox == 0){ return null; } - String departSql = " "; - if(!supplyRoomConfigManager.isFirstSupplyRoomOrgUnit(currentOrgUnit.getOrgUnitCoding())){ - departSql = " and po.departCoding = '" + currentOrgUnit.getOrgUnitCoding() + "' "; + + LoginUserData loginUser = AcegiHelper.getLoginUser(); + String sql = " "; + boolean firstSupplyRoom = supplyRoomConfigManager.isFirstSupplyRoomOrgUnit(currentOrgUnit.getOrgUnitCoding()); + //供应室用户查看所有临床科室使用记录 + if (firstSupplyRoom) { + //判断数据类型 + if(StringUtils.isNotBlank(dataType)){ + sql += " and po.dataType = " + dataType; + }else{ + sql += " and po.dataType is null "; + } + }else{//非供应室用户 没有权限的只能看到自己录入的使用记录(病人使用记录),有查看所有权限的只能看到本科室的所有使用记录(病人使用记录) + //判断数据类型 + if(StringUtils.isNotBlank(dataType)){ + sql += " and po.dataType = " + dataType; + //如果为科室使用记录 + if(StringUtils.equals(dataType, UseRecord.DATATYPE_DEPARTMENT.toString())){ + //1.当前登录用户是否拥有查看所有科室使用记录(科室使用记录)的权限-如为true则可以查看所有科室使用记录 + boolean seeAllDepart = operationManager.isCurrentUserHaveAnyOperation("SSTS_DepartmentUseRecord_SeeAllDepart"); + if(!seeAllDepart){ + //2.当前登录用户是否拥有查看所属科室全部使用记录(病人使用记录)的权限-如为true则可以查看所属科室全部使用记录 + boolean seeAll = operationManager.isCurrentUserHaveAnyOperation("SSTS_DepartmentUseRecord_SeeAll"); + if (!seeAll) { + //3.否则只能查本人录入的使用记录 + sql += " and (po.operator = '" + loginUser.getUserFullName() + "'"; + }else{ + sql += " and (po.departCoding = '" + loginUser.getCurrentOrgUnitCode() + "'"; + } + //如果是高值耗材处理科室的用户,则可以查看所有有录入高值耗材(新)的使用记录 + SupplyRoomConfig expensiveGoodsHandleSupplyRoomConfig = + supplyRoomConfigManager.getExpensiveGoodsHandleDepartment(); + if(expensiveGoodsHandleSupplyRoomConfig != null + && StringUtils.equals(loginUser.getCurrentOrgUnitCode(), expensiveGoodsHandleSupplyRoomConfig.getOrgUnitCoding())){ + sql += " or id in (select useRecord.id from "+ ExpensiveGoodsInstance.class.getSimpleName() +" where useRecord is not null)"; + } + sql += ")"; + } + } + }else{ + sql += " and po.dataType is null "; + //1.当前登录用户是否拥有查看所有科室使用记录(病人使用记录)的权限-如为true则可以查看所有科室使用记录 + boolean seeAllDepart = operationManager.isCurrentUserHaveAnyOperation("SSTS_UseRecord_SeeAllDepart"); + if(!seeAllDepart){ + //2.当前登录用户是否拥有查看所属科室全部使用记录(病人使用记录)的权限-如为true则可以查看所属科室全部使用记录 + boolean seeAll = operationManager.isCurrentUserHaveAnyOperation("SSTS_UseRecord_SeeAll"); + if (!seeAll) { + //3.否则只能查本人录入的使用记录 + sql += " and (po.operator = '" + loginUser.getUserFullName() + "'"; + }else{ + sql += " and (po.departCoding = '" + loginUser.getCurrentOrgUnitCode() + "'"; + } + //如果是高值耗材处理科室的用户,则可以查看所有有录入高值耗材(新)的使用记录 + SupplyRoomConfig expensiveGoodsHandleSupplyRoomConfig = + supplyRoomConfigManager.getExpensiveGoodsHandleDepartment(); + if(expensiveGoodsHandleSupplyRoomConfig != null + && StringUtils.equals(loginUser.getCurrentOrgUnitCode(), expensiveGoodsHandleSupplyRoomConfig.getOrgUnitCoding())){ + sql += " or id in (select useRecord.id from "+ ExpensiveGoodsInstance.class.getSimpleName() +" where useRecord is not null)"; + } + sql += ")"; + } + } } + long time = System.currentTimeMillis(); time -= hour*60*60*1000l + minute*60*1000l; warningDate.setTime(time); String timeSql = dateQueryAdapter.dateAdapter(warningDate); String countSql = String.format("select count(*) from %s po where po.status in ('%s','%s') %s and po.enteringDate <= %s ", UseRecord.class.getSimpleName(), UseRecord.STATUS_UNAUDITED, UseRecord.STATUS_AUDITED, - departSql, timeSql); + sql, timeSql); int amount = objectDao.countBySql(countSql); if(amount == 0){ return null;