Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/departmentapplicationtemplate/DepartmentAppTemplate.java =================================================================== diff -u -r23492 -r28953 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/departmentapplicationtemplate/DepartmentAppTemplate.java (.../DepartmentAppTemplate.java) (revision 23492) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/departmentapplicationtemplate/DepartmentAppTemplate.java (.../DepartmentAppTemplate.java) (revision 28953) @@ -15,12 +15,16 @@ import javax.persistence.JoinColumn; import javax.persistence.Lob; import javax.persistence.OneToMany; +import javax.persistence.Transient; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.Cascade; +import org.springframework.transaction.annotation.Transactional; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.forgon.directory.model.OrgUnit; +import com.forgon.tools.hibernate.ObjectDao; /** * @author WangYi @@ -47,13 +51,26 @@ public static final String TEMPLATE_TYPE_DIPOSABLEGOODS = "一次性物品模板"; public static final String TEMPLATE_TYPE_TOUSSE1 = "治疗包模板"; public static final String TEMPLATE_TYPE_TOUSSE2 = "散件器械模板"; + /** + * “通用模板”类型,并且作为新建模板时的默认模板类型(GDSZYY-17) + */ + public final static String TEMPLATE_TYPE_COMBO = "通用模板"; /** * 序号 */ public Integer sequence; + /** + * 维护科室(GDSZYY-17 临床科室可维护并且只能维护自己科室的申领模板) + */ + public Long maintenanceDepartId; + /** + * 维护科室名称(GDSZYY-17 临床科室可维护并且只能维护自己科室的申领模板)不保存到数据库 + */ + public String maintenanceDepartName; + @JsonIgnore private List tousseDefinitionTemplateItems = new ArrayList(); @@ -144,4 +161,29 @@ this.sequence = sequence; } + public Long getMaintenanceDepartId() { + return maintenanceDepartId; + } + + public void setMaintenanceDepartId(Long maintenanceDepartId) { + this.maintenanceDepartId = maintenanceDepartId; + } + + @Transient + public String getMaintenanceDepartName() { + return maintenanceDepartName; + } + + public void setMaintenanceDepartName(String maintenanceDepartName) { + this.maintenanceDepartName = maintenanceDepartName; + } + + @Transient + public OrgUnit getMaintenanceDepart(ObjectDao objectDao){ + if(maintenanceDepartId == null){ + return null; + } + return (OrgUnit) objectDao.getById(OrgUnit.class.getSimpleName(), maintenanceDepartId); + } + } Index: ssts-web/src/main/resources/systemset/operationDefine.xml =================================================================== diff -u -r28918 -r28953 --- ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 28918) +++ ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 28953) @@ -627,6 +627,7 @@ + Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/departmentapplicationtemplate/dwr/table/DepartmentAppTemplateTableManager.java =================================================================== diff -u -r12331 -r28953 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/departmentapplicationtemplate/dwr/table/DepartmentAppTemplateTableManager.java (.../DepartmentAppTemplateTableManager.java) (revision 12331) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/departmentapplicationtemplate/dwr/table/DepartmentAppTemplateTableManager.java (.../DepartmentAppTemplateTableManager.java) (revision 28953) @@ -3,11 +3,26 @@ */ package com.forgon.disinfectsystem.departmentapplicationtemplate.dwr.table; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + import com.forgon.component.grid.GridManager; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.OrgUnit; +import com.forgon.directory.vo.LoginUserData; +import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.entity.basedatamanager.departmentapplicationtemplate.DepartmentAppTemplate; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.security.service.OperationManager; +import com.forgon.tools.hibernate.ObjectDao; /** * @author WangYi @@ -17,15 +32,101 @@ private GridManager gridManager; + private ObjectDao objectDao; + + private SupplyRoomConfigManager supplyRoomConfigManager; + + private OperationManager operationManager; + public void setGridManager(GridManager gridManager) { this.gridManager = gridManager; } + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + public void setSupplyRoomConfigManager(SupplyRoomConfigManager supplyRoomConfigManager) { + this.supplyRoomConfigManager = supplyRoomConfigManager; + } + + public void setOperationManager(OperationManager operationManager) { + this.operationManager = operationManager; + } + + @SuppressWarnings("unchecked") public String findAppTemplateTableList(Map> parameterMap) { String sql = "where 1=1 "; - return gridManager.renderGrid(parameterMap, DepartmentAppTemplate.class + String orgunitCode = AcegiHelper.getCurrentOrgUnitCode(); + SupplyRoomConfig config = supplyRoomConfigManager.getFirstSupplyRoomConfig(); + // 是否一级供应室 + boolean isSupplyRoom = false; + if (config != null && StringUtils.isNotBlank(config.getOrgUnitCoding())) { + if (orgunitCode.equals(config.getOrgUnitCoding())) { + isSupplyRoom = true; + } + } + // 如果用户拥有【管理所有科室申领模板】的权限,或者是一级供应室的用户,则列出系统中定义的所有模板。 + // 否则,只显示模板的【维护科室】与用户当前登录科室相同的模板。 + if(!isSupplyRoom && !operationManager.isCurrentUserHaveAnyOperation("SSTS_departMentApplication_ManageAll")){ + List orgUnitList = objectDao.findByProperty(OrgUnit.class.getSimpleName(), "orgUnitCoding", orgunitCode); + if(CollectionUtils.isNotEmpty(orgUnitList)){ + sql += " and po. maintenanceDepartId = " + orgUnitList.get(0).getId(); + } else { + sql += " and po. maintenanceDepartId is null "; + } + } + + String result = gridManager.renderGrid(parameterMap, DepartmentAppTemplate.class .getSimpleName(), sql, new String[] {"TousseDefinitionTemplateItems","DiposableGoodsTemplateItems"}); + result = updateReturnInfo(result); + return result; } + /** + * 根据维护科室ID,查询维护科室名称 + * @param result + * @return + */ + @SuppressWarnings("unchecked") + private String updateReturnInfo(String json) { + JSONObject jsonObject = JSONObject.fromObject(json); + if(jsonObject == null){ + return json; + } + JSONArray jsonArray = jsonObject.optJSONArray("rows"); + if (jsonArray == null || jsonArray.size() == 0) { + return json; + } + List orgUnitIdList = new ArrayList(); + for (int i=0;i matainOrgUnitList = objectDao.findByIds(OrgUnit.class.getSimpleName(), orgUnitIdList); + if(CollectionUtils.isEmpty(matainOrgUnitList)){ + return json; + } + Map idToOrgUnitMap = new HashMap(); + for (OrgUnit orgUnit : matainOrgUnitList) { + idToOrgUnitMap.put(orgUnit.getId(), orgUnit); + } + for (int i=0;i