Index: forgon-core/src/main/java/com/forgon/security/dao/OperationDefineDaoImpl.java =================================================================== diff -u -r12331 -r27061 --- forgon-core/src/main/java/com/forgon/security/dao/OperationDefineDaoImpl.java (.../OperationDefineDaoImpl.java) (revision 12331) +++ forgon-core/src/main/java/com/forgon/security/dao/OperationDefineDaoImpl.java (.../OperationDefineDaoImpl.java) (revision 27061) @@ -1,6 +1,16 @@ package com.forgon.security.dao; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; + +import com.forgon.security.bean.ModelNameBean; +import com.forgon.security.bean.OperationBean; import com.forgon.security.bean.OperationDefineBean; +import com.forgon.security.bean.SystemNameBean; +import com.forgon.security.tools.CssdUtils2; import com.forgon.tools.xml.DigesterXMLTools; /** @@ -11,7 +21,7 @@ public class OperationDefineDaoImpl extends DigesterXMLTools implements OperationDefineDao { - private static OperationDefineBean operationDefineBean; + private OperationDefineBean operationDefineBean; protected String getDigesteRulesXmlPath() { return "digester-rules_operationDefine.xml"; @@ -22,10 +32,76 @@ } public OperationDefineBean getOperationDefineBeanFromXml() { - if (operationDefineBean == null) { - operationDefineBean = (OperationDefineBean) getXMLBean(); + //从xml解析到 + OperationDefineBean operationDefineBeanFromXml = + (OperationDefineBean) getXMLBean(); + //if(true){return operationDefineBeanFromXml;} + + operationDefineBean = new OperationDefineBean(); + //按对应config.js的配置项配置过滤掉未开启的权限 + List systemNameBeanList = operationDefineBeanFromXml.getSystemNameBeanList(); + if(CollectionUtils.isNotEmpty(systemNameBeanList)){ + String mappingConfigPropertyName = null; + String configValue = null; + List newSystemNameBeanList = null; + for (SystemNameBean systemNameBean : systemNameBeanList) { + SystemNameBean newSystemNameBean = null; + List modelNameBeanList = systemNameBean.getModelNameBeanList(); + if(CollectionUtils.isNotEmpty(modelNameBeanList)){ + List newModelNameBeanList = null; + for (ModelNameBean modelNameBean : modelNameBeanList) { + mappingConfigPropertyName = modelNameBean.getMappingConfigPropertyName(); + if(StringUtils.isNotBlank(mappingConfigPropertyName)){ + configValue = CssdUtils2.getSystemSetConfigByName(mappingConfigPropertyName); + } + //配置的值不为空且不为false时才会在权限分配页面显示 + if(StringUtils.isBlank(mappingConfigPropertyName) + || (StringUtils.isNotBlank(configValue) && !StringUtils.equalsIgnoreCase("false", configValue))){ + List operationBeanList = modelNameBean.getOperationBeanList(); + if(CollectionUtils.isNotEmpty(operationBeanList)){ + List newOperationBeanList = null; + for (OperationBean operationBean : operationBeanList) { + mappingConfigPropertyName = operationBean.getMappingConfigPropertyName(); + if(StringUtils.isNotBlank(mappingConfigPropertyName)){ + configValue = CssdUtils2.getSystemSetConfigByName(mappingConfigPropertyName); + } + //配置的值不为空且不为false时才会在权限分配页面显示 + if(StringUtils.isBlank(mappingConfigPropertyName) + || (StringUtils.isNotBlank(configValue) && !StringUtils.equalsIgnoreCase("false", configValue))){ + OperationBean newOperationBean = new OperationBean(); + newOperationBean.setOperationId(operationBean.getOperationId()); + newOperationBean.setOperationName(operationBean.getOperationName()); + if(newOperationBeanList == null){ + newOperationBeanList = new ArrayList(); + } + newOperationBeanList.add(newOperationBean); + } + } + if(CollectionUtils.isNotEmpty(newOperationBeanList)){ + ModelNameBean newModelNameBean = new ModelNameBean(); + newModelNameBean.setModleName(modelNameBean.getModleName()); + newModelNameBean.setOperationBeanList(newOperationBeanList); + if(newModelNameBeanList == null){ + newModelNameBeanList = new ArrayList(); + } + newModelNameBeanList.add(newModelNameBean); + } + } + } + } + if(CollectionUtils.isNotEmpty(newModelNameBeanList)){ + newSystemNameBean = new SystemNameBean(); + newSystemNameBean.setModelNameBeanList(newModelNameBeanList); + if(newSystemNameBeanList == null){ + newSystemNameBeanList = new ArrayList(); + } + newSystemNameBeanList.add(newSystemNameBean); + } + } + } + operationDefineBean.setSystemNameBeanList(newSystemNameBeanList); } - + //屏蔽了未启用的配置项相关的权限 return operationDefineBean; } } Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/dwr/table/UseRecordTableManager.java =================================================================== diff -u -r25325 -r27061 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/dwr/table/UseRecordTableManager.java (.../UseRecordTableManager.java) (revision 25325) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/dwr/table/UseRecordTableManager.java (.../UseRecordTableManager.java) (revision 27061) @@ -67,20 +67,26 @@ //非供应室用户 没有权限的只能看到自己录入的使用记录,有查看所有权限的只能看到本科室的所有使用记录 }else{ - boolean seeAll = operationManager.isCurrentUserHaveAnyOperation("SSTS_UseRecord_SeeAll"); - if (!seeAll) { - sql += " and (po.operator = '" + loginUser.getUserFullName() + "'"; - }else{ - sql += " and (po.departCoding = '" + loginUser.getCurrentOrgUnitCode() + "'"; + //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 += ")"; } - //如果是高值耗材处理科室的用户,则可以查看所有有录入高值耗材(新)的使用记录 - 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 += ")"; } //按科室过滤 Index: forgon-core/src/main/java/com/forgon/security/bean/OperationDefineBean.java =================================================================== diff -u -r12331 -r27061 --- forgon-core/src/main/java/com/forgon/security/bean/OperationDefineBean.java (.../OperationDefineBean.java) (revision 12331) +++ forgon-core/src/main/java/com/forgon/security/bean/OperationDefineBean.java (.../OperationDefineBean.java) (revision 27061) @@ -19,5 +19,9 @@ public void addSystemNameBeanList(SystemNameBean po) { this.systemNameBeanList.add(po); } - + + public void setSystemNameBeanList(List systemNameBeanList) { + this.systemNameBeanList = systemNameBeanList; + } + } Index: ssts-web/src/main/resources/systemset/operationDefine.xml =================================================================== diff -u -r27006 -r27061 --- ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 27006) +++ ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 27061) @@ -28,7 +28,7 @@ - + @@ -40,27 +40,27 @@ - + - + - + - + @@ -160,6 +160,7 @@ + Index: forgon-core/src/main/java/com/forgon/security/bean/SystemNameBean.java =================================================================== diff -u -r12331 -r27061 --- forgon-core/src/main/java/com/forgon/security/bean/SystemNameBean.java (.../SystemNameBean.java) (revision 12331) +++ forgon-core/src/main/java/com/forgon/security/bean/SystemNameBean.java (.../SystemNameBean.java) (revision 27061) @@ -29,5 +29,9 @@ public void addModelNameBeanList(ModelNameBean po) { this.modelNameBeanList.add(po); } + + public void setModelNameBeanList(List modelNameBeanList) { + this.modelNameBeanList = modelNameBeanList; + } } Index: forgon-core/src/main/java/com/forgon/security/bean/OperationBean.java =================================================================== diff -u -r12331 -r27061 --- forgon-core/src/main/java/com/forgon/security/bean/OperationBean.java (.../OperationBean.java) (revision 12331) +++ forgon-core/src/main/java/com/forgon/security/bean/OperationBean.java (.../OperationBean.java) (revision 27061) @@ -11,6 +11,11 @@ private String operationName; + /** + * 对应配置项的名称(用于对应config.js的配置项的名称,如果配置项未配置或值不为true则权限分配页面不显示该权限) + */ + private String mappingConfigPropertyName; + public String getOperationId() { return operationId; } @@ -27,4 +32,12 @@ this.operationName = operationName; } + public String getMappingConfigPropertyName() { + return mappingConfigPropertyName; + } + + public void setMappingConfigPropertyName(String mappingConfigPropertyName) { + this.mappingConfigPropertyName = mappingConfigPropertyName; + } + } Index: forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java =================================================================== diff -u -r12331 -r27061 --- forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java (.../ModelNameBean.java) (revision 12331) +++ forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java (.../ModelNameBean.java) (revision 27061) @@ -11,7 +11,12 @@ public class ModelNameBean { private String modleName; - + + /** + * 对应配置项的名称(用于对应config.js的配置项的名称,如果配置项未配置或值不为true则权限分配页面不显示该权限) + */ + private String mappingConfigPropertyName; + private List operationBeanList = new ArrayList(); public String getModleName() { @@ -34,4 +39,12 @@ this.operationBeanList = operationBeanList; } + public String getMappingConfigPropertyName() { + return mappingConfigPropertyName; + } + + public void setMappingConfigPropertyName(String mappingConfigPropertyName) { + this.mappingConfigPropertyName = mappingConfigPropertyName; + } + }