Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/action/DepartmentGroupOptionAction.java =================================================================== diff -u -r25135 -r40431 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/action/DepartmentGroupOptionAction.java (.../DepartmentGroupOptionAction.java) (revision 25135) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/action/DepartmentGroupOptionAction.java (.../DepartmentGroupOptionAction.java) (revision 40431) @@ -13,6 +13,7 @@ import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; +import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.basedatamanager.departmentgroupOption.service.DepartmentGroupOptionManager; import com.forgon.disinfectsystem.entity.departmentGroupOption.DepartmentGroupOption; import com.forgon.tools.StrutsParamUtils; @@ -109,6 +110,11 @@ Map map = new HashMap(); map.put("success", true); if(departmentGroupOption != null){ + OrgUnit handlerDepart = departmentGroupOptionManager.getDepartmentGroupOptionHandlerDepart(departmentGroupOption); + if(handlerDepart != null){ + departmentGroupOption.setHandlerDepartCode(handlerDepart.getOrgUnitCoding()); + departmentGroupOption.setHandlerDepartName(handlerDepart.getName()); + } map.put("data", departmentGroupOption); } try { @@ -125,7 +131,8 @@ public void loadDepartmentGroupOptiopnDataByType(){ String type = StrutsParamUtils.getPraramValue("type", ""); try { - PageUtil.outPutResult(PageUtil.getPagePara(), departmentGroupOptionManager.loadDeptGroupByType(type)); + String handlerDepartCode = StrutsParamUtils.getPraramValue("handlerDepartCode", ""); + PageUtil.outPutResult(PageUtil.getPagePara(), departmentGroupOptionManager.loadDeptGroupByType(type, handlerDepartCode)); } catch (Exception e) { e.printStackTrace(); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/departmentGroupOption/DepartmentGroupOption.java =================================================================== diff -u -r39250 -r40431 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/departmentGroupOption/DepartmentGroupOption.java (.../DepartmentGroupOption.java) (revision 39250) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/departmentGroupOption/DepartmentGroupOption.java (.../DepartmentGroupOption.java) (revision 40431) @@ -8,6 +8,7 @@ import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Table; +import javax.persistence.Transient; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; @@ -46,6 +47,24 @@ */ private String type; + /** + * 处理科室id + * FSEYEQ-17 + */ + private Long handlerDepartId; + + /** + * 处理科室编码 + * 不保存到数据库FSEYEQ-17 + */ + private String handlerDepartCode; + + /** + * 处理科室名称 + * 不保存到数据库FSEYEQ-17 + */ + private String handlerDepartName; + @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { @@ -88,4 +107,30 @@ public void setType(String type) { this.type = type; } + + public Long getHandlerDepartId() { + return handlerDepartId; + } + + public void setHandlerDepartId(Long handlerDepartId) { + this.handlerDepartId = handlerDepartId; + } + + @Transient + public String getHandlerDepartCode() { + return handlerDepartCode; + } + + public void setHandlerDepartCode(String handlerDepartCode) { + this.handlerDepartCode = handlerDepartCode; + } + + @Transient + public String getHandlerDepartName() { + return handlerDepartName; + } + + public void setHandlerDepartName(String handlerDepartName) { + this.handlerDepartName = handlerDepartName; + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/service/DepartmentGroupOptionManager.java =================================================================== diff -u -r29688 -r40431 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/service/DepartmentGroupOptionManager.java (.../DepartmentGroupOptionManager.java) (revision 29688) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/service/DepartmentGroupOptionManager.java (.../DepartmentGroupOptionManager.java) (revision 40431) @@ -5,6 +5,7 @@ import java.util.Map; import java.util.Set; +import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.entity.departmentGroupOption.DepartmentGroupOption; import com.forgon.disinfectsystem.entity.recycledepartmentgroup.DepartmentGroup; import com.forgon.tools.hibernate.BasePoManager; @@ -13,9 +14,11 @@ /** * 按类型获得科室分组数据 + * @param type 分组类型 + * @param handlerDepartCode 处理科室编码 * @return List> */ - List> loadDeptGroupByType(String type); + List> loadDeptGroupByType(String type, String handlerDepartCode); /** * 查找科室所属的科室分组。如果一个科室属于多个科室分组,返回第一个查找到的科室分组 @@ -30,4 +33,10 @@ * @return departmentGroupOptionName 分组名称 */ public Set getDepartCodesByType(String departmentGroupOptionType, String departmentGroupOptionName); + + /** + * 查询科室分组的处理科室 + * @param + */ + public OrgUnit getDepartmentGroupOptionHandlerDepart(DepartmentGroupOption departmentGroupOption); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/service/DepartmentGroupOptionManagerImpl.java =================================================================== diff -u -r29688 -r40431 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/service/DepartmentGroupOptionManagerImpl.java (.../DepartmentGroupOptionManagerImpl.java) (revision 29688) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/service/DepartmentGroupOptionManagerImpl.java (.../DepartmentGroupOptionManagerImpl.java) (revision 40431) @@ -12,13 +12,20 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.map.HashedMap; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import com.forgon.directory.model.OrgUnit; +import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.entity.departmentGroupOption.DepartmentGroupOption; import com.forgon.disinfectsystem.entity.recycledepartmentgroup.DepartmentGroup; +import com.forgon.exception.SystemException; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; public class DepartmentGroupOptionManagerImpl extends BasePoManagerImpl implements DepartmentGroupOptionManager { + + @Autowired + private OrgUnitManager orgUnitManager; @Override public DepartmentGroup findBelongTo(Collection departGroups, String departCode) { @@ -34,9 +41,21 @@ } @Override - public List> loadDeptGroupByType(String type) { + public List> loadDeptGroupByType(String type, String handlerDepartCode) { List> groupList = new LinkedList>(); - List groups = this.getByProperty("type", type); + StringBuffer sqlBuffer = new StringBuffer(" po.type = '") + .append(type) + .append("' "); + if(StringUtils.isNotBlank(handlerDepartCode)){ + OrgUnit handlerDepart = orgUnitManager.getByCode(handlerDepartCode); + if(handlerDepart == null){ + throw new SystemException(String.format("不存在科室编码为%s的科室", handlerDepartCode)); + } + sqlBuffer.append(" and (po.handlerDepartId = ") + .append(handlerDepart.getId()) + .append(" or po.handlerDepartId is null)"); + } + List groups = this.getByHql(sqlBuffer.toString()); for (DepartmentGroupOption group : groups) { Map map = new HashedMap<>(); map.put("name", group.getName()); @@ -74,4 +93,12 @@ } return departcodesSet; } + + @Override + public OrgUnit getDepartmentGroupOptionHandlerDepart(DepartmentGroupOption departmentGroupOption) { + if(departmentGroupOption == null || !DatabaseUtil.isPoIdValid(departmentGroupOption.getHandlerDepartId())){ + return null; + } + return orgUnitManager.get(departmentGroupOption.getHandlerDepartId()); + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/dwr/table/DepartmentGroupOptionTableManager.java =================================================================== diff -u -r25135 -r40431 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/dwr/table/DepartmentGroupOptionTableManager.java (.../DepartmentGroupOptionTableManager.java) (revision 25135) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroupOption/dwr/table/DepartmentGroupOptionTableManager.java (.../DepartmentGroupOptionTableManager.java) (revision 40431) @@ -1,14 +1,25 @@ package com.forgon.disinfectsystem.basedatamanager.departmentgroupOption.dwr.table; +import java.sql.ResultSet; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import com.forgon.component.grid.GridManager; +import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.entity.departmentGroupOption.DepartmentGroupOption; -import com.forgon.disinfectsystem.entity.recycledepartmentgroup.DepartmentGroup; +import com.forgon.security.bean.ModelNameBean; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.ConfigUtils; import com.forgon.tools.util.SqlUtils; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; public class DepartmentGroupOptionTableManager { @@ -19,8 +30,8 @@ public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; - } + public void setGridManager(GridManager gridManager) { this.gridManager = gridManager; } @@ -33,9 +44,97 @@ if(StringUtils.isNotBlank(type)){ sql += String.format(" and %s ",SqlUtils.getStringFieldPredicate("po.type", type)); } - return gridManager.renderGrid(parameterMap, + String jsonString = gridManager.renderGrid(parameterMap, DepartmentGroupOption.class.getSimpleName(),sql, new String[] {}); + + return updateReturnInfo(jsonString); } + + /** + * 修改返回的数据 + * 1、关联查询处理科室名称及编码 + * @param json + * @return + */ + private String updateReturnInfo(String json) { + if(!ConfigUtils.extendedFunctionConfig("supplyRoomDataIsolationModule", ModelNameBean.MODLE_NAME_REVIEW_DEPARTMENT_GROUP)){ + return json; + } + JSONObject jsonObject = JSONObject.fromObject(json); + if(jsonObject == null){ + return json; + } + JSONArray jsonArray = jsonObject.optJSONArray("rows"); + if (jsonArray == null || jsonArray.size() == 0) { + return json; + } + //处理科室id + Set handlerDepartIdSet = new HashSet(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = jsonArray.optJSONObject(i); + if (obj == null) { + continue; + } + Long handlerDepartId = obj.optLong("handlerDepartId"); + if(DatabaseUtil.isPoIdValid(handlerDepartId)){ + handlerDepartIdSet.add(handlerDepartId); + } + } + if(CollectionUtils.isEmpty(handlerDepartIdSet)){ + return jsonObject.toString(); + } + + //关联查询处理科室名称及编码 + Map handleDepartMap = getHandleDepartMap(handlerDepartIdSet); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = jsonArray.optJSONObject(i); + if (obj == null) { + continue; + } + Long handlerDepartId = obj.optLong("handlerDepartId"); + if(DatabaseUtil.isPoIdValid(handlerDepartId)){ + OrgUnit handleDepart = handleDepartMap.get(handlerDepartId); + if(handleDepart != null){ + obj.put("handlerDepartCode", handleDepart.getOrgUnitCoding()); + obj.put("handlerDepartName", handleDepart.getName()); + } + } + } + + return jsonObject.toString(); + } + + /** + * 关联查询科室分组设置的处理科室名称及编码 + * @param handlerDepartIdSet + * @return + */ + private Map getHandleDepartMap(Set handlerDepartIdSet) { + Map handleDepartMap = new HashMap(); + StringBuffer sqlBuffer = new StringBuffer("select id, orgUnitCoding, name from ") + .append(OrgUnit.class.getSimpleName()) + .append(" where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", handlerDepartIdSet)); + + ResultSet rs = null; + try { + rs = objectDao.executeSql(sqlBuffer.toString()); + while(rs.next()){ + Long id = rs.getLong("id"); + String orgUnitCoding = rs.getString("orgUnitCoding"); + String name = rs.getString("name"); + OrgUnit orgUnit = new OrgUnit(); + orgUnit.setOrgUnitCoding(orgUnitCoding); + orgUnit.setName(name); + handleDepartMap.put(id, orgUnit); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + + return handleDepartMap; + } // public void moveUpRecord(String number){ // Integer numberOrder = Integer.parseInt(number); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java =================================================================== diff -u -r40302 -r40431 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java (.../SupplyRoomConfigManagerImpl.java) (revision 40302) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java (.../SupplyRoomConfigManagerImpl.java) (revision 40431) @@ -1214,8 +1214,8 @@ @Override public List getSupplyRoomOrgUnitList() { - String hql = String.format("select po from %s po " - + " where po.orgUnitCoding in (select src.orgUnitCoding from %s src where src.supplyRoomType in (%s,%s))", + String hql = String.format("select po from %s po, %s src " + + "where po.orgUnitCoding = src.orgUnitCoding and src.supplyRoomType in (%s,%s) order by src.supplyRoomType ", OrgUnit.class.getSimpleName(), SupplyRoomConfig.class.getSimpleName(), SupplyRoomConfig.SUPPLYROOM_TYPE_FIRST_SUPPLYROOM, Index: forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java =================================================================== diff -u -r40302 -r40431 --- forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java (.../ModelNameBean.java) (revision 40302) +++ forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java (.../ModelNameBean.java) (revision 40431) @@ -44,6 +44,11 @@ */ public static final String MODLE_NAME_CUSTOM_INVOICE = "customInvoice"; + /** + * 审核科室分组 + */ + public static final String MODLE_NAME_REVIEW_DEPARTMENT_GROUP = "reviewDepartmentGroup"; + public String getModleName() { return modleName; }